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