MCP (Model Context Protocol)について整理してみた!LLMと外部ツールを繋ぐ橋渡し技術
こんにちは、MOFUです。
最近流行りのMCPについて、自分用にまとめてみたものを公開します。
Claude DesktopでMCPを使った外部サービスとの連携については、自分でも試してみたので手順をまとめておきます。
めっちゃ便利になってすごいので是非お試しあれ。
背景と歴史
MCP(Model Context Protocol)は、大規模言語モデル(LLM)と外部システムやAPIを接続するための標準プロトコルです。
Anthropicが策定し、その後OpenAIを含む多くの企業が採用を始めました。
MCPが登場する前は、各AIサービスがそれぞれ独自の方法でツール連携を実装していましたが、MCPの登場により統一的な方法でLLMと外部システムを連携できるようになりました。
MCPの業界への影響については、OpenAIによる採用発表に関するITmediaの記事を参照ください。
この記事では、OpenAIによるMCP対応がどのようにこの技術の業界標準化に貢献したかが解説されています。
基本概念
MCPとは何か
MCPは「Model Context Protocol」の略で、LLMと外部ツール・データソースを接続するための標準インターフェースです。
これにより、LLMは外部のシステムやAPIを利用して、より高度な処理を行うことができるようになります。
例えば、LLMに「今日の東京の天気は?」と質問すると、MCPを通じて天気予報APIにアクセスし、最新の情報を取得して回答できるようになります。
MCPの基本概念についてより詳しく知りたい方は、Zennの「MCP入門」記事を参照ください。
この記事では、MCPの基本的な仕組みがわかりやすく解説されています。
MCPの主要コンポーネント
MCPは以下の3つの主要コンポーネントから構成されています:
MCPサーバー: 外部ツールやAPIなどのリソースを提供する側
MCPクライアント: LLMとMCPサーバーの間を仲介する役割を果たす
ホスト: LLMを利用するアプリケーション(VSCode、Cursor、Claude Desktopなど)
MCPの技術的詳細については、OpenAI Agents SDKのドキュメントも参考になります。
通信の流れ
MCPにおける通信の流れは以下のようになります。
ユーザーがAIアプリ(ホスト)を通じてLLMに質問する
① 質問・指示: ユーザーがAIアプリ(ホスト)に質問や指示を出します
② プロンプト送信: ホストがLLMに質問や指示を送信します
LLMが外部知識が必要と判断した場合、MCPクライアントとサーバーから情報を取得する
③ 外部情報要求: LLMがMCPクライアントに外部情報を要求します
④ 機能呼び出し: MCPクライアントがMCPサーバーの機能を呼び出します
⑤ APIリクエスト: MCPサーバーが外部システムにAPIリクエストを送信します
⑥ 結果返却: 外部システムがAPIリクエストの結果をMCPサーバーに返却します
⑦ 情報返却: MCPサーバーが取得した情報をMCPクライアントに返却します
取得した情報をもとに、LLMが回答を生成し、ホストを通じてユーザーに提供
⑧ コンテキスト提供: MCPクライアントが取得した情報をLLMに提供します
⑨ 回答生成: LLMが取得した情報を基に回答を生成し、ホストに返します
⑩ 回答表示: ホストが生成された回答をユーザーに表示します
この仕組みにより、LLMは自分自身の学習データに含まれていない最新の情報や特定のシステムの情報にアクセスできるようになります。
実装と活用例
MCPサーバーの実装方法
MCPサーバーは様々なプログラミング言語で実装できます。主要な言語別のSDKが提供されており、Python、TypeScript、Javaなどでの開発が可能です。
実際のMCPサーバー実装については、「MCPサーバー自作入門」を参照ください。
この記事では、MCPサーバーの基本的な実装方法とCursorでの利用方法が詳しく解説されています。
主要なMCPクライアント
現在、以下のような主要なMCPクライアントが存在します:
Claude Desktop: Anthropicが提供するデスクトップアプリ
Cursor: コード開発に特化したエディタ
VSCode: Microsoft製のコードエディタ(Copilot拡張機能を通じて)
Cline: CLIツール専用のAIアシスタント
VSCodeでのAgent ModeとMCPのサポートについては、公式ブログで詳細が解説されています。
代表的なMCPサーバー
多くの企業や開発者が提供するMCPサーバーがあります:
Notion MCP Server: NotionのデータベースやページにアクセスするためのMCPサーバー
GitHub MCP Server: GitHubのリポジトリやイシューを操作するためのMCPサーバー
AWS Documentation MCP Server: AWSのドキュメントを検索するためのMCPサーバー
Playwright MCP: ウェブブラウザの自動操作を行うためのMCPサーバー
Obsidian MCP Server: Obsidianのノートにアクセスするためのサーバー
GitHubの公式MCPサーバーについては、そのリポジトリで詳細な情報を確認できます。
MCPのメリットと活用シーン
MCPのメリット
標準化: 異なるLLMや外部システム間での互換性が向上
拡張性: LLMの機能を外部ツールで簡単に拡張できる
最新情報へのアクセス: LLMが常に最新の情報にアクセス可能に
特定データソースへのアクセス: 組織内の非公開データにLLMがアクセス可能に
活用シーン
MCPは以下のようなシーンで活用されています:
開発支援: コードの分析、バグの修正、テストの自動化
データ分析: データベースへの問い合わせ、データの可視化
情報検索: 最新のドキュメントや記事の検索と要約
業務自動化: タスク管理、スケジュール調整、メール対応
MCPの実際の活用例については、「MCPサーバーで開発効率が3倍に!2025年必須の10大ツール」という記事が参考になります。
MCPと従来技術の比較
MCPとRAGの違い
RAG(Retrieval-Augmented Generation)は、LLMに関連情報を提供するための技術ですが、MCPはより広範な機能を提供します:
RAG: 主にテキストデータの検索と提供
MCP: テキスト検索に加え、APIの呼び出し、ファイル操作、データベース操作など多様な機能
MCPとRAGの比較については、「MCP + DB > RAG?」という記事で詳しく解説されています。
この記事では、MCPを使ったデータベースアクセスがRAGよりも優れている点について議論されています。
MCPの利点と課題
利点:
複数のAIアプリが同じプロトコルを使えるため、開発効率が向上
フレキシブルな拡張が可能
リアルタイムの情報にアクセス可能
課題:
セキュリティリスク(不審なMCPサーバーが悪意あるコードを実行する可能性)
コンテキストウィンドウの制限によるデータ量の制約
インターフェース設計の複雑さ
MCPのセキュリティに関する考慮事項については、「MCPサーバーを利用する前に理解しておくべきセキュリティリスク」を参照ください。
また、MCPサーバーを安全に運用するための方法については、「MCPサーバーを安全に動かすための工夫」という記事が役立ちます。
Claude DesktopでのMCPの使い方
Claude Desktopとは
Claude Desktopは、Anthropic社が提供するAIアシスタント「Claude」のデスクトップアプリケーションです。
このアプリケーションには、標準でMCP(Model Context Protocol)のサポートが組み込まれており、様々なMCPサーバーと連携することで、Claudeの能力を大幅に拡張することができます。
基本的な設定手順
Claude DesktopでMCPサーバーを設定する基本的な流れは以下の通りです:
Claude Desktopをインストールし、起動します
設定画面(Settings)を開きます
MCP設定セクションにアクセスします
使用したいMCPサーバーの情報を入力します
Claude DesktopでのMCPサーバー設定の詳細については、「非エンジニアのAI素人でもNotion公式MCP×Claude連携できた話」を参照ください。
この記事では、技術的な知識が少ない方でも理解できる形でMCPの設定方法が解説されています。
MCPサーバーの追加
MCPサーバーを追加するには、主に2つの方法があります:
1. 内蔵MCPサーバーを利用する
Claude Desktopには、いくつかの基本的なMCPサーバーが最初から組み込まれています。これらは設定画面から有効化するだけで利用できます。
ユーザーのPCへのアクセスを許可する方法は次の記事を参考にしてください。
Claude Desktopアプリの「設定」→「開発者」→ 「構成を編集」からclaude_desktop_config.jsonを編集できます。(このファイルをVSCodeなどのエディタで編集します)
自分のPCのファイルシステム・ダウンロードフォルダへのアクセスを許可するには以下のように記述します(macの場合)。
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/user_name/Downloads/mcp"
]
}
}
}2. 外部MCPサーバーを追加する
独自のMCPサーバーや他社が提供するMCPサーバーを利用する場合は、以下の情報を設定する必要があります:
サーバー名:わかりやすい識別名
エンドポイントURL:MCPサーバーのアドレス(通常はlocalhost:ポート番号の形式)
認証情報:必要に応じてAPIキーやアクセストークンなど
接続方式:HTTPまたはSTDIO(標準入出力)
主要なMCPサーバーの設定例:Notion MCP Server
NotionのデータベースやページにアクセスするためのMCPサーバーを設定する方法です:
まずNotionで内部インテグレーションを作成し、シークレットキーを取得します
Node.jsをインストールします(まだの場合)
ターミナルで以下のコマンドを実行します:
npx @makenotion/notion-mcp-server
Claude Desktopの「設定」→「開発者」→ 「構成を編集」からclaude_desktop_config.jsonを開き、下記のように編集します。
user_name
YOUR_ACCESS_TOKEN (手順1で取得したもの)
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/user_name/Desktop",
"/Users/user_name/Downloads"
]
},
"notionApi": {
"command": "npx",
"args": ["-y", "@notionhq/notion-mcp-server"],
"env": {
"OPENAPI_MCP_HEADERS": "{\"Authorization\": \"Bearer YOUR_ACCESS_TOKEN\", \"Notion-Version\": \"2022-06-28\" }"
}
}
}
}設定後、Claudeに「Notionのデータベースを検索して」などと指示することで、Notionの情報にアクセスできるようになります。
Notion MCPの詳細な使い方については、「Notionの公式MCPサーバーをCursor / Claudeから使用する方法」を参照ください。
主要なMCPサーバーの設定例:GitHub MCP Server
GitHubリポジトリを操作するためのMCPサーバーの設定は以下の通りです:
GitHubでパーソナルアクセストークンを作成します
GitHubページの「Settings」> 「Developer settings」> 「Personal access tokens」> 「Tokens (classic)」> 「Generate new token」 > 「Generate new token(classic)」を選択して、repoだけチェックをいれて作成。
以下のコマンドでMCPサーバーをインストールして起動します:
npm install -g @modelcontextprotocol/server-github
Claude Desktopの「設定」→「開発者」→ 「構成を編集」からclaude_desktop_config.jsonを開き、下記のように編集します。
user_name
YOUR_ACCESS_TOKEN (手順1で取得したもの)
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/user_name/Desktop",
"/Users/user_name/Downloads"
]
},
"github": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-github"],
"env": {
"GITHUB_PERSONAL_ACCESS_TOKEN": "YOUR_ACCESS_TOKEN"
}
}
}
}GitHub MCPサーバーについての詳細は、「Claude DesktopでGitHub MCP Serverを使う」に記載されているGitHub MCPの使用例を参照ください。
複数のMCPサーバーの同時利用
Claude Desktopでは、複数のMCPサーバーを同時に設定し、利用することができます。
これにより、Claudeは各サーバーが提供する機能を組み合わせて使用することが可能になります。
例えば、以下のような組み合わせが可能です:
Notion MCPでドキュメント管理 + GitHub MCPでコード開発
AWS MCPでクラウドリソース操作 + Playwright MCPでブラウザ自動操作
複数のMCPサーバーを組み合わせた活用例については、「Claude DesktopでPerplexityとNotionのMCPサーバを使って、調査結果をNotionデータベースへの記録を自動化してみる」を参照ください。
MCPサーバー利用時のセキュリティ注意点
MCPサーバーを使用する際は、以下のセキュリティ上の注意点を考慮することが重要です:
信頼できるソースのMCPサーバーのみを利用する:不明な開発者が提供するMCPサーバーには悪意のあるコードが含まれている可能性があります
最小権限の原則を守る:APIトークンには必要最小限の権限のみを付与する
ローカル実行を優先する:重要なデータを扱う場合は、リモートではなくローカルで実行するMCPサーバーを利用する
定期的に認証情報を更新する:APIキーやトークンは定期的に更新する
MCPセキュリティの詳細については、「MCP (Model Context Protocol) のセキュリティ -【第1回】MCPセキュリティの基本と重要性」を参照ください。
トラブルシューティング
Claude DesktopでMCPサーバーを使用する際によくある問題と解決策です:
★ MCPサーバーに接続できない場合
サーバーが正常に起動しているか確認する
エンドポイントURLが正しいか確認する
ファイアウォールがポートをブロックしていないか確認する
★ 認証エラーが発生する場合
APIキーやトークンが正しく設定されているか確認する
トークンの有効期限が切れていないか確認する
必要な権限がトークンに付与されているか確認する
★ MCPサーバーのコマンドがタイムアウトする場合
サーバーの応答時間が長すぎる場合は、タイムアウト設定を調整する
大量のデータを処理する場合は、処理を小分けにしてリクエストする
まとめと今後の展望
MCPは、LLMと外部システムを連携させるための強力な標準プロトコルとして急速に普及しています。
Anthropicが提唱し、OpenAIも採用したことで、業界標準としての地位を確立しつつあります。
今後は以下のような発展が期待されます:
より多様なMCPサーバーの登場と機能の拡充
セキュリティ面での改善とベストプラクティスの確立
クラウドベースのMCPサーバーの普及
他のAIプロトコル(例:A2A)との連携と統合
MCPの将来展望については、「次のMCP??A2Aはなんですか」という記事で、MCPの次に台頭する可能性のあるプロトコルについて議論されています。
MCPは、LLMを単なる対話型AIから、実際のシステムと連携して実務を行えるAIエージェントへと進化させる重要な技術となっています。
初心者でも比較的簡単に実装でき、様々なツールと連携できる点が大きな魅力です。


コメント