内容
# sap-help-mcp
**停止 AI 助手猜测 SAP 配置**。该 MCP 服务器提供实时访问两个答案来源:官方 SAP 文档(位于 [help.sap.com](https://help.sap.com))和实践者知识(位于 [community.sap.com](https://community.sap.com))。
[](https://github.com/aamelin1/sap-help-mcp/actions/workflows/ci.yml)
[](https://pypi.org/project/sap-help-mcp/)
[](LICENSE)
---
## 快速开始
**Claude Desktop** — [下载扩展](https://github.com/aamelin1/sap-help-mcp/releases/latest/download/sap-help-mcp.mcpb),然后打开 **设置 → 扩展 → 高级设置**,点击 **安装扩展** 并选择下载的文件。
**Claude Code** — `claude mcp add sap-help -- uvx sap-help-mcp@latest`
仅需以上两步。[安装](#安装) 部分涵盖了其他客户端,[故障排除](#故障排除) 部分介绍了如果步骤不正常工作的解决方法。
---
## 为什么
询问一个通用模型如何配置外币评估或 `F5 702` 消息的含义时,你会得到一个根据记忆组装的答案:看似合理,通常微妙地错误,且无法验证。SAP 文档庞大,按版本分区,且对普通网络搜索不可见。
连接此服务器后,助手会在门户网站搜索并从刚刚读取的页面回答 — 并附上一个可以打开的链接。
> **您:** 如何在 ECC 中的 FI 文档中设置利润中心替代?
>
> **助手:** *(调用 `help_search`,然后 `help_read`)* 根据 *会计文档中的替代*(SAP_ERP 6.18),调用点是 0002 … — https://help.sap.com/docs/SAP_ERP/49fc4b036bc14cceb9bcf1a45e472f20/0eacc2531bb9b44ce10000000a174cb4.html?version=6.18.latest
它还可以访问 **支持内容** 空间 — 由 SAP 支持人员编写的常见问题解答和故障排除指南 — 以及论坛,用于完成“是否有人实际遇到过这个问题”的任务。
## 它为助手提供了什么
| 工具 | 功能 |
|---|---|
| `help_search(query, product?, version?, limit)` | 搜索 help.sap.com:所有 SAP 产品文档和支持内容 wiki。 |
| `help_read(ref, part?)` | 获取完整的 help.sap.com 页面,以 markdown 格式分页。 |
| `community_search(query, limit, min_kudos)` | 搜索 SAP 社区博客、问答和讨论,按我们的排名算法排序。 |
| `web_status()` | 版本、源端点、缓存状态。用于确认连接是否正常。 |
**无需凭证,无本地数据,无磁盘写入**。服务器仅发出对公共门户端点的匿名 GET 请求,并在内存中缓存响应六小时。
**不包括 SAP 注意事項**。读取注意需要个人 S 用户,此服务器故意不存储任何机密信息。可使用 [mcp-sap-notes](https://github.com/marianfoo/mcp-sap-notes) 与其配合使用 — 此服务器提供注意编号,而后者负责打开它们。
---
## 安装
### 选项 A — 一键安装包(Claude Desktop,Windows 和 macOS)
1. **[下载 sap-help-mcp.mcpb](https://github.com/aamelin1/sap-help-mcp/releases/latest/download/sap-help-mcp.mcpb)**
— 此链接始终提供最新的版本,因此可以放心分享。
2. 在 Claude Desktop 中,打开 **设置 → 扩展 → 高级设置**,点击 **安装扩展** 并选择下载的 `.mcpb` 文件。
3. 安装对话框会警告扩展未经 Anthropic 验证,可以访问您的计算机。这是预期的,因为从文件安装的包不会经过 Anthropic 目录验证 — 请自行决定是否信任此仓库,然后确认。
**无需 Python**。该包使用 MCPB `uv` 运行时 — Claude Desktop 会为每个包下载一个私有 Python 和依赖项,并在卸载时删除。
更新是手动的:从文件安装不会为 Claude Desktop 提供更新源,因此需要下载新的 `.mcpb` 并重新安装。
### 选项 B — `uvx`(Claude Desktop,Claude Code,Cursor,任何 MCP)
安装 [uv](https://docs.astral.sh/uv/) — 它是一个独立的二进制文件:
```powershell
# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
```
```bash
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
```
**Claude Code** — 单个命令,无需编辑:
```bash
claude mcp add sap-help -- uvx sap-help-mcp@latest
```
**Claude Desktop** — 将以下块添加到 `mcpServers` 部分的配置文件中(保留已列出的服务器):
```json
{
"mcpServers": {
"sap-help": {
"command": "uvx",
"args": ["sap-help-mcp@latest"]
}
}
}
```
| | 配置文件 |
|---|---|
| **Windows**(安装程序) | `%APPDATA%\Claude\claude_desktop_config.json` |
| **Windows**(Microsoft Store) | `%LOCALAPPDATA%\Packages\Claude_pzs8sxrjxfjjc\LocalCache\Roaming\Claude\claude_desktop_config.json` |
| **macOS** | `~/Library/Application Support/Claude/claude_desktop_config.json` |
如果您不确定自己使用的是哪一个,最可靠的方法是让应用程序告诉您:打开
**设置 → 开发者 → 编辑配置**,它会打开实际正在使用的文件。
然后完全退出 Claude Desktop(macOS 上的 **Cmd+Q**,Windows 上的 **文件 → 退出** —
关闭窗口是不够的),并重新启动。`uvx`会在首次启动时安装包,这需要几秒钟。
`@latest` 后缀用于保持更新,它是值得理解的。普通的 `uvx sap-help-mcp` 会在其第一次运行时解析最新的版本,然后无限期重复使用其缓存的环境 — 新版本不会在缓存过期之前被采用,因此您将停留在最初安装的版本上。`@latest` 请求最新的版本并刷新缓存,但代价是一次索引查找每次服务器启动。
如果您想手动控制版本更新,请固定版本:`"args": ["sap-help-mcp==1.0.1"]`。
### 选项 C — 从下载的包中安装(限制网络)
`.mcpb` 是一个普通的 zip 文件:相同的服务器,加上一个 `manifest.json` 文件,告诉主机如何启动它。如果 PyPI 无法访问但 GitHub 可以访问,则可以解压它并指向客户端:
```bash
mkdir -p ~/mcp/sap-help && cd ~/mcp/sap-help
unzip ~/Downloads/sap-help-mcp.mcpb
# Claude Code(使用绝对路径 — 条目会原样存储)
claude mcp add sap-help -- \
uv run --directory ~/mcp/sap-help src/sap_help_mcp/__main__.py
```
对于 Claude Desktop,等效的配置条目是:
```json
{
"mcpServers": {
"sap-help": {
"command": "uv",
"args": ["run", "--directory",
"/absolute/path/to/mcp/sap-help",
"src/sap_help_mcp/__main__.py"]
}
}
}
```
有两个注意事项。这不会使服务器离线工作:`uv` 仍然会解析
`fastmcp` 和 `markdownify`,因此必须能够访问包索引或其镜像。而且没有更新路径:新版本需要下载新的
`.mcpb` 并再次解压。优先使用选项 B 只要 PyPI 可用。
### 选项 D — 从源代码(用于开发)
```bash
git clone https://github.com/aamelin1/sap-help-mcp.git
cd sap-help-mcp
uv sync --extra dev
uv run pytest # 离线测试
uv run python -m sap_help_mcp.probe # 针对两个门户的实时检查
```
使用
`"command": "uv", "args": ["run", "--directory", "/abs/path/to/sap-help-mcp", "sap-help-mcp"]` 让客户端指向代码仓库。
---
## 检查是否正常工作
询问 AI 助手:**“调用 SAP-HELP web_status”**。您应该会收到服务器版本和门户端点。然后尝试一个实际问题,例如 *"在新总账中搜索文档拆分的 SAP 帮助"*。
## 从中获取好的答案
* **查询门户网站使用英语** — 两个来源都是英文的。您可以以任何语言提出问题;助手会被指示自己翻译成 SAP 术语(*«переоценка валюты»* → *foreign currency valuation*)。
* **如果您知道,请按产品线过滤**。`SAP_ERP` 是 ECC 6.0,
`SAP_S4HANA_ON_PREMISE` 和 `SAP_S4HANA_CLOUD` 是它们所说的,而
`SUPPORT_CONTENT` 是支持专家内容 wiki。如果不加过滤,门户网站会很乐意返回 ByDesign 页面。
* **如果结果很少,请重新措辞一两次**。这比其他方法都有效,助手也会被指示这样做。
* **论坛就是论坛**。`community_search` 返回现场经验,而不是真理。每个结果都有 `match_score` 和 kudos 计数,因此质量是可见的。
---
## 故障排除
| 症状 | 原因和解决方法 |
|---|---|
| 服务器在 Claude Desktop 中不可见 | 配置文件已编辑,但应用程序未完全重启。完全退出并重新打开。 |
| Windows 上扩展安装失败,提示 `cryptography`、Rust 或缺少 `link.exe` | 安装了 32 位 Python。`cryptography` — 此服务器的传递依赖项,不由此服务器使用 — 构建时需要 64 位 Windows 轮子,因此需要编译。1.0.3 版本要求 uv 使用 64 位解释器来解决这个问题;如果仍然遇到,请使用**选项 B**,不受影响。安装 Visual Studio Build Tools 也有效,但对于无关紧要的事情来说,它有几 GB。 |
| 安装失败,提示 `Missing expected target directory for Python minor version link` | Windows 上的 uv 已知问题([astral-sh/uv#19622](https://github.com/astral-sh/uv/issues/19622)):uv 管理的 Python 存储区中的一个损坏的链接,uv 无法自行修复。删除链接并让 uv 重新创建 — 在 `cmd` 中:`rmdir "%APPDATA%\uv\python\cpython-3.13-windows-x86_64-none"` 然后 `uv python install 3.13`。注意 `rmdir` 不带 `/s`:删除链接,而不是它指向的内容。如果仍然存在,请 `rmdir /s /q "%APPDATA%\uv\python"` 然后重新安装。 |
| `spawn uvx ENOENT` | `uvx` 不在应用程序继承的 PATH 中。重启计算机后安装 uv,或将绝对路径放入 `command`(`%USERPROFILE%\.local\bin\uvx.exe`,`~/.local/bin/uvx`)。 |
| 工具返回 `"Network unreachable or timed out"` | 企业代理或防火墙阻止了门户网站。检查 `help.sap.com` 是否可以在同一台机器上打开。 |
| 工具返回 `SAP responded 4xx` | 门户网站可能更改了其非公开 API。运行 `uv run python -m sap_help_mcp.probe --raw` 并打开一个问题并附上输出。 |
| 搜索结果不理想 | 使用确切的英文 SAP 术语、交易代码或消息编号;去掉 `product` 过滤器。 |
| Claude Desktop 日志 | macOS:`~/Library/Logs/Claude/mcp-server-sap-help.log` · Windows: `%APPDATA%\Claude\logs\` |
## 工作原理
大约 800 行 Python 代码分为四层:工具声明、每个来源一个模块,以及一个单独的 HTTP 请求位置。 [`docs/ARCHITECTURE.md`](docs/ARCHITECTURE.md) 涵盖了三步页面读取链、Khoros LiQL 排名问题以及每个设计决策背后的原因。
## 贡献
欢迎提出问题和拉取请求。在提交之前运行 `uv run pytest`;如果您修改了任何门户请求形状,还要运行 `uv run python -m sap_help_mcp.probe` 并在 PR 中说明 — 这些端点是未公开的,只有实时检查才能证明。
## 法律
SAP 和其他 SAP 产品名称是 SAP SE 的商标。该项目与 SAP 无关联。服务器上存储和分发的任何内容仍为 SAP SE 和各自作者的财产;请参阅 [NOTICE](NOTICE) 以了解第三方归属,包括
[mcp-sap-docs](https://github.com/marianfoo/mcp-sap-docs),本项目以其为基础构建。
在 [Apache License 2.0](LICENSE) 下许可。