SAP-Claude集成工具

通过Model Context Protocol (MCP)实现Claude AI与SAP系统的双向通信,实时检索和处理SAP业务数据。

  • by CostingGeek
  • Python
  • 本地部署
  • 6 星标
  • 更新于
在 GitHub 查看 CostingGeek/sap-mcp

使用说明

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

通过无缝的MCP集成,将Claude AI功能直接连接到您的SAP系统

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

特性

  • 用最少的设置将Claude连接到SAP系统
  • 通过Graph API从SAP检索实时销售订单数据
  • 扩展与其他SAP实体(客户、产品等)的集成
  • 使用Claude LLM的全部功能处理SAP数据

先决条件

  • Python 3.8+
  • SAP API密钥(沙箱或生产)
  • 克劳德桌面
  • 对MCP和SAP Graph API的基本理解

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

参考文件

安装

  1. 获取SAP API密钥

登录 SAP图形导航器. 您将在配置文件中的“设置”>“API设置”下找到API密钥。 将该API密钥另存为系统环境变量“SAP_API_key”。 确保重新启动计算机以加载新的环境变量。

  1. 设置您的环境

让我们跟随 服务器开发人员文档.

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

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

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

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

# Create a new directory for our project
uv init saptools
cd saptools

# Create virtual environment and activate it
uv venv
.venv\Scripts\activate

# Install dependencies
uv add mcp[cli] httpx requests

# Create our server file
new-item saptools.py
  1. 构建服务器

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

  1. 将Claude Desktop与MCP服务器连接

打开克劳德工作室。在“文件”>“设置”>“开发人员”下,单击 Edit Config. 编辑文件 claude_desktop_config.json 通常位于%APPDATA%\Claude文件夹中。 确保更换 C:\\PATH\\TO\\PARENT\\FOLDER 和你自己的。

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

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

  1. 测试MCP服务器

现在,您应该已经准备好通过Claude与您的SAP系统聊天,并给出以下提示:

Give me the last 10 sales orders
What is the average amount of the last 5 sales orders

这当然在这一点上是有限的,但对这一概念证明的扩展应该支持更复杂的交互, 比如获取给定客户的最后一个销售订单。

🛠️ 运作原理

该解决方案使用模型上下文协议(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密钥(如果未提供,则使用环境变量)

示例响应:

Found 3 sales orders:

Order ID: 123456
Display ID: SO-123456
Sold To Party: ACME Corp
Net Amount: 5000.00 USD
Created At: 2024-10-12T15:30:00Z
----------------------------------------
Order ID: 123457
Display ID: SO-123457
Sold To Party: TechInnovations
Net Amount: 7500.00 USD
Created At: 2024-10-13T09:15:00Z
----------------------------------------
Order ID: 123458
Display ID: SO-123458
Sold To Party: SampleCustomer
Net Amount: 2500.00 USD
Created At: 2024-10-14T09:15:00Z
----------------------------------------