Token导航 LogoToken导航TokenDH.com
Sap Ecc Rfc Prototype logo
数据服务stdio官方级别未说明来源级核验

Sap Ecc Rfc Prototype

MCP Server

一个Python MCP服务器,将SAP ECC BAPIs作为AI代理的工具,支持读取主数据、创建销售/采购订单及查询任意SAP表。

工具数

17

提示词数

0

GitHub Stars

1

资源数

0
工作流自动化PythonClaudeClaude DesktopClaude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

domatwonderful

提供方

domatwonderful

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uv run pytest -v

详细介绍

SAP ECC RFC MCP服务器

蟒蛇 主控程序 该服务器将SAP ECC BAPI作为AI代理的工具公开。内置于 FastMCP v2PyRFC,它允许Claude(或任何MCP客户端)读取主数据、创建销售/采购订单和查询任意SAP表——所有这些都是通过自然语言完成的。

包括完整 模拟模式 用于在没有实时SAP系统的情况下进行开发和测试。

工具(17)

主数据(只读)

工具BAPI说明
get_materialBAPI_MATERIAL_GET_DETAIL按编号阅读材料
search_materialsBAPI_MATERIAL_GETLIST按描述/类型搜索
get_customerBAPI_CUSTOMER_GETDETAIL2按编号读取客户
search_customersBAPI_CUSTOMER_GETLIST按姓名/城市搜索
get_vendorBAPI_VENDOR_GETDETAIL按编号读取供应商
search_vendorsBAPI_VENDOR_GETLIST按名称搜索

销售

工具BAPI说明
get_sales_orderBAPI_SALESORDER_GETDETAIL读取SO标题+项目
search_sales_ordersBAPI_SALESORDER_GETLIST按客户/日期搜索
create_sales_orderBAPI_SALESORDER_CREATEFROMDAT2使用COMMIT创建SO
change_sales_orderBAPI_SALESORDER_CHANGE使用COMMIT更新SO

采购

工具BAPI说明
get_purchase_orderBAPI_PO_GETDETAIL1读取采购订单标题+项目
search_purchase_ordersBAPI_PO_GETITEMS按供应商/日期搜索
create_purchase_orderBAPI_PO_CREATE1使用COMMIT创建PO

发票

工具BAPI说明
get_invoicesBAPI_INCOMINGINVOICE_GETLIST搜索发票

通用RFC

工具RFC描述
describe_rfcget_function_description获取FM参数签名
call_rfc*(任何)*动态调用任何启用RFC的FM
read_tableRFC_READ_TABLE使用筛选器读取任何SAP表

快速开始

先决条件

安装并运行(模拟模式)

git clone  && cd sap-ecc-rfc-prototype
uv sync --extra dev
SAP_MOCK_MODE=true uv run sap-mcp

运行测试

uv run pytest -v

Claude桌面集成

添加 ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "sap-ecc": {
      "command": "uv",
      "args": ["--directory", "/path/to/sap-ecc-rfc-prototype", "run", "sap-mcp"],
      "env": {
        "SAP_MOCK_MODE": "true"
      }
    }
  }
}

重新启动Claude Desktop,将显示17个工具。

配置

所有设置都使用 SAP_ env前缀,可以通过以下方式设置 .env 文件或环境变量:

变量默认值描述
SAP_ASHOSTlocalhostSAP应用服务器主机
SAP_SYSNR00系统编号
SAP_CLIENT100SAP客户端
SAP_USERRFC_USERRFC用户
SAP_PASSWD*(空)*RFC密码
SAP_LANGEN登录语言
SAP_MOCK_MODEtrue使用模拟连接(不需要SAP)
SAP_CONNECTION_POOL_SIZE5最大并发RFC连接数

连接到真实的SAP系统

1.安装SAP NWRFC SDK

从以下网址下载SAP NW RFC SDK 7.50 SAP支持门户 适用于您的平台(例如,适用于Apple Silicon的ARM64)。

# macOS example
sudo mkdir -p /usr/local/sap/nwrfcsdk
sudo tar xzf nwrfc750-macos-arm64.tar.gz -C /usr/local/sap/nwrfcsdk

export SAPNWRFC_HOME=/usr/local/sap/nwrfcsdk
export DYLD_LIBRARY_PATH=/usr/local/sap/nwrfcsdk/lib

2.安装PyRFC

PyRFC未在中列出 pyproject.toml 依赖关系(包在PyPI上被拖拽)。在NWRFC SDK就绪后单独安装:

pip install pyrfc

验证:

python -c "from pyrfc import Connection; print('PyRFC OK')"

3.使用真实凭证运行

SAP_MOCK_MODE=false \
SAP_ASHOST=sap-server.company.com \
SAP_SYSNR=00 \
SAP_CLIENT=100 \
SAP_USER=RFC_USER \
SAP_PASSWD=secret \
uv run sap-mcp

建筑

src/sap_mcp/
├── server.py              # FastMCP entry point, registers tool modules
├── config.py              # Pydantic Settings (SAP_ env prefix)
├── connection/
│   ├── manager.py         # Thread-safe connection pool (acquire/release)
│   └── mock.py            # Mock connection with realistic SAP responses
├── bapi/
│   ├── return_handler.py  # BAPI RETURN parsing (E/A → error, W/S/I)
│   └── transaction.py     # COMMIT/ROLLBACK on same connection
└── tools/
    ├── generic_rfc.py     # describe_rfc, call_rfc, read_table
    ├── master_data.py     # Materials, customers, vendors
    ├── sales.py           # Sales orders (read + create + change)
    ├── purchasing.py      # Purchase orders (read + create)
    └── invoices.py        # Invoice queries

关键设计决策

  • 刀具注册模式:每个工具模块导出 register(mcp) 避免循环进口。工具使用 @mcp.tool() 里面 register().
  • 线程安全连接池:FastMCP在线程池中运行同步工具-- ConnectionManager 用途 threading.Lock + deque 以安全地共享连接。 acquire() 是一个上下文管理器,成功时返回到池的连接,出错时丢弃该连接。
  • 在同一连接上进行COMMIT/ROLLBACK:写入操作使用 execute_bapi_with_commit() 它调用BAPI,解析RETURN,并提交或回滚同一连接——这是SAP事务模型所要求的。
  • 数字填充:SAP要求零填充数字(材料:18个字符,客户/供应商:10个字符)。所有工具垫自动。

示例用例:库存检查和自动重新订购

AI代理可以组合工具来实现业务逻辑。例如,检查库存水平并在库存低时创建采购订单:

  1. read_table("MARD") --从存储位置表读取库存
  2. 代理逻辑 --无限制库存\<阈值的过滤材料
  3. get_material() --查找每个低库存商品的详细信息
  4. search_vendors() --寻找合适的供应商
  5. create_purchase_order() --为再订购创建并提交采购订单

该流量在 tests/test_stock_reorder_flow.py.

许可证

麻省理工学院

目录标签

目录标签

工作流自动化PythonClaudeSAP集成本地部署AI代理工具企业资源规划自动化工作流数据查询

支持客户端

Claude DesktopClaude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

17

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP