返回市场
sap-mcp

sap-mcp

作者:CostingGeek3 星标更新:2025-04-28

项目介绍

通过MCP(模型上下文协议)集成SAP与Claude

通过无缝的MCP集成,直接将Claude的人工智能能力连接到您的SAP系统

此仓库包含一个基于Python的解决方案,该方案通过SAP Graph API实现了Claude(Anthropic的大语言模型)与SAP系统之间的双向通信。利用模型上下文协议(MCP),这种集成允许Claude实时检索和处理SAP业务数据。

特性

  • 通过最小设置将Claude连接到SAP系统
  • 通过Graph API从SAP实时获取销售订单数据
  • 扩展集成以支持更多的SAP实体(客户、产品等)
  • 使用Claude LLM的全部功能处理SAP数据

预备条件

  • Python 3.8+
  • SAP API密钥(沙盒或生产环境)
  • Claude桌面版
  • 对MCP和SAP Graph API的基本理解

本文档是针对具有管理员权限的Windows环境编写的

参考文档

安装

  1. 获取SAP API密钥

登录SAP Graph Navigator。 在您的个人资料中,可以在设置 > API设置下找到API密钥。 将该API密钥保存为系统环境变量"SAP_API_KEY"。 确保重新启动计算机以加载新的环境变量。

  1. 设置您的环境

让我们遵循服务器开发者文档

首先,安装uv并设置我们的Python项目和环境:

powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"

确保之后重新启动终端,以确保uv命令被识别。

现在,让我们创建并设置我们的项目:

# 创建一个新的项目目录
uv init saptools
cd saptools

# 创建虚拟环境并激活它
uv venv
.venv\Scripts\activate

# 安装依赖项
uv add mcp[cli] httpx requests

# 创建我们的服务器文件
new-item saptools.py
  1. 构建服务器

saptools.py文件克隆到您自己的文件中。

  1. 连接Claude桌面与MCP服务器

打开Claude Studio。在文件 > 设置 > 开发者中,点击编辑配置。 编辑通常位于%APPDATA%\Claude文件夹中的claude_desktop_config.json文件。 确保替换C:\\PATH\\TO\\PARENT\\FOLDER为您自己的路径。

{
    "mcpServers": {
        "saptools": {
            "command": "uv",
            "args": [
                "--directory",
                "C:\\PATH\\TO\\PARENT\\FOLDER",
                "run",
                "saptools.py"
            ]
        }
    }
}

现在,重启Claude桌面以加载配置。 请注意,默认情况下,关闭Claude窗口只会将其最小化到系统托盘。 您需要通过右键单击系统托盘中的图标并选择退出来完全关闭它。 重启Claude后,聊天窗口中应显示一个新的锤子图标,显示活动的MCP工具数量。 点击它以显示信息弹出窗口,其中应显示: get_sales_orders 从SAP Graph API沙盒中检索销售订单。 参数:top: 要检索的销售订单数量(默认:3)。 api_key: SAP API密钥(可选,如果没有提供将使用环境变量) 返回值:包含格式化的销售订单信息的字符串

  1. 测试MCP服务器

现在,您应该可以通过Claude与SAP系统进行对话,例如:

给我最后10个销售订单
最后5个销售订单的平均金额是多少

当然,目前这还很有限,但这个概念验证的扩展应该支持更复杂的交互, 比如获取给定客户的最后销售订单。

🛠️ 工作原理

此解决方案使用模型上下文协议(MCP)在Claude和SAP系统之间创建双向通信通道:

  1. 使用FastMCP库初始化MCP服务器
  2. 服务器公开SAP功能作为Claude可以调用的“工具”
  3. 当Claude需要访问SAP数据时,它调用相应的工具函数
  4. 函数连接到SAP Graph API并返回格式化的结果
  5. Claude处理返回的数据并生成相关见解

📊 当前可用的工具

get_sales_orders

从SAP Graph API检索销售订单信息。

参数:

  • top (int, 可选): 要检索的销售订单数量(默认:3)
  • api_key (str, 可选): SAP API密钥(如果未提供则使用环境变量)

示例响应:

找到了3个销售订单:

订单ID: 123456
展示ID: SO-123456
售予方: ACME Corp
净额: 5000.00 USD
创建时间: 2024-10-12T15:30:00Z
----------------------------------------
订单ID: 123457
展示ID: SO-123457
售予方: TechInnovations
净额: 7500.00 USD
创建时间: 2024-10-13T09:15:00Z
----------------------------------------
订单ID: 123458
展示ID: SO-123458
售予方: SampleCustomer
净额: 2500.00 USD
创建时间: 2024-10-14T09:15:00Z
----------------------------------------