Kahunas MCP 服务器实现
使用说明
- 项目简介
- 该仓库实现了一个基于 MCP 的服务器端,用以向大模型/LLM 客户端提供 Kahunas 平台的上下文信息和功能接口。核心职责包括托管资源、注册并执行工具、以及定义渲染 Prompt 模板等,并通过 JSON-RPC 进行请求/响应通信,支持多传输协议(stdio、HTTP/SSE、streamable-http)。
- 主要功能点
- MCP 服务器实现:通过 FastMCP 框架提供 75 个工具(Tools),涵盖查询、创建、导出、日历同步、分析、消息发送等多种能力。
- 会话与能力管理:实现基于 contextvars 的会话隔离,确保不同连接/会话之间的状态分离与安全性。
- 本地数据与导出支持:包含本地 SQLite 镜像(同步存储)、Excel/PDF 导出工具,方便离线分析和报表生成。
- Prompts 与 Persona:集成 Messaging Persona(默认模板可定制)、格式化的 Prompt/模板渲染,便于 LLM 与人类协作。
- 多传输协议:支持 stdio(默认)、HTTP/SSE、streamable-http 等传输模式,方便本地调试与远程托管。
- 安装步骤
- 安装依赖并获取代码
- Python 3.8 及以上环境
- pip install kahunas-client(或克隆源码后在仓库根目录执行安装)
- 启动 MCP 服务器
- 直接使用模块运行(stdio 模式):
- python -m kahunas_client.mcp
- 或以 HTTP/SSE 传输远程化部署:
- KAHUNAS_MCP_TRANSPORT=http KAHUNAS_MCP_HOST=0.0.0.0 KAHUNAS_MCP_PORT=8000 kahunas-mcp
- 直接使用模块运行(stdio 模式):
- 安装依赖并获取代码
- 服务器配置(MCP 客户端需要的最小信息)
- 说明:MCP 客户端需要一个 JSON 配置来知道如何启动并连接到 MCP 服务器。以下是基于仓库信息的准确示例配置字段及说明。
- 服务器配置示例(JSON,包含 server 名称、启动命令、以及参数): { "server": "kahunas", "command": "kahunas-mcp", "args": ["stdio"] }
- 字段说明
- server: MCP 服务器的名称标识,客户端用于识别目标服务。在本实现中名称为 "kahunas"。
- command: 启动 MCP 服务器的执行命令或可执行入口。在本实现中对外暴露的命令名为 "kahunas-mcp"(对应源码中 kahunas_client.mcp 的入口可运行实体)。
- args: 启动命令的参数数组。若选择 stdio 传输方式,通常使用 ["stdio"];若选择 HTTP/SSE 传输,可改为 ["http"]、["sse"] 等,具体取值应与服务器启动方式保持一致。
- 基本使用方法
- 连接方式
- 通过 stdio 传输:命令行直接启动服务器,LLM 客户端通过标准输入/输出进行 JSON-RPC 通信。
- 通过 HTTP/SSE 传输:部署在服务器上,由 MCP 客户端通过 SSE / HTTP 请求与服务交互,适合远程集成。
- 客户端侧的交互
- 客户端将请求序列化为 JSON-RPC 格式,发送到 MCP 服务器对应的传输端点。
- 服务器返回 JSON-RPC 响应,涵盖资源、工具、提示模板等各种资源类型的查询或操作结果。
- 常用操作示例(由 MCP 客户端发起)
- 登录与会话建立,获取对 Kahunas 系统的访问权限
- 调用工具,如 list_workout_programs、get_workout_program、export_workout_programs 等,获取数据或执行导出
- 调用日历相关工具,生成/格式化日历事件,或导出 ICS/Google Calendar 兼容对象
- 连接方式
- 重要注意事项
- MCP 服务器实现了基于 contextvars 的会话隔离,确保不同连接的状态互不干涉。
- 该实现提供了多种导出、分析、和数据同步工具,便于在 LLM 场景中进行上下文构建与自动化工作流。
- 部署时请确保相应的外部依赖(如数据库、文件系统路径、网络请求等)具备运行环境权限。