Skip to main content

sap-help-mcp

Stop your AI assistant from guessing at SAP configuration. This MCP server gives it live access to the two places the answer actually lives: the official SAP documentation on help.sap.com and the practitioner knowledge on community.sap.com.

CI PyPI License


Quick start

Claude Desktop — download the extension, then open Settings → Extensions → Advanced settings, click Install Extension and pick the downloaded file.

Claude Code — claude mcp add sap-help -- uvx sap-help-mcp@latest

That is all. Install below covers the other clients, and Troubleshooting covers what to do if a step misbehaves.


Why

Ask a general-purpose model how to configure foreign currency valuation, or what message F5 702 means, and you get an answer assembled from memory: plausible, often subtly wrong, and impossible to verify. SAP documentation is huge, versioned per release, and mostly invisible to ordinary web search.

With this server connected, the assistant searches the portal first and answers from the page it just read — with a link you can open.

You: How do I set up a substitution for the profit center in FI documents in ECC?

Assistant: (calls sap_help_search, then sap_help_read) According to Substitution in Accounting Documents (SAP_ERP 6.18) the callup point is 0002 … — https://help.sap.com/docs/SAP_ERP/49fc4b036bc14cceb9bcf1a45e472f20/0eacc2531bb9b44ce10000000a174cb4.html?version=6.18.latest

Forum threads are read the same way, in full — which matters, because on a forum the answer that actually worked is rarely the first reply, and the search snippet stops well before it.

It also reaches the Support Content space — the FAQs and troubleshooting guides written by SAP support, the ones that normally sit behind a search box nobody knows about — and the forum, for the "has anyone actually hit this" half of the job.

What it gives the assistant

Tool What it does
sap_help_search(query, product?, version?, limit) Search help.sap.com: all SAP product documentation plus the Support Content wiki.
sap_help_read(url, part?) Fetch a full help.sap.com page as markdown, paginated for long pages.
sap_community_search(query, limit, min_kudos) Search SAP Community blogs, Q&A and discussions, ranked on our side.
sap_community_read(url, part?) Read a whole forum thread: the question and every reply, in order, with authors, kudos and the accepted answer marked.
sap_help_status() Version, source endpoints, cache state. Useful to confirm the connection works.

No credentials, no local data, nothing written to disk. The server only issues anonymous GET requests to public portal endpoints and caches responses in memory for six hours.

SAP Notes are not included. Reading Notes requires a personal S-user, and this server deliberately holds no secrets. Run sap-notes-mcp alongside it — this server surfaces the Note numbers, that one opens them. Its tools carry the same sap_ prefix, so the two read as one set.


Install

Option A — one-click bundle (Claude Desktop, Windows and macOS)

  1. Download sap-help-mcp.mcpb — that link always serves the newest release, so it is the one to pass around.
  2. In Claude Desktop, open Settings → Extensions → Advanced settings, click Install Extension and pick the downloaded .mcpb file.
  3. The install dialog warns that the extension is not verified by Anthropic and will have access to your computer. That is expected for any bundle installed from a file rather than from Anthropic's directory — decide whether you trust this repository, then confirm.

You do not need Python. The bundle uses the MCPB uv runtime — Claude Desktop downloads a private Python and the dependencies itself, per bundle, and removes them on uninstall.

Updating is manual: installing from a file gives Claude Desktop no update source, so a new release means downloading the next .mcpb and installing it again.

Option B — uvx (Claude Desktop, Claude Code, Cursor, anything MCP)

Install uv once — it is a single self-contained binary:

# Windows (PowerShell)
powershell -ExecutionPolicy ByPass -c "irm https://astral.sh/uv/install.ps1 | iex"
# macOS / Linux
curl -LsSf https://astral.sh/uv/install.sh | sh

Claude Code — one command, nothing to edit:

claude mcp add sap-help -- uvx sap-help-mcp@latest

Claude Desktop — add this block to the mcpServers section of your config file (keep any servers already listed there):

{
  "mcpServers": {
    "sap-help": {
      "command": "uvx",
      "args": ["sap-help-mcp@latest"]
    }
  }
}
Config file
Windows (installer) %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

If you are unsure which you have, the reliable way is to let the app tell you: open Settings → Developer → Edit Config, which opens the file that is actually in use.

Then quit Claude Desktop completely (Cmd+Q on macOS, File → Exit on Windows — closing the window is not enough) and start it again. uvx installs the package on first launch, which takes a few seconds once.

The @latest suffix is what keeps you current, and it is worth understanding why. Plain uvx sap-help-mcp resolves the newest version on its first run and then reuses its cached environment indefinitely — a new release is not picked up until the cache is refreshed, so you would sit on whatever version you first installed. @latest asks for the newest version and refreshes the cache, at the cost of one index lookup per server start.

Pin instead if you would rather decide when to move: "args": ["sap-help-mcp==1.0.1"].

Option C — from a downloaded bundle (restricted networks)

The .mcpb is a plain zip: the same server, plus a manifest.json telling the host how to start it. If PyPI is unreachable but GitHub is not, unpack it and point a client at the unpacked copy — this is what Claude Desktop does internally in option A.

mkdir -p ~/mcp/sap-help && cd ~/mcp/sap-help
unzip ~/Downloads/sap-help-mcp.mcpb

# Claude Code (use an absolute path — the entry is stored verbatim)
claude mcp add sap-help -- \
  uv run --directory ~/mcp/sap-help src/sap_help_mcp/__main__.py

For Claude Desktop, the equivalent config entry is:

{
  "mcpServers": {
    "sap-help": {
      "command": "uv",
      "args": ["run", "--directory",
               "/absolute/path/to/mcp/sap-help",
               "src/sap_help_mcp/__main__.py"]
    }
  }
}

Two caveats. This does not make the server work offline: uv still resolves fastmcp and markdownify, so a package index — or a mirror of one — has to be reachable. And there is no update path: a new release means downloading the next .mcpb and unpacking it again. Prefer option B wherever PyPI is available.

Option D — from source (for development)

git clone https://github.com/aamelin1/sap-help-mcp.git
cd sap-help-mcp
uv sync --extra dev
uv run pytest                       # offline tests
uv run python -m sap_help_mcp.probe # live check against both portals

Point a client at the checkout with "command": "uv", "args": ["run", "--directory", "/abs/path/to/sap-help-mcp", "sap-help-mcp"].


Check that it works

Ask the AI assistant: "call sap_help_status". You should get the server version and the portal endpoints back. Then try a real question, e.g. "search SAP help for document splitting in new general ledger".

Getting good answers out of it

  • Queries go to the portals in English — both sources are English-only. Ask your own question in any language; the assistant is instructed to translate it into SAP terminology itself («переоценка валюты» → foreign currency valuation).
  • Filter by product line when you know it. SAP_ERP is ECC 6.0, SAP_S4HANA_ON_PREMISE and SAP_S4HANA_CLOUD are what they say, and SUPPORT_CONTENT is the support Expert Content wiki. Without a filter the portal happily returns ByDesign pages.
  • Rephrase once or twice if the results are thin. It helps more than anything else, and the assistant is told to do it.
  • The forum is the forum. sap_community_search returns field experience, not truth. Each result carries a match_score and a kudos count so quality is visible.

Troubleshooting

Symptom Cause and fix
Server does not appear in Claude Desktop The config was edited but the app was not fully restarted. Quit it entirely and reopen.
Extension fails to install on Windows, mentioning cryptography, Rust, or a missing link.exe A 32-bit Python was picked up during install. cryptography — a transitive dependency of every MCP server SDK, unused by this server — ships no 32-bit Windows wheel, so it is compiled from source and needs the MSVC linker. 1.0.3 asks uv for a 64-bit interpreter of its own to head this off; if you still hit it, use option B, which is unaffected. Installing Visual Studio Build Tools also works, but it is several gigabytes for nothing.
Install fails with Missing expected target directory for Python minor version link A known uv bug on Windows (astral-sh/uv#19622): a dangling junction in uv's managed-Python store that uv cannot repair by itself, usually left behind by an interrupted download. Delete the link and let uv recreate it — in cmd: rmdir "%APPDATA%\uv\python\cpython-3.13-windows-x86_64-none" then uv python install 3.13. Note rmdir without /s: that removes the junction, not what it points at. If it persists, rmdir /s /q "%APPDATA%\uv\python" and install again.
spawn uvx ENOENT uvx is not on the PATH the app inherits. Restart the machine after installing uv, or put the absolute path in command (%USERPROFILE%\.local\bin\uvx.exe, ~/.local/bin/uvx).
Tools return "Network unreachable or timed out" A corporate proxy or firewall is blocking the portals. Check that help.sap.com opens in a browser on the same machine.
Tools return SAP responded 4xx The portal probably changed its undocumented endpoints. Run uv run python -m sap_help_mcp.probe --raw and open an issue with the output.
Search finds nothing sensible Use the exact English SAP term, a transaction code or a message number; drop the product filter.
Claude Desktop logs macOS: ~/Library/Logs/Claude/mcp-server-sap-help.log · Windows: %APPDATA%\Claude\logs\

How it works

Roughly 800 lines of Python in four layers: tool declarations, one module per source, and a single place where HTTP happens. docs/ARCHITECTURE.md covers the three-step page-read chain, the Khoros LiQL ranking problem and the reasoning behind each design decision.

Contributing

Issues and pull requests are welcome. Run uv run pytest before submitting; if you touched any portal request shape, also run uv run python -m sap_help_mcp.probe and say in the PR that you did — those endpoints are undocumented and only live checks prove anything.

Legal

SAP and other SAP product names are trademarks of SAP SE. This project is not affiliated with SAP. All content reachable through the server remains the property of SAP SE and the respective authors; the server stores and redistributes nothing. See NOTICE for third-party attribution, including mcp-sap-docs, whose portal request shapes this project builds on.

Licensed under the Apache License 2.0.

Metadata

Release files for sap-help-mcp 1.2.3

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for sap-help-mcp 1.2.3
File Size Uploaded
sap_help_mcp-1.2.3.tar.gz 40.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for sap-help-mcp 1.2.3
File Interpreter ABI Platform
sap_help_mcp-1.2.3-py3-none-any.whl Python 3 none any Details

Total release size: 72.4 kB

Release files / sap_help_mcp-1.2.3.tar.gz

Download URL sap_help_mcp-1.2.3.tar.gz
Size 40.5 kB
Tags Source
SHA-256 checksum
How to use checksums
f3a0b625395ade3d927283f51e88095eff61bcc86735ab230b122d8bcd3d19a5
BLAKE2b-256 checksum
How to use checksums
8ff496f1604f8a0952479c80c6364b7e2728729c5aadc7926f6c3cf2046c2b4c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 4, 2026.

Transparency log

Release files / sap_help_mcp-1.2.3-py3-none-any.whl

Download URL sap_help_mcp-1.2.3-py3-none-any.whl
Size 32.0 kB
Tags Python 3
SHA-256 checksum
How to use checksums
ef9b5ddfc7bb126ead52c33a4258ab06adeaa007907d8bb1484a90a3269a605c
BLAKE2b-256 checksum
How to use checksums
f2f308e860f094a17374c94fa0606bddd3f9b4dcb2147dc6dc306b2c6f533427
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Aug 4, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

1.2.3 This release

2 release files

1.2.2

2 release files

1.2.1

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.3

2 release files

1.0.2

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page