mcp-sap-docs について
mcp-sap-docsは、SAP技術を扱う開発者やAIアシスタント向けのMCPサーバーです。索引化された文書検索と取得に任意のライブソースを組み合わせ、プロファイルごとにSAPやABAPの専用ツールを提供します。
主な機能
- 01BM25検索と任意のセマンティックランキング
- 02検索結果から文書全文を取得
- 03オフラインとライブの文書ソースを検索
- 04ABAP機能の対応状況とSAPオブジェクトを確認
- 05SAP Discovery CenterとUI5バージョン用ツール
- 06ABAPプロファイルでの静的コード解析
活用シーン
- 01SAPUI5、CAP、BTP、ABAPの文書検索
- 02SAP Communityのトラブルシューティング記事検索
- 03ABAP機能のリリース対応状況の確認
- 04SAPオブジェクトのclean-core詳細の確認
MCP 対応
MCPツールとして文書検索、取得、SAP固有の機能を公開します。クライアントはstreamable HTTPで接続でき、stdioでの実行にも対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP SAP Docs(上流)
AI アシスタント(Claude、Cursor、ChatGPT など)が、統合された検索・取得インターフェースを通じて SAP のドキュメントにアクセスできる MCP サーバーです。Git でクローンした SAP ドキュメントを対象とするローカル全文検索と、オプションのセマンティックランキングを組み合わせ、さらに SAP Help、SAP Community、Software Heroes へのオプションのライブクエリも提供します。これらすべてを MCP ツールとして公開します。
インストール
また、ストリーミング可能な HTTP に対応する任意の MCP クライアントにも追加できます。
{
"mcpServers": {
"sap-docs": {
"type": "http",
"url": "https://mcp-sap-docs.marianzeis.de/mcp"
}
}
}
API キーやログインは不要です。サーバーは公開されており、読み取り専用です。
公開ホスト型エンドポイント
すぐに利用できます — セットアップは不要です
バリアント URL SAP Docs http://mcp-sap-docs.marianzeis.de/mcpABAP https://mcp-abap.marianzeis.de/mcp
バリアント
mcp-sap-docs は、1 つのコードベースを共有し、設定(MCP_VARIANT / .mcp-variant)が異なる 2 つの MCP サーバーバリアントの上流リポジトリです。
| バリアント | 対象範囲 | 追加ツール |
|---|---|---|
sap-docs | 幅広い SAP ドキュメント:UI5、CAP、Cloud SDK、ABAP、BTP、AI、Terraform | Discovery Center ツール |
abap | ABAP に特化:ABAP キーワードドキュメント、RAP、チートシート、スタイルガイド | abap_lint |
ドキュメントソース
オフラインソース(ローカルインデックス、常に利用可能)
| ソース | 説明 |
|---|---|
abap-docs-standard | 公式 ABAP キーワードドキュメント — オンプレミス/完全な構文 |
abap-docs-cloud | 公式 ABAP キーワードドキュメント — ABAP Cloud/BTP(制限付き構文) |
abap-cheat-sheets | 実践的な ABAP/RAP のコードスニペットと例 |
abap-fiori-showcase | アノテーション駆動型の RAP + OData V4 + Fiori Elements の機能紹介 |
abap-platform-rap-opensap | openSAP「Building Apps with RAP」コースのサンプル |
cloud-abap-rap | ABAP Cloud + RAP のサンプルプロジェクト |
abap-platform-reuse-services | RAP 再利用サービスの例(番号範囲、メール、Adobe Forms など) |
sap-styleguides | SAP Clean ABAP スタイルガイドとベストプラクティス |
dsag-abap-leitfaden | DSAG ABAP Leitfaden(ドイツ語)の開発ガイドライン |
btp-cloud-platform | SAP BTP の概念、開発、セキュリティ、管理 |
sap-artificial-intelligence | SAP AI Core および SAP AI Launchpad のドキュメント |
ui5 | SAPUI5/OpenUI5 フレームワークのドキュメント |
cap | SAP Cloud Application Programming Model(CAP)のドキュメント |
cloud-sdk | SAP Cloud SDK のドキュメント |
terraform-provider-btp | BTP 向け SAP Terraform Provider — リソースとデータソース |
architecture-center | SAP Architecture Center のリファレンスアーキテクチャとガイダンス |
wdi5 | wdi5(WebdriverIO + UI5)テストフレームワークのドキュメント |
SAP Docs の追加ソース
sap-docs プロファイルでは、以下の公式ドキュメントもインデックス化されます。これらのソースでは既存の Markdown/MDX パイプラインを使用し、上流のファイルへのリンクを掲載しています。
| ソース ID | 対象範囲 |
|---|---|
btp-connectivity | Destination、Cloud Connector、プリンシパル伝播、HTTP/RFC |
cloud-sdk-python、cloud-sdk-ai-python | Python BTP および AI SDK のドキュメントとサンプル |
odata-vocabularies | OData のアノテーション用語と型。実験的なラベルはそのまま保持されます |
btp-job-scheduling-service、btp-cloud-logging | アプリケーションジョブとオブザーバビリティ |
btp-cloud-identity-services、btp-cloud-identity-integration | Identity Authentication、Identity Provisioning、およびシステム統合 |
btp-integration-suite、btp-event-mesh | 統合と API の統合ガイド、および Event Mesh |
btp-business-application-studio | 開発スペース、開発、トラブルシューティング |
btp-continuous-integration-and-delivery、btp-cloud-transport-management | マネージドパイプラインとクラウドトランスポート |
Integration Suite は docs/ISuite_Integrations_APIs と docs/ISuite_Event_Mesh をインデックス化します。重複コンテンツやナビゲーション用語の混在を避けるため、Cloud Integration/API Management ガイドの並行コピーは対象外です。Python SDK のソースには最新の docs-python コンテンツが含まれ、過去のバージョンフォルダーは対象外です。
SAP-docs の各リポジトリには CC-BY-4.0 の告知があり、SAP Cloud SDK、AI SDK、OData vocabularies には Apache-2.0 の告知があります。ソースのチェックアウトには上流のライセンスファイルが保持され、検索結果と取得結果には元のドキュメントへのリンクが含まれます。検証と対象範囲については、ソース拡張計画を参照してください。
オンラインソース(ライブクエリ、デフォルトで有効)
| ソース | 説明 |
|---|---|
| SAP Help Portal | SAP 製品の公式ドキュメント(幅広い対象範囲) |
| SAP Community | コミュニティのブログ、Q&A、トラブルシューティングの投稿 |
| Software Heroes | ABAP/RAP の記事とチュートリアル(EN + DE、重複排除済み) |
利用可能なツール
共通ツール(両方のバリアント)
| ツール | 説明 |
|---|---|
search | オフラインドキュメントと任意のオンラインソースを対象にした統合検索(BM25 と任意のセマンティックランキング)。query、k、includeOnline、includeSamples、abapFlavor、sources パラメーターに対応しています。 |
fetch | search が返した ID を指定して、ドキュメントの全文を取得します。 |
abap_feature_matrix | Software Heroes の機能マトリックスを使用して、SAP リリース(7.40–LATEST)における ABAP 機能の利用可否を確認します。 |
sap_community_search | Khoros LiQL API を使用した専用の SAP Community 検索。上位の投稿の全文を返します。特定のエラーや回避策について、search の結果が不十分な場合に使用してください。 |
sap_search_objects | 公式の SAP/abap-atc-cr-cv-s4hc リリース状態リポジトリから、名前、コンポーネント、型で SAP のリリース済みオブジェクト(クラス、インターフェイス、テーブル、CDS ビューなど)を検索します。クリーンコア準拠の調査に役立ちます。 |
sap_get_object_details | 特定の SAP オブジェクトについて、クリーンコアレベル(A/B/C/D)、後継オブジェクト、任意の準拠判定を含む、リリース状態の詳細を取得します。 |
sap-docs バリアントのみ
| ツール | 説明 |
|---|---|
sap_discovery_center_search | SAP Discovery Center のサービスカタログを、キーワード、カテゴリ、またはライセンスモデルで検索し、BTP サービスを探します。 |
sap_discovery_center_service | BTP サービスの料金プラン、製品ロードマップ、ドキュメントへのリンク、主な機能など、包括的な詳細を取得します。サービスの UUID または名前を指定できます。 |
ui5_version_diff | ローカルの変更履歴バンドル(dist/data/ui5-lib-diff/all-changes.json)から、バージョンまたは範囲に一致する FEATURE/FIX/DEPRECATED の変更と SAPUI5 What's New の項目をすべて一覧表示します。npm run setup で自動的に更新されます。手動で更新する場合は、セットアップまたは再ビルド中に npm run download:ui5-lib-diff を使用してください。完全なアップグレードワークフローには、ui5-version-upgrade スキルと @ui5/mcp-server を併用してください。 |
abap バリアントのみ
| ツール | 説明 |
|---|---|
abap_lint | abaplint を使用して ABAP ソースコードの静的コード解析を実行します。コードパターンからファイルの種類を自動検出し、行番号、重大度、ルールキーを含む検出結果を返します。 |
アーキテクチャの概要
- 上流の信頼できる情報源:
mcp-sap-docs - 一方向の同期先:
abap-mcp-server - 検索では BM25 キーワードランキングがデフォルトで使用されます。セマンティックスコアはオプションで、Reciprocal Rank Fusion(RRF)によって組み合わせられます。
- 埋め込みモデル:
Xenova/all-MiniLM-L6-v2(約 90 MB、dist/models/にキャッシュ)
バリアントの選択
解決順序:
MCP_VARIANT環境変数- リポジトリルートの
.mcp-variantファイル - フォールバック:
sap-docs
例:
# Run as full sap-docs profile
MCP_VARIANT=sap-docs npm run setup
MCP_VARIANT=sap-docs npm run build
MCP_VARIANT=sap-docs npm run start:streamable
# Run as ABAP profile
MCP_VARIANT=abap npm run setup
MCP_VARIANT=abap npm run build
MCP_VARIANT=abap npm run start:streamable
検索の動作
search は、以下を対象に統合検索を実行します。
- オフライン FTS インデックス(ローカルのサブモジュールのコンテンツ)
- オプションのオンラインソース(
includeOnline=true):- SAP Help
- SAP Community
- Software Heroes のコンテンツ検索(EN/DE を統合し、重複を除去)
ランキングとフィルタリングの主な機能:
- オプションのセマンティックランキングを備えた BM25 検索 — キーワードと意味を RRF で統合
- オフラインソースとオンラインソースを横断する Reciprocal Rank Fusion(RRF)
- メタデータに基づくソースレベルのブースト
includeSamplesでサンプルを多く含むソースを除外できますabapFlavor(standard/cloud/auto)で、ABAP 以外のソースを保持しながら公式 ABAP ドキュメントライブラリをフィルタリングしますsourcesでオフラインライブラリを明示的に制限できます
コンテンツ取得の制限
Community の投稿本文は、コード、リンク、画像、表を含む Markdown として返されます。以前に Community の生 HTML を解析していたクライアントは、Markdown を処理する必要があります。ドキュメント ID、ソース URL、レスポンススキーマに変更はありません。 変換に失敗した場合、その投稿は通知とともに元の HTML のまま保持されます。同じバッチ内の他の投稿は引き続き返されます。
SAP Help と Community の取得では、デフォルトで 75,000 文字が上限です。短縮された結果には、正確な欠落数を示す metadata.truncation が含まれます。セルフホスト可能なサーバーでは、起動前に MAX_CONTENT_LENGTH を設定できます。コンテンツサイズの制限を参照してください。
ハイブリッド検索
オフライン検索では、BM25 キーワードランキングがデフォルトで使用されます。オプションのセマンティックランキングでは、Xenova/all-MiniLM-L6-v2 を使用して語彙的な候補の順序を変更します。候補プール外は検索しません。ドキュメントとセクションの埋め込みをすべて作成し、独自のクエリで評価したうえで、EMBEDDING_WEIGHT=0.7 を明示的に設定して有効にしてください。
埋め込みは docs.sqlite に保存され、モデルは dist/models/ にキャッシュされます。古い、または不完全な埋め込みアーティファクトがある場合は、再構築の警告とともに語彙的ランキングへフォールバックします。セットアップ、制限事項、コストについては docs/HYBRID-SEARCH.md を参照してください。
オフライン専用モード
search はデフォルトでオンラインソースを含みます。オフライン専用で実行するには、次のようにします。
- ローカルインデックス/サブモジュールのみを使用します(
npm run setup+npm run build) - 各
searchリクエストでincludeOnline=falseを指定します
search リクエスト本文の例:
{
"query": "RAP draft",
"k": 8,
"includeOnline": false
}
Docker(オフラインのみ)
ホストバインドを指定してコンテナーを実行し、includeOnline=false を指定して search を呼び出します。
docker run --rm -p 3122:3122 \
-e MCP_VARIANT=sap-docs \
-e MCP_PORT=3122 \
-e MCP_HOST=0.0.0.0 \
mcp-sap-docs
厳密なエアギャップ環境で実行するには、コンテナーネットワークを無効にします。
docker run --rm --network none -p 3122:3122 \
-e MCP_VARIANT=sap-docs \
-e MCP_PORT=3122 \
-e MCP_HOST=0.0.0.0 \
mcp-sap-docs
注意事項:
--network noneを指定すると、実行時の隔離によってオンラインでの取得が不可能になります。- 起動時にオンラインでの事前取得を試みた警告(ABAP 機能マトリックスなど)がログに記録される場合がありますが、オフラインでの
searchの使用には影響しません。
クイックスタート(ローカル)
npm ci
npm run setup
npm run build
npm run setup は、選択したバリアントのドキュメントソースを設定済みのブランチ先端に更新し、埋め込みを含むインデックスを構築します。ネストされたサブモジュールは、これらのソースに記録されたコミットのままになります。任意のネストされたリポジトリを省略するには(たとえば、上流の URL で SSH 認証情報が必要な場合)、Bash(Windows の Git Bash を含む)で SKIP_NESTED_SUBMODULES=1 npm run setup を使用します。
npm run setup:submodules は代わりに、リポジトリに記録されたソースコミットをチェックアウトします。最新のドキュメントを取得したり、バリアントのフィルタリングを適用したりはしません。既存のインストールを更新する場合は、npm run setup を実行してください。
サーバーモードを起動します:
# MCP stdio
npm start
# HTTP status/dev server
npm run start:http
# MCP streamable HTTP
npm run start:streamable
バリアントごとのデフォルトポート:
sap-docs:HTTP3001、ストリーム可能3122abap:HTTP3002、ストリーム可能3124
ヘルスチェック:
curl -sS http://127.0.0.1:3122/health | jq .
curl -sS http://127.0.0.1:3001/status | jq .
abap プロファイルの実行時は、バリアント固有のポートを使用してください。
ビルドおよびセットアップスクリプト
スクリプト名は共通です(setup、build、start、start:streamable)。
動作はバリアント設定によって変わります。
setup.shは、バリアントで許可されたサブモジュールのみを初期化しますbuild-indexは、バリアントで許可されたライブラリのみを含めますbuild-ftsは、バリアントで許可されたライブラリのみをインデックス化します
これにより、個別のビルドスクリプト群を維持することなく、abap の処理を高速化し、規模を小さくできます。
Docker
バリアント用のイメージをビルドします:
# sap-docs image
docker build --build-arg MCP_VARIANT=sap-docs -t mcp-sap-docs .
# abap image
docker build --build-arg MCP_VARIANT=abap -t abap-mcp-server .
ストリーム可能サーバーを実行します:
# sap-docs
docker run --rm -p 3122:3122 \
-e MCP_VARIANT=sap-docs \
-e MCP_PORT=3122 \
mcp-sap-docs
# abap
docker run --rm -p 3124:3124 \
-e MCP_VARIANT=abap \
-e MCP_PORT=3124 \
abap-mcp-server
SAP BTP Cloud Foundry
BTP CF では、推奨される sap-docs の方法は、保守されている
ghcr.io/marianfoo/mcp-sap-docs:sap-docs イメージを MTA でデプロイすることです。Cloud Foundry は、埋め込みアーティファクトを含む準備済みイメージを取得して実行するだけです。正の EMBEDDING_WEIGHT が明示的に設定されない限り、ランキングは語彙ベースのままです。
公開情報を優先したデプロイガイドについては、docs/BTP-CF-DEPLOYMENT.md を参照してください。MTA、直接の cf push、カスタムレジストリイメージ、更新セットアップから選択するには、
デプロイオプションとトレードオフから始めてください。
abap-mcp-server への一方向同期
このリポジトリには、直接同期するための自動化が含まれています。
- ワークフロー:
.github/workflows/sync-to-abap-main.yml - スクリプト:
scripts/sync-to-abap.sh
フロー:
- Release Please は、リリース PR のマージ後に
mcp-sap-docsのリリースを公開します - リリースワークフローが ABAP 同期ワークフローを明示的に起動します
- 同期ワークフローが
abap-mcp-serverをクローンします - 追跡対象の上流ファイルを(除外ルールを適用して)同期し、その後 ABAP オーバーレイを適用します
.mcp-variantをabapに強制設定し、ABAP パッケージの識別情報をパッチします- 同期コミットが
abap-mcp-server/mainにプッシュされます - そのプッシュによって ABAP デプロイワークフローが起動します
同期ワークフローは、ドライランやカスタムターゲットブランチを含む手動実行にも対応しています。
下流の main ブランチへのプッシュのみが、自動デプロイを起動します。
mcp-sap-docs リポジトリで必要なシークレット:
ABAP_REPO_SYNC_TOKEN:abap-mcp-serverにコードとワークフローの変更をプッシュできる、専用のアクセストークン。以降のワークフローを起動しないGITHUB_TOKENとは分けてください。
デプロイモデル
mcp-sap-docs:リリースバージョンを管理し、リリース作成時にデプロイと ABAP 同期を実行しますabap-mcp-server:アップストリームの同期コミットを含むmainへのプッシュ時、またはworkflow_dispatchによってデプロイします
ダウンストリームリポジトリでは GitHub リリースを公開しません。そのため、デプロイは release: published ではなく、同期によるプッシュをトリガーとして実行する必要があります。アップストリームのリリースによって、自動同期のタイミングが決まります。
ABAP のデプロイワークフローは
sync/abap.overlay/.github/workflows/deploy-abap-mcp-server.yml で管理されています。今後の同期後も修正が維持されるよう、アップストリームのオーバーレイを変更してください。
デプロイ修正をマージした後、次のアップストリームリリースを公開するか、アップストリームの main を対象に sync-to-abap-main.yml を手動で実行してください。ダウンストリームのデプロイ実行が成功すること、および https://mcp-abap.marianzeis.de/health が同期された ABAP の package.json 内のバージョンを報告することを確認してください。同期の成功だけでは、デプロイが完了したことを確認できません。
PM2 ランタイム
ecosystem.config.cjs はバリアントに対応しており、以下を解決します。
- プロセス名
- ポート
- デプロイパス
config/variants/*.json から取得します。
検証コマンド
npm run build:tsc
npm run test:url-generation
npm run test:integration
npm run test:software-heroes
npm run test:discovery-center # mocked Discovery Center REST contract tests
npm run test:discovery-center:live # opt-in live API smoke test
npm run test:sap-objects # SAP Released Objects unit tests
# Variant-specific build checks
MCP_VARIANT=sap-docs npm run build:index
MCP_VARIANT=abap npm run build:index
MCP_VARIANT=sap-docs npm run build:fts
MCP_VARIANT=abap npm run build:fts
追加ドキュメント
docs/ARCHITECTURE.mddocs/DEV.mddocs/TESTS.mddocs/UPSTREAM-ONE-WAY-SYNC-IMPLEMENTATION.mdREMOTE_SETUP.md
厳選された SAP チュートリアル
SAP Docs プロファイルには、sap-tutorials-ai、sap-tutorials-hana、sap-tutorials-integration にある公式チュートリアルが 32 件追加されています。
AI Core のオーケストレーション V2 とグラウンディング、HANA Cloud の SQLScript と CAP、Integration Suite MCP Gateway、Cloud Transport Management が含まれます。既存の Fiori OPA ガイドも引き続き別途利用できます。
たとえば、SAP HANA Cloud SQLScript stored procedure tutorial や SAP Integration Suite MCP Gateway tutorial のように、製品名とタスク名を使ってください。検索対象を絞り込むには sources を指定し、複数のソースを横断して検索する場合は指定しないでください。チュートリアルでは実例を用いて解説し、前提条件も保持しています。詳細な API の動作については、製品ドキュメントと SDK ドキュメントを参照してください。
明示的な選択は config/tutorials.json に記載されています。取得されたチュートリアルには、読みやすいオプションラベル、絶対パスのアセット/前提条件へのリンク、および公開ページの URL が含まれています。未公開のトランスポート概要は、公式の GitHub ソースにリンクしています。ソースの内容と元の帰属表示は保持されます。元のチュートリアルリポジトリのライセンスが引き続き適用されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。