使用说明
后台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的服务器
- 确保
npm start正在托管此存储库的机器上运行(Docker、VM或裸机)。 - 在n8n中,添加一个 AI 代理 (LangChain)打开您的工作流程 工具 面板。
- 下降在一个 MCP客户端工具 节点并对其进行配置:
- SSE端点:
http://<host>:<port>/mcp(例如http://localhost:3333/mcp). - 认证:
None(除非您在MCP服务器上添加保护)。 - 要包含的工具:
All(或指定要公开的API操作的子集)。
- SSE端点:
- 将MCP客户端工具节点连接到AI代理节点,以便代理可以调用它。
- 触发工作流。当代理决定调用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实例调用代表性工具。
- 如果公开服务器,则进行层缓存或速率限制。
