openai-responses-mcp
使用说明(Markdown 格式)
-
项目简介
- 该仓库实现了一个 MCP 服务器,核心职责是以标准化的 JSON-RPC 方式向 LLM 客户端提供上下文信息和功能,包括工具调用、资源访问与提示渲染等能力。服务器通过标准输入/输出(stdio)与客户端进行通信,支持初始化、列出工具、执行工具调用、处理取消请求等 MCP 基本操作。
-
主要功能点
- 初始化握手:实现 MCP 的 initialize 请求,返回协议版本、可用工具等能力信息。
- 工具管理:实现 tools/list(返回支持的工具列表)与 tools/call(根据名称执行对应工具,如 answer、answer_detailed、answer_quick 等)。
- 请求/取消机制:支持 inflight 请求的取消通知(notifications/cancelled),能够在取消后抑制相应的响应。
- 心跳/健康检查:实现 ping 方法,提供最小的健康检查接口。
- 多轮音频/文本的交互框架:通过 JSON-RPC 进行消息交互,具备 Content-Length 头部 framing 的 MCP 流式传输,及在一些环境下对行分隔格式的兼容。
- 安全与扩展:核心逻辑中通过 OpenAI API 调用(需提供 OpenAI API Key),并在 Answer 路由中进行来源引用(citations)提取、文本抽取与输出格式化,支持系统策略拼接与策略文件的外部化配置。
-
安装步骤
- 确保环境
- Node.js 版本至少 20.x(仓库在文档中也提及可在 24.x 系列运行)。
- npm 随 Node.js 一起提供。
- 获取与构建
- 克隆仓库后进入目录,执行安装依赖并构建:
- npm i
- npm run build
- 克隆仓库后进入目录,执行安装依赖并构建:
- 配置与运行
- 设置环境变量 OPENAI_API_KEY 为你的 OpenAI API 密钥。
- 启动服务器(stdio 模式):
- node build/index.js --stdio
- 测试与调试
- 仓库提供了多份脚本用于自检(如 mcp-smoke.js、mcp-smoke-ping.js、tools/list 测试等),可用来快速验证通信是否符合 MCP 规范。
- 确保环境
-
服务器配置(MCP 客户端需要的连接信息,示例为 JSON 描述,便于理解与对接) { "serverName": "openai-responses", "command": "npx", "args": ["openai-responses-mcp@latest", "--stdio"], "env": { "OPENAI_API_KEY": "sk-..." } }
- 说明
- serverName: MCP 客户端在连接管理中的标识名称,用于区分不同的 MCP 服务。
- command 与 args: 客户端启动 MCP 服务器的命令及参数,默认使用 npx 打开最新版本的 openai-responses-mcp 并以 stdio 模式运行。
- env: 向服务器进程注入环境变量,这里最重要的是 OPENAI_API_KEY,确保在调用 OpenAI 接口时有认证信息。
- 说明
-
基本使用方法
- 将服务器以 stdio 方式暴露给 MCP 客户端(如 Claude Code、Codex 等)以便模型调用工具、查询资源与渲染提示模板。
- 客户端发起 JSON-RPC 调用序列示例(对于理解流程,实际使用以客户端实现为准):
- initialize(初始化握手)
- tools/list(获取可用工具)
- tools/call(调用具体工具,如 answer/answer_detailed/answer_quick,传入 query 等参数)
- 监控 inflight 请求,遇到 notifications/cancelled 时会中止对应请求并不返回结果
- 必要时发送 ping 进行健康检测
- 如需调试,可启用调试模式,服务器会输出详细日志到标准错误(stderr)。
-
额外信息
- 该实现包含多份测试脚本,覆盖从基础握手到工具调用、取消以及 NDJSON/行分隔格式的互通性测试,便于开发、验证与回归测试。
- 服务器侧支持系统策略拼接、citations 的提取与输出(包括 url_citation 等信息源的处理),以确保回答附带可追溯的出处。
-
重要注意事项
- MCP 客户端与服务器的具体交互协议遵循 JSON-RPC 2.0 的基本格式,服务器对未识别的方法返回标准错误。
- 使用前请确保 OPENAI_API_KEY 已正确设置且 OpenAI API 对应权限可用。