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.
- 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
- Python 3.8+
- Required Python packages:
- fastapi
- pydantic
- python-dotenv
- mcp-server
- line-bot-sdk
- uvicorn
git clone https://github.com/amornpan/py-mcp-line.git cd py-mcp-line pip install -r requirements.txtPY-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 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
Create a .env file in the project root:
LINE_CHANNEL_SECRET=your_channel_secret LINE_ACCESS_TOKEN=your_access_token SERVER_PORT=8000 MESSAGES_FILE=data/messages.json@app.list_resources() async 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
@app.read_resource() async 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
Add to your Claude Desktop configuration:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json On Windows: %APPDATA%/Claude/claude_desktop_config.json
{ "mcpServers": { "line": { "command": "python", "args": [ "server.py" ], "env": { "LINE_CHANNEL_SECRET": "your_channel_secret", "LINE_ACCESS_TOKEN": "your_access_token", "SERVER_PORT": "8000", "MESSAGES_FILE": "data/messages.json" } } } }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.
- Environment variable based configuration
- LINE message signature validation
- Proper error handling
- Input validation through Pydantic
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
Amornpan Phornchaicharoen
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:
fastapianduvicornfor the API serverpydanticfor data validationline-bot-sdkfor LINE Bot integrationmcpfor Model Context Protocol implementationpython-dotenvfor environment configurationanyiofor asynchronous I/O support
- LINE Developers for the LINE Messaging API
- Model Context Protocol community
- Python FastAPI community
- Contributors to the python-dotenv project