ローカルのMCPサーバーとリモートのMCPサーバーは、動き出してしまえば見分けが つきません。クライアントに並ぶツールの一覧も、会話も、結果も同じです。違うのは、 そこへ至るために何を渡したかです。ローカルサーバーはあなたのマシン上の プログラムで、クライアントが起動し標準入力と標準出力でやり取りします。渡すのは コマンドラインです。リモートサーバーは誰か別の人のHTTPSエンドポイントで、渡すの は資格情報です。それが開けるものすべてを、あなたが取り消さないかぎりずっと、 一緒に渡すことになります。
ですから、コネクターのダイアログにURLを貼り付ける前の有用な問いは 「このサーバーは信頼できるか」ではありません。それは掲載ページからは誰にも 答えられません。有用なのは、調べれば答えの出る3つの狭い問いです。トークンは どこまでの範囲に発行されるのか、取り消しに行く場所はどこか、そのサーバーを 見つけたカタログは実際には何を確認したのか。以下の答えは、2026年8月16日時点の MCP仕様とベンダーのドキュメントに基づきます。
現行の仕様リビジョン2026-07-28は、2つのトランスポートを異なるセキュリティの 文脈として扱います。MCPで認可は任意であり、どこに適用されるかは明示されています。 HTTPトランスポートを使う実装はOAuth仕様に従うべきであり、stdioの実装はそれに まったく従わず、資格情報は環境から取得すべきだとされています。古いリモート トランスポートであるHTTP+SSEは非推奨で、想定すべきはStreamable HTTPです。
| ローカル(stdio) | リモート(Streamable HTTP) | |
|---|---|---|
| 渡すもの | クライアントが実行するコマンド | URL、そしてたいていはOAuthのグラント |
| コードが動く場所 | あなたのマシン、あなたのユーザーアカウント | 誰か別の人が運用するインフラ |
| 資格情報 | 環境から取得する | そのサーバー1つに紐づくアクセストークン |
| 「切断」で起きること | プロセスを起動しなくなる | クライアント側のトークンの複製を削除。グラントは残りうる |
| 作者が敵対的だった場合の最悪 | あなたの権限で任意のコードが動く | 承認したスコープが届く範囲のすべて |
安全なのはどちらの列でもありません。ローカルサーバーはあなたとして動く任意の コードです。だからこそ仕様は、ワンクリックのローカル設定を提供するクライアント に対して、実行する正確なコマンドを省略なしで表示し、先に明示的な承認を得ることを 求めています。リモートサーバーはあなたのマシンにコードを置きませんが、データを 運用者のもとへ移し、あなたの注意より長く生き残るアクセス経路を残します。2つは 別の方向に壊れます。 それぞれが何を見られるかの比較で 詳しく扱っています。
認可モデルはOAuth 2.1で、利用者として理解しておく価値があるのはオーディエンスの
紐づけです。クライアントはResource Indicators for OAuth 2.0(RFC 8707)を実装
しなければなりません。resourceパラメーターは認可リクエストとトークン
リクエストの両方で送られ、そのトークンがどのサーバー向けかを指定します。
サーバーは自分宛てに発行されたトークンであることを検証し、自身のリソースに有効な
トークンだけを受け入れ、それ以外は受け入れも中継もしてはなりません。
クライアントのトークンを下流のAPIへそのまま渡すこと、いわゆる
「token passthrough」は明確に禁止されています。
つまり、正しく実装されたトークンは別のサーバーでは役に立ちません。これでリプレイ、 サービスをまたぐ資格情報の使い回し、そして混乱した代理人型の攻撃の一群は 塞がれます。運用者そのものについては何も塞ぎません。オーディエンスの紐づけが 述べるのはトークンがどこで通用するかであって、向こう側の会社が、そのツールが あなたの代わりに取得したものをどう扱うかではありません。それに答えるのは プライバシーポリシーであって、プロトコルではありません。
実際の露出が決まるのはスコープです。仕様はサーバーを最小権限へ押しています。
scopes_supportedは基本的な機能に必要な最小の集合であることが意図されており、
それを超えるものは特権的な操作が最初に試みられた時点で段階的に要求されます。
これに従うサーバーは最初にほとんど要求しません。従わないサーバーは、すべてを
並べた同意画面を1枚出します。その画面が、判断があなたの手にある最後の地点です。
取り消しの面は2つあり、多くの人は最初の1つしか使いません。
アシスタントの側で。 Claudeでは、カスタムコネクターはCustomize > Connectors にあり、サーバーのURLを貼り付けて追加します。Freeのユーザーは1つに制限されます。 同じページで切断もでき、サーバーのツールをすべて受け入れるのではなく個別に 有効・無効にすることもできます。Anthropicはヘルプセンターで信頼の立場をはっきり 書いています。カスタムコネクターは、Anthropicが検証していない任意のサービスに Claudeを接続できるようにするものです。ChatGPTでは、リモートサーバーは開発者モード を通じて入ります。ウェブのSettings → Security and loginで、SSEとstreaming HTTPの エンドポイントを受け付けます。OpenAI自身のドキュメントはこれを強力だが危険だと 呼び、リスクとしてプロンプトインジェクションと破壊的な書き込み操作を挙げ、 書き込み操作には既定で確認を求めます。
認可に使ったサービスの側で。 こちらが飛ばされる方です。コネクターを削除すると、 クライアントが持つトークンの複製は消えます。Google、GitHub、Atlassian、Notionの アカウントに記録されたグラントは別のオブジェクトで、独自の寿命を持ち、それに 付いたリフレッシュトークンはコネクターよりはるかに長く生き延びることがあります。 Anthropicの案内もそう述べています。Claudeの設定でコネクターを切断するか、 サードパーティサービスのセキュリティ設定で取り消す、と。両方やってください。 そして、その連携済みアプリのページは接続する前に見つけておきます。
registry.modelcontextprotocol.ioにある公式のMCPレジストリはサーバーを探す
自然な場所で、掲載の意味を読み過ぎるのは簡単です。そのワーキンググループの憲章は
具体的です。公開と信頼が扱うのは認証のフロー、つまりGitHub OAuth、GitHub OIDC、
DNSとHTTPによる確認、それに名前空間の所有、モデレーションの仕組み、コミュニティ
による報告です。明確に範囲外とされているのは、クライアントやエンドユーザーに
代わってMCPサーバーの実装を順位づけたり選んだりすること、そしてサーバーコードの
ホスティング、配布、実行です。レジストリはメタデータのカタログであって、
パッケージレジストリではないからです。
つまり、確認済みの名前空間が証明するのは、その項目を公開した者がその名前に含まれる GitHubの組織かドメインを管理しているということです。これは実際に意味のある 手がかりで、タイポスクワッティングを難しくし、責任を問う相手を与えます。ですが コードレビューでもセキュリティ監査でも推奨でもありません。身元は確かめられ、 振る舞いは依然として不明のままです。
仕様の原則を1つ、どの接続にも持ち込む価値があります。アノテーションを含むツールの 振る舞いの説明は、信頼できるサーバーから得たものでない限り信頼できないものと みなすべきであり、ホストはどのツールを呼び出す場合でも事前にユーザーの明示的な同意を 得なければなりません。ツールの説明は、リモートの相手が書きあなたのモデルが読む テキストです。これは信頼できない入力の定義そのものであり、 「サーバーが読み取り専用だと言っていた」がセキュリティ上の制御にならない理由です。
具体的な前例はCVE-2025-6514です。2025年7月9日に公開され、多くのクライアントが
リモートサーバーへ到達するのに使っていたプロキシmcp-remoteを対象としています。
評価は9.6で、悪意あるサーバーがOAuthフローの細工されたauthorization_endpointの
値を通じて、接続してきたマシン上でOSコマンドインジェクションを成立させられました。
影響は0.0.5から0.1.16までのバージョンで、修正は0.1.16です。チャットで何かを承認
する必要はありませんでした。接続することが攻撃のすべてでした。リモートサーバーが
送るものはすべてあなたのソフトウェアが解析するデータであり、接続そのものが
攻撃面の一部です。
ここまでのすべては、本当に誰か別の人のクラウドにあるもの、たとえば課題管理、CRM、 カレンダーへ届くための代価です。それらには妥当な代価で、すでに自分のディスクに あるファイルには妙な代価です。だからSpeak-Yはホスト型のエンドポイントではなく ローカルサーバーを提供しています。
そのMCPサーバーは、クライアントがあなたのマシン上で起動するプロセスです。
読み取りにはほかに何も動かす必要がありません。検索結果、文字起こし、会議の要約、
アクションアイテムは同じコンピューター上のライブラリからそのまま出てきます。
トークンは発行されず、あいだに中継もありません。何かを変えるコマンド、つまり
録音へのタグ付け、話者名の指定、チームチャンネルへの共有は、起動中のアプリを通り、
データを変更するものとしてクライアントへ宣言されるので先に確認が入り、
オフにできる場所に記録が残ります。サーバーの引数に--read-onlyを加えると、
変更系のコマンドはそのクライアントへそもそも公開されません。行儀のよさを約束する
説明よりも強い保証です。導入は設定 → 連携からワンクリックで、Freeを含む
すべてのプランで無料です。
取引は両方向です。ローカルサーバーはブラウザのタブのChatGPTには応えられず、 アプリが動く場所でしか動きません。その制約が問題になるなら、次に読むべき比較は そもそもどのクライアントがローカルサーバーを起動できるか です。接続したあとアシスタントに何を変えさせてよいかが問いなら、 書き込み権限の線引きが扱っています。 Speak-Yのサーバーが何を提供するかはMCPの概要にあります。
ローカルサーバーはあなたのマシン上のプログラムで、クライアントが起動し標準入力と標準出力でやり取りします。渡すのはコマンドラインで、トークンは発行されません。リモートサーバーは誰か別の人が運用するHTTPSエンドポイントです。渡すのは資格情報、通常はOAuth 2.1のアクセストークンで、ツールが触れるデータはその運用者のインフラへ運ばれます。
MCPの認可仕様では、トークンは1つのサーバーと1組のスコープに紐づきます。クライアントは認可リクエストとトークンリクエストの両方で、サーバーを指定するRFC 8707のリソースインジケーターを送らなければならず、サーバーは自分宛てに発行されたトークンかを検証し、それ以外を受け入れることも中継することもしてはなりません。これでトークンを別のサービスで使い回すことは塞がれます。運用者が、そのツールがあなたの代わりに取得したデータをどう扱うかについては何も述べていません。
2か所で行いますが、多くの人は最初の1つしかやりません。アシスタントでコネクターを削除すると、クライアントが持つトークンの複製は消えます。認可に使ったサービスに記録されたOAuthのグラントは別のオブジェクトで、たいていそのまま残ります。Anthropicの案内は、Claudeの設定でコネクターを切断するか、サードパーティサービスのセキュリティ設定で権限を取り消すよう述べています。提供元の連携済みアプリのページは、接続したあとではなく前に見つけておきます。
いいえ。レジストリが確認するのは名前空間の所有です。io.github.*の名前はGitHubの認証で、ドメインに基づく名前はDNSまたはHTTPの確認で、公開者がその名前を管理していることを示します。その憲章は、サーバー実装の順位づけや選定を明確に範囲外とし、レジストリはメタデータのカタログであってパッケージレジストリではないと述べています。サーバーコードのホスティング、配布、実行は行いません。
あなたが承認したスコープが届く範囲だけです。危ういのは、スコープが用途より広い場合です。メールボックスやドライブ全体に対して発行されたトークンは、そのサーバーが公開するすべてのツールから、グラントが生きているあいだずっと使えます。宣伝ページではなく同意画面を読み、クライアントにツール単位の設定があるなら使ってください。Claudeのコネクター設定では個々のツールを有効・無効にでき、ChatGPTの開発者モードは既定で書き込み操作に確認を求めます。