マイク:
はい、みなさんこんにちは。今日もzenncastをお聞きいただきありがとうございます。普段はその日の技術トレンドをコンパクトにお届けしているzenncastですが、今回は特別編です。なんと、ゲストをお呼びしています。
マイク:
ゲストは僕の元同僚であり、プライベートでも一緒に技術の話をしている友人、Saraです。早速だけど、Sara、今日は来てくれてありがとう!
サラ:
こちらこそ呼んでくれてありがとう、Mike。みなさん初めまして、Saraです。普段はプロダクトマネージャーをやっていて、新しい技術に興味があるんだけど、正直エンジニアリングにはまだまだ勉強しなきゃいけないことがいっぱいあって…だから今日はMikeにいろいろ教えてもらおうって気合い入ってます!
マイク:
うんうん、そんな頼りになるSaraに登場してもらって、今日はどんなテーマを扱うかというと…MCPという新しいプロトコルについて話そうと思います。正式名称はModel Context Protocolと言うんだけど、Saraは聞いたことある?
サラ:
名前程度は知ってるけど、正直まだちゃんと分かってなくて。LLM(大きな言語モデル)を外部とつなぐ仕組み、みたいな感じなのかな?
マイク:
そうそう、まさにそんな感じ。じゃあ、ここからはじっくり紹介していくね。MCP、つまりModel Context Protocolとは、大きな言語モデルとさまざまなデータ源やツールをつなぐためのオープン標準プロトコル、いわば『AIアプリ向けの共通ポート』みたいなものなんだ。
マイク:
イメージとしてはUSB-Cみたいに、端末と周辺機器をひとつの形状で接続できるでしょ? 他の規格を変換するときにアダプタが必要だったり、ケーブルごとに規格が違ったりするけど、USB-Cが標準化されればスムーズにつながる。それと同じことをAIモデルと外部サービスの間でやろうというわけ。
サラ:
なるほど。じゃあ、いままでバラバラだった外部のAPIやプラグインを、ひとつのプロトコルにまとめて使えるようにする感じ?
マイク:
うん、まさにそこが狙いだよ。MCPを使えば、LLM側もツール側も同じルールに従って通信するだけで、統合が簡単になるんだ。今まではGoogle Drive用のプラグインとか、Slack用、GitHub用…みたいに全部別々の仕組みやAPIが必要だったよね。それがMCP経由で共通化されるイメージ。
マイク:
で、具体的にはクライアントとサーバーを繋ぐアーキテクチャになってる。クライアントはAIを動かすアプリケーション側、サーバーはツールやデータベースへのアクセス機能を提供する側。通信はJSON-RPCでやり取りして、ステートフルな接続を張りながら相互にメッセージを交換するんだ。
サラ:
ステートフルってことは、対話の流れを維持できるのよね。だとすると複数回ツールを呼び出すやり取りにも対応しやすそう!
マイク:
そうなんだ。やり取りを途中で切り上げずに、モデルが『この情報を使って次のステップに進む』みたいな操作も楽になる。しかもクライアント側は、サーバーが正式対応していれば、STDIOとかHTTP+SSEを使ってどちらでも通信できる。このフレキシブルさが魅力なんだ。
マイク:
あとMCPでは、やり取りする情報を大きく『プロンプト』『リソース』『ツール』の3つに分けて管理する。プロンプトはテンプレート化した質問やコマンド、リソースはファイルや何かのデータそのもの、ツールは実際に呼び出せる操作や関数のこと。
サラ:
なるほど、たとえば『ユーザーが選んだスラッシュコマンド』みたいなものがプロンプトになって、そこから呼び出してるAPIやデータ操作がツール、そして扱いたいファイル内容や検索結果がリソース、って感じかな。
マイク:
その通り。そうやって情報をきれいに分類することで、モデル側が一貫した形式で外部の機能を扱えるわけ。これによってLLMと外部ツールのやり取りが効率的になるんだ。
マイク:
では次に、MCPがもたらす効果について話そう。前から言われてるM×N問題ってあるじゃない? LLMがM種類あって、ツールがN種類あると、それぞれの組み合わせに統合を書かなきゃいけない。
サラ:
うわぁ、確かに。あるプロダクトがOpenAIのモデルを使うときと、Anthropicのモデルを使うときで実装が違うとか、さらにツールも別々に書かなきゃとか…すごく大変そう。
マイク:
それを解決しようというのがMCPなんだ。スタンダードなプロトコルが1本通れば、ツール開発者はMCP対応にさえしてしまえば、どのLLMからでも呼び出せる。LLMのベンダー側もツールをMCP経由で使えるように実装するだけで、いろんなサービスとつながる。
マイク:
それから、実装者がゼロからプラグインを書かなくてもよくなる。たとえば既にファイルシステムを扱うMCPサーバーが用意されていれば、それを入れるだけでローカルファイルが読めるようになる、とかね。
サラ:
なるほど! それは大幅な工数の削減になりそう。あとセキュリティ面ではどうなの? 外部のデータとかファイルにアクセスするって不安があるんだけど。
マイク:
いいところに気づいたね。MCPはセキュリティやプライバシーにも配慮されていて、それぞれのサーバーがアクセス範囲を管理したり、ローカル環境内で完結するように設定したりできる。Claude DesktopとかClineっていうクライアントも、ツール呼び出しするときにはユーザーに確認を求める仕組みを備えてるんだよ。
サラ:
あ、じゃあ勝手にモデルがファイル消しちゃうとか、そんな危険は少ないわけですね。
マイク:
そう。もちろん設定次第だけど、MCPクライアントが間に入って『本当に実行していい?』って聞いてきたり、そもそもサーバーが読み取り専用モードしか許していないとか、そういった形で権限を厳密にコントロールできる。
マイク:
次に代表的なMCPサーバーの話をしようか。Anthropicとコミュニティがいろいろ作っていて、ファイルシステムやGoogle Drive、PostgreSQL、Git連携、Slack、ブラウザ操作など、本当にいろんなのがある。
サラ:
あ、Gitリポジトリを操作できるサーバーって面白い。モデル経由でリポジトリの中を検索して、ファイル修正とかもできちゃうんですかね?
マイク:
そうだよ。読み書きに関してはユーザーの許可が必要になるけど、コミットまで自動でやろうと思えばできる。あとはウェブ検索用サーバーなんかもあって、モデルがネット上を検索して情報を拾ってくることも可能だね。ただこれも、使用する際はちゃんと承認が必要とされる設計が多い。
マイク:
コミュニティでは他にも、音楽再生コントロールやタスク管理ツールとの連携サーバーなんかも出てきてる。2025年の春頃にはMCPサーバーが数百種類以上は公開されてると言われていて、どんどん増えてるみたい。
サラ:
そんなに数があるってすごいね。もうちょっと手軽に触れられるところはあるの? たとえばVS Codeと連携して、モデルにコーディング手伝ってもらうとか。
マイク:
まさにその代表例がClineっていうVS Code拡張だ。ClineはいわばMCP対応のエージェントで、VS Code上でチャットボットとして動くんだけど、『ファイル編集』とか『検索』とかをツールとして呼び出してくれる。
サラ:
じゃあClineを使えば、自然言語で『ここに新しい関数を追加して』とか指示すると、Clineがツールを使って勝手にファイルを書き換えてくれる、とかできる?
マイク:
そう。もちろん人間の最終確認を挟むけどね。『この変更を実行していい?』みたいにClineが聞いてきたりする。面白いのは、Cline自体に『こんなツールを追加したい』とリクエストすると、その場でMCPサーバーを自動生成してインストールしちゃったりする機能もあるんだ。
サラ:
へえ、自動生成までやってくれるの? それなら開発者がいちいちコードを書かなくても、新しい機能拡張がしやすくなりそう。
マイク:
うん、まさに。ClineのインターフェースにMCPサーバーの一覧や各ツールが表示されて、設定のオンオフをGUIで切り替えたりもできる。かなり使い勝手が良いと評判だよ。
マイク:
一方、Anthropicが公式で出しているClaude Desktop AppっていうのもMCPクライアントの代表例だね。これはデスクトップ版のチャットアプリで、ローカルファイルを添付したり、外部コマンドを呼び出したりして、よりプライベートな環境でClaudeを使える。
サラ:
ふだんブラウザ版のClaudeにお世話になってるけど、デスクトップ版だとローカルのファイルにまでアクセスできるのが大きいわね。
マイク:
ただウェブ版はまだMCPに対応していないから、そういう拡張機能はデスクトップ版限定なんだ。デスクトップ版なら設定ファイルを変えて独自のMCPサーバーを追加することもできる。
マイク:
具体的には、設定ファイルの中で『mcpServers』という項目にサーバー起動コマンドやアクセスを許可するディレクトリを指定しておく。それでアプリを再起動すると、サーバーが自動で立ち上がって、チャットUIからはツールがすぐ使えるようになる、って仕組み。
サラ:
なるほど。自分のデスクトップフォルダやダウンロードフォルダへのアクセスをサーバーに渡す設定が書いてあるわけね。
マイク:
そういう感じ。Node.jsが必要だったりPythonが必要だったり、サーバーごとに依存はあるけど、一度設定すれば毎回起動時に自動で読み込んでくれる。
マイク:
そしてMCPの話題に戻ると、こうした仕組みはAnthropicが提案して2024年末に正式オープンソース化されたんだ。最初はClaudeの拡張が目的だったけれど、いまはMicrosoftなどほかの企業も協力してSDKを作ったりしてる。
サラ:
オープンコミュニティでみんなが新しいサーバーを作ってるんだね。そう考えると、ますます便利な連携がどんどん増えそう。
マイク:
うん、そこが魅力。特定のベンダーに縛られず、どのモデルでも同じプロトコルでつながるっていうのは、エコシステムを盛り上げる大きなポイントだよ。
マイク:
さて、6つ目のポイントとしてMCPと従来のAPIとの違いをまとめたい。大きく分けると、『統一インターフェース』になったこと、それから『ステートフルな双方向通信』であること、さらに『リソースという形でデータを管理』できる点、それに『セキュリティと権限管理が標準で組み込まれている』こと、こんなところだね。
マイク:
従来はREST APIとかでツールごとに違う手順で呼び出して、それをモデルにプロンプトで渡し…みたいな面倒があった。でもMCPなら、一度MCPサーバーを接続すれば、モデル側は同じ形式で呼び出せる。
マイク:
さらにステートレスじゃなく、MCPだとセッションを保ちながら対話が続くから、『前のステップで取り寄せたリソース』を使って次の操作をする、といった複雑なやり取りがしやすいんだ。
サラ:
なるほど。セッションを維持するから中間結果を取っておいたり、何度もツールを呼び出す作業をまとめて管理できるのね。
マイク:
そうだよ。あとリソースって仕組みは、大容量のドキュメントを毎度プロンプトに貼り付けなくても済むメリットがあるよね。サーバー側で持っておいて、必要に応じてモデルが部分的に参照する形。
マイク:
そうすればトークン制限も多少緩和されるし、ネットワーク負荷も軽くなる。セキュリティ面では、人間が承認するUIが標準で用意されていることが多くて、各サーバーもアクセス範囲を制限しやすい。
マイク:
さて、お待ちかねの『ClineでMCPサーバーを利用する』具体的な方法ね。ClineはVS Code拡張だから、まずClineをインストールして立ち上げる。そこに追加したいMCPサーバーを自然言語でリクエストすれば、Clineが自動で設定ファイルをいじってくれたりする。
サラ:
チャットで『Slack用のMCPサーバーを追加して』って言うと勝手にやってくれる感じ? すごい!」
マイク:
うん、そういうふうにClineにURLを伝えれば、リポジトリをダウンロードしてビルドまでしてくれることもある。あるいはGUI経由でサーバーをマーケットプレイスみたいに選んで、ポチッとインストールする方法もある。
サラ:
だんだんIDEがモデルの便利な助手になっていくわね。
マイク:
そうなんだ。追加したサーバーは『MCPサーバー一覧』に表示されて、必要になったらオン、不要なときはオフ、みたいに柔軟に切り替えができる。もちろん細かい設定は設定ファイルにも書き込まれてるけど、Clineが自動でやってくれるから楽ちんだよ。
マイク:
続いてはClaude Desktop AppでMCPサーバーを使う方法。デスクトップアプリにも設定ファイルがあって、そこにサーバーを追記する形で追加していくんだ。例えばファイルシステムサーバーをNode.jsで動かすなら、Node.jsがインストールされている必要がある。
サラ:
そこはツールによってPythonが要るかもしれないとか、人それぞれの環境がありそうね。
マイク:
そうだね。設定JSONに『mcpServers』というオブジェクトがあって、その中に『command』『args』みたいな形で起動方法を書いておく。アプリ再起動すれば、そのサーバーが起動して、Claudeがツール一覧を表示してくれる。
マイク:
ファイルを読む行動をとるときには『読んでもいいですか?』とか聞いてくれたりして、ユーザーがOKすると実行される。複数サーバーを登録するときは、そのJSON内にどんどん追記していく感じ。
サラ:
なるほどね。WindowsやMacで動作するのは便利かも。ただLinux版がないのはちょっと残念だけど、いずれ出るのかな?
マイク:
そこは今後のアップデートに期待、だね。いずれにしても、デスクトップアプリならローカルのセキュアな領域でツールを起動する側面があるから、企業内なんかでも使いやすいかもしれない。
マイク:
最後に、ユーザー自身が独自のMCPサーバーを立てる方法を簡単に説明するよ。要は、Anthropicが出しているSDKを使えば、PythonやTypeScriptなどで自作のツールを作れるんだ。
サラ:
つまり、自社のデータベースにだけアクセスできる専用ツールとかを作って、MCPサーバーとして公開すれば、モデルはそこに自由にアクセスできるってわけね。
マイク:
そう。しかも公開は社内限定でもいいし、もっと広くオープンソースで出してもいい。各サーバーはJSON-RPCをやり取りするだけだから、ローカル起動でもいいし、HTTPモードで遠隔ホスティングしてもいい。
サラ:
セキュリティ面や権限管理はしっかり考えないとだけど、それがMCPプロトコルレベルである程度枠組みが用意されてる、と。
マイク:
正解。ツール呼び出しごとにエラーハンドリングや承認フローをどうするかとか、監査ログをどう残すかっていうのも標準で想定されてる。企業で使うときはそこをきっちりやっておくといいね。
マイク:
まとめると、MCPはAIモデルと外部ツールを安全かつ標準的につなぐ新しいオープン規格。いろんなサーバーが既に大量に公開されていて、ClineやClaude Desktop Appと組み合わせれば、すぐに強力なエージェント環境が作れる。それに自作で機能追加も可能という、非常にスケーラブルな仕組みなんだ。
サラ:
いや、思った以上に幅が広いわね。これなら、例えばファイル管理からウェブ検索、Git操作やチャットツール連携まで一気に実現できそう。
マイク:
そうだよ。新しい技術を試したいってとき、まずはClineやClaude Desktopをインストールして、好きなMCPサーバーを追加して遊んでみるのがいいかも。
サラ:
うん、それやってみる。私もClineを入れてVS Code上で試してみよっと。コーディング支援ツールとしてどんな使い勝手か知りたいし。
マイク:
エンジニアじゃなくても、ちょっとしたスクリプトを自動で作ってもらったり、メモやドキュメントを整理してもらったりできるから面白いと思うよ。
サラ:
いろいろ教えてくれてありがとう。これは新しいプロトコルだけど、かなり実務向きだね。最後に、私なりにMCPを使って何か作ろうと思うんだけど、たとえば社内向けのカスタムデータベース検索サーバー…なんてどう?
マイク:
いいじゃん! 社内だけで使えるセキュアなMCPサーバーを立てて、Claude Desktopとつなぐとかね。そうすれば秘密の情報を漏らすことなくモデルに活用させることができるし。
マイク:
そんなわけで、今回はMCP(Model Context Protocol)をご紹介しました。Sara、ここまでの話聞いてみてどう?
サラ:
想像以上に利点が多いし、オープンコミュニティが活発だからこれからも広がっていく感じがする! ありがとう、Mike。みなさんもぜひ試してみてね。
マイク:
ということで、本日のzenncast特別編、お相手はエンジニアのMikeと…
サラ:
プロダクトマネージャーのSaraでした。ありがとうございました!
マイク:
ありがとうございました! ではまた次回お会いしましょう!