SAP OData MCP Server
MCP server for interacting with SAP S/4HANA OData services. It enables querying and controlled creation/update of sales orders, products, customers, and pricing conditions, with safety features like dry-run mode and ETag-based updates.
README
SAP OData MCP Server
面向 SAP S/4HANA OData 的 stdio MCP 服务,支持销售订单、物料主数据、客户主数据、销售价格条件的查询,以及受控的销售订单创建和更新。
安全模型
- 所有写操作默认
dry_run=true,只返回将发送的 OData 负载。 - 真实写入必须同时满足:
SAP_WRITE_ENABLED=true、dry_run=false,以及工具要求的确认短语。 - 更新要求传入
sap_get_sales_order返回的 ETag,以避免覆盖并发修改。 - 可更新字段由
SAP_WRITE_ALLOWED_FIELDS白名单控制。 - 必须通过
SAP_CA_CERT_PATH信任企业 CA。生产环境拒绝关闭 TLS 证书校验。 - 密码和证书不允许写入 Git 仓库。
安装与构建
npm install
npm run build
将 .env.example 的值保存到仓库外的受保护位置。服务通过 MCP 客户端的 env 块接收这些环境变量;参考 mcp.config.example.json。
npm run check-config
npm start
工具
| 工具 | 能力 |
|---|---|
sap_get_sales_order |
查询订单表头并返回 ETag |
sap_get_sales_order_items |
分页上限内查询订单行项目 |
sap_create_sales_order |
生成或创建销售订单;默认演练模式 |
sap_update_sales_order |
更新白名单内的表头字段;默认演练模式 |
sap_get_product |
查询 API_PRODUCT_SRV 的物料主数据 |
sap_get_customer |
查询 API_BUSINESS_PARTNER 的客户主数据 |
sap_list_sales_price_conditions |
分页查询 API_SLSPRICINGCONDITIONRECORD_SRV 的销售价格条件 |
真实创建须使用 confirm: "CREATE_SALES_ORDER",真实更新须使用 confirm: "UPDATE_SALES_ORDER"。创建和更新前请先取得业务变更审批。
CCFB / Codex 接入
由机器人宿主管理员将构建后的 dist/index.js 注册为 stdio MCP,使用 mcp.config.example.json 的结构注入密钥。重启机器人并新开对话后,MCP 工具才会可用。
本地下单门户
运行 npm run build 后,以环境变量方式提供 .env.example 中的配置并执行 npm run start:web。门户在 http://localhost:3000 提供客户自助注册、客户号登录、A305/ZR01 价格校验、购物车和“确认同步 SAP”操作。客户密码以哈希保存于 PORTAL_DB_PATH 指定的 SQLite 文件,不写入 SAP。
本地开发可在受保护的环境文件中设置 NODE_ENV=development 和 VERIFICATION_DELIVERY=log;验证码只输出到启动服务的终端日志,勿向他人转发。生产环境禁止日志投递,必须接入邮件服务后再开放注册。典型启动方式:
set -a
source ~/.config/sap-odata-mcp/.env
set +a
npm run build
npm run start:web
SAP_WRITE_ENABLED 默认关闭;开启前必须完成 SAP 变更审批和服务账号授权。
客户商城目录与购物车
登录后的门户是一个面向客户的 B2B 订货商城:
- 默认展示条件类型
ZR01、条件表A305且当前有效的物料;没有有效价格的物料不会显示或下单。 - 左侧目录来自 SAP 物料组,商品卡显示物料号、物料描述、销售单位和当前价格;搜索支持物料号或描述,默认每页 20 条(接口只接受 1–50)。
- 购物车只保存于当前浏览器会话。进入结算时服务端会重新读取 SAP 价格和可售性,不能信任浏览器传来的单价。
- 结算可收集期望交货日期、客户采购订单号和备注。前两项分别映射至 SAP 的
RequestedDeliveryDate与PurchaseOrderByCustomer。备注会显示在门户确认摘要中;在确认 SAP 已配置可写入的订单文本扩展字段前,系统不会将任意备注字段发送给 SAP。 - “确认并同步至 SAP”会再次显示订单摘要,之后服务端仍需
SAP_WRITE_ENABLED=true才会执行 OData POST。开发自测不要提交真实销售订单。
本地开发启动方式:
npm install
npm run build
set -a
source ~/.config/sap-odata-mcp/.env
set +a
NODE_ENV=development VERIFICATION_DELIVERY=log npm run start:web
浏览器打开 http://localhost:3000。生产环境必须配置企业 CA 证书并使用真实邮件投递;不要关闭 TLS 校验,也不要将环境文件、证书、验证码或 SAP 凭据提交到 Git。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。