mcp-12306


Namemcp-12306 JSON
Version 0.1.3 PyPI version JSON
download
home_pageNone
SummaryA simple MCP server to query ticket information in 12306.
upload_time2025-07-18 12:19:06
maintainerNone
docs_urlNone
authorZheng Chenguang
requires_python>=3.10
licenseNone
keywords mcp llm automation web 12306
VCS
bugtrack_url
requirements No requirements were recorded.
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # mcp_12306

## 项目简介

`mcp_12306` 是一个基于 MCP(Model Context Protocol)协议的 12306 火车票查询服务端项目。  
它支持通过自然语言或 API 查询中国铁路 12306 的余票信息、车站代码等,并支持 Redis 缓存加速查询。

## 主要功能

- **火车票余票查询**  
  支持指定出发站、到达站、出发日期、乘客类型(成人/学生)等参数,查询 12306 实时余票信息。

- **车站代码/名称查询**  
  可根据车站中文名查询对应的 12306 车站代码,或反查车站名称。

- **Redis 缓存支持**  
  查询结果可自动缓存到 Redis,提升高频查询性能。

- **MCP 工具集成**  
  以工具(tool)的形式对外暴露接口,便于 LLM/自动化系统集成。

- **命令行参数灵活**  
  支持自定义服务端口、传输方式(stdio/sse)、是否启用 Redis 等。

---

## 安装与运行

### 1. 安装依赖

建议使用 Python 3.10 及以上版本。

```bash
pip install -r requirements.txt
```

如遇网络问题,建议加国内镜像源:

```bash
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
```

### 2. 启动 Redis(可选)

如需启用 Redis 缓存,需先启动本地 Redis 服务(默认端口 6379)。

```bash
# Linux
redis-server

# Windows(需提前安装 Redis for Windows 或 Memurai)
redis-server.exe
```

### 3. 启动服务

```bash
python -m mcp_12306 --port 8000 --transport stdio -redis 6379
```

- `--port`:服务监听端口,默认 8000
- `--transport`:传输方式,支持 `stdio` 或 `sse`
- `-redis`:Redis 端口,填 0 或不填则不启用 Redis

---

## 主要接口/工具

- `query_tickets`:查询火车票信息  
  - 参数:`from_station`(出发站),`to_station`(到达站),`train_date`(出发日期),`purpose_codes`(乘客类型)
- `get_station_code`:获取车站代码  
  - 参数:`station_name`(车站中文名)
- `get_station_name`:获取车站名称  
  - 参数:`station_code`(车站代码)

---

## 项目结构

```
mcp_12306/
├── __init__.py
├── __main__.py
├── mcp_12306_server.py
├── query_12306.py
├── config_manager.py
├── requirements.txt
├── README.md
└── pyproject.toml
```

---

## 后续工作计划

- [ ] 支持更多 12306 查询接口(如车次详情、时刻表等)
- [ ] 增强异常处理与日志记录
- [ ] 提供 Web UI 或 API 文档
- [ ] 支持 Docker 一键部署
- [ ] 国际化与多语言支持
- [ ] 增加自动化测试用例

---

## 贡献与反馈
  
如有疑问可联系维护者:zhengchenguang315@gmail.com

---

            

Raw data

            {
    "_id": null,
    "home_page": null,
    "name": "mcp-12306",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.10",
    "maintainer_email": "Zheng Chenguang <zhengchenguang315@gmail.com>",
    "keywords": "mcp, llm, automation, web, 12306",
    "author": "Zheng Chenguang",
    "author_email": null,
    "download_url": null,
    "platform": null,
    "description": "# mcp_12306\r\n\r\n## \u9879\u76ee\u7b80\u4ecb\r\n\r\n`mcp_12306` \u662f\u4e00\u4e2a\u57fa\u4e8e MCP\uff08Model Context Protocol\uff09\u534f\u8bae\u7684 12306 \u706b\u8f66\u7968\u67e5\u8be2\u670d\u52a1\u7aef\u9879\u76ee\u3002  \r\n\u5b83\u652f\u6301\u901a\u8fc7\u81ea\u7136\u8bed\u8a00\u6216 API \u67e5\u8be2\u4e2d\u56fd\u94c1\u8def 12306 \u7684\u4f59\u7968\u4fe1\u606f\u3001\u8f66\u7ad9\u4ee3\u7801\u7b49\uff0c\u5e76\u652f\u6301 Redis \u7f13\u5b58\u52a0\u901f\u67e5\u8be2\u3002\r\n\r\n## \u4e3b\u8981\u529f\u80fd\r\n\r\n- **\u706b\u8f66\u7968\u4f59\u7968\u67e5\u8be2**  \r\n  \u652f\u6301\u6307\u5b9a\u51fa\u53d1\u7ad9\u3001\u5230\u8fbe\u7ad9\u3001\u51fa\u53d1\u65e5\u671f\u3001\u4e58\u5ba2\u7c7b\u578b\uff08\u6210\u4eba/\u5b66\u751f\uff09\u7b49\u53c2\u6570\uff0c\u67e5\u8be2 12306 \u5b9e\u65f6\u4f59\u7968\u4fe1\u606f\u3002\r\n\r\n- **\u8f66\u7ad9\u4ee3\u7801/\u540d\u79f0\u67e5\u8be2**  \r\n  \u53ef\u6839\u636e\u8f66\u7ad9\u4e2d\u6587\u540d\u67e5\u8be2\u5bf9\u5e94\u7684 12306 \u8f66\u7ad9\u4ee3\u7801\uff0c\u6216\u53cd\u67e5\u8f66\u7ad9\u540d\u79f0\u3002\r\n\r\n- **Redis \u7f13\u5b58\u652f\u6301**  \r\n  \u67e5\u8be2\u7ed3\u679c\u53ef\u81ea\u52a8\u7f13\u5b58\u5230 Redis\uff0c\u63d0\u5347\u9ad8\u9891\u67e5\u8be2\u6027\u80fd\u3002\r\n\r\n- **MCP \u5de5\u5177\u96c6\u6210**  \r\n  \u4ee5\u5de5\u5177\uff08tool\uff09\u7684\u5f62\u5f0f\u5bf9\u5916\u66b4\u9732\u63a5\u53e3\uff0c\u4fbf\u4e8e LLM/\u81ea\u52a8\u5316\u7cfb\u7edf\u96c6\u6210\u3002\r\n\r\n- **\u547d\u4ee4\u884c\u53c2\u6570\u7075\u6d3b**  \r\n  \u652f\u6301\u81ea\u5b9a\u4e49\u670d\u52a1\u7aef\u53e3\u3001\u4f20\u8f93\u65b9\u5f0f\uff08stdio/sse\uff09\u3001\u662f\u5426\u542f\u7528 Redis \u7b49\u3002\r\n\r\n---\r\n\r\n## \u5b89\u88c5\u4e0e\u8fd0\u884c\r\n\r\n### 1. \u5b89\u88c5\u4f9d\u8d56\r\n\r\n\u5efa\u8bae\u4f7f\u7528 Python 3.10 \u53ca\u4ee5\u4e0a\u7248\u672c\u3002\r\n\r\n```bash\r\npip install -r requirements.txt\r\n```\r\n\r\n\u5982\u9047\u7f51\u7edc\u95ee\u9898\uff0c\u5efa\u8bae\u52a0\u56fd\u5185\u955c\u50cf\u6e90\uff1a\r\n\r\n```bash\r\npip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple\r\n```\r\n\r\n### 2. \u542f\u52a8 Redis\uff08\u53ef\u9009\uff09\r\n\r\n\u5982\u9700\u542f\u7528 Redis \u7f13\u5b58\uff0c\u9700\u5148\u542f\u52a8\u672c\u5730 Redis \u670d\u52a1\uff08\u9ed8\u8ba4\u7aef\u53e3 6379\uff09\u3002\r\n\r\n```bash\r\n# Linux\r\nredis-server\r\n\r\n# Windows\uff08\u9700\u63d0\u524d\u5b89\u88c5 Redis for Windows \u6216 Memurai\uff09\r\nredis-server.exe\r\n```\r\n\r\n### 3. \u542f\u52a8\u670d\u52a1\r\n\r\n```bash\r\npython -m mcp_12306 --port 8000 --transport stdio -redis 6379\r\n```\r\n\r\n- `--port`\uff1a\u670d\u52a1\u76d1\u542c\u7aef\u53e3\uff0c\u9ed8\u8ba4 8000\r\n- `--transport`\uff1a\u4f20\u8f93\u65b9\u5f0f\uff0c\u652f\u6301 `stdio` \u6216 `sse`\r\n- `-redis`\uff1aRedis \u7aef\u53e3\uff0c\u586b 0 \u6216\u4e0d\u586b\u5219\u4e0d\u542f\u7528 Redis\r\n\r\n---\r\n\r\n## \u4e3b\u8981\u63a5\u53e3/\u5de5\u5177\r\n\r\n- `query_tickets`\uff1a\u67e5\u8be2\u706b\u8f66\u7968\u4fe1\u606f  \r\n  - \u53c2\u6570\uff1a`from_station`\uff08\u51fa\u53d1\u7ad9\uff09\uff0c`to_station`\uff08\u5230\u8fbe\u7ad9\uff09\uff0c`train_date`\uff08\u51fa\u53d1\u65e5\u671f\uff09\uff0c`purpose_codes`\uff08\u4e58\u5ba2\u7c7b\u578b\uff09\r\n- `get_station_code`\uff1a\u83b7\u53d6\u8f66\u7ad9\u4ee3\u7801  \r\n  - \u53c2\u6570\uff1a`station_name`\uff08\u8f66\u7ad9\u4e2d\u6587\u540d\uff09\r\n- `get_station_name`\uff1a\u83b7\u53d6\u8f66\u7ad9\u540d\u79f0  \r\n  - \u53c2\u6570\uff1a`station_code`\uff08\u8f66\u7ad9\u4ee3\u7801\uff09\r\n\r\n---\r\n\r\n## \u9879\u76ee\u7ed3\u6784\r\n\r\n```\r\nmcp_12306/\r\n\u251c\u2500\u2500 __init__.py\r\n\u251c\u2500\u2500 __main__.py\r\n\u251c\u2500\u2500 mcp_12306_server.py\r\n\u251c\u2500\u2500 query_12306.py\r\n\u251c\u2500\u2500 config_manager.py\r\n\u251c\u2500\u2500 requirements.txt\r\n\u251c\u2500\u2500 README.md\r\n\u2514\u2500\u2500 pyproject.toml\r\n```\r\n\r\n---\r\n\r\n## \u540e\u7eed\u5de5\u4f5c\u8ba1\u5212\r\n\r\n- [ ] \u652f\u6301\u66f4\u591a 12306 \u67e5\u8be2\u63a5\u53e3\uff08\u5982\u8f66\u6b21\u8be6\u60c5\u3001\u65f6\u523b\u8868\u7b49\uff09\r\n- [ ] \u589e\u5f3a\u5f02\u5e38\u5904\u7406\u4e0e\u65e5\u5fd7\u8bb0\u5f55\r\n- [ ] \u63d0\u4f9b Web UI \u6216 API \u6587\u6863\r\n- [ ] \u652f\u6301 Docker \u4e00\u952e\u90e8\u7f72\r\n- [ ] \u56fd\u9645\u5316\u4e0e\u591a\u8bed\u8a00\u652f\u6301\r\n- [ ] \u589e\u52a0\u81ea\u52a8\u5316\u6d4b\u8bd5\u7528\u4f8b\r\n\r\n---\r\n\r\n## \u8d21\u732e\u4e0e\u53cd\u9988\r\n  \r\n\u5982\u6709\u7591\u95ee\u53ef\u8054\u7cfb\u7ef4\u62a4\u8005\uff1azhengchenguang315@gmail.com\r\n\r\n---\r\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A simple MCP server to query ticket information in 12306.",
    "version": "0.1.3",
    "project_urls": null,
    "split_keywords": [
        "mcp",
        " llm",
        " automation",
        " web",
        " 12306"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "330359911a913a2b4fb468903218aa85d3c1c52e5c8fe54c5e353725881af677",
                "md5": "567c6f216d366d212e6012b14ccf5980",
                "sha256": "5a22e350ff00d09a2b7e5d6757bdb126c25a9ccb536353daceae73b25baf8b0d"
            },
            "downloads": -1,
            "filename": "mcp_12306-0.1.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "567c6f216d366d212e6012b14ccf5980",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.10",
            "size": 15730,
            "upload_time": "2025-07-18T12:19:06",
            "upload_time_iso_8601": "2025-07-18T12:19:06.060074Z",
            "url": "https://files.pythonhosted.org/packages/33/03/59911a913a2b4fb468903218aa85d3c1c52e5c8fe54c5e353725881af677/mcp_12306-0.1.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-18 12:19:06",
    "github": false,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "lcname": "mcp-12306"
}
        
Elapsed time: 1.49452s