OpenAI集成MCP服务器

一个生产就绪的Model Context Protocol服务器,提供OpenAI连接、工具调用、插件扩展和浏览器UI演示功能。

  • by code-wgl
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 code-wgl/McpServer

使用说明

集成OpenAI的MCP服务器

生产准备就绪 模型上下文协议 服务器用TypeScript实现。服务器提供:

  1. OpenAI连接演示 –通过以下方式证明API密钥端到端有效 npm run demo:openai.
  2. MCP工具演示 –使用以下命令通过MCP客户端生成服务器和调用工具 npm run demo:tool.
  3. 可扩展性演示 –通过磁盘热加载第三方工具 npm run demo:ext 或 MCP_TOOL_MODULES.
  4. 浏览器UI演示 –启动一个交互式网页,使用OpenAI调用和知识搜索工具 npm run demo:ui.

代码库侧重于干净的抽象、模式验证和商业准备(日志记录、配置安全、测试)。

需求

  • Node.js 18+(建议使用Node 20以避免可选的引擎警告)。
  • NPM9+。
  • 有效的 OPENAI_API_KEY 可以访问所需的模型。

快速开始

npm install
cp .env.example .env   # fill in OPENAI_API_KEY
npm run build
npm start               # runs the compiled MCP server on stdio

在开发过程中直接运行TypeScript条目:

npm run dev

环境变量

变量 描述
OPENAI_API_KEY 必修的。 OpenAI的API密钥。
OPENAI_BASE_URL 覆盖Azure/OpenAI代理的基本URL。
OPENAI_TIMEOUT_MS 应用于OpenAI API调用的超时(ms)。默认为 20000.
MCP_SERVER_NAME 向MCP客户宣传的名称。
LOG_LEVEL fatal → trace.默认为 info.
MCP_TOOL_MODULES 逗号分隔的额外工具模块的绝对路径(请参阅可扩展性演示)。
MCP_PORT 为未来的运输预留;默认为 7337.
UI_DEMO_PORT 浏览器UI演示的可选端口。默认为 4399.

演示工作流程

1.OpenAI连接

验证凭据和模型访问权限:

npm run demo:openai

通过Pino日志输出模型回复和令牌使用指标。

2.MCP工具调用

生成已编译的MCP服务器(node dist/index.js)并与官方MCP客户端SDK连接:

npm run build
npm run demo:tool

集 MCP_DEMO_SERVER_COMMAND / MCP_DEMO_SERVER_ARGS 如果您希望客户端启动其他命令(例如 npx tsx src/index.ts).脚本列出工具并调用 knowledge_search 端到端。

3.通过插件进行扩展

船舶与 src/examples/plugins/stockQuoteTool.ts.之后 npm run build 编译后的模块位于 dist/examples/plugins/stockQuoteTool.js.

通过演示脚本加载它:

npm run build
npm run demo:ext

或者在启动服务器之前设置环境变量:

export MCP_TOOL_MODULES=$(pwd)/dist/examples/plugins/stockQuoteTool.js
npm start

服务器会自动注册从引用模块导出的每个工具。

4.浏览器UI演练

启动一个轻量级的HTTP服务器 public/ui-demo.html:

npm run demo:ui

访问 http://localhost:4399 (或 UI_DEMO_PORT)致:

  • 使用配置的API密钥直接向OpenAI发送提示。
  • 调用内置 knowledge_search 工具通过REST外观。

响应以内联方式呈现,因此您可以在不离开浏览器的情况下验证这两个流。

工具

  • TypeScript 严格模式 tsc 对于建筑。
  • Vitest 用于单元测试(npm test).
  • ESLint+Pretier 用于修剪/格式化(npm run lint, npm run format).
  • 皮诺 结构化测井,开发中打印效果很好。

测试和质量门

npm run lint
npm test

覆盖率报告发布于 coverage/ 通过V8仪表。

项目结构

  • src/config/env.ts –集中、经过验证的环境加载。
  • src/clients/openaiClient.ts –实现弹性OpenAI包装器 LLMProvider 合同。
  • src/mcp/registry.ts –工具生命周期管理+动态模块加载。
  • src/mcp/server.ts –MCP服务器接线、工具适配器和插件API。
  • src/demos/* –涵盖三种所需场景的可运行脚本。
  • src/examples/plugins/* –可扩展性演示的示例插件。
  • tests/* –为关键单位提供最全面的覆盖。

如需更深入的架构概述,请阅读 docs/architecture.md.