概要
SAP Gateway を含むあらゆる OData V2/V4 サービスを、Claude、ChatGPT、Copilot 向けの MCP ツールに。$metadata から名称、キー、単位を読み取ります。コード不要。
要点: AnythingMCP には OData というコネクタタイプがあります。OData V2 または V4 のサービス、あるいは SAP Gateway を指定すると、Claude、ChatGPT、Copilot に 5 つのツールが提供されます。サービスの検索、エンティティセットと項目を業務上の名称付きで読み取る機能、行のクエリ、キーによる単一エンティティの取得です。クエリは送信前に $metadata と照合され、サーバー側のページングにも追従し、V2 と V4 の応答はどちらもシンプルな行として返されます。サービスの $metadata を名前付きツールとしてインポートすることもでき、エンティティセットごとに一覧用と取得用のツールが 1 つずつ作られます。
| 概要 | |
|---|---|
| プロトコル | OData V2 と V4($metadata から自動判別) |
| SAP | Gateway のサービスカタログ(V2 と V4)、sap-client、sap-language、書き込み用の CSRF トークン |
| 組み込みツール | 5 個、読み取り専用:サービスの一覧、サービスの説明、エンティティの説明、クエリ、エンティティの取得 |
| インポート | $metadata → エンティティセットごとに <set>_list と <set>_get ツール |
| 認証 | REST のすべての方式:Basic、OAuth 2.0、API キー、証明書、ログイントークン |
| テスト | services.odata.org の Northwind V2・V4 と TripPin V4 |
| ホスティング | セルフホスト(オープンソース、AGPL-3.0)または AnythingMCP Cloud |
OData に REST インポート以上のものが必要な理由
OData サービスは自らを記述しています。$metadata ドキュメントには、すべてのエンティティセット、そのキー、各項目の型が記載され、SAP の場合はさらに、ユーザーが画面で目にする名称、各金額に対応する通貨や単位、どの項目がディメンションでどの項目がメジャーかも含まれます。汎用の REST インポートではその大半が失われるため、モデルは NetAmount の通貨が TransactionCurrency にあることや、分析用サービスはパラメータで絞り込む必要があることを推測するしかありません。
OData コネクタは $metadata を読み取り、モデルに渡します。Claude は NetAmount の名称が Net Amount で、通貨が TransactionCurrency にあることを把握できます。項目名を書き間違えた場合は、エラーをそのままサーバーに送るのではなく、コネクタが「Unknown field … Did you mean …」と応答します。
2 つの利用方法
- OData コネクタタイプ。 コネクタを作成するときに OData を選びます。SAP システムの場合は SAP Gateway (S/4HANA, ECC, BW) にチェックを入れます。ベース URL はホスト(例:
https://s4.example.com:44300)で、サービスは SAP のカタログから取得されます。単一の OData サービスの場合はチェックを外します。ベース URL はサービスルート(例:https://services.example.com/odata/v4/Sales)です。 - OData 設定付きの REST コネクタ。 設定に
odataブロックを持つ REST コネクタにも、同じ組み込みツールが付きます。コネクタ独自のツールは通常の REST 呼び出しのままです。SAP S/4HANA Cloud アダプタはこの方式です。
どちらも REST エンジン上で動作するため、REST のすべての認証方式に加え、リトライ、送信時の SSRF ガード、プロキシもそのまま適用されます。
組み込みツール
OData コネクタにはそれぞれ、<prefix>_… という名前の 5 つのツールが付きます。プレフィックスはコネクタ名に _odata を付けたもの、または任意に設定したものです。
| ツール | 機能 |
|---|---|
<prefix>_list_services | SAP の場合:Gateway のサービスカタログ(V2 と V4)を検索し、1 時間キャッシュします。それ以外の場合:設定に記載したサービス、または単一のサービスルート。 |
<prefix>_describe_service | エンティティセットを名称、キー、項目数とともに返し、analytical(サーバー側で集計)、parameters(パラメータ付きビュー)、requiredInFilter、readOnly のフラグを付けます。$metadata は 24 時間キャッシュされます。 |
<prefix>_describe_entity | 各項目の名称、型、キー、通貨項目または単位項目、テキスト項目、絞り込みと並べ替えの可否、ディメンションまたはメジャーとしての役割。ナビゲーションプロパティ。分析用セットとパラメータ付きセットに関するヒント。 |
<prefix>_query | select、filter、orderby、top(最大 1,000)、skip、expand、parameters、V4 ではさらに apply と search。項目名を先にチェックし、必須の絞り込み条件を強制し、サーバー側のページングにはコネクタ自身のホスト上でのみ追従します。応答はフラット化され、シンプルな行、ISO 形式の日付、文字列の 10 進数、総件数、nextSkip として返ります。 |
<prefix>_get_entity | キーで 1 件のエンティティを取得します。{"SalesOrder": "1", "SalesOrderItem": "10"} のような複合キーにも対応します。 |
組み込みツールは読み取りのみを行い、MCP クライアントには読み取り専用として示されます。
セットアップ
ステップ 1:AnythingMCP を動かす
公開されている OData サービスなら、AnythingMCP Cloud をそのまま使えます。SAP Gateway や自社ネットワーク内のサービスの場合は、そのサービスに到達できる場所で AnythingMCP をセルフホストします:
mkdir anythingmcp && cd anythingmcp
curl -fsSLo docker-compose.yml \
https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d # → http://localhost:3000
内部ホスト名は SSRF_ALLOWED_HOSTS に追加してください。AnythingMCP は既定でプライベートアドレスへの接続を拒否します。
ステップ 2:OData コネクタを作成する
新しいコネクタを作成し、OData を選んでベース URL を入力します。どこにもアカウントを作らずに試すなら、公開されている Northwind サービス https://services.odata.org/V4/Northwind/Northwind.svc を使い、SAP Gateway のチェックは外し、認証はなしにします。SAP の場合は SAP Gateway にチェックを入れ、3 桁のクライアントと言語を入力します。
ステップ 3:認証を設定し、サービスを制限する
サービスが求める認証方式を選びます:技術ユーザーによる Basic 認証、OAuth 2.0(client credentials または authorization code)、API キー、クライアント証明書、ログイントークン。コネクタの OData 設定の Allowed services に、モデルが呼び出してよいサービスパスを列挙します(* はワイルドカードとして使えます)。それ以外のサービスは拒否されます。
ステップ 4:テストしてツールをインポートする
Test connection は SAP のカタログ、またはサービスの $metadata を読み取ります。モデルがよく使うエンティティセットに名前付きのツールを用意したい場合は、Import Tools → OData $metadata を開き、サービスパスを指定するか(SAP)、空欄のままにして(単一サービス)、エンティティセットを選びます。詳しくは後述します。
ステップ 5:Claude、ChatGPT、Copilot を接続する
- Claude: Customize → Connectors → Add custom connector を開き、MCP サーバーの URL を貼り付けます。詳しい手順:Claude にカスタムコネクタを追加する方法。
- ChatGPT: 同じ公開 HTTPS URL を、ChatGPT の設定でコネクタ(アプリ)として追加します。
- Claude Code、Cursor、VS Code / Copilot:
X-API-Keyヘッダーを付けて URL を追加します。
$metadata からツールをインポートする
Import Tools → OData $metadata は、エンティティセットを名前付きのツールに変換します。filter、select、orderby、top、skip、expand を持つ <set>_list と、キーパラメータを持つ <set>_get です。ドキュメントはコネクタの認証情報で取得されます。$metadata ドキュメントを貼り付けて、インポートを一部のエンティティセットに限定することもできます。サービスを再インポートするとそのツールが更新され、なくなったツールのうち、そのサービスのものだけが廃止されます。組み込みツールや他のサービスのツールが廃止されることはありません。
OData コネクタでは、インポートしたツールや手作業で作成した HTTP ツールにも、SAP のクライアントと言語、V2 の JSON 形式、フラット化された応答が適用されます。SAP への書き込み(POST、PUT、PATCH、DELETE)では、まずセッションクッキーを使って CSRF トークンを取得します。書き込みは、自分でインポートまたは作成したツールを通じてのみ行われます。
SAP Gateway:S/4HANA、ECC、BW
- 技術ユーザー:読み取り対象のクライアントに、タイプ System で本番用パスワードを設定したユーザーを用意します。
- ロール:モデルが呼び出してよいサービスに対する
S_SERVICEと、表示のみの業務権限を付与します。カタログを参照するには、V2 のカタログサービス/IWFND/CATALOGSERVICEと V4 のカタログも必要です。SAP は呼び出しのたびにこれらの権限をチェックし、これが本当の境界になります。 - 有効化されたサービス:
/IWFND/MAINT_SERVICE(V2)と/IWFND/V4_ADMIN(V4)で有効化します。 - ネットワーク:Gateway のポートは通常、社内向けです。AnythingMCP をネットワーク内でセルフホストするか、VPN 経由で接続してください。
SAP の API ポリシーでは、サードパーティの統合に公開 API(SAP Business Accelerator Hub 上の API_* サービス)か、自社で構築したサービスを使うことが求められます。Allowed services もそれに合わせて制限してください。
S/4HANA オンプレミスと Private Cloud 向けには、既製のアダプタ SAP S/4HANA (OData) があります。これらの設定をプレフィックス s4 で一括して行い(s4_list_services、s4_describe_service、s4_describe_entity、s4_query、s4_get_entity)、仕訳明細、請求伝票、受注、取引先、品目在庫、製品向けの既製ツールに加え、絞り込み、分析用サービス、KPI のガイドである s4_guide も提供します。インストール時は Basic 認証で、あとからコネクタを OAuth 2.0 に切り替えられます。SAP S/4HANA Cloud アダプタも、コミュニケーション取決めの API 上で、同じ組み込みツールを s4_cloud_* として備えています。
S/4HANA のテーブルを直接読み取りたい場合は、HANA SQL 経由の SAP S/4HANA を参照してください。
設定
| 設定 | 意味 |
|---|---|
| SAP Gateway | カタログ検出と SAP パラメータ。SAP client を指定すると自動的に有効になります。 |
| SAP client | 3 桁のクライアント。すべてのリクエストで sap-client として送信されます。 |
| Language | sap-language として送信されます(例:EN)。 |
| Allowed services | モデルが呼び出してよいサービスパス。* はワイルドカード。 |
| Version | $metadata からの自動判別を上書きする場合に v2 または v4 を指定。 |
| Max rows | クエリごとの行数の上限。最大 1,000。 |
| Tool prefix | 組み込みツール名のプレフィックス。 |
各設定には、コネクタの環境変数から {{VARIABLES}} を埋め込めます。
プロンプト例
- 「カタログの中で請求伝票を扱うサービスはどれですか?」
- 「受注エンティティを説明してください。金額の項目はどれで、通貨は何ですか?」
- 「9 月の販売組織別の純売上高を、請求伝票から出してください。」
- 「受注 1 をすべての明細とともに表示してください。」
- Northwind の場合:「単価が最も高い 10 製品はどれで、どの仕入先が納入していますか?」
FAQ
対応している OData のバージョンは?
V2 と V4 です。バージョンは $metadata から自動判別され、設定で上書きすることもできます。
$metadata を先に OpenAPI に変換する必要はありますか?
いいえ。OData コネクタは $metadata を直接読み取り、Import Tools → OData $metadata がそこからツールを作成します。
Claude は OData 経由でデータを変更できますか? 読み取りしか行わない 5 つの組み込みツールでは変更できません。書き込みには自分でインポートまたは作成したツールが必要で、MCP サーバーのロールでそれらを除外することもできます。SAP への書き込みでは、CSRF トークンが自動的に取得されます。
SAP S/4HANA オンプレミスや ECC でも使えますか? はい。SAP Gateway を経由し、そこに到達できるセルフホストの AnythingMCP で使えます。S/4HANA なら、SAP S/4HANA (OData) アダプタを使うのが最も早い始め方です。
大量の結果はどう扱われますか?
1 回のクエリで返るのは最大 1,000 行です。コネクタは同じホスト上でサーバーのページングに追従し、nextSkip を返すため、モデルは次のページを要求できます。
ChatGPT や Copilot でも使えますか? はい。同じ MCP サーバーが Claude、ChatGPT、GitHub Copilot、Cursor、Claude Code で動作します。
関連ガイド
- SAP を Claude に接続:すべての SAP コネクタの一覧
- HANA SQL 経由の SAP S/4HANA:SAP のデータディクショナリをツールとして使う、データベース経由の方法
- OpenAPI を MCP に:OpenAPI または Swagger 仕様を持つ REST API
- SOAP を MCP に:WSDL サービス
- AnythingMCP ドキュメントの OData
このガイドは役に立ちましたか?