Claude SAP連携ガイド — BTP MCP ServerでBTPサービスを操作する
「SAP」組織名義の公式MCPサーバーはなく、コミュニティ製のBTP MCP Serverが実質的な選択肢です。何ができて何ができないかを一次ソースから確認します。
ClaudeとSAPを連携させたいとき、まず確認しておくべきことがあります。SAP自身が公開している「SAP」組織名義の公式MCPサーバーは存在しません。実際に使われているのは、個人やコミュニティが公開しているBTP(Business Technology Platform)向けのMCPサーバー群で、代表格がbtp-mcp-serverです。この記事では、この前提を踏まえたうえで何が接続でき、何が接続できないのかを一次ソースに沿ってまとめます。
Claude SAP連携の実態 — 公式ではなくコミュニティ製
PyPIに公開されているbtp-mcp-serverは、個人開発者が「AI + SAP BTP連携」というテーマの一環として公開したオープンソースプロジェクトです。MITライセンスで配布され、SAP社が保守やサポートに関与している記載はありません。GitHub上で同種のプロジェクトを探すと、OData経由でSAPデータを扱うbtp-sap-odata-to-mcp-serverや、ABAP開発環境に接続するmcp-abap-adtなど、複数の独立したプロジェクトが並行して存在します。「SAP公式のMCPサーバー」という単一の窓口があるわけではなく、目的ごとに別々のコミュニティ製サーバーを選ぶのが今のSAP×MCPエコシステムの実態です。
btp-mcp-serverでできること
btp-mcp-serverが公開しているツールは5つで、いずれもBTPプラットフォームの状態を調べるための読み取り操作です。
| ツール | できること |
|---|---|
list_btp_services | できることグローバルカタログに存在するBTPサービスの一覧取得 |
get_btp_service_plans | できること特定サービスが持つプラン(無料枠の有無を含む)の確認 |
list_btp_instances | できることサブアカウント内で稼働中のインスタンスと状態の確認 |
get_btp_destinations | できること設定済みのDestination(外部接続)と認証方式の確認 |
recommend_btp_service | できることユースケースに合ったBTPサービスの推薦 |
見てわかる通り、これらはすべて「BTPというプラットフォーム自体」を対象にした問い合わせです。S/4HANAの受注データや在庫情報のような業務データそのものには、このサーバー単体ではアクセスできません。ERPの業務データを扱いたい場合は、OData経由でSAPデータを公開する別系統のMCPサーバー(btp-sap-odata-to-mcp-server等)を別途組み合わせる必要があります。この違いを理解せずに導入すると「BTPには繋がったのに欲しいデータが出てこない」という誤解につながりやすいところです。
接続手順
BTP側でService Managerのサービスキーを取得する
BTP CockpitでサブアカウントのService Marketplaceから「Service Manager」を検索し、subaccount-adminプランでインスタンスを作成します。作成したインスタンスにService Keyを発行すると、JSON形式でクライアントIDやトークンURLなどの認証情報が得られます。
環境変数を設定してインストールする
pip install btp-mcp-serverService Keyの内容を環境変数に展開します。JSON形式のキーに含まれるclientid・clientsecret・トークンURL・Service Manager URLを、それぞれ対応する環境変数へ手作業で転記する形です。
BTP_CLIENT_ID=your-client-id
BTP_CLIENT_SECRET=your-client-secret
BTP_TOKEN_URL=https://your-subdomain.authentication.us10.hana.ondemand.com/oauth/token
BTP_SM_URL=https://service-manager.cfapps.us10.hana.ondemand.com
BTP_SUBACCOUNT_ID=your-subaccount-guid
BTP_DESTINATION_URL=https://destination.cfapps.us10.hana.ondemand.comサブアカウントのリージョンによってus10の部分がドイツやシンガポールなど別のリージョンコードに変わるので、Service Key内のURLをそのままコピーするのが確実です。.envファイルに書いた場合は、READMEでもGitへのコミットを避けるよう明示的に注意喚起されています。
Claude Code / Claude Desktopに追加する
Claude Codeからはclaude mcp addでローカルstdioサーバーとして追加します。
claude mcp add --transport stdio sap-btp \
--env BTP_CLIENT_ID=your-client-id \
--env BTP_CLIENT_SECRET=your-client-secret \
--env BTP_TOKEN_URL=your-token-url \
--env BTP_SM_URL=your-sm-url \
--env BTP_SUBACCOUNT_ID=your-subaccount-guid \
-- btp-mcp-serverClaude Desktopの場合はclaude_desktop_config.jsonに同じ環境変数を持つエントリーを追加し、アプリを再起動すれば接続できます。認証方式はOAuth 2.0のクライアントクレデンシャルフローで、取得したトークンは5分間キャッシュされる設計です。BTPのサービスカタログやインスタンス一覧は頻繁には変わらないため、この間隔でも実用上の支障は小さいとされています。claude mcp addの細かいオプションやスコープの使い分けはClaude Code MCP設定ガイドにまとめています。
BTP側のコストへの注意
BTPサービスの無料プランの有無はサービスごとに異なり、recommend_btp_serviceが勧めてくるサービスの中には有料プランしか持たないものも含まれます。get_btp_service_plansで無料枠の有無を確認してから、実際にインスタンスを作成する判断ができるのがこの構成の利点です。BTPのサブアカウント全体のコスト管理は、このMCPサーバーの範囲外なので、BTP Cockpit側のコスト管理画面と併用する前提になります。
権限とセキュリティの考え方
Service Keyに含まれるクライアントシークレットは、事実上BTPサブアカウントへの入口を握る認証情報です。専用のインテグレーションユーザーを作り、必要なAPIだけに絞った権限を割り当てるのが安全な最小構成になります。コミュニティ製サーバー全般に共通するリスクの見極め方はMCPセキュリティガイドで扱っているので、SAP以外のサーバーを追加するときも同じ観点で確認できます。
接続を確認する
インストール後は、実際にClaude Codeへ接続する前にBTPとの疎通だけを確認しておくと事故が減ります。パッケージにはこのための検証スクリプトが同梱されています。
git clone https://github.com/ABRANJAN07/btp-mcp-server.git
cd btp-mcp-server
pip install -r requirements.txt
cp .env.example .env
# .envに認証情報を記入したうえで実行
python test_connection.pyソースからテストを回す場合は、モック化されたBTPレスポンスを使うため実際の認証情報がなくても17件のテストが通ります。認証情報を入れる前に、この17件がすべて成功する状態を確認しておけば、接続エラーが出たときに「サーバー自体の不具合」と「自分の設定ミス」を切り分けやすくなります。
隣接する選択肢との使い分け
SAP周りのMCPサーバーはbtp-mcp-server以外にも複数のプロジェクトが並行して存在し、扱える対象がそれぞれ異なります。
| プロジェクト | 対象 | 向く用途 |
|---|---|---|
btp-mcp-server | 対象BTPプラットフォーム自体(サービス・インスタンス・Destination) | 向く用途「何が動いているか」をClaudeに聞きたいとき |
btp-sap-odata-to-mcp-server | 対象OData経由のSAP業務データ | 向く用途受注・在庫などの業務データそのものを扱いたいとき |
mcp-abap-adt | 対象ABAP Development Tools相当の操作 | 向く用途オンプレミスのECC / S/4HANAを含むABAP開発を進めたいとき |
いずれもSAPの公式リポジトリではなく、個人またはコミュニティが公開・保守しているプロジェクトです。目的が業務データの読み取りなのか、開発作業の支援なのかによって選ぶべきサーバーが変わるので、btp-mcp-serverを試してみて「欲しい情報が出てこない」と感じたら、対象範囲が違う可能性をまず疑うとよいところです。MCPサーバー全般の選び方はおすすめMCPサーバー10選で扱っているので、SAP系に限らず横断的に比較したいときの参考になります。
よくあるつまずき
- 「SAP公式」という言葉を鵜呑みにする: SAPというブランド名を冠したプロジェクトでも、多くは個人・コミュニティによる公開物です。README内の作者情報とライセンス表記を必ず確認します
- Service Managerのプラン選択を誤る: READMEの手順は
subaccount-adminプランでのインスタンス作成を前提にしています。別プランを選ぶ場合は、必要なAPIへのアクセス権限が揃っているか自分で確認する必要があります - BTPプラットフォーム情報とERP業務データを混同する:
btp-mcp-serverはBTPサービスやインスタンスの一覧を返すだけで、S/4HANAの伝票やマスタデータは扱えません .envファイルをそのままリポジトリにコミットする: 認証情報を含むファイルの管理はREADME上でも明示的に注意喚起されている項目です
まとめ — どこから始めるか
SAPとClaudeを連携させる第一歩は、「『SAP』組織名義の公式MCPサーバーは存在しない」という前提を受け入れることです。そのうえで、BTPプラットフォームの状態確認に絞るならbtp-mcp-server、業務データそのものが必要ならOData系の別プロジェクトを検討する、という目的別の選択になります。いずれもコミュニティ製である以上、本番導入の前にコードの中身を確認する一手間は省略しない方が安全です。
よくある質問
Claude CodeとClaude Desktopのどちらでも使えますか
使えます。btp-mcp-serverはstdio方式のローカルMCPサーバーとして動作するため、Claude CodeとClaude Desktopの両方から同じ設定パターンで接続できます。
BTPの無料枠だけでも試せますか
サービスによって無料プランの有無が異なります。get_btp_service_plansツールでプランごとに無料枠があるかを確認できるので、契約前にこのツールで調べる使い方も可能です。
S/4HANAのデータを直接読み書きしたい場合はどうすればよいですか
btp-mcp-server単体では対応できません。OData経由でSAPの業務データを公開する別系統のMCPサーバーを組み合わせるか、SAP側でOData APIを個別に用意したうえで、そのAPIを呼び出す構成を検討する必要があります。
複数のBTPサブアカウントを同時に扱えますか
サーバー自体は1つの接続につき1つのサブアカウントを対象にする設計です。複数のサブアカウントを横断したい場合は、サブアカウントごとに異なるサーバー名でclaude mcp addを実行し、環境変数のセットを分けて登録する形になります。
Joule StudioやLangGraphからも同じサーバーを使えますか
使えます。READMEにはClaude Code・Cursorに加えて、Joule StudioのAgent BuilderやLangGraphエージェントからの利用例も掲載されています。HTTPモードで起動し、BTP Cockpit側でDestinationとして登録すればJoule Studioからも呼び出せる設計です。