2026-06-28
Model Context Protocol (MCP):AIをあなたのツールに接続する方法
MCPは、Anthropicが提供するAIアシスタントとデータソースおよびツールを接続するためのオープンスタンダードです。クライアント・サーバーモデル、トランスポート層、機能(capabilities)、そしてサーバーの実行方法などについて学べます。

最終更新日: June 28, 2026
MCP — Model Context Protocol — は、Anthropicが2024年後半にリリースしたオープンスタンダードであり、AIアシスタントとエージェントを外部データソースやツールに接続するためのものです。モデルごと、ツールごとに専用の統合を記述する代わりに、単一のMCPサーバーを公開すれば、どのMCP互換クライアントでもそれを利用できます。先週、ファイルシステムサーバーとGitHubサーバーをClaude Codeに接続したところ、エージェントが実際にできることの違いは即座に明らかでした。本記事では、MCPとは何か、クライアント・サーバーモデルがどのように機能するか、コアとなるケイパビリティのタイプ、そして独自のセットアップでサーバーを実行する方法について解説します。
クイックアンサー:MCPとは?
MCPは、AIホストアプリケーション(Claude DesktopやClaude CodeのようなMCP client)と、データやアクションを公開する外部serverとの接続を標準化するJSON-RPC 2.0ベースのプロトコルです。単一のMCPサーバーは、クライアントに対して3種類のケイパビリティタイプを宣伝できます。
- Tools — モデルが呼び出すことができる関数(データベースへのクエリ、メッセージ送信、リポジトリ検索など)。
- Resources — モデルが読み取ることができる構造化データ(ファイルの内容、APIレスポンス、レコードなど)。
- Prompts — ユーザーが呼び出し可能な再利用可能なパラメーター付きプロンプトテンプレート。
その目標は、「AI統合のためのUSB-C」です。サーバーは一つで、クライアントは多数となり、モデルごとの接着剤(glue)が不要になります。仕様とSDKはオープンソースであり、GitHubのmodelcontextprotocolで管理されており、公式ドキュメントはmodelcontextprotocol.ioです。
なぜMCPが存在するのか?
MCP以前は、すべてのツール統合が一時的なものでした。もしアシスタントにGitHubのIssueを読み込ませつつ、Postgresへのクエリも実行させたい場合、2つのカスタムコネクタを作成し、モデルやホストを切り替えるたびにそれらを書き直す必要がありました。Anthropicが掲げる動機は、共有プロトコルによってこの重複を終わらせることです — 公式ドキュメントでは、モデルにローカルファイル、データベース、APIへの「標準化されたアクセス」を提供すると説明されています。
この枠組みは、特にエージェント的なワークフローにおいて重要です。単にチャットするだけのエージェントはチャットボットですが、リポジトリを読み取り、クエリを実行し、ループ内でツールを呼び出すことができるエージェントは真のワーカーです。MCPは、後者の能力をポータブルにするための配管(plumbing)のようなものです。これがエージェント設計においてどこに位置づけられるかというより広い全体像を知りたい場合は、AIエージェント自動化に関する当社の記事を参照してください。
クライアント・サーバーモデルはどのように機能するか?
MCPはホスト・クライアント・サーバーのトポロジーに従います。
- Host — ユーザーが実行するアプリケーション(Claude Desktop、Claude Code、IDE拡張など)。
- Client — ホスト内に存在し、単一のサーバーと1対1のセッションを維持します。
- Server — トランスポートを通じてケイパビリティを公開するプロセスです。
ホストは多くのクライアントを実行でき、それぞれが異なるサーバーに接続できます。このプロトコルはJSON-RPC 2.0であり、新しいサーバーを追加するたびに私がテストする3つのライフサイクルフェーズがあります。
- Initialize — クライアントがプロトコルバージョン、ケイパビリティ、クライアント情報を送信し、サーバーが自身の情報を返します。
- Capability negotiation — 両側がサポートしているもの(ツール、リソース、プロンプト、サンプリング、ルート)を宣言します。
- Operation — クライアントがツールのリストを要求したり、ツールを呼び出したり、リソースを読み取ったりし、サーバーが結果をストリーミングで返します。
トランスポートオプション
| Transport | 実行場所 | 使用するケース |
|---|---|---|
| stdio | ローカルサブプロセス(stdin/stdout経由) | ローカル開発ツール、ファイルシステム、git — マシン上のすべて |
| Streamable HTTP | HTTPSを介したリモートサーバー(オプションのSSEストリーミング付き) | 共有チームサーバー、クラウドホスティングされた統合 |
| SSE (legacy) | リモート、サーバー送信イベント | サヨナラさせられている古いサーバー。新しい構築では避けるべきです。 |
stdioはローカルセットアップのデフォルトであり、HTTP URLを渡さない限りclaude mcp addが使用するものとなります。claude mcp addとstdio vs HTTPの決定についてより深く掘り下げた解説については、当社のClaude Code MCP統合ガイドを参照してください。

実際に使われる3つのケイパビリティタイプとは?
MCPの価値のほとんどは、この3つのケイパビリティタイプにあります。モデルがそれを使用する際に、それぞれがどのように動作するかを見てみましょう。
Tools (モデル呼び出し型)
Toolsは作業の中心です。モデルは会話に基づいてこれらを呼び出すことを決定します。私はsearch_logsツールを公開するサーバーを実行し、私が「2時にデプロイはなぜ失敗したのか?」と尋ねた瞬間、モデルが促されることなくそれを呼び出しました。ツール定義には引数のJSON Schemaが含まれているため、モデルは型付けされ、検証された入力データを受け取ります。
Resources (アプリ制御型)
ResourcesはURIによって指定され、通常はユーザー選択であり、モデル選択ではありません — ユーザーがファイルやレコードのようなリソースを添付し、ホストがそれをコンテキストに注入します。これはスコープ制御にとって重要です。モデルが見られるのは、あなたが明示的に渡したものだけだからです。
Prompts (ユーザー呼び出し型)
Promptsは、スラッシュコマンドやメニュー項目としてホストのUIに表示される引数付きテンプレートです。これらは最も利用されていないケイパビリティであり、毎回同じ指示を貼り付ける必要がないように、「このPRをスタイルガイドに基づいてレビューする」といった内容をエンコードするために使用します。
MCPサーバーはどのようにセットアップするか?
Claude Codeをホストとして使用した具体的なセットアップ手順です。同じサーバー設定はClaude DesktopのJSONファイルでも機能します。
- Node.js 20+(または
uvを使用したPython 3.10+)をインストールします。 - 例えば、ファイルシステムサーバーなどの参照サーバーを追加します:
npx -y @modelcontextprotocol/server-filesystem /Users/you/projects - Claude Codeに登録します:
claude mcp add filesystem -- npx -y @modelcontextprotocol/server-filesystem /Users/you/projects - 接続を検証します:
claude mcp listの後、claude mcp get filesystemを実行します。 - ホストを再起動し、セッション内でサーバーのツールを探します。
これが全プロセスです。GitHub orgにある参照サーバーには、ファイルシステム、Git、GitHub、Postgres、SQLite、Slack、Google Drive、Puppeteerなどがあります。
最小限のカスタムサーバー(Python)
from mcp.server.fastmcp import FastMCP
mcp = FastMCP("status")
@mcp.tool()
def healthcheck(service: str) -> str:
"""Return the current status of a service."""
return f"{service}: ok"
if __name__ == "__main__":
mcp.run(transport="stdio")
私はこれをステージングエンドポイントに対して約10分でテストし、Claude Codeに組み込む作業も行いました。内部サービスをエージェントが呼び出せるAPIとして公開するためのより広範なパターンについては、当社のAI API開発ガイドで認証やレート制限について深く掘り下げています。
2026年のエコシステムはどうなっているか?
エコシステムは、公式レジストリといくつかのメンテナンスされている参照サーバーを中心に統合されてきました。私が実際に本番環境で信頼しているものは短いリストです。
- filesystem — ルート制限付きのローカルファイル読み書き。
- github — Issue、PR、検索、ファイル操作。
- postgres / sqlite — デフォルトでは読み取り専用、スキーマイントロスペクション。
- puppeteer / playwright — エージェントのためのブラウザ自動化。
- slack — チャンネルの読み取りとメッセージ送信。
| Capability | 最も使用されるサーバー | デフォルトの安全な姿勢 |
|---|---|---|
| File access | filesystem | 明示的なルートに制限 |
| Code host | github | 書き込みは明示的な設定が必要な、読み取り重視型 |
| Database | postgres | オプトインしない限り読み取り専用 |
| Browser | playwright | サンドボックス化されたプロファイル |
| Messaging | slack | チャンネルスコープのトークン |
複数のサーバーをサブエージェントの背後でオーケストレーションする場合(あるサブエージェントがデータベースを所有し、別のサブエージェントがブラウザを所有するなど)は、Claude Codeサブエージェントに関する当社の記事にチームパターンが記載されています。
注意すべき点は?
これはほとんどの人が飛ばしてしまう部分です。MCPサーバーはあなたの認証情報とファイルシステムアクセス権限で実行されるため、スコープが重要になります。
- 各サーバーを依存関係として扱うこと。 バージョンを固定し、見知らぬリポジトリに対して
npxを実行する前にソースコードを監査してください。悪意のあるツールは、モデルが見るものをすべて外部に漏洩させる可能性があります。 - ルートディレクトリを制限すること。 ファイルシステムサーバーが安全なのは、あなたが指定したディレクトリだけです — 絶対パス(
/)を渡してはいけません。 - 書き込みが必要な明確な理由があるまで、読み取り専用のデータベース設定を優先すること。
- プロンプトインジェクションに注意すること。 ツールがコンテンツを返し、モデルがそれに基づいて行動する場合、信頼できない入力が指示書になってしまう可能性があります。すべてのリソースは敵対的であると想定してください。
- OAuthトークンのスコープを限定すること。 SlackやGitHubのトークンは、あなたの個人用トークンではなく、サーバーが必要とする最小限のスコープにすべきです。
私は新しいサーバーをすべてサンドボックス化されたアカウントで開始し、本番セッションで信頼する前に最初の数回のツール呼び出しを監視します。

要点まとめ
MCPは、現実の問題を解決するための小さなプロトコルです。単一のサーバーがツール、リソース、プロンプトをあらゆる互換性のあるAIホストに公開することを可能にし、「N×Mの統合税」を排除します。仕組みはシンプルです — stdioまたはHTTP経由で初期化し、交渉し、操作する— が、安全な姿勢こそがそれがワークフローに組み込まれるかどうかを決定づける部分です。監査できるサーバーを実行し、認証情報を厳しくスコープ化し、信頼できない入力は敵対的であると想定してください。そうすることで、MCPはアシスタントを実際にシステムに触れられるエージェントに変える最もクリーンな方法となります。

画像クレジット
- モニター画面に表示されたソースコード — photo by Markus Spiske on Pexels
- ターミナルでサーバーを設定しているラップトップに向かってタイピングする開発者 — photo by Vlada Karpovich on Pexels
- レイヤードアーキテクチャを象徴する抽象的な回路基板の構成 — photo
続けて読む

Tue Mar 03 2026 19:00:00 GMT-0500 (北美东部标准时间)
ソーシャルメディアのワークフローに最適な画像リサイザー
適切な比率でのソーシャルメディア画像のサイズ変更はもちろん、安全領域のクロッピング、最適なエクスポートサイズや圧縮設定を適用し、各プラットフォームに対応した再現性の高いワークフローを実現します。

Thu Mar 19 2026 20:00:00 GMT-0400 (北美东部夏令时间)
画像フォーマット解説:JPEG、PNG、WebP、GIF、SVG、AVIF
各画像フォーマットの用途を徹底解説。JPEGとPNG、WebP、AVIF、SVG、GIFなど、どの形式を使うべきかを比較し、実際の測定ファイルサイズやウェブ画像のための実用的な決定ルールを提供します。

Thu Jul 23 2026 20:00:00 GMT-0400 (北美东部夏令时间)
品質を損なうことなく、画像を100KB未満に圧縮する方法
表示されないピクセルをリサイズで除去し、必要な範囲でのみエンコーダー品質を下げる方法。5つの実ファイルから得られた再現可能な結果も含まれています。