プロトタイプ · プレビュー版:公式レジストリのすべてのサーバーを掲載し、30分ごとに同期しています。レビューとアカウント機能は今後のステップで始まります。
PopNx MCPAIを使う人のためのMCPサーバー · やさしい言葉で解説

GuniWeb SAP MCP

作者:guniwebバージョン 0.10.0i★ –iパソコンで動く
レジストリ名io.github.guniweb/guniweb-sap-mcp

インストール

概要

作者による説明(英語の原文)

SAP S/4HANA and ECC: OData V2/V4, IDoc and RFC/BAPI for n8n and other MCP clients

PopNx MCPの3つの柱

この3つを1つのスコアにまとめることはしません。意見、測定、人気はそれぞれ別のものだからです。

できること

このサーバーのやさしい解説はまだ書いていません。以下はレジストリから読み取った事実です。

  • 接続方法: パソコンで動く
  • トランスポート: stdio
  • カテゴリ: その他
  • 入力が必要なもの:SAP_BASE_URL, SAP_PASSWORD

インストール

使っているAIアプリを選んで、設定をコピーしてください。

インストールの前に

  • 基本チェック:1項目中1項目に合格
  • あなたのパソコンで、あなたのユーザーと同じ権限(ファイル、ネットワーク、アプリ)で動きます。
  • 自分で入力するもの: SAP_BASE_URL, SAP_AUTH_TYPE, SAP_CLIENT, SAP_USERNAME, SAP_PASSWORD, SAP_MCP_DEMO

「秘密」と表示された値は、あなたのアカウントの鍵です。絶対に人に教えたり、チャットに貼り付けたりしないでください。

必要なもの

  • npmNode.jsのインストール(npxコマンドに必要)

どのアプリを使っていますか?

上でアプリを選んでください。選んだアプリを覚えておくので、次からはボタンに「…にインストール」と表示されます。

Claude Desktop → Settings → Developer → Edit Config を開き、claude_desktop_config.json にこれを貼り付けます

{
  "mcpServers": {
    "guniweb-sap": {
      "command": "npx",
      "args": [
        "-y",
        "guniweb-sap-mcp"
      ],
      "env": {
        "SAP_BASE_URL": "your-value",
        "SAP_AUTH_TYPE": "your-value",
        "SAP_CLIENT": "your-value",
        "SAP_USERNAME": "your-value",
        "SAP_PASSWORD": "your-value",
        "SAP_MCP_DEMO": "your-value"
      }
    }
  }
}

ターミナルでこれを実行します

claude mcp add guniweb-sap --env SAP_BASE_URL=your-value --env SAP_AUTH_TYPE=your-value --env SAP_CLIENT=your-value --env SAP_USERNAME=your-value --env SAP_PASSWORD=your-value --env SAP_MCP_DEMO=your-value -- npx -y guniweb-sap-mcp

動かす前に、空欄の値を入力してください。

Cursorで開く

または、設定を自分でコピーする

プロジェクトの .cursor/mcp.json、または ~/.cursor/mcp.json に貼り付けます

{
  "mcpServers": {
    "guniweb-sap": {
      "command": "npx",
      "args": [
        "-y",
        "guniweb-sap-mcp"
      ],
      "env": {
        "SAP_BASE_URL": "your-value",
        "SAP_AUTH_TYPE": "your-value",
        "SAP_CLIENT": "your-value",
        "SAP_USERNAME": "your-value",
        "SAP_PASSWORD": "your-value",
        "SAP_MCP_DEMO": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

VS Codeで開く

または、設定を自分でコピーする

プロジェクトの .vscode/mcp.json に貼り付けます

{
  "servers": {
    "guniweb-sap": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "guniweb-sap-mcp"
      ],
      "env": {
        "SAP_BASE_URL": "your-value",
        "SAP_AUTH_TYPE": "your-value",
        "SAP_CLIENT": "your-value",
        "SAP_USERNAME": "your-value",
        "SAP_PASSWORD": "your-value",
        "SAP_MCP_DEMO": "your-value"
      }
    }
  }
}

ブラウザがアプリを開いてよいか確認し、そのあとアプリが設定を表示して確認を求めます。キーの値は空欄のままなので、自分で入力してください。

これはパソコンで動くサーバーですが、ChatGPTがつなげるのはインターネット上のサーバーだけです。ほかのアプリを選んでください。

選んだアプリは、この端末のCookieに保存されます。アカウントは不要です。

自分で入力する値

  • SAP_BASE_URL 必須 env
    Base URL of the SAP system, including any path segment in front of /sap/opu/odata (e.g. https://s4.example.com or https://gateway.example.com/prefix)
  • SAP_AUTH_TYPE env
    Authentication type: basic, oauth2, apikey, ias, xsuaa, btp-principal, saml-bearer
  • SAP_CLIENT env
    SAP client (Mandant). Appended to every request — a client-dependent Gateway answers 401 without it
  • SAP_USERNAME env
    SAP user for basic authentication
  • SAP_PASSWORD 秘密 env
    Password for basic authentication
  • SAP_MCP_DEMO env
    Set to true to start a built-in mock S/4HANA instead of connecting to a real system. No SAP_* configuration needed — for trying the server out

この設定は、作者のレジストリ登録情報から作成しています。READMEと違う場合は、READMEに従ってください。

できること

パソコンで動くサーバーです。インストールすると、ツール一覧がAIアプリに表示されます。

基本チェックi

誰でも見られる情報をチェックしており、コードは読んでいません。当てはまらない項目は数に入れていません。 · 2026年11月7日にチェック

  • ✓ 合格

    作者とリポジトリが一致

    レジストリ名は、リポジトリを所有するGitHubアカウント guniweb で確認済みです

  • … 未チェック

    今もメンテナンスされている

    このリポジトリはまだGitHubから読み取っていません

  • … 未チェック

    ライセンスがある

    このリポジトリはまだGitHubから読み取っていません

  • – 対象外

    エンドポイントが応答する

    これはパソコンで動くため、インターネット上のエンドポイントはありません

  • – 対象外

    OAuthでサインイン

    パソコンで動き、代わりにローカルの設定を使います

  • … 未チェック

    ツールの説明に隠れた指示がない

    パソコンで動くサーバーです。ツール一覧を読み取れるのは、インターネット上のエンドポイントがある場合だけです

その他のほかのサーバーとの比較i

  • このカテゴリのほかの32696件のうち0%よりスターが多い
  • このカテゴリのほかの32696件のうち63%より最近レジストリに公開
  • 基本チェックの結果が、このカテゴリのほかの32696件のうち100%と同じかそれ以上

レジストリでこのカテゴリにある有効なすべてのサーバーと比較しています。スターは、公開者がリポジトリの所有者である場合だけ数えます。

よくある質問

GuniWeb SAP MCPは安全ですか?

当てはまる基本チェック1項目のうち1項目に合格しました。コードは読んでいません。キーやトークンを追加する前に、サーバーがどんなアクセスを求めているかを確認し、必要な権限だけを持つキーを使ってください。

どんなキーやコードが必要ですか?

入力が必要なもの:SAP_BASE_URL, SAP_PASSWORD

パソコンで動きますか、それともクラウドですか?

あなたのパソコンで動きます。必要なときにAIアプリが起動し、データは作者のサーバーを通りません(サーバー自体がオンラインサービスを呼び出す場合を除きます)。

今もメンテナンスされていますか?

GitHubリポジトリの最終更新は–、最新バージョン(0.10.0)がレジストリに届いたのは22 日前です。

どのアプリで使えますか?

Claude Desktop、Claude Code、Cursor、VS CodeなどのMCP対応アプリで使えます。パソコンにNode.jsも必要です。

代わりに使えるものは?

同じカテゴリには:Spec Driven Development, Remote Desktop Commander, LexPact UK Contracts

代わりの候補

同じカテゴリで、ほかの作者が作ったサーバー。スターの多い順。

カードの見方:★ GitHubスターi3つの柱:レビュー · チェック · 利用状況i更新=最新バージョンをレジストリに公開した日i

Remote Desktop Commander

作者:desktop-commander

Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.

クラウドで動く★ 211一昨日更新
インストール

作者のREADME

READMEを開く

作者のリポジトリから書かれたとおりにコピーしたものです。PopNx MCPは内容を確認・推奨していません。HTML、画像、スクリプトは取り除いています。リンクはこのサイトの外へ移動します。

GuniWeb SAP S/4HANA & ECC MCP Server

Designed for n8n, usable from any MCP host. Free to use — built and maintained by GuniWeb.

Connect n8n workflows to SAP S/4HANA and ECC via OData V2, V4, IDocs, and RFC/BAPI using the Model Context Protocol (MCP). Made for AI-assisted, human-governed workflows: the workflow author decides which SAP APIs are called and in what order; the LLM extracts, maps and fills in parameters. Writes are off by default and switched on explicitly, per server and per token.

graph LR

n8n["n8n workflow AI-assisted, human-governed"] -->|MCP Protocol| MCP["guniweb-sap-mcp 22 Tools • 8 Auth Types"] MCP -->|"OData V2/V4 IDoc XML RFC/BAPI"| SAP["SAP S/4HANA & ECC"] MCP -->|"OAuth2 / JWT"| BTP["SAP BTP"] BTP --> SAP

style n8n fill:#4a90d9,color:#fff,stroke:#3a7bc8 style MCP fill:#2d2d2d,color:#fff,stroke:#555 style SAP fill:#1a6fb5,color:#fff,stroke:#0f5a9d style BTP fill:#e8a317,color:#fff,stroke:#c88d14

Features

OData & IDoc
  • OData V2 + V4 CRUD -- Read, query, create, update, delete with auto version detection
  • Deep Insert -- Create parent + child entities in one request
  • Function Imports (V2) & Actions/Functions (V4) -- Trigger SAP business logic
  • Batch Operations -- Multiple operations in a single $batch request
  • NL-to-OData Query -- Natural language queries converted to structured OData filters
  • IDoc Send & Receive -- HTTP/XML based, no RFC dependency
Discovery & Intelligence
  • Service Discovery -- Auto-discover OData services with 16 business domain categories
  • Progressive Metadata -- Service catalog -> entity sets -> properties -> query
  • Smart Query Routing -- Domain-based routing resources for LLM tool selection
  • Decision-Tree Tool Descriptions -- "When to use / When NOT to use" blocks guide LLMs
Governed tool visibility
  • 4-Tier Tool Registry -- Core / OData / IDoc / RFC tiers with on-demand activation
  • `sap_enable_tools` -- LLMs activate additional tool tiers at runtime, within the limits you set
  • Read-only by default (since 0.2.2) -- write tools require --allow-write
  • Per-token policy (0.3.0) -- readOnly and tool-tier ceilings per Bearer token, only ever more restrictive
  • IDoc / RFC auto-disable -- tools hidden when the corresponding configuration is missing
  • MCP Annotations -- readOnlyHint, destructiveHint, idempotentHint on all 22 tools
Authentication (8 Types)
graph TB

subgraph Technical["Technical User Auth"] basic["basic Direct S/4HANA "] userbasic["user-basic Personal SAP login per request "] oauth2["oauth2 BTP Client Credentials "] apikey["apikey Sandbox / Testing "] end subgraph Enterprise["Enterprise Auth (OIDC)"] ias["ias SAP IAS Token "] xsuaa["xsuaa SAP XSUAA Token "] end subgraph Principal["Principal Propagation End-user identity forwarded to SAP "] btp["btp-principal JWT Bearer Exchange via Destination Service "] saml["saml-bearer SAML 2.0 Assertion

  • RSA-SHA256 Signing "] end

style Technical fill:#2a5f8f,color:#fff,stroke:#1a4f7f style Enterprise fill:#5b8c5a,color:#fff,stroke:#4b7c4a style Principal fill:#8b5e3c,color:#fff,stroke:#7b4e2c

Infrastructure
  • Two Transport Modes -- stdio and Streamable HTTP (the legacy SSE transport was removed in 0.8.0)
  • Named destinations (0.3.0) -- one server, several SAP systems; a Bearer token per n8n credential selects the system and its permissions. Static API key still supported
  • Docker Ready -- Docker Compose for n8n + SAP MCP sidecar
  • Zero telemetry -- the server talks to the SAP/BTP endpoints you configure and to nothing else. No usage statistics, no update checks, no crash reports
  • 1267 Tests -- Unit, integration, E2E with CI/CD via GitHub Actions

Quick Start

Try it without an SAP system: --demo

No SAP system at hand? Start the server against a built-in mock S/4HANA and try every tool from n8n or any MCP client:

npx guniweb-sap-mcp --demo                                   # stdio — n8n MCP Client in command mode

npx guniweb-sap-mcp --demo --transport http --port 8808 # HTTP — n8n MCP Client with URL http://localhost:8808/mcp npx guniweb-sap-mcp --demo --allow-write # also try sap_create / sap_update / sap_delete / sap_batch

The demo starts an in-memory OData V2 gateway on localhost (three services with real SAP field names — API_BUSINESS_PARTNER, API_SALES_ORDER_SRV, API_PRODUCT_SRV; ~20 business partners, 15 sales orders with items, 10 products) and points the server at it. It behaves like a Gateway where it matters: catalog discovery, $metadata, $filter/$expand/paging, CSRF tokens, ETags, deep insert, function imports, $batch with changesets, SAP-style error payloads. Sample data only — nothing is real, nothing leaves your machine, and changes are gone when the process ends. Also SAP_MCP_DEMO=true (e.g. in Docker). A workflow you build against the demo runs against a real system after you replace --demo with your SAP_* configuration.

1. Install
npm install -g guniweb-sap-mcp

Or run it as a container: docker run --rm -p 8808:8808 -e SAP_MCP_DEMO=true ghcr.io/guniweb/guniweb-sap-mcp:latest

2. Configure
export SAP_BASE_URL=https://your-sap-system.example.com

export SAP_AUTH_TYPE=basic export SAP_USERNAME=your-user export SAP_PASSWORD=your-password export SAP_CLIENT=100 # do not omit: without it a client-dependent Gateway

answers 401 "Anmeldung fehlgeschlagen", which looks

like a wrong password but is not one

3. Run
# stdio (default) -- for n8n MCP Client in command mode

guniweb-sap-mcp

HTTP -- for n8n MCP Client in URL mode or Docker

guniweb-sap-mcp --transport http --port 8808

With tool tier control

guniweb-sap-mcp --transport http --port 8808 --tiers core,odata guniweb-sap-mcp --transport http --port 8808 --allow-write # writes are OFF by default

Production: authenticate the MCP endpoint AND the inbound IDoc webhook

guniweb-sap-mcp --transport http --port 8808 --api-key --webhook-secret

Run as a container
# Look around first — mock S/4HANA inside the container, no SAP system needed

docker run --rm -p 8808:8808 -e SAP_MCP_DEMO=true ghcr.io/guniweb/guniweb-sap-mcp:latest

Against a real system (pin the version in production)

docker run -d --name sap-mcp -p 8808:8808 --env-file .env \ ghcr.io/guniweb/guniweb-sap-mcp:

Flags go straight to the server — writes stay off unless you say so

docker run -d -p 8808:8808 --env-file .env \ ghcr.io/guniweb/guniweb-sap-mcp: --allow-write

The image is built from the published npm package, not from a second build path — what runs in the container is the artifact you would have installed with npm install, so the two cannot drift apart. HTTP transport on port 8808 is the default inside the image (SAP_MCP_TRANSPORT / SAP_MCP_PORT); it runs as a non-root user, answers a health check on /healthz, and is published for linux/amd64 and linux/arm64 with build provenance.

Not included: RFC/BAPI. That path needs the SAP NW RFC SDK, which SAP licenses to customers only and which therefore cannot ship in a public image. Everything else — OData V2/V4, IDoc over HTTP/XML — works. For RFC, install the SDK on the host and run the server from npm (Setup for SAP ECC).

A docker-compose.yml that puts n8n next to the server is in the repository.

Production hardening
Variable / FlagDefaultDescription
--tool-timeout / SAP_MCP_TOOL_TIMEOUT30 (seconds)Time budget for a whole tool call, however many SAP requests it makes. On expiry the client gets a valid MCP response with truncated: true and a plain-language reason — never a hanging connection. Paginated reads return the pages fetched so far. 0 disables the budget (logged as a warning at startup)
SAP_HTTP_TIMEOUT_MS30000Timeout for a single outbound SAP request (ms). Hanging gateways fail fast with a structured TIMEOUT error instead of stalling the n8n agent. Capped by whatever is left of the tool budget above
--cache-dir / SAP_CACHE_DIR_(unset = in-memory only)_Persist the catalog and metadata caches to disk so a restart does not refetch them. Without it every restart re-reads the full catalog — on a system with over a thousand services that is the cold start that breaks client timeouts. n8n evicts its own client entry on a transport error, so restarts are not rare
SAP_CA_CERT_(unset)_Path to the root CA that signs your SAP certificate — the documented way past a corporate PKI. Mirrored into NODE_EXTRA_CA_CERTS. Prefer this over SAP_TLS_VERIFY=false, which disables the check rather than solving it
--concurrency / SAP_CONCURRENCY5Upper bound on simultaneous SAP requests where several are unavoidable
--allow-write / SAP_MCP_ALLOW_WRITE_(unset = read-only)_Since 0.2.2 the server is read-only by default. sap_create, sap_update, sap_delete, sap_function and sap_idoc_send are not registered at all until you set this — a tool an agent cannot see is a tool it cannot call by accident. --read-only is still accepted and now simply describes the default
SAP_JWT_ISSUER_(unset = no verification)_Issuer whose JWKS is used to verify incoming user tokens. Without it tokens are only decoded, and the resulting identity is marked verified: false — safe to forward to SAP (SAP verifies itself), but not safe to base a local decision on. With it, a token failing verification is rejected with 401 rather than silently downgraded to the technical user
SAP_WEBHOOK_SECRET / --webhook-secret_(unset = open + startup warning)_Shared secret for the inbound IDoc webhook. Accepts Authorization: Bearer or HTTP Basic auth whose password equals the secret (matches SAP SM59 HTTP destinations)
SAP_WEBHOOK_HOST / --webhook-hostall interfacesBind address of the standalone IDoc webhook (stdio mode). Set 127.0.0.1 behind a reverse proxy
SAP_WEBHOOK_MAX_BODY_BYTES10485760 (10 MB)Reject larger IDoc payloads with 413 before they are buffered in memory

In HTTP transport mode the /idoc route is mounted on the MCP port: with --webhook-secret it authenticates independently of --api-key (so SAP's Basic auth works while n8n uses the Bearer key); without it, it falls under --api-key if set — and is open if neither is configured (the server logs a warning at startup).

Both timeouts must stay below the smallest client limit in your setup. Typical limits: a reverse proxy such as Cloudflare aborts at 100 s (524), n8n's MCP client transport at 300 s. A budget above the smallest limit never takes effect, because the client gives up first.

Tracing a slow tool call

Every tool call logs one line on completion, carrying a correlation id that also appears on each SAP request it triggered:

{"correlationId":"a3f19c8b2d04","tool":"sap_discover_services","outcome":"ok","durationMs":842,"sapCalls":1,"resultBytes":18422}

grep a3f19c8b2d04 then shows the full story of that one call — including how many SAP requests it produced. outcome is one of ok, error, timeout (budget expired) or `aborte

冒頭だけを表示しています。続きはリポジトリで読めます

PopNxに聞く