【比較】MCP公開時のAPI利用料の支払いモデル¶
概要¶
MCP(Model Context Protocol:Anthropic が提唱した、AIアプリと外部データ・ツールを接続するオープンな標準プロトコル)を使ったサーバーやサービスを公開すると、「内部で呼び出す生成AIのAPI利用料を誰が支払うのか」という設計判断が必要になります。
重要な前提として、MCP 仕様自体は課金や API キーの負担者を一切定めていません。MCP は「ホスト(AIアプリ)・クライアント(コネクタ)・サーバー(コンテキストやツールを提供する側)」の通信規約を定めるだけで、「AIアプリが LLM をどう使い、コストをどう負担するか」はアプリケーション側の設計に委ねられています(公式仕様にも "MCP focuses solely on the protocol for context exchange—it does not dictate how AI applications use LLMs or manage the provided context" と明記)。
そのため支払いモデルは、MCP に限らず生成AIを組み込んだサービス全般で問われる論点であり、主に2つのモデルに整理できます。
詳細比較¶
| 観点 | モデル1:開発者が支払う | モデル2:ユーザーが支払う(BYOK) |
|---|---|---|
| APIキーの持ち主 | 開発者(サーバー/コード側に設定) | ユーザー(自分のキーを入力・設定) |
| 料金の請求先 | 開発者のアカウント | ユーザーのアカウント |
| ユーザーの手間 | 少ない(キー不要ですぐ試せる) | 多い(キー取得・設定が必要) |
| 開発者のコスト負担 | 大きい(人気が出るほど増加) | ほぼゼロ |
| 典型例 | SaaS型・無料お試しを提供するWebサービス | 多くのデスクトップ向けAIアプリ、開発者向けツール |
| MCPでの該当箇所 | サーバー側でLLM SDKを直接呼ぶ実装 | クライアント/ホスト側の LLM を使う(後述の sampling 等) |
1. 開発者が支払うモデル¶
WebサイトやサービスにAI機能を組み込む際、内部で呼び出す生成AIのAPIキーを、開発者自身のものとしてサーバーの設定に含めます。
- 仕組み:
- ユーザーがWeb上のサービス(MCPサーバーを内包したアプリ等)を利用します。
- サーバー(バックエンド)は、開発者があらかじめ設定しておいたAPIキーを使って生成AI(例: OpenAI / Anthropic のAPI)にリクエストを送ります。
- 利用料金は、そのAPIキーの発行元である開発者のアカウントに請求されます。
ユーザーがAPIキーを持っていなくても手軽に試せる利点がありますが、人気が出ると開発者の負担が大きくなる課題があります。
2. ユーザーが支払うモデル(BYOK)¶
「ユーザー自身のAPIキーを使ってもらう(Bring Your Own Key)」仕組みを構築します。
- 仕組み:
- ユーザーは、利用したい生成AIサービス(例: OpenAI / Anthropic)で自分自身のAPIキーを取得します。
- アプリ上で、そのAPIキーを入力・設定する場所が提供されています。
- アプリは、ユーザーが入力したAPIキーを使って生成AIにリクエストを送ります。
- 結果として、利用料金はAPIキーの持ち主であるユーザーのアカウントに請求されます。
開発者はAPI利用料を負担しなくて済みますが、ユーザーにキーを取得・設定してもらう手間が発生します。多くのPC向けAIアプリケーションでこの方式が採用されています。
MCP の構造と「誰のLLMを使うか」¶
MCP のアーキテクチャでは、MCP サーバーはツール・リソース・プロンプトを提供する側で、それ自体は LLM を持つとは限りません。LLM を呼ぶのは通常 ホスト(AIアプリ)側です。
- サーバー自身が LLM SDK を直接呼ぶ実装にすると → 開発者(サーバー運営者)負担になりがち(モデル1)。
- MCP の sampling(
sampling/createMessage)機能を使うと、サーバーは LLM SDK を持たずにホスト側のLLMへ補完を依頼できます。この場合、トークン費用はホスト(=ユーザーが使うAIアプリ)側で発生し、結果的にユーザー負担(モデル2)に近づきます。
つまり「どこで LLM を呼ぶか(サーバー側かホスト側か)」が、そのまま「誰が支払うか」に直結します。
処理フロー図¶
モデル1:開発者支払い(サーバー側でLLMを呼ぶ)
graph TD
subgraph "ユーザーのブラウザ"
A[ユーザー] --> B{アプリのUI}
end
subgraph "開発者のサーバー"
B --> C[バックエンド処理]
C -- 開発者のAPIキーでリクエスト --> D[生成AI API]
end
D -- 応答 --> C
C -- 結果 --> B
モデル2:ユーザー支払い(自分のキーを使う)
graph TD
subgraph "ユーザーのブラウザ"
A[ユーザー] -- 1. 自分のAPIキーを入力 --> B{アプリのUI}
B -- 2. 入力されたAPIキーを添えてリクエスト --> D[生成AI API]
end
D -- 3. 応答 --> B
(※モデル2の図は、ユーザー側から直接APIを呼ぶシンプルな例です。MCP の sampling を使う場合は、ホストアプリがユーザーの設定したキーで LLM を呼ぶ形になります)
よくある誤解¶
- 誤解1:「MCP は Model-Customized Persona の略」 — 誤りです。MCP は Model Context Protocol(Anthropic が2024年11月に発表したオープン標準)であり、AIアプリと外部データ・ツールを接続するためのプロトコルです。「ペルソナ」や「カスタムキャラクター」を作る仕組みではありません。
- 誤解2:「MCP の仕様が課金方法を決めている」 — 決めていません。MCP 公式は「コンテキスト交換のプロトコルにのみ注力し、AIアプリが LLM をどう使うかは規定しない」と明言しています。支払いモデルは完全にアプリケーション側の設計事項です。
- 誤解3:「MCPサーバー=Webでホストされたチャットアプリ」 — 不正確です。MCP の用語では、サーバーはツール/リソース/プロンプトを提供するプログラム(ローカルでもリモートでも可)、ホストが AIアプリ本体、クライアントはホスト内でサーバーへ接続するコネクタです。
- 誤解4:「MCPサーバーは必ず自前のLLMを呼ぶ」 — 必須ではありません。sampling 機能を使えば、サーバーは LLM SDK を持たずにホスト側のモデルへ補完を依頼でき、これが費用負担者にも影響します。
実務での選び分け¶
- 無料お試し・摩擦の少ないオンボーディングを最優先(SaaS等) → モデル1(開発者支払い)。ただしレート制限・上限・従量課金の転嫁を設計しないと赤字リスク。
- コスト負担を避けたい/パワーユーザー・開発者向けツール → モデル2(BYOK)。導入ハードルは上がるが運営コストはほぼゼロ。
- MCPサーバーをモデル非依存に作りたい → サーバー側にLLM SDKを持たず、sampling でホストのLLMに委譲(費用はホスト側=実質ユーザー寄り)。
- 判断軸: ①誰のコスト負担が許容できるか、②ユーザーにキー取得を求められるユーザー層か、③LLMをサーバー側で呼ぶ必要があるか(Yesならモデル1寄り)、④モデル非依存にしたいか(Yesなら sampling)。
ひとことまとめ¶
MCP 自体は課金を規定しません。支払いは「LLM をサーバー側で呼ぶ=開発者負担」か「ユーザーのキー(BYOK)/sampling でホスト側に委譲=ユーザー負担」かの設計判断であり、対象ユーザー層とコスト許容度で選び分けます。