PUNT MCP 服务器
使用说明(简要且直观,便于开发者快速上手):
-
项目简介
- 该仓库实现了一个 MCP 服务器,用于通过 MCP 标准向 LLM 客户端提供上下文服务,包括对资源、工具、以及提示模板的管理与执行能力,支持会话管理与实时更新。
- 服务器使用 JSON-RPC 风格的请求/响应,并通过标准传输通道(当前为 stdio)与客户端对接,便于在本地开发环境中与 Claude、Claude Code 等 AI 客户端配合使用。
-
主要功能点
- MCP 核心能力
- 资源管理与数据访问(面向 LLM 的上下文资源)
- 工具注册与执行(LLM 调用外部功能)
- 提示模板的定义与渲染
- 实时通信与多传输
- 目前实现通过 Stdio 传输实现 MCP 通信(未来可扩展为 SSE/WebSocket)
- 与 Punt 应用后端的整合
- 通过 MCP 服务器调用 Punt 的 REST API 客户端实现(mcp/src/api-client.ts),实现 Tickets、Projects、Sprints、Labels、Columns、Members 等操作的封装
- 安全性与会话
- 提供会话管理、权限检查与事件驱动的实时通知
- MCP 核心能力
-
安装步骤(简化版)
- 获取代码与依赖
- 确保已安装 Node.js,推荐版本与 Punt 项目一致(文档推荐 Node.js 20+)。
- 安装依赖:进入 punt/mcp 目录,执行相应的包管理器安装命令(如 pnpm install)。
- 环境配置
- 根目录下创建并配置 .env(必要时可通过 .env.example 复制),确保 MCP 的 API Key、数据库等依赖正确设置。
- 启动 MCP 服务器
- 使用 MCP 客户端的配置启动命令时,请参考以下服务器配置示例(不涉及代码示例,只给出配置模板)。
- 运行方式
- 服务器当前实现通过 stdio 传输与客户端连接,请确保客户端配置中使用 stdio 传输并将 MCP_API_KEY 设置到环境变量中。
- 服务器与 Punt 的集成
- MCP 服务端将通过 Punt 的 REST API(mcp/src/api-client.ts 中实现的请求封装)访问 Punt 的数据以提供服务。
- 获取代码与依赖
-
服务器配置(JSON,供 MCP 客户端使用) 说明:该配置用于 Claude/Claude Code 等 MCP 客户端连接 Punt 的 MCP 服务器。MCP 客户端需要在启动时读取该配置,以建立与 MCP 服务器的连接。 JSON 示例(仅描述,不放在代码块内): { "serverName": "punt", "type": "stdio", "command": "pnpm", "args": ["--dir", "mcp", "exec", "tsx", "src/index.ts"], "cwd": "/path/to/your/project/root", "env": { "MCP_API_KEY": "your-api-key-here" } } 说明:
- serverName:MCP 服务器的名称,推荐与 Punt 的实际名称保持一致,便于客户端识别
- type:传输类型,当前实现使用 stdio
- command/args:启动 MCP 服务器的命令及参数,按仓库提供的运行方式配置
- cwd:运行工作目录,指向 Punt 项目的根目录
- env.MCP_API_KEY:用于客户端认证的 API Key(按实际获取方式设置)
-
基本使用方法
- 客户端连接后,即可通过 MCP 提供的工具(如 list_projects、get_project、create_ticket 等)进行对 Punt 的操作
- 使用 SSE/WebSocket 等后续传输方式时,可订阅服务器端的事件流,获取实时更新
- 若要扩展功能,只需在 mcp/src/tools 目录下新增工具,或调整现有工具的注册即可
-
运行与测试要点
- 确保 Punt 后端数据库可用,MCP 服务器在启动时能正确访问 Punt 的 REST API
- MCP 服务器通过标准输出和输入进行通信,确保客户端正确读取 JSON-RPC 风格的请求与响应
- 如需将服务器暴露为对外服务,需在当前实现基础上增加对网络传输的支持(如 WebSocket),当前实现以 stdio 为核心传输
-
重要注意
- MCP 服务器代码与 Punt 应用紧密耦合,需保持 Punt 的 API 稳定性以确保 MCP 服务端功能可用
- 该实现当前定位为服务器端,客户端仅通过配置读取与连接,不包含 MCP 客户端实现的代码
-
参考与扩展
- 服务器注册的工具覆盖:Tickets、Projects、Sprints、Members、Labels、Columns
- 服务器侧对外暴露的操作界面以文本格式返回结果,便于 LLM 解析并展示