MCPサーバーについてローカルとクラウドという語は、それでプライバシーの話が 片づくかのように使われます。しかし片づきません。この2語が正確に答えるのは 「サーバーのプロセスがどこで動くか」という1点だけで、多くの人が本当に気にして いる問い——結局、誰があなたのデータを読めるのか——には触れていません。
短く言えば、ローカルMCPサーバーはデータをベンダーのインフラの外に置きますが、 会話の外に置いてくれるわけではありません。 ローカルであれクラウドであれ、 アシスタントがMCPサーバー経由で読んだ内容は、あなたが対話しているモデルへ 送られます。ローカルかどうかで変わるのは、誰が保存し、誰が到達できるかです。 モデルに何が見えるかは変わりません。
この記事ではその2つを切り分けます。プロトコル自体になじみがなければ、まず MCPサーバーとは何かで基本を押さえて ください。
MCPの仕様のリビジョン 2026-07-28は、標準のトランスポートをちょうど2つ定めており、それがこの2語に きれいに対応します。
stdio——ローカルのほう。 クライアントがMCPサーバーを子プロセスとして起動し、 両者はそのプロセスの標準入出力でやり取りします。改行で区切られたJSON-RPC メッセージを1行に1つずつ送る形です。ネットワーク接続もポートもありません。 クライアントが終了すると、サーバーの入力ストリームを閉じ、プロセスも終了します。 「自分の端末で動く」とは、具体的にはこういうことです。
Streamable HTTP——クラウドのほう。 サーバーは独立したプロセスで、単一の
HTTPエンドポイントを公開し、すべてのメッセージはそこへのHTTP POSTになります。
クライアントはhttps://mcp.example.com/mcpのようなURLで、ネットワーク越しに
アクセスします。「アカウントを接続」ボタンの背後にあるのは、このトランスポート
です。
この違いはデプロイ方法の選択であって、機能の差ではありません。仕様は、 プロトコルのセマンティクスはどのトランスポートでも同一だと明記しています。 トランスポートが定めるのはメッセージの区切り方と届け方であって、その意味では ありません。会議の文字起こしを読むツールは、どちらでも同じ仕事をします。
この2語が普段肩代わりしているのはまさにこの問いで、答えは2つでは足りません。 MCP接続を流れる内容を読みうる立場は、4つあります。
| 誰が | ローカルサーバー(stdio) | クラウドサーバー(HTTPS) |
|---|---|---|
| MCPのベンダー | データを受け取らない | 保存し、すべてのリクエストに応じる |
| モデル提供元 | アシスタントが読んだ内容をすべて見る | アシスタントが読んだ内容をすべて見る |
| AIクライアントアプリ | プロンプト構築のためローカルで読む | 同じ |
| トークンを持つ者 | 盗むトークンが存在しない | 失効させるまで同じデータへ到達できる |
意外に思われるのが真ん中の行で、しかも両方の列で同じです。MCPサーバーは、 モデルに専用の裏口を用意するわけではありません。テキストを取得してクライアント へ渡し、クライアントがそれをプロンプトに入れます。その時点で、サーバーがどこで 動いていたかに関係なく、データは端末を離れています。
最初と最後の行こそ、ローカルが本当に有利な部分です。stdioにはアカウントがなく、 他人のディスク上に残る複製もなく、盗まれたり漏洩で流出したりする認証情報も ありません。認可すべきものがそもそも存在しないからです。
形は2つではなく3つあり、ベンダーが真ん中の1つを分けて説明することはあまり ありません。
クラウドサーバー、クラウドデータ。 ベンダーがサーバーをホストし、あなたは ブラウザのOAuthで認可を与え、クライアントは必要になるたびにHTTPSで呼び出します。 データがもともとそのベンダーのクラウドにあるなら、これが自然な形です。
ローカルプロセス、クラウドデータ。 ベンダーは利用者自身が動かすサーバーを
提供します。AIクライアントが起動するnpx、uvx、dockerのコマンドで、APIキー
を保持します。しかしそれでデータがローカルになるわけではありません。プロセスは
手元のノートパソコンで動きますが、リクエストのたびにネットワーク越しにベンダーの
APIを呼びます。MCPサーバーはローカルだと言われたら、まず除外すべきなのがこの形
です。
ローカルプロセス、ローカルデータ。 データがもともと端末上にあるため、 サーバーはネットワークを一切介さずに読み取ります。「ローカル」がプロセスだけで なくデータまで指しているのは、この形だけです。
見分ける手がかりはコマンドではなく認証情報です。ブラウザでのサインインは、 データがベンダー側にあり、それを許可するという意味です。設定ファイルに貼り付ける APIキーは、ローカルのプロセスがあなたに代わってベンダーのAPIを呼ぶという意味 です。どちらもローカルデータではありません。
クラウドのMCPサーバーでOAuthの画面を通過するとき、あなたは自分のアカウントに 対する認証情報を発行しています。それに何ができるのかは知っておく価値があります。
MCPの仕様はこれをOAuth 2.1の上に組み立てています。クライアントは
RFC 8707のresourceパラメータを
送り、トークンを特定の1つのサーバーに結びつけなければなりません。サーバーの側も、
そのトークンが自分向けに発行されたものかを検証し、それ以外を受け付けても転送しても
いけません。この仕組みは、あるサービス向けに発行されたトークンを別のサービスへ
使い回されないためにあります。
実務上の帰結が3つあります。
これらはstdioには当てはまりません。認可の仕様は、対象がHTTPベースのトランスポート であり、stdioを使う実装はこれに従うべきではなく、代わりに環境から認証情報を 取得すると明記しています。
ローカルは安全の同義語ではなく、この議論を誠実にやるなら、何を差し出しているかも 言う必要があります。
権限層がたいてい存在しません。 認可の仕様が適用されないため、stdioのサーバー には利用者やスコープという概念が普通ありません。あなたのユーザーアカウントで動く ものなら、たいていそれを起動してツールを呼び出せます。共用の端末や管理された端末 では、これは実際に問題になります。
ポートを開くローカルサーバーは別物です。 ローカルと説明されるサーバーのなかに
は、実際にはHTTPで待ち受けているものもあります。仕様はこの点を直接扱っています。
サーバーはDNSリバインディング攻撃を防ぐためにOriginヘッダーを検証しなければ
ならず、ローカルで動かす場合は0.0.0.0ではなく127.0.0.1にのみバインドすべきだ、
というものです。こうした保護がなければ、攻撃者がDNSリバインディングを用いて
リモートのウェブサイトからローカルのMCPサーバーとやり取りできてしまう、と仕様は
警告しています。
サプライチェーンを引き受けることになります。 npxで起動されるサーバーは、
あなたの権限で端末上にコードを取得して実行します。2026年時点でまだベータの
OWASP MCP Top 10は、10のカテゴリの
なかにサプライチェーン攻撃と依存関係の改ざん(MCP04:2025)、ツールポイズニング
(MCP03:2025)を挙げています。ローカルインストールが抱え、ホスト型のエンドポイント
は抱えないリスクです。一般論として、仕様の書きぶりは率直です。ツールは任意の
コード実行にほかならず、ツールの挙動の説明は、信頼できるサーバーから来たもので
ない限り信頼できないものとして扱うべきだ、としています。
MCPはあなたのデータに権限モデルを追加しません。標準化するのはツールをどう記述し どう呼び出すかであって、あるツールが何に触れてよいかはサーバーの作者が下した判断 です。ここからトランスポートによらず2つのことが導かれます。
どのベンダーの設定ページからでも、1分ほどで答えの出る4つの問いです。
https://のURLならクラウドサーバーです。
npx、uvx、dockerのコマンドなら手元の端末で動くプロセスです。選択は一方的ではないので、率直に挙げます。
クラウドが負けるのは1つの軸だけですが、この記事が扱っているのはまさにその軸です。 あなたのデータの複製が他社のインフラ上にあり、認証情報があれば到達できる、という 点です。
問いを1つではなく2つ立ててください。サーバーがどこで動くかは、誰がデータを保存 し、トークンを持つ誰が到達できるかを教えます。アシスタントが何を読むかは、 モデル提供元へ何が渡るかを教えます——そしてこちらの答えは、どちらの形でも同じです。
ローカルプロセスがローカルデータを読む形を求めているなら、それが
Speak-YのMCPサーバーです。デスクトップアプリの一部として
設定 → 連携からワンクリックで導入でき、すでに端末上にある録音を、
アカウントもAPIキーもホスト側の複製もなしに読み取ります。読み取りはアプリを閉じた
ままでも動きます。何かを変更するツールはアプリを経由し、実行前に確認を求めます。
--read-only を付ければ、そのクライアントを読み取りだけに固定できます。サーバーは
すべてのプランで無料です。手動設定はMCPドキュメントにまとめており、
何がどこに保存されるかはプライバシーポリシーに記載しています。ほかの会議メモ
ツールが同じ問いにどう答えているかを見たい場合は、
各社のMCPサーバーを比較しています。
ローカルサーバーは、AIクライアントが自分のコンピューター上で起動し、そのプロセスの標準入出力を通じてやり取りするプログラムです。ネットワークは介しません。クラウドサーバーは、クライアントがHTTPS経由で接続し、OAuthで認可するウェブサービスです。MCPの仕様では、それぞれstdioトランスポート、Streamable HTTPトランスポートと呼ばれます。
いいえ。ローカルサーバーはデータをベンダーのサーバーに置かずに済ませますが、アシスタントがそこから読んだ内容は会話の一部としてモデル提供元へ送られます。自分で貼り付けた場合とまったく同じです。ローカルかどうかが決めるのは保存とアクセスであって、モデルが何を見るかではありません。
秘匿性は高くなりますが、自動的に安全になるわけではありません。MCPの認可仕様はHTTPトランスポートだけを対象としており、stdioのサーバーは代わりに環境から認証情報を取得するよう定められています。そのためローカルサーバーには独自の権限層がないのが普通で、自分のユーザー権限で動くものなら大抵そこへ到達できます。
設定手順を見てください。https://のURLとブラウザでのサインインは、ベンダーのクラウドを意味します。npx、uvx、dockerなどのコマンドは、手元の端末で動くプロセスを意味します。ただしAPIキーを持つローカルプロセスも結局はベンダーのAPIを呼ぶため、コマンドだけではデータの所在は分かりません。
Claude Desktopはローカルサーバーを直接起動でき、デスクトップ拡張機能としてインストールします。ChatGPTは開発者モードでリモートのHTTPSエンドポイントに接続する方式のため、ローカルのstdioサーバーはまずトンネルで外部に公開する必要があります。同じサーバーが、あるクライアントではローカル、別のクライアントではリモートになりえます。