(by amornpan) - Implementation for LINE Bot integration that enables Language Models to read and analyze LINE conversations through a standardized interface. Features asynchronous operation, comprehensive logging, webhook event handling, and support for various message types.
Python LINE MCP Server
A Model Context Protocol server implementation in Python that provides access to LINE Bot messages. This server enables Language Models to read and analyze LINE conversations through a standardized interface.
Features
Core Functionality
- Asynchronous operation using Python's
asyncio
- Environment-based configuration using
python-dotenv
- Comprehensive logging system
- LINE Bot webhook event handling
- Message storage in JSON format
- FastAPI integration for API endpoints
- Pydantic models for data validation
- Support for text, sticker, and image messages
Prerequisites
- Python 3.8+
- Required Python packages:
- fastapi
- pydantic
- python-dotenv
- mcp-server
- line-bot-sdk
- uvicorn
Installation
1git clone https://github.com/amornpan/py-mcp-line.git 2cd py-mcp-line 3pip install -r requirements.txt
Project Structure
PY-MCP-LINE/
├── src/
│ └── line/
│ ├── __init__.py
│ └── server.py
├── data/
│ └── messages.json
├── tests/
│ ├── __init__.py
│ └── test_line.py
├── .env
├── .env.example
├── .gitignore
├── README.md
├── Dockerfile
└── requirements.txt
Directory Structure Explanation
src/line/
- Main source code directory__init__.py
- Package initializationserver.py
- Main server implementation
data/
- Data storage directorymessages.json
- Stored LINE messages
tests/
- Test files directory__init__.py
- Test package initializationtest_line.py
- LINE functionality tests
.env
- Environment configuration file (not in git).env.example
- Example environment configuration.gitignore
- Git ignore rulesREADME.md
- Project documentationDockerfile
- Docker configurationrequirements.txt
- Project dependencies
Configuration
Create a .env
file in the project root:
1LINE_CHANNEL_SECRET=your_channel_secret 2LINE_ACCESS_TOKEN=your_access_token 3SERVER_PORT=8000 4MESSAGES_FILE=data/messages.json
API Implementation Details
Resource Listing
1@app.list_resources() 2async def list_resources() -> list[Resource]
- Lists available message types from the LINE Bot
- Returns resources with URIs in the format
line://<message_type>/data
- Includes resource descriptions and MIME types
Resource Reading
1@app.read_resource() 2async def read_resource(uri: AnyUrl) -> str
- Reads messages of the specified type
- Accepts URIs in the format
line://<message_type>/data
- Returns messages in JSON format
- Supports filtering by date, user, or content
Usage with Claude Desktop
Add to your Claude Desktop configuration:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
1{ 2 "mcpServers": { 3 "line": { 4 "command": "python", 5 "args": [ 6 "server.py" 7 ], 8 "env": { 9 "LINE_CHANNEL_SECRET": "your_channel_secret", 10 "LINE_ACCESS_TOKEN": "your_access_token", 11 "SERVER_PORT": "8000", 12 "MESSAGES_FILE": "data/messages.json" 13 } 14 } 15 } 16}
Error Handling
The server implements comprehensive error handling for:
- Webhook validation failures
- Message storage errors
- Resource access errors
- URI validation
- LINE API response errors
All errors are logged and returned with appropriate error messages.
Security Features
- Environment variable based configuration
- LINE message signature validation
- Proper error handling
- Input validation through Pydantic
Contact Information
Amornpan Phornchaicharoen
Feel free to reach out to me if you have any questions about this project or would like to collaborate!
Made with ❤️ by Amornpan Phornchaicharoen
Author
Amornpan Phornchaicharoen
Requirements
Create a requirements.txt
file with:
fastapi>=0.104.1
pydantic>=2.10.6
uvicorn>=0.34.0
python-dotenv>=1.0.1
line-bot-sdk>=3.5.0
anyio>=4.5.0
mcp==1.2.0
These versions have been tested and verified to work together. The key components are:
fastapi
anduvicorn
for the API serverpydantic
for data validationline-bot-sdk
for LINE Bot integrationmcp
for Model Context Protocol implementationpython-dotenv
for environment configurationanyio
for asynchronous I/O support
Acknowledgments
- LINE Developers for the LINE Messaging API
- Model Context Protocol community
- Python FastAPI community
- Contributors to the python-dotenv project