https://github.com/amornpan/py-mcp-line
python mcp LINE
https://github.com/amornpan/py-mcp-line
Last synced: 15 days ago
JSON representation
python mcp LINE
- Host: GitHub
- URL: https://github.com/amornpan/py-mcp-line
- Owner: amornpan
- Created: 2025-02-27T15:11:22.000Z (about 2 months ago)
- Default Branch: master
- Last Pushed: 2025-03-01T04:23:05.000Z (about 2 months ago)
- Last Synced: 2025-03-01T05:20:55.109Z (about 2 months ago)
- Language: Python
- Size: 4.88 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- awesome-mcp-zh - LINE
- awesome-mcp-servers - LINE - A Python server providing LINE Bot message access for Language Models via the Model Context Protocol (Table of Contents / AI Services)
- awesome-mcp-servers - LINE - A Python server providing LINE Bot message access for Language Models via the Model Context Protocol (Table of Contents / AI Services)
README
# Python LINE MCP Server
[](https://github.com/amornpan/py-mcp-line)
[](https://www.python.org)
[](https://github.com/modelcontextprotocol)
[](https://fastapi.tiangolo.com)
[](LICENSE)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
```bash
git clone https://github.com/amornpan/py-mcp-line.git
cd py-mcp-line
pip 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 initialization
* `server.py` - Main server implementation
* `data/` - Data storage directory
* `messages.json` - Stored LINE messages
* `tests/` - Test files directory
* `__init__.py` - Test package initialization
* `test_line.py` - LINE functionality tests
* `.env` - Environment configuration file (not in git)
* `.env.example` - Example environment configuration
* `.gitignore` - Git ignore rules
* `README.md` - Project documentation
* `Dockerfile` - Docker configuration
* `requirements.txt` - Project dependencies## Configuration
Create a `.env` file in the project root:
```env
LINE_CHANNEL_SECRET=your_channel_secret
LINE_ACCESS_TOKEN=your_access_token
SERVER_PORT=8000
MESSAGES_FILE=data/messages.json
```## API Implementation Details
### Resource Listing
```python
@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:///data`
* Includes resource descriptions and MIME types### Resource Reading
```python
@app.read_resource()
async def read_resource(uri: AnyUrl) -> str
```
* Reads messages of the specified type
* Accepts URIs in the format `line:///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````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"
}
}
}
}
```## Error Handling
The server implements comprehensive error handling for:
* Webhook validation failures
* Message storage errors
* Resource access errors
* URI validation
* LINE API response errorsAll 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
[](mailto:[email protected])
[](https://www.linkedin.com/in/amornpan/)
[](https://huggingface.co/amornpan)
[](https://github.com/amornpan)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` and `uvicorn` for the API server
* `pydantic` for data validation
* `line-bot-sdk` for LINE Bot integration
* `mcp` for Model Context Protocol implementation
* `python-dotenv` for environment configuration
* `anyio` 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