MCP(Model Context Protocol)を理解する一歩目

AI, Cursor, MCP, ModelContextProtocol, Notion

本記事の対象の読者(読了時間: 10分弱)

  • 生成 AI や MCP (Model Context Protocol) に興味がある方、初学者
  • LLM アプリと外部サービス連携の仕組みをざっくり知りたい方

はじめに

レコチョクのシステム開発第1グループに所属している山根と申します。
普段は「OpenAI」「Anthropic (Claude)」「Google (Gemini)」のモデル等に対応したチャット基盤を運営・開発しております。

目まぐるしいほど、日々の生成 AI のニュースやモデルの更新情報が流れてきますが、特に3月末から近日にかけてよく耳にするようになった、Model Context Protocol (MCP) という言葉。聞いたことがあったり、ご存知の方も多いかと思います。
初めて知ったという方は名前からして難しそうだな〜と感じたり、調べてみても概念的な説明も多くあまりピンと来なかったという方も多いのではないでしょうか。本記事では、自分がそのように感じた経緯もあって MCP の基本からざっくり理解できるように、私なりにまとめてみた記事となります。

目次

  • Model Context Protocol (MCP) って結局、何者?
  • とりあえず使ってみる
  • MCP の仕組み
  • まとめ

Model Context Protocol (MCP) って結局、何者?

MCP とは、生成 AI モデル Claude で有名な Anthropic 社が2024年11月に発表した、LLM アプリと外部システムをつなぐためのオープン標準プロトコル です。公式では「AI アプリケーション向けの USB-C ポートのようなもの」と表現されていたりしますが、いったんは、LLM アプリ(例: ChatGPTClaude DesktopCursorCline)と外部システムをつなぐための「共通ルール」とまずは理解してください。

とはいえ、この時点で「え、何を言ってるのか?」と自分はなったので、イメージ図で補足していきます。

MCP が発表されるまでは、 LLM アプリと外部システムをつなぐためには、それぞれのモデルに合わせた実装を用意する必要があり、コストも時間もかかっていました。図のように LLM アプリ(N個)に対して、外部サービス(M個)ごとに、それぞれのモデルに合わせた実装を用意する必要があり、コストも時間もかかっていました。(N×M個分、実装が必要であった)
具体例でいうと、 OpenAI の Function Calling 機能や、 Anthropic の Tool 機能などがそれに該当し、外部サービスに対して実施したいことが増えるたびに、追加対応が発生していました。

01.png

そこで登場したのがLLM アプリと外部システムをつなぐためのオープン標準プロトコル、 MCP (Model Context Protocol) です。
MCP という共通化されたルールに従って、外部サービス自身 or 第3者の開発者が、「MCP サーバ」を世に公開することで、 LLM アプリ側では大きなコストをかけることなく、公開された MCP サーバを経由することで、外部サービスを利用できるようになるのです。

02.png

とりあえず使ってみる

触って、イメージしてみようの回となります。
弊社では Cursor のビジネスプランを契約しているため、メインエディタを Cursor にしているエンジニアも多く、 Cursor 経由で MCP サーバを使ってみる手順を下記にまとめていきます。

環境

  • PC 環境: M1 Mac
  • macOS: Sonoma (14.3.1)
  • Cursor バージョン: 0.49.3
  • 利用したモデル: claude-3.7-sonnet (thinking)
  • 使ってみる公開 MCP サーバ: Notion 公式notion-mcp-server

まずは Notion 設定

1. Notion のインテグレーションページにアクセスし、新しいインテグレーションを作成します

03.png

2. 発行された内部インテグレーションシークレットの値を控えておきます (※この値は機密情報のため取り扱いにご注意ください。)

04.png

3. MCP サーバを使って操作したい Notion ページに、作成したインテグレーションを紐づけます

05.png

次に Cursor 設定

1. Command + Shift + P or 右上の歯車マークを押下し、Cursor Settings 画面を開きます
2. MCP > Add new global MCP server を選択

06.png

3. 開いた mcp.json に下記と入力します (そのままコピペで OK )

4. ntn_*** の部分には先程控えておいたシークレットの値を入れます

5. Cursor Settings 画面をみると、notionApi が緑マークで表示されていれば OK です

07.png

※ Client error などエラーが出た場合は、 mcp.json の設定が間違っている可能性があります。また、Notion のインテグレーションシークレットを再作成する、 Cursor を再起動するなどしたら解決するケースもあります。

設定が完了したので、Cursor から操作してみる

1. Notion ページに記載ある情報を取得してみる

  • Cursor の Chat 機能にて、指定の Notion ページの情報を要約するように依頼したところ、きちんと MCP サーバを利用して情報取得&要約していることがわかります。

08.png

2. Notion ページに情報を追加してみる

  • 指定の Notion ページに情報を追加するように依頼したところ、きちんと MCP サーバを利用して情報追加していることがわかります。

09.png

  • 即座に Notion ページにも指示した内容が、反映されていることがわかります。

10.png
↓↓↓
11.png

以上

このように利用するまでの設定は特段難しいことはしておらず、 MCP サーバを導入することで、Notion 上の情報を Cursor から操作できるようになります。

下記 URL 先に、MCP に準拠したオープンソースの MCP サーバが紹介されています。
https://github.com/modelcontextprotocol/servers
中には、Spotify MCP など音楽の視聴体験にもさっそく対応しておりました。

内容をみるとワクワクするものもありますが、公開されている MCP サーバのうち、セキュリティリスク的にグレーなものもあるようです。
サーバコード自体に悪意あるコードが埋め込まれ、不正アクセスを招く可能性もあるので、利用する際はご注意ください!

MCP の仕組み

改めて、MCP 公式のページを参照すると、以下のような図があります。

12.png

この図も先ほどまで利用していたサービスに置き換えると、下記のようになります。

13.png

図にあるように、MCP を構成する用語を整理すると以下の通りです。

用語 説明
MCP ホスト ChatGPT、Claude Desktop、Cursor、Cline など、MCP を介してデータにアクセスする AI ツール
MCP クライアント MCP サーバごとに 1:1 接続を実現するクライアント
MCP サーバ MCP クライアントと外部サービスの橋渡しを行うサーバ。サーバというが実態は LLM アプリ内で動作するケースが多々。いわばプラグイン拡張機能のようなイメージ
ローカルデータソース MCP サーバが安全にアクセスできる PC 上のファイルシステム、データベース
リモート(外部)サービス MCP サーバが接続できるインターネット経由(API 経由など)で利用可能な外部システム。Notion や GitHub、Slack など様々なサービスが該当する

意外と構成されている要素としてはシンプルな仕組みでルール化されていることがわかると思います。

なお、しれっと図に、MCP サーバのメイン機能 3つ(リソース・ツール・プロンプト)を表現していますが、ここでは詳細を省きます。
MCP サーバを自作するとより紐解きしやすいようなので、実施できればこの辺も改めて整理できればと思います。
公式ではこちらに定義されているのでご参考までに。

まとめ

以上、振り返ると凄くざっくりでしたが、Model Context Protocol (MCP) という、LLM アプリと外部システムをつなぐための共通ルールが策定されたことで、開発者や利用者の負担を軽減することができるものなんだなとイメージがつくと嬉しいです。
私もまだ勉強中の領域ですが、公開されている MCP サーバをさらに活用・自作して、理解を深めようと思います。

ここまで読んでいただきありがとうございました。

参考・引用元