記事を書こうと思ったきっかけ
MCPって最近よく聞くけどよくわかりませんでした。そこで調べてみて自分なりに解釈したものを記事にします。今更感あるし、半分自己満なので悪しからず。
本記事の対象
LLMならなんとなくわかるけど、MCPはよくわからない人
初学者による初学者向けの記事であるためざっくりとしか説明できていない部分や不足箇所もあるかと思いますがご容赦ください。
MCPとは
MCP(Model Context Protocol)とは、AI(LLM)モデルが外部のリソース・ツール・ワークフローなどとやり取りするためのオープンプロトコル。Anthropic社によって開発され、AIアプリのためのUSB-Cポートとよく例えられる。
MCPの仕組み
次に仕組み(アーキテクチャ)を眺めていきます。
MCPは3つのコンポーネントで構成される。下図のようなイメージ。
アーキテクチャ
各コンポーネントの詳細
-
MCP Host
AIアプリの本体、普段我々が使っているClaude, ChatGPTなどの機能を有するアプリ, Cursorアプリなどがそれにあたります。ユーザーからの入力を受け取りどのClient/Serverへ接続すべきかを制御します。 -
MCP Client
HostとServer間の通信を担当する中間層に当たります。ユーザーの要求(自然言語)をJSON形式の構造化メッセージに変換してServerへ送信します。※ClientとServerは1:1の関係であることに注意。 -
MCP Server
LLMがアクセスできるツール、データソース、ワークフローなどを提供。Slack, GitHub, Dockerなどがそれにあたります。
通常は各ServerがGitHubリポジトリで公開され、各種言語(Python, TypeScript等)で実装可能です。
主なサブ構成
- Resorce
DBや外部APIから情報取得 - Tool
計算やAPI呼び出し - Prompt
LLM向けのテンプレートやワークフロー定義
通信プロトコル
- 通信はJSON形式
- メッセージタイプ
Request, Response, Notification - 通信モード
stdio, SSE(Server Sent Events)
MCP利用のイメージ
理解へ1歩近づくためにGitHubへのPRを例に利用イメージをシーケンス図で示します。
MCPのメリット
上の構造を観察してわかるMCPのメリットは下記
- MCPがツールへの出力を標準フォーマットに変換、つまりLLMとツール間の翻訳をしてくれる。
ユーザーはCLIやAPIの違いも意識せずに、LLMのプロンプト入力だけで操作可能。 - 開発者は1つのMCPインターフェースから複数のツールとやり取り可能なため、開発効率UP!
- RAGを構築する際にMCPを経由すること、より柔軟なデータ取得が可能。
逆にMCPがないと・・・
- 各サービス(Slack, GitHubなど)がそれぞれ異なるAPIやデータ形式を使うため、ツール間の連携で複雑な手作業が発生。小さい変更でAIワークフロー全体が壊れるリスクあり。
- 各APIや認証を個別に行う必要があり運用保守コストが増加。
- 各サービスへ要求を送れても、返ってきた結果をLLMが解釈できない。またはサービスによって指示や推論の精度に差が出る。
締め
最後まで読んで頂きありがとうございます。(Qitta初投稿ですがなんとか書ききることが出来ました…)
少しでも皆様の理解の助けになれば幸いです。
参考にしたページ
https://www.ibm.com/jp-ja/think/topics/model-context-protocol#1509394339
https://zenn.dev/dotconf/articles/2025-10-26-mcp-introduction