概要
生成AI を扱う上で、今やデファクトスタンダードとなりつつある、重要な概念 「Model Context Protocol (MCP)」 について、基礎知識をざっくりとまとめた記事です。
本記事は、MCP の概念/基礎知識/作り方/使い方 などをまとめた無料の電子書籍から、「初心者向け」に噛み砕いて 抜粋 したものです。より詳しく知りたい方はこちらの書籍をご覧ください(※ 現在執筆中。完成したらQiitaか X で通知予定)。
特に「専門用語がたくさん出てくると、イマイチわからない」という人向けに、用語説明を補完したり、できるだけ専門用語を減らした内容にしてみました。そのため、あえて解像度を下げた表現方法をする場合があります🙏
前提
- 非エンジニアや駆け出しエンジニアの方を想定した内容
- MCP をちゃんと理解したいが、説明内の専門用語でつまづいてしまった人
- 執筆書籍の中の「概念を理解する部分」のみを抜粋(使い方・作り方は説明しない)
- 実際の環境構築・使い方が知りたい方は こちらの記事へ(Claude デスクトップ編)
- MCP の公式仕様は 2024/11 発表後、2025/3 に仕様が変わっており、2025/3 側の仕様に合わせて解説する
動画解説編
テキストではなく動画で知りたい方はこちら👇(テキストより丁寧めです)
MCP とは
「Model Context Protocol(モデル・コンテキスト・プロトコル:MCP)」 とは、端的に表現すると、AI がシステムにアクセスする時の「接続のしかた」をルール化したもの。
もう少しイメージをつけやすいように、具体例を挙げてみる。
例えば、AI を使って「Gmail で文章作成・メール送信をしてもらう」「Slack で文章作成・返信を送ってもらう」という場面をイメージしてほしい。
AI が Gmail 等の外部サービスの機能を使う場合、AI は文章生成はできるがメール送信などは元々できないので、AI 搭載アプリに対して、「Gmail メールを送る」「受信ボックスの中身を知る」などができる連携機能を持っている必要がある。
現状は、アプリ開発者がその連携機能を開発して、都度、アプリに追加してリリースしている。アプリ開発者側が、Gmail や Slack の仕様を調べて、アプリにピッタリ合う専用のコントローラー 🎮 を用意しているイメージだ。
ここで、Google 社、Slack 社にあるお願いをする。
「Googleさん、Slackさん、"このルール" 📃 に沿って、メッセージを送ったりデータ取得したりする AI 専用のコントローラー 🎮 を作ってくれませんか?」
そして、実際に各社が AI に合わせた専用のコントローラー 🎮 を作ってくれたとする。
ここで言う、"このルール" 📃 に該当するのが MCP である。
つまり、AI モデルが、外部サービスを利用したりデータにアクセスする時の「共通ルール」をまとめたものだ。
こういった「共通ルール」のことを IT 業界では 「プロトコル」 と呼ぶ。難しい日本語では 「規格」 とも言われる。
👉 ボタンを押した時の機能は異なるが(例:Gmail に繋げると Aボタンは「メール送信」、Slack に繋げると A ボタンは「チャンネルに投稿」)、コントローラー自体の形・ボタン配置が常に共通(=同じ)なら、接続先を変えるだけで簡単に利用できる。
👉 しかし、従来は、コントローラーの形も機能も扱い方もバラバラだったので、それぞれに合わせて作らなければいけない。大きくルールが変わったらコントローラーも作り直し。その代わり細かく設定もできる。
👉 今までは、サービス利用者(開発者)側 が独自にコントローラーを用意していた。
👉 MCP では、サービス提供者側 が共通コントローラーを用意する(ただし、利用者側も、それを「選ぶ・呼び出す」機能だけは用意する)
共通ルールにはこんなことが書いてある👇
- AI が利用する前に、どんなサービスなのか自己紹介してね!
- AI に対して、何ができるのか(ファイルを作る・消す、メッセージ送る…など)の機能を教えてね
- 専用コントローラーのどのボタンを押されたら、どの機能が実行されるのかも教えてね
- どこまで会話したのか、〇〇の仕組みを使って覚えておこうね
- どこまで行動しても良いのか、許可された行動範囲を明らかにしておこうね
- 最低限、この設定は専用コントローラーにつけておいてね!
などなどが細かく決められている。
この様に MCPは、AI に対して「私たちのサービスはこんな感じで、このボタンを押してくれたら、こういうデータをあげるよ」というルールを、サービス提供する各社が提示するものなので、
- Model(AI モデルのための)
- Context(提示されるサービスの情報・利用方法などの)
- Protocol(共通ルール)
というネーミングがつけられているっぽい雰囲気。あくまで商品名みたいなものなので、提唱者のネーミングセンスで決まっている。
この生成AI 専用の共通ルールが登場し、執筆現在、SNSなどを中心に話題になっている。
実際には、MCP の概念(ルール) と、MCP を実現するツールの作り方 などが発表されたという感じ。
Agent2Agent(A2A)とは何が違うの?
先に「A2A」も知ってしまった人向けに補足しておく。
Google が 2025年4月9日に発表した 「Agent2Agent(A2A)」 は 「AIエージェント同士がどういう共通ルールで連携するか」 を決めたプロトコルだ。
- MCP:「AI(モデル、エージェント)」と「外部システム」の連携に対する共通ルール
- A2A:「AI エージェント」と「AI エージェント」の連携に対する共通ルール
なので、公式にも『A2A は Anthropic の Model Context Protocol(MCP)を補完するオープン プロトコル』であると説明している。1
MCP の何が嬉しいの?
後半にメリットを詳細に解説するので、ここでは簡単に表現する。
- AI アプリと外部サービスの連携がとても簡単になる(拡張が簡単になる)
- AI アプリを作る人たちが、開発時の労力を減らすことができる
- AI に接続される側(サービス提供者側)の事業者が、ユーザー獲得の機会を増やすことができる
なぜそう言えるのかは、これから解説をしていく。
なんで話題なの?
2025年4月現在、MCPは大変話題です。国内外問わず、SNSはもちろん、テックブログや各種メディアで取り上げられています。その理由は大きく以下👇
理由❶ MCP を使うこと自体のメリットが魅力的
※ 後述する「メリット」の部分で解説します。
理由❷ 名だたる大企業や有名企業が MCP に同意し、採用したから
MCP は共通ルールを提示しただけであり、何か特別な新技術とかではない。重要なのは、「AI 利用時の共通ルール作ったよ!」と声を上げて、それを世界の各社が わかった、合わせるよ」と言ってくれるかどうかが問題だ。
今回、MCP を提唱したのは、人気 AI モデル「Claude」を開発した Anthropic(アンソロピック)社。
2024年11月5日に MCP 公開後、会社の実績や影響力もあってか、「おっ、なかなか面白いじゃん」「イイ感じじゃん」「みんな乗ってるからウチらも出しますか」と、世界中の著名な会社・サービスが 「MCP、はじめました」 状態になった。
Google や OpenAI、Microsoft、AWS、GitHub などの名だたる企業が MCP に同意しちゃったし、そうなると他の会社も 「わ、ワイも MCP 用意したで!」 と続いていく空気になる。今まさにその状態。
※ 2025年3月26日に MCP の仕様が少し変わっており(specification/2025-03-26
)、現在はそちらの仕様で MCP の各ツールが作られている2
理由❸ AIエージェントを併用すると更にすごい
実際、サービスの専用画面等をいじらなくても、生成AI に「〇〇して」というだけで資料を作ってくれたり、メッセージ飛ばしてくれたり、データや資料等を作成してくれるのは非常に楽だ。例えば、Unity の MCP を使えば、ゲームだって自然言語の指示だけである程度できてしまう。
これが、ChatGPT のような 対話型 の AI で MCP を使えるだけでなく、1回指示したら完成まで自動でやってくれる 自立型 の「AI エージェント」も MCP を利用できるので、実現できそうなことや活用方法が更に大きく広がっている。
理由❹ 色んな活用方法が拡散されている
「MCP でこんな使い方発見しました」
「MCP をこう使うと作業が爆速になる」
「MCP のおかげで、AI に指示したら〇〇サービスを利用した処理を完成までやってくれた」
…などの好評なユーザー体験の投稿がどんどん拡散され、ユーザー急増・利用の急速な拡大が起きている。そして、企業側もその普及に追いつこうとしている状態…という印象。
もはや「MCP を使う前提」「少なくとも概念は知ってて当然」な空気に向かっている感じがする。
MCP の基本構造
MCP のメリットをより理解するためには、まず具体的な構造を知る必要がある。
MCPは、クライアント・サーバー・アーキテクチャ(いわゆる「クラサバ方式」)に基づいている。つまり「サービス利用者」と「サービス提供者」の関係が前提にある。
ここで、登場する概念が3つ。
- MCP ホスト:AI 機能を内包したアプリやツール(現状のオープンツールなら、VS Code、Cursor、Claude for Desktop、Cline などが該当する)
- MCP クライアント:「MCP ホスト」内に存在し、MCP ルールに則って接続をする AI 専用の機能・プログラム
- MCP サーバー:MCP ルールに則って、AI に接続されるために用意する、軽量なプログラム
「MCP ホスト」「MCP クライアント」は、サービス利用者側 が用意するもの。
対して、「MCP サーバー」は、サービス提供者側 が用意するもの。AI がどこまで処理できるのかは、サービス提供者側が決める。
MCP サーバーで連携するのは、インターネットを通じた Web サービスのみではなく、ローカルマシン(自分の PC 内部)のファイルやデータも対象となる。
(※ AI アプリが、Web 上の情報を検索したりもできる様になるし、PC 内のファイルを操作したり、作業したりもできる様になる)
MCP サーバーが提供すべき3つの主要機能
MCP サーバーを提供する側は、以下のいずれかを含む必要があり(全部じゃなくても良い)、他の細かいお約束も含め、これらを満たしたプログラムが「MCP サーバー」となる。
機能 | 説明 | 使用例 |
---|---|---|
Tools (ツール) |
AIモデルが呼び出せる関数。 特定のアクションを実行するための AI 専用コントローラー部分のこと |
データベースクエリ実行、APIリクエスト送信、ファイル操作など |
Resources (リソース) |
MCP ホストユーザー or AIモデル が、アクセスできるデータのこと。 重要な計算は行わず、副作用もない |
ファイル内容の読み取り、データベースからのデータ取得など |
Prompts (プロンプト) |
MCP ホストユーザー向けに事前に提示する、テンプレート化されたメッセージ | コードレビュー、データ分析、検索クエリの最適化など |
追加機能も実装できる
上記は、サーバー側が実装すべき主要な機能だが、追加ユーティリティとして以下の様な機能も実装して良いとされている。
- Configuration(何かを設定する機能)
- Progress tracking(進捗管理機能)
- Cancellation(処理をキャンセルする機能)
- Error reporting(エラー報告機能)
- Logging(ログを取る機能)
MCP クライアント側が満たすべき主要機能は?
サーバー側に上記のような "決め" があるなら、クライアント側にもあるのか?…というと、特にない。
一応、「Sampling(サンプリング)」 という機能は定義されているが、説明がややこしいのと、今回の理解には不要なので割愛する。
SDK の提供
これは、一般ユーザーではなく開発者向けの話だが、
そもそも 「SDK(ソフトウェア開発キット)」 とは、開発者がプログラムを開発する時に使う 開発道具一式(ソフトウェアやプログラム)のことで、MCP に限らず、あらゆる開発をするために世界中の各社が公開・提供しているものだ。
例えば、スマホアプリを開発する時は、Apple や Google が、iOS・Android アプリを開発するために最低限必要なプログラム一式を公開してくれている。これらが「SDK」であり、開発者は SDK インストール後に、そこから肉付けをして独自のアプリを完成させていく。
MCP も、「MCP クライアント」「MCP サーバー」を作るための両方の SDK を公開している。そして、使い方などもドキュメントが用意されている(英語だけど)。
自分で開発する場合は、「何のプログラミング言語なら作れるのか」「具体的なサンプルコード」などは、そこを見て作る。
現在は、執筆現在は、Java、Kotlin、Python、TypeScript、C# がサポートされている。これは今後、増えたり減ったりする可能性がある。
※ 心の声 🥸(ついに、"JavaScript" としては用意されない時代になったのか…)
MCP のメリット
ここで重要なことは、「MCP 特有のメリット」と捉えるよりは、「お約束・共通ルールが決まっていることによって生まれるメリット」(= 生成 AI の接続が標準化されるメリット)と捉えた方が、よりわかりやすい。
メリット❶ AI アプリに簡単に拡張機能を与えることができる
これは、技術者向けではなく、一般消費者としてのユーザー目線での話だ。
そもそも 対話型の AI(ChatPGT や Claude など)は、もともと「会話すること」に特化している。
今では「画像を作ってよ」と言えば画像生成ができる様になったが、それはアプリ開発者がそういうカスタマイズ機能を開発し、追加してくれたからだ。つまり、既存のアプリケーションに新機能を追加するには、専門知識を持つ人が「開発」しなければいけない。
これが、MCP の登場によって、本来できないはずの機能を「MCP サーバー追加」の操作だけで簡単に追加できるようになってしまう。
実例として、「Claude for Desktop」というアプリがあるが、これを PC にインストールしただけでは、Web 版と同じくチャットができるだけの、ただの対話型 AI だ。
しかし、公式の "Filesystem MCP Server" という「PC のファイルを操作できる MCP サーバー」を追加するだけで、突然 「チャットで指示したらファイルを作ったり消したり移動したりできる相棒」 に変わるのだ。
さらに外部サービスの MCP サーバーを導入すれば、Gmail や Slack などの 外部サービスを「拡張機能」として扱えるようになる のが MCP の強みであり、あなたに専門知識がなくても「既存のアプリを拡張する(機能を追加する)」ということが簡単に出来るようになる。
メリット❷ よく知らないサービスも自然言語で扱える
これも、一般ユーザー目線での話。
あなたが 「使ったことがないサービス」「使ってはいるけど詳しくはないサービス」 でも、MCP を通せば、自然な言葉で自由に扱えるようになるということ。
例えば、あなたはゲーム開発ができる 「Unity(ユニティ)」 を使ったことはあるだろうか?
3Dモデルを制作できる 「Blender(ブレンダー)」 は?デザインツール 「Figma(フィグマ)」 は?
当然、知識が無ければ使えないし、理由がなければ今後も触らないだろう。
でも、それぞれの MCP サーバーと一度連携すれば、AI とのチャットで「テトリスを作って」と指示すればゲームを作り出し、「マグカップの立体データ作ってよ」と手書きのイラスト画像を与えれば、そのイラストからリアルな3Dモデルを作れてしまう。…そんな可能性や新しい挑戦の機会が、MCP によって得られる。
もう1つの例も挙げてみよう。
既に Slack を利用している人は、Slack ができること・どんな機能があるのかの全てを把握している人は、そこまで多くないだろう。しかし、Slack MCP が利用できる状態で、AI に「Slack でこんなことをしたい」と指示すれば、本来自分が知らなかったはずの機能までフル活用して、やりたかったことが実現できるようになる。
メリット❸ 一度環境を用意すれば、接続・切断は簡単
MCP を通じてサービスを利用する場合、MCP ホストに該当するアプリ(VS Code/Cursor、Claude Desktop など)を何かしら用意する必要がある。
しかし、多くの場合はチュートリアルが用意されており、設定もさほど難しくない。
一度設定してしまえば、あとは「どのサービスを接続して使うか」は言葉で指示するだけで済む。
要するに、「使ってみる/やめる」が気軽にできるのだ。
これは、サービス利用者にとって生産性をあげたり新しい挑戦を広げるキッカケにもなる。
メリット❹ 安全な双方向接続の実現
ここからは技術者向けの話。
公式には、MCPは 「開発者が、データやソースと、AIを搭載したツールとの間で、安全な双方向接続を構築できるようにするオープン・スタンダードである」と記載されている。3
ここでいう 「安全」 とは、「MCP を使えば必ずセキュリティ的に安全になる」 という意味ではない。
「接続方法が統一される = みんなが同じルールに従うので不具合が起きづらくなる」 という意味である。
技術者として何か機能を用意したり連携ロジックを考えるときに、MCP という名の共通理解があることで、何が起きてるか把握しやすく、開発者関係者同士の認識も合わせやすい。心理的な安全 = 安心(?)に近い。
メリット❺ 仕様だけでなく SDK も公開されているから作りやすい
単に「こういう統一のルールを作ったらみんな幸せじゃん!」という 理論(仕様) だけを提案しているのではなく、その実現に必要な開発のための 道具一式(SDK) も提供している。
これによって、サービスを提供している事業者はもちろん、プログラミングができる人なら、MCP に則った独自のツールを生み出すことができる。
「理論+実現する道具」 をセットで提供しているので、利用しやすいという点。
今後、個人開発やサービス開発をするエンジニアにとっては、「専用の MCP サーバーを用意するか」というのも1つの考慮事項になるだろう。
メリット❻ 連携を実現するためのコストを下げる
このメリットは、「個人がどれだけ嬉しいか」というメリットではなく、「関わる人全員をまとめて考え、全体としてどれだけハッピーか」という観点でのメリットだ。
従来、AI に限らず、アプリケーション開発において外部サービスを連携する場合は、 サービス利用者(開発者)側が、サービス提供者側の決めたルールに 100% 合わせて、接続ツールを用意 していた。
(例:Gmail API の仕様を調べて、APIを活用したアプリを開発する・利用する)
MCP では、「MCP っていう中継ルール決めたから、利用者側・提供者側がそれぞれルールに沿った接続ツール作ってね!」ということになる。
つまり、サービス利用者(開発者)側:サービス提供者側 = 50:50 の労力に分配される(※ 厳密には半分ではないので、削減されるという主旨)。
これは単に「労力が分配されただけ」ではない。
関わる当事者全体を見た時に、接続機能の開発・利用に必要な全体のコストも大きく下がることになる。
例えば、3 つの異なるアプリと 5 つの外部サービスが連携をする場合、
従来の方法では、サービス利用者(開発者)側が 3×5=15 個の異なる連携実装をする必要があった (M×N問題)。
しかし、MCP なら、サービス利用者(MCP クライアント開発者)側の実装 3 個、サービス提供者(MCP サーバー開発者)側の実装 5 個の計 8 個の実装を用意するだけで、全システム間での相互運用が可能になる (M+N問題 に簡略化)。
ビジネスへの影響
ユーザーが前述の様な MCP のメリットを体験したと仮定した場合
一見、「サービス提供者側も MCP を用意する必要がある」という労力がデメリットに見えるかもしれないが、MCP の窓口を1つ用意するだけで、より多くのユーザーがサービスを利用してくれる可能性がある。
例えば、MCP 対応すれば、専門家や技術者ではない一般のユーザーも、MCP ホストを用意してサービスを利用してくれる可能性が増える。
つまり、サービス提供者にとっては、認知度アップ・売上アップの機会が増える のだ。だから、サービス提供者側も労力をかけて MCP を用意するメリットは十分にあることになる。
デメリット・リスク
良いことばかり紹介したが、全くデメリットやリスクはないのか?というとそんなこともない。
- ツール・ポイズニング/プロンプトインジェクション:MCP ツール内に悪意のあるプロンプトやプログラムを隠したり、AI モデルを不正な操作に誘導する方法で、予期しないコマンド実行やデータ漏洩を引き起こす攻撃
- セッションハイジャック:MCP のクライアント・サーバー間の持続的な接続を乗っ取り、情報を盗んだり、不正なアクセスを行う
上記は考えられる一例だが、MCP はまだセキュリティ周りが万全な状態ではない。
そもそも MCP は共通ルールをまとめただけであり、開発者全員に物理的にルールを "強制" することはできない。
そのため、悪意あるツールを作ろうと思ったら作れてしまうので、そういったリスクも想像して、開発・利用に当たっては、どのように利用するか・対策なども検討することが望ましい。
リスク軽減のためにできること
- よく知らない怪しい MCP は安易にインストール・接続しない
- MCP の設定ファイルや設定情報を外部に漏らしたり GitHub で管理したりしない
- Docker などのコンテナ内で動作させるなどの運用を検討する
- 導入している MCP 設定を定期的にチェックする(MCP ホストの確認機能などを利用)
- 感染・攻撃された時の対策・運用プランを考えておく
- その他、自分の運用ルールを決めておく
などなど。特に、最初の2つはITエンジニアでもやらかしてしまいそうな印象。
まとめ
- MCP は、AI がサービス利用する時のルールをまとめたもの(プロトコル)
- 作り方や必要な道具は公開されており、誰でも作ることができる
- 一度環境を用意すれば、これまで利用しづらかったサービスが簡単に利用できるようになる
- 大手が参加していることで、今後更に対象サービスが増えることが予想され、改善・成長も期待できる
- MCP にはメリットがあり、サービス利用者/提供者の双方にとって魅力あるもの
- しかし、リスクもあるので気をつけないといけないし、対策の準備もした方が良い
特に重要なポイント
- MCP は「外部システムを拡張機能化する」 という点(実装の希薄化)
- MCP は機能ではなく規格である = "性能" ではなく "事例の発見" が普及を促進する
-
MCP サーバーの提供をするか否か が選択肢に増え、ビジネスに影響する可能性がある
- その場合、MCP クライアントの提供(事前実装)もデフォルトになる可能性が高い
つまり、技術的な情報としてのみではなく、影響範囲を想像すると、商業的にも無視できないトレンドではないかと個人的には感じている。
実際に使いたくなったら
環境構築から基本的な使い方もまとめてみた。気になった方はこちらを参照のこと。
余談
- MCP は、LSP をヒントに考案されており、仕様等のあらゆる面で LSP の影響を受けている。4LSP は、Microsoft が開発し、オープンソースとなった言語サーバープロトコルのこと。開発エディタの効率的な制作のために考案された
脚注
参照した資料や引用元など👇