企业版阅读约 5 分钟10 个 MCP 工具7 种语言

通过 SAP HANA 将 SAP S/4HANA 连接到 Claude(只读 SQL)

让 Claude 直接从 HANA 回答本地部署或 Private Cloud 上 SAP S/4HANA 的业务问题,以 SAP 自身的数据字典作为工具。只读、自托管,无需 BTP。

HC作者:HelpCode 团队更新于 5 分钟阅读 在 GitHub 开源

开源 · AGPL-3.0 · 运行在您自己的服务器上

SAP S/4HANA (HANA SQL)

SAP S/4HANA (HANA SQL)

Read SAP S/4HANA straight from its HANA database with SQL, with SAP's own data dictionary turned into tools: table and field labels, code values, join paths, released CDS views and a guide to the finance, sales and inventory data model. Read-only.

个工具

10

区域

INTL

类别

ERP

身份验证

Connection string

所需环境变量

SAP_HANA_HOSTSAP_HANA_PORTSAP_HANA_TENANTSAP_HANA_SCHEMASAP_CLIENTSAP_LANGUAGESAP_HANA_TLSSAP_HANA_USERSAP_HANA_PASSWORD
用 Docker 自托管

开源 · AGPL-3.0 · 运行在您自己的服务器上

  • 7 天免费试用
    无需信用卡
  • 符合 GDPR,SOC 2 就绪
    数据驻留欧盟,审计日志
  • 在 GitHub 开源
    开源 · AGPL-3.0
  • 支持 ChatGPT、Claude、Gemini
    任何兼容 MCP 的客户端

摘要

让 Claude 直接从 HANA 回答本地部署或 Private Cloud 上 SAP S/4HANA 的业务问题,以 SAP 自身的数据字典作为工具。只读、自托管,无需 BTP。

试试这样问

SAP S/4HANA (HANA SQL) 的示例提示

点击任意提示即可复制,然后粘贴到 Claude、ChatGPT、Cursor、Gemini、Copilot 或 OpenClaw 中,在该连接器上运行。

SAP S/4HANA (HANA SQL) · 通过 MCP 实时
分享
Opus 4.7

Claude 是 AI,可能会出错。请核对回答。

摘要: 借助 SAP S/4HANA (HANA SQL) 连接器,Claude 可以直接从 HANA 数据库读取 S/4HANA 系统。在编写查询之前,Claude 会先在 SAP 自身的数据字典中查找 BUKRS、HSL 或 VBRK 的含义,从而选对表、选对货币字段、选对集团。会话在 HANA 内部即为只读,结果最多 1,000 行,每条语句都有超时限制。您需要 SAP Basis 提供的一个 HANA 数据库用户,以及一个能访问 HANA SQL 端口的自托管 AnythingMCP。

概览
连接器SAP S/4HANA (HANA SQL),10 个工具
系统S/4HANA 本地部署、Private Cloud(RISE)、HANA Enterprise Cloud
访问方式只读:每次调用单条 SELECT,SET TRANSACTION READ ONLY,最多 1,000 行,60 秒超时
驱动内置 hdb;SAP 的 @sap/hana-client 可选,需自行安装
托管自托管在能访问 HANA 的网络内(AnythingMCP 开源,AGPL-3.0)
测试每个工具都在运行中的 SAP S/4HANA 2025 系统上实测过
AI 客户端
Claude
ChatGPT
Copilot
MCP over HTTPS · OAuth
在您的网络内
AnythingMCP
自托管
  • 10 个 sap_* 工具
  • 角色与工具权限
  • 默认只读
  • 审计日志
SQL · TLS
SAP
SAP S/4HANA
HANA · SAPHANADB
仅有 SELECT 权限的 SQL 用户
AMCP_READER
数据字典
DD02L · DD03L · DD04T
AnythingMCP 运行在您的网络内,使用只读技术用户读取 HANA。Claude 只能看到工具结果。

为什么普通的 SQL 连接器不足以应对 SAP

SAP 的表名和字段名是简短的德语缩写:ACDOCA 是通用日记账,RBUKRS 是公司代码,HSL 是公司代码货币金额,VBRK 是开票凭证抬头。只看到列名的模型只能靠猜,而 SAP 对猜测毫不留情:金额对应另一列上的货币字段,每张表都按集团(MANDT)划分,日期是 YYYYMMDD 格式的字符串,凭证编号带有前导零。

连接器把 SAP 自身的数据字典作为工具交给 Claude。它读取 SAP 用来描述自身的表(DD02L、DD03L、DD04T、DD07T、DD08L 以及 CDS 注解),因此 Claude 能看到每个字段的业务标签、每个金额对应的货币或单位字段、字段中各代码的含义、表之间如何关联,以及 SAP 的哪些 CDS 视图已发布且属于分析型。在此之后,它才编写查询。

Claude 如何找到数据

  1. sap_guide 讲解面向 SQL 的 SAP 数据模型:集团、YYYYMMDD 格式的日期、货币、通用日记账。它不产生任何费用,也不接触任何数据。
  2. sap_org_structure 列出公司代码及其货币和会计年度变式、工厂和销售组织。几乎每个问题都会限定在其中某一项上。
  3. sap_search_cds_views 和 sap_search_tables 查找数据所在位置,优先选择 SAP 已发布的分析型 CDS 视图,这些视图已处理好关联、货币和正负号。
  4. sap_describe_table 为每个字段提供业务标签、每个金额对应的货币或单位字段,以及每个代码的检查表。
  5. sap_query 执行一条只读 SELECT,按集团、组织和期间过滤,并在 SQL 中完成汇总。

可以问什么

以下是三个问题的完整过程。SQL 来自 sap_guide 中的查询范例;请将集团 100、公司代码 1010 和日期替换为您自己的值。Claude 会说明它所做的假设,例如哪些科目计为收入,并请您确认。

“2025 年我们每个过账期间的收入是多少?”

HANA SQL
调用的工具
sap_guidesap_org_structuresap_query
SAP 表
  • ACDOCA通用日记账,主分类账 0L
SELECT POPER, RHCUR AS CURRENCY, -SUM(HSL) AS REVENUE
FROM ACDOCA
WHERE RCLNT = '100' AND RLDNR = '0L' AND RBUKRS = '1010' AND GJAHR = '2025'
  AND RACCT BETWEEN '0040000000' AND '0049999999'  -- 收入科目:请确认范围
GROUP BY POPER, RHCUR ORDER BY POPER;

每个过账期间一行,以公司代码货币计。收入记在贷方,因此对合计取负值。

“哪些客户有逾期超过 60 天的发票,金额是多少?”

HANA SQL
调用的工具
sap_guidesap_org_structuresap_query
SAP 表
  • ACDOCA通用日记账,客户行项目(KOART = D)
SELECT KUNNR, RHCUR AS CURRENCY,
       SUM(HSL) AS OPEN_AMOUNT,
       SUM(CASE WHEN NETDT >= '20251231' THEN HSL ELSE 0 END) AS NOT_DUE,
       SUM(CASE WHEN NETDT < '20251231' AND NETDT >= '20251101' THEN HSL ELSE 0 END) AS OVERDUE_1_60,
       SUM(CASE WHEN NETDT < '20251101' THEN HSL ELSE 0 END) AS OVERDUE_OVER_60
FROM ACDOCA
WHERE RCLNT = '100' AND RLDNR = '0L' AND RBUKRS = '1010' AND KOART = 'D' AND POPER <> '000'
  AND BUDAT <= '20251231' AND (AUGDT = '00000000' OR AUGDT > '20251231')
GROUP BY KUNNR, RHCUR ORDER BY OVERDUE_OVER_60 DESC LIMIT 20;

关键日期的未清项,按净到期日进行账龄分析。在关键日期之后才清账的项目,在该日期仍计为未清。

“2025 年按净销售额排名前 10 的客户是谁?”

HANA SQL
调用的工具
sap_guidesap_field_valuessap_query
SAP 表
  • VBRK开票凭证抬头
  • VBRP开票凭证行项目
  • KNA1客户主数据
SELECT k.KUNAG, c.NAME1, k.WAERK, SUM(p.NETWR) AS NET_SALES
FROM VBRK k JOIN VBRP p ON p.MANDT = k.MANDT AND p.VBELN = k.VBELN
LEFT JOIN KNA1 c ON c.MANDT = k.MANDT AND c.KUNNR = k.KUNAG
WHERE k.MANDT = '100' AND k.FKDAT BETWEEN '20250101' AND '20251231'
  AND k.FKSTO = '' AND k.VBTYP = 'M'
GROUP BY k.KUNAG, c.NAME1, k.WAERK ORDER BY NET_SALES DESC LIMIT 10;

共十行,包含客户编号、名称、货币和净销售额。客户排名依据的是开票凭证,而不是日记账:在 ACDOCA 中,客户位于应收账款行,而不在收入行上。Claude 会先读取 VBTYP 的取值,以区分发票、贷项凭证和取消凭证。

HANA SQL 还是 OData?

AnythingMCP 可以通过两种方式连接本地部署和 Private Cloud 上的 S/4HANA。选择其一,或同时运行两者。

HANA SQL(本指南)OData
读取范围数据库用户有权读取的任何表或 CDS 视图SAP 用户有权调用的 OData 服务
SAP 权限不适用:边界由数据库授权决定每次调用都由 SAP 检查
擅长对数百万行数据汇总,财务和跨模块分析已发布的 API、业务对象视图、SAP 自身的检查
前提条件一个 HANA 数据库用户、到 SQL 端口的网络访问、允许此类访问的许可一个 SAP 技术用户、已激活的 Gateway 服务

准备工作

  • 一位 SAP Basis 管理员,能够在存放 ABAP schema(通常为 SAPHANADB 或 SAPABAP1)的租户数据库中创建用户。
  • 连接信息: 主机、租户的 SQL 端口(第一个租户为 3<instance>15,其他租户为 3<instance>41 及以上)、租户名称、schema、三位数的 SAP 集团编号,以及文本所用的 SAP 语言(E 英语,D 德语)。
  • 一个自托管的 AnythingMCP,能够访问该端口。HANA 的 SQL 端口通常只能在公司网络内或 SAP 私有云着陆区内访问。
  • 确认许可。 第三方应用直接通过 SQL 访问 ABAP schema,受您的 SAP HANA 许可约束。随 S/4HANA 捆绑的运行时许可(runtime licence)通常不涵盖这种访问,完全使用许可(full-use licence)则涵盖。连接生产系统之前,请咨询您的 SAP 客户团队。在 SAP 的私有云产品中,数据库用户和网络路径需要向 SAP 申请。

设置步骤

第 1 步:创建只读数据库用户

在存放 ABAP schema 的租户中执行:

CREATE USER AMCP_READER PASSWORD "<strong password>" NO FORCE_FIRST_PASSWORD_CHANGE;
ALTER USER AMCP_READER DISABLE PASSWORD LIFETIME;

-- 数据字典工具
GRANT SELECT ON SAPHANADB.DD02L TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD02T TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD03L TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD03T TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD03ND TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD04T TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD07T TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD08L TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DD05S TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DDHEADANNO TO AMCP_READER;
GRANT SELECT ON SAPHANADB.DDFIELDANNO TO AMCP_READER;
GRANT SELECT ON SAPHANADB.ARS_W_API_STATE TO AMCP_READER;
-- 组织结构
GRANT SELECT ON SAPHANADB.T001 TO AMCP_READER;
GRANT SELECT ON SAPHANADB.T001K TO AMCP_READER;
GRANT SELECT ON SAPHANADB.T001W TO AMCP_READER;
GRANT SELECT ON SAPHANADB.TKA01 TO AMCP_READER;
GRANT SELECT ON SAPHANADB.TVKO TO AMCP_READER;
GRANT SELECT ON SAPHANADB.TVKOT TO AMCP_READER;
GRANT SELECT ON SAPHANADB.T024E TO AMCP_READER;
-- 然后是您的用例所需的业务表和 CDS 视图,例如
GRANT SELECT ON SAPHANADB.ACDOCA TO AMCP_READER;

对于大范围分析,GRANT SELECT ON SCHEMA SAPHANADB 更简单,但这样 schema 中的所有内容都可读,包括人事数据。SQL 不会应用 SAP 的应用层权限(公司代码、销售组织、人事检查):数据库用户能读取的内容,Claude 都能读取。

还可以选择在服务器端限制该用户的语句:

CREATE WORKLOAD CLASS "AMCP_READER_WC" SET 'STATEMENT TIMEOUT' = '60', 'STATEMENT MEMORY LIMIT' = '20';
CREATE WORKLOAD MAPPING "AMCP_READER_WM" WORKLOAD CLASS "AMCP_READER_WC" SET 'USER NAME' = 'AMCP_READER';

第 2 步:在网络内运行 AnythingMCP

在一台能访问 HANA SQL 端口的主机上:

mkdir anythingmcp && cd anythingmcp
curl -fsSLo docker-compose.yml \
  https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d   # → http://localhost:3000

将 HANA 主机添加到 .env 中的 SSRF_ALLOWED_HOSTS:AnythingMCP 默认拒绝私有地址。

第 3 步:安装连接器

打开 Connectors → Marketplace,搜索 S/4HANA,然后安装 SAP S/4HANA (HANA SQL):

anythingmcp.internal/connectors/store
筛选 S/4HANA 后的 AnythingMCP Marketplace:SAP S/4HANA Cloud、SAP S/4HANA (HANA SQL) 和 SAP S/4HANA (OData) 卡片,各带 Install 按钮
自托管 AnythingMCP 中的 Marketplace。有三个连接器可以访问 S/4HANA。

然后填写变量。构成连接地址的变量为必填项,填好后才能创建连接器:

变量示例
SAP_HANA_HOSThana.internal
SAP_HANA_PORT30015
SAP_HANA_TENANTS4P
SAP_HANA_SCHEMASAPHANADB
SAP_CLIENT100
SAP_LANGUAGEE
SAP_HANA_TLSverify;自签名证书使用 no-verify;或 off
SAP_HANA_USER / SAP_HANA_PASSWORDAMCP_READER 及其密码
anythingmcp.internal/connectors/store
SAP S/4HANA (HANA SQL) 连接器的安装对话框,包含设置说明以及主机、端口、租户、schema、集团、语言和 TLS 字段
安装对话框会先向 SAP Basis 展示创建只读用户的 SQL,然后才要求填写连接信息。

安装时会执行一次测试调用(sap_org_structure),告诉您凭据和授权是否有效。密码加密存储,从不向 Claude 展示。

anythingmcp.internal/connectors
SAP S/4HANA (HANA SQL) 连接器页面:类型 Database,状态 Active,访问模式 Read-only,连接字符串包含主机、租户、schema、集团和 TLS
连接器以只读方式创建。它的工具首先读取 SAP 的数据字典。

第 4 步:将 MCP 服务器添加到 Claude

claude.ai/customize/connectors
Claude 的 Add custom connector 对话框,第一个输入框中已粘贴 AnythingMCP 服务器 URL
在 Claude 中:Customize、Connectors、Add custom connector,然后粘贴 MCP 服务器 URL。

在 claude.ai 或 Claude Desktop 中:Customize → Connectors → + → Add custom connector,粘贴您的 MCP 服务器 URL(显示在 AnythingMCP 的 MCP Servers 下)并登录。对于 claude.ai,URL 必须是公网 HTTPS 地址,因为 Claude 从 Anthropic 的服务器发起连接;只需公开 MCP 端点,永远不必公开 HANA 端口。在 Claude Code 中,本地实例同样可用:

claude mcp add --transport http sap-hana <your MCP server URL> --header "X-API-Key: <key>"

第 5 步:提问

先从限定数据范围的问题开始,例如“这个系统中有哪些公司代码,分别使用什么货币?”。连接器会让 Claude 先阅读 sap_guide;之后它会自行通过数据字典工具逐步完成查询。

可用工具

工具为 Claude 提供的内容
sap_guide按主题讲解面向 SQL 的 SAP 数据模型:基础(集团、日期、前导零、货币)、财务(通用日记账 ACDOCA)、销售、库存、采购、运营、常见陷阱和查询范例。不产生费用,也不接触数据。
sap_org_structure公司代码及其货币、科目表和会计年度变式;成本控制范围、工厂、销售组织和采购组织。
sap_search_tables按名称或描述查找表并给出行数,同时标记普通 SQL 会读错的 S/4HANA 兼容视图。
sap_describe_table每个字段的标签、键标识、类型、每个金额对应的货币或单位字段,以及检查表。
sap_find_fields哪些表包含某个业务字段,例如“净到期日”。
sap_field_values字段中各代码的含义,例如开票凭证类别。
sap_table_relations外键及其关联条件,以及文本表。
sap_search_cds_views按名称或标签查找 SAP 的 CDS 视图,并标记已发布和分析型视图。
sap_describe_cds_viewCDS 视图的列,包括标签、度量、货币和单位字段,以及关联。
sap_query一条只读 SELECT,最多 1,000 行,并有超时限制。
anythingmcp.internal/connectors
SAP HANA 连接器的 MCP 工具:sap_describe_cds_view、sap_describe_table、sap_field_values、sap_find_fields、sap_guide 和 sap_org_structure,每个工具的 SQL 显示为一行,并带有 Show full SQL 链接
每个数据字典工具都是针对 SAP 自身数据字典表的固定只读查询。打开任意一个即可查看其 SQL。

连接器强制执行的规则

使用 SAP 原生驱动

AnythingMCP 内置 hdb,即 SAP 的纯 JavaScript HANA 驱动(Apache-2.0)。它支持用户名和密码、TLS、多租户系统,以及连接器所需的全部功能。SAP 的原生驱动 @sap/hana-client 额外支持 Kerberos、安全用户存储(hdbuserstore)和连接池。它以 SAP Developer License 发布,该许可不允许我们再分发,因此它永远不会包含在镜像中:您需要自行将其安装到自己的部署中,可以扩展镜像,也可以作为卷挂载,然后在连接字符串中用 driver=hana-client 选择它,或用 HANA_DRIVER=hana-client 为所有 HANA 连接器启用。请确认您的 SAP 协议涵盖其在生产环境中的使用。在 arm64 主机上,请继续使用内置的 hdb 驱动,或自行构建基于 Debian 的镜像。详细步骤:AnythingMCP 文档中的 SAP HANA。

示例提示词

  • “显示公司代码 1010 在 2025 年每个过账期间的收入。”
  • “哪些客户有超过 30 天的未清应收账款,每个客户金额多少?”
  • “根据开票凭证,列出今年净销售额排名前 10 的客户。”
  • “哪些已发布的分析型 CDS 视图涵盖日记账分录?描述第一个视图的度量。”
  • “开票凭证类别字段的各个取值分别是什么意思?”
  • “上个月工厂 1010 按移动类型统计的货物移动。”

故障排除

  • CDS 视图不返回任何行。 SAP_CLIENT 缺失或错误;连接器需要它来设置 CDS_CLIENT。
  • 连接被拒绝,或被重定向到未知主机。 请使用租户自己的 SQL 端口,而不是系统数据库端口,后者可能重定向到连接器无法解析的内部主机名。
  • “Insufficient privilege”。 该表未授权给数据库用户。请授予权限,或让 Claude 改用它有权读取的表或 CDS 视图。
  • 证书错误。 自签名证书请使用 SAP_HANA_TLS=no-verify,或安装相应的 CA。
  • 查询超时。 让 Claude 按公司代码、期间或工厂过滤,并在 SQL 中汇总;只有查询确实很大时,才调高 statementTimeout。

FAQ

Claude 能通过这个连接器修改 SAP 中的数据吗? 不能。HANA 会话是只读的,只执行单条 SELECT,写入和加锁读取都会被拒绝。创建数据库用户时只授予 SELECT 权限,这样 HANA 也会强制执行同样的规则。

它会遵循 SAP 权限吗? 不会。SQL 会绕过 SAP 的应用层权限,因此 Claude 能读取什么由数据库授权决定。如果需要 SAP 的权限检查,请改用 OData 方式,或只授予允许读取的表和视图。

我的 SAP 许可允许直接通过 SQL 访问 S/4HANA 吗? 这取决于您的 HANA 许可。随 S/4HANA 捆绑的运行时许可通常不涵盖第三方对 ABAP schema 的 SQL 访问,完全使用许可则涵盖。连接生产系统之前,请核对您的合同。

支持 S/4HANA Private Cloud(RISE)吗? 支持,前提是 SAP 提供数据库用户和通往 HANA SQL 端口的网络路径,并且 AnythingMCP 运行在能访问该端口的位置。这两项都需要向 SAP 申请。

可以用 AnythingMCP Cloud 代替自托管吗? 只有在 HANA SQL 端口可从互联网访问时才行,而这种情况很少见,也很少是明智之举。请在 SAP 旁边自托管 AnythingMCP。

它也能用于 ChatGPT 和 Copilot 吗? 可以。同一个 MCP 服务器可用于 ChatGPT(开发者模式,付费套餐)、GitHub Copilot、Cursor 和 Claude Code,工具和只读限制完全相同。

这需要 SAP BTP 或 SAP Joule 吗? 不需要。连接器直接与 HANA 数据库通信,因此既不需要 BTP,也不需要 Joule 或 SAP Gateway。如果您同时使用 Joule,两者也可以并行运行。

这是我可以自行运行的 SAP HANA MCP 服务器吗? 是的。AnythingMCP 开源(AGPL-3.0),通过 Docker Compose 在 SAP 旁边运行。sap-hana-mcp-server 仓库单独打包了这个连接器,SAP HANA MCP 服务器则从开发者角度对其进行了介绍。

下一步

这份指南对你有帮助吗?

你的 SAP S/4HANA 智能体只差一次点击。

安装连接器,粘贴密钥,向 Claude 提问。免费试用 7 天,无需信用卡。

相关指南

企业

SAP HANA MCP 服务器:借助 SAP 数据字典读取 S/4HANA

面向 Claude、ChatGPT 和 Copilot 的开源 SAP HANA MCP 服务器:以 SAP 数据字典和 CDS 视图作为工具,只读 SQL,通过 Docker 自托管。

连接器

如何将 Baserow 连接到 Claude — 通过 MCP

从 Baserow Cloud 或自托管实例读取表、字段和行。4 个通用只读工具,使用数据库令牌认证。

OJ
连接器

如何将 Odoo 14-18 (JSON-RPC) 连接到 Claude — 通过 MCP

通过经典 JSON-RPC 端点连接 Odoo ERP 14 至 18:搜索、读取、创建和更新任意模型,并支持合作伙伴、销售订单、发票和产品。适用于 Odoo Online、Odoo.sh 以及 19 之前的自托管 Odoo(也适用于 19)。API 密钥 + 用户 ID。

连接器

如何将 Splunk 连接到 Claude — 通过 MCP

通过 Splunk 官方 MCP Server,在 Claude、ChatGPT 或 Copilot 中搜索 Splunk 的日志和指标:运行 SPL 和已保存的搜索,列出索引、主机和来源,读取知识对象,并用 Splunk AI Assistant 编写 SPL。

连接器

如何将 Firma.dev 连接到 Claude — 通过 MCP

让任意 AI agent 使用 Firma.dev 电子签名:模板、基于模板的签署请求、发送与提醒、收件人状态、审计记录和已签署的 PDF。13 个工具,API 密钥认证,并提供免费测试密钥。

连接器

如何将 Google Ads 连接到 Claude:15 分钟配置自定义连接器

把 Google Ads 作为自定义连接器添加到 claude.ai 和 Claude 桌面端:Claude 读取广告系列、搜索字词、质量得分和预算。只读,无需开发者令牌。