ERP协议转换服务

将BackOffice ERP的REST API转换为MCP协议的工具,适用于需要将ERP功能集成到MCP兼容客户端(如n8n)的场景。

  • by Boffice
  • JavaScript
  • 本地部署
  • 更新于
在 GitHub 查看 Boffice/mcp-openai

使用说明

后台ERP MCP服务器

此项目公开BackOffice ERP REST API的每个操作(如中所述 swagger.json)作为模型上下文协议(MCP)工具。该服务器使用官方的MCP TypeScript SDK在Node.js中实现,并已准备好供支持MCP的客户端使用,例如 n8n.

先决条件

  • Node.js 18+
  • 可访问的BackOffice ERP REST API实例
  • 的API令牌(或凭据) authtoken 头球

安装

npm install

环境变量

变量 描述
BACKOFFICE_BASE_URL BackOffice ERP API的基本URL,例如。 https://erp.example.com/。如果您提供,则可选 baseUrl 每次工具调用。
BACKOFFICE_AUTHTOKEN 的默认值 authtoken 头球可选-工具接受 token 推翻它的论点
BACKOFFICE_SWAGGER_PATH 指向备选OpenAPI文档的绝对或相对路径。默认为 ./swagger.json.
BACKOFFICE_TIMEOUT_MS 请求超时(毫秒)(默认为 15000).
BACKOFFICE_SERVER_NAME 覆盖向客户端通告的MCP服务器名称。
BACKOFFICE_SERVER_VERSION 覆盖向客户端通告的MCP服务器版本。
BACKOFFICE_HTTP_PORT MCP端点的HTTP端口(默认为 3333).
BACKOFFICE_HTTP_HOST 用于绑定HTTP服务器的接口(默认为 0.0.0.0).
BACKOFFICE_HTTP_PATH MCP端点的路径段(默认为 /mcp).
BACKOFFICE_HTTP_ENABLE_JSON_RESPONSE 设置为 true 返回JSON响应而不是SSE流(主要用于调试)。
BACKOFFICE_HTTP_ALLOWED_HOSTS 允许的逗号分隔列表 Host 启用DNS重新绑定保护时的标头。
BACKOFFICE_HTTP_ALLOWED_ORIGINS 允许的逗号分隔列表 Origin 启用DNS重新绑定保护时的标头。
BACKOFFICE_HTTP_ENABLE_DNS_REBINDING 设置为 true 以启用HTTP传输的主机/源验证。
BACKOFFICE_DEBUG_HTTP 设置为 true 记录出站HTTP请求/响应(对调试有用)。

运行MCP服务器

BACKOFFICE_BASE_URL="https://erp.example.com/" \
BACKOFFICE_AUTHTOKEN="your-token" \
npm start

启动时,服务器会暴露一个 流式HTTP MCP终点。您将看到类似以下内容的日志:

backoffice-erp-mcp listening on http://localhost:3333/mcp

刀具形状

每个OpenAPI操作都注册为一个工具,其名称来源于 operationId (回到 METHOD_path).工具参数遵循以下结构:

  • baseUrl, token, headers, accept:URL和HTTP标头的可选覆盖(令牌填充 authtoken 头球
  • pathParams:从OpenAPI文档生成的必需路径变量。
  • query:结构化查询字符串参数(根据规范生成;允许使用额外的键)。
  • body, contentType:操作定义请求体时的有效载荷和内容类型。

响应包括纯JSON输出和 structuredContent 包含状态、标头和数据。

使用n8n的服务器

  1. 确保 npm start 正在托管此存储库的机器上运行(Docker、VM或裸机)。
  2. 在n8n中,添加一个 AI 代理 (LangChain)打开您的工作流程 工具 面板。
  3. 下降在一个 MCP客户端工具 节点并对其进行配置:
    • SSE端点: http://<host>:<port>/mcp (例如 http://localhost:3333/mcp).
    • 认证: None (除非您在MCP服务器上添加保护)。
    • 要包含的工具: All (或指定要公开的API操作的子集)。
  4. 将MCP客户端工具节点连接到AI代理节点,以便代理可以调用它。
  5. 触发工作流。当代理决定调用MCP服务器时,它可以调用任何生成的API工具,传递从OpenAPI规范派生的结构化参数。

自定义OpenAPI源代码

  • 替换 swagger.json 具有更新的规范,或
  • 点 BACKOFFICE_SWAGGER_PATH 转到另一个OpenAPI文档。工具在启动时会自动重新生成。

开发笔记

  • 服务器依赖于 axios 用于出站请求。它将响应正文、状态代码和标头转发给客户端,以便您可以检查故障。
  • 查询、标头和正文模式通过以下方式进行验证 zod,源自OpenAPI规范。
  • 不支持/循环引用回退到 z.any() 以防止模式生成阻止启动。
  • 主体对象允许附加字段,因此您可以包含未记录的属性(例如 billing_street 或 allowed_payment_modes)而无需修补OpenAPI文件。
  • 切换 BACKOFFICE_DEBUG_HTTP=true 当您需要将出站请求/响应有效负载与ERP验证错误进行比较时,将其转储到stdout。

下一步

  • 添加自动烟雾测试,针对临时ERP实例调用代表性工具。
  • 如果公开服务器,则进行层缓存或速率限制。