Stravacz MCP Server
使用说明(Markdown 格式)
项目简介
- 该仓库实现了一个基于 Model Context Protocol(MCP)的服务器端应用,专门对接 Strava.cz 的菜单、订餐等功能。通过 FastMCP 框架将“资源/工具/提示”暴露给大语言模型(LLM)客户端,允许通过 JSON-RPC 的方式读取菜单、检查是否已下单、下单、输出格式化菜单、获取用户信息以及登出等操作。
主要功能点
- MCP 核心能力
- 注册并暴露工具(Tools),如获取菜单、下单、检查下单状态、输出格式化菜单、获取用户信息、登出等。
- 提供会话管理及状态回传,支持异步执行以提升吞吐。
- 通过 HTTP 流式传输或标准输入/输出传输与客户端通信。
- Air-tight 的 Strava.cz 集成
- 使用 AsyncStravaClient 作为对 StravaCZ 的异步封装,内部通过线程池调用原库的同步接口,以实现非阻塞调用。
- 双传输模式
- CLI stdio(命令行/容器中的 stdin/stdout 通信)
- HTTP Streaming(端口 8809,原生 HTTP 流传输)
- 部署与运行
- 支持本地源码运行、以及 Docker 部署(官方镜像提供 CLI 版本、HTTP 版本等)
- 兼容性与扩展
- 设计上可扩展更多工具和资源,进一步扩展 MCP 的能力声明与渲染能力。
安装步骤
- 本地运行(从源码):
- 克隆仓库并进入目录
- 安装依赖并在开发环境中安装:pip install -e .
- 运行 CLI(stdio)版本: python src/stravacz_mcp_server/server.py --user YOUR_USER --password YOUR_PASSWORD --canteen_number YOUR_CANTEEN_NUMBER
- 运行 HTTP Streaming 版本: python src/stravacz_mcp_server/server_http.py --user YOUR_USER --password YOUR_PASSWORD --canteen_number YOUR_CANTEEN_NUMBER --port 8809
- 使用 Docker(参考官方镜像):
- CLI (stdio) 版本: docker run --rm -i ghcr.io/mirecekd/stravacz-mcp:latest-cli --user YOUR_USER --password YOUR_PASSWORD --canteen_number YOUR_CANTEEN_NUMBER
- HTTP Streaming 版本(暴露端口 8809): docker run -p 8809:8809 ghcr.io/mirecekd/stravacz-mcp:latest-http --user YOUR_USER --password YOUR_PASSWORD --canteen_number YOUR_CANTEEN_NUMBER
服务器配置(MCP 客户端需要的最小配置信息)
- 说明:MCP 客户端在与服务器建立连接时需要知道服务器的启动方式和参数。以下给出两种常用配置示例(JSON 结构,直接粘贴到客户端配置界面即可)。请将 YOUR_USER、YOUR_PASSWORD、YOUR_CANTEEN_NUMBER 替换为实际信息。
-
使用 Docker 启动的 CLI 版本(stdio 传输) { "mcpServers": { "stravacz-mcp-cli": { "description": "Stravacz MCP CLI 版(STDIO 传输)", "command": "docker", "args": [ "run","--rm","-i","ghcr.io/mirecekd/stravacz-mcp:latest-cli", "--user","YOUR_USER", "--password","YOUR_PASSWORD", "--canteen_number","YOUR_CANTEEN_NUMBER" ], "transportType": "stdio" } } }
-
HTTP Streaming 版本(HTTP 传输) { "mcpServers": { "stravacz-mcp-http": { "description": "Stravacz MCP HTTP Streaming 版", "url": "http://localhost:8809", "transportType": "http" } } }
基本使用方法
- 连接方式
- 若使用 STDIO 版本,请确保本地/容器环境能够通过 IPC 与 MCP 客户端对接(如 Claude Desktop 的 Vid、CLI 集成等)。
- 若使用 HTTP Streaming,请确保服务器端口 8809 已开放并可访问,客户端通过该 URL 进行通信。
- 常用操作
- LLM 发送请求时,可以调用以下工具:get_menu、is_ordered、order_meals、print_menu、get_user_info、logout。返回的都是结构化的 JSON,包含状态、数据或错误信息,便于链式处理与提示渲染。
- 对话场景中,LLM 可以先获取菜单,再检查是否已经下单,随后下单,最后获取用户信息与登出等。
- 注意
- 使用前请确保 Strava.cz 的账户、餐厅编号等信息有效且可用。
- 由于该实现通过网页抓取/封装 StravaCZ 的接口,请遵循相关服务条款与速率限制,避免对服务造成干扰。
关键词 Model Context Protocol, StravaCZ, 异步后端, HTTP 流传输, FastMCP
分类ID 5