Claude MCPでAIエージェントはさらなる未来へ・・・Anthropic社発表のAIとWebサービス統合標準規格

Claude MCPでAIエージェントはさらなる未来へ・・・Anthropic社発表のAIとWebサービス統合標準規格
  • URLをコピーしました!

こんにちは、スクーティー代表のかけやと申します。

弊社は生成AIを強みとするベトナムオフショア開発・ラボ型開発や、生成AIコンサルティングなどのサービスを提供しており、最近はありがたいことに生成AIと連携したシステム開発のご依頼を数多く頂いています。

Claudeなどの生成AIチャットBot を使っていて、もっと多様なデータと連携できたらいいのに…と感じたことはありませんか?例えば、最新の社内資料、Slack の会話、GitHub のコード、データベースの情報などを Claude 3.5 に参照させて、より精度の高い回答を得たい・・・などなど。

多くの Claude ユーザーが同じ悩みを抱えています。Claude 3.5 は非常に優秀な AI アシスタントですが、外部データとの連携が限られている点が課題でした。しかし、Anthropic 社が発表した「Model Context Protocol(MCP)」という画期的な「規格」により、この状況は大きく変わりつつあります。この記事では、MCP の概要、具体的な使用例、導入方法まで、分かりやすく解説します。

目次

MCP とは?

MCP の概要

Model Context Protocol(MCP)とは、AI アシスタントと様々なデータソースやツールを安全かつ効率的に接続するためのオープンな標準規格です。

ものすごく簡単に言うと、「AIアシスタント(例えばClaude)がPCやネット上のデータに安全にアクセスして使えるようにする仕組み」です。AIにデータを使う許可証を発行するようなイメージです。これにより、AIはもっと賢く仕事ができます。

MCP が登場する以前は、AI と外部サービスを連携させるには、サービスごとに専用の API やカスタムコネクタ、あるいは特定の AI プラットフォーム専用のプラグインなどを個別に開発・実装する必要がありました。これは開発者にとって大きな負担であり、それぞれの連携部分を維持・更新していくことも大変な手間でした。

MCP は、これら多様な接続方法を単一のプロトコル(規格)に統一することで、この問題を解決します。様々な規格のコンセントを USB Type-C のように一つに統一するようなイメージです。MCP は Claude Desktop などのクライアントアプリケーションと、データソースへのアクセスを提供する軽量なアダプタであるサーバーとの間の、クライアントサーバーアーキテクチャに基づいています。
MCPを利用する場合としない場合の、AIとWebサービスの連携方法の違い

MCP が登場する以前は、AI と外部サービスを連携させるには、サービスごとに専用の API やカスタムコネクタ、あるいは特定の AI プラットフォーム専用のプラグインなどを個別に開発・実装する必要がありました。これは開発者にとって大きな負担であり、それぞれの連携部分を維持・更新していくことも大変な手間でした。

MCP は、これら多様な接続方法を単一のプロトコル(規格)に統一することで、この問題を解決します。様々な規格のコンセントを USB Type-C のように一つに統一するようなイメージです。MCP は Claude Desktop などのクライアントアプリケーションと、データソースへのアクセスを提供する軽量なアダプタであるサーバーとの間の、クライアントサーバーアーキテクチャに基づいています。

クライアントはホストアプリケーション内でサーバーと 1 対 1 の接続を維持し、サーバーはクライアントに対してリソース、ツール、プロンプトへのアクセスを提供します。このアーキテクチャにより、開発者は MCP サーバーを通じてデータを公開したり、これらのサーバーに接続する AI アプリケーション(MCP クライアント)を構築したりできます。

MCP の特徴

MCP の主要な特徴は、接続性、安全性、拡張性の 3 つです。

MCP はデータベース、ファイルシステム、社内システム、GitHub、Slack など、多様なデータソースやツールと接続できます。これは、AI アシスタントが様々な情報を活用できることを意味し、より文脈に沿った適切な応答を生成するのに役立ちます。また、MCP はセキュリティにも重点を置いて設計されています。

データはユーザー自身のコントロール下に置かれ、API キーなどの機密情報を外部と共有する必要はありません。アクセス範囲も細かく設定できるため、AI アシスタントが必要な情報にのみアクセスするように制限できます。さらに、MCP はオープンソースであり、拡張性も非常に高いです。

開発者は容易に新しいツールを追加したり、既存のツールをカスタマイズしたりできます。オープンソースであるため、コミュニティ全体で MCP の開発や改善に貢献することができ、エコシステムの成長が促進されます。

MCP があると何が嬉しい?

主にAIアシスタントを使う人にとって、以下の点で嬉しいです。

  • 新しい活用方法の創出:多様なデータソースと連携できるようになることで、AIを使った新しいサービスやアプリ開発が促進されます。
  • より正確で文脈に沿った回答が得られる:AIがより多くのデータにアクセスできるようになるため、質問の回答精度や関連性が向上します。
  • 作業効率化:データ収集・分析といった手間をAIが肩代わりしてくれるため、作業時間を大幅に短縮できます。

開発者にとっても、様々なサービスと簡単に連携できるため、開発コスト削減やメンテナンス簡素化につながります。

MCP の活用例

MCPは、AIアシスタントの可能性を大きく広げる技術であり、その活用方法は多岐にわたります。以下に、いくつかの具体的な使用例を挙げ、MCPがどのように私たちの生活や仕事をより良く変えていくのかを考察します。

ビジネス分野

高度なデータ分析と意思決定支援: 

MCPを通じて、企業は社内システム、データベース、市場データ、競合情報など、様々なデータソースをAIアシスタントに接続できます。これにより、AIは大量のデータを迅速に分析し、売上予測、市場トレンド分析、顧客セグメンテーション、リスク評価など、ビジネスにおける重要な意思決定を支援する洞察を提供できます。

例えば、小売業者は、過去の売上データ、天候データ、ソーシャルメディアのトレンドなどを統合的に分析することで、需要予測の精度を向上させ、在庫最適化を実現できます。また、金融機関は、市場データ、経済指標、顧客の取引履歴などを分析することで、投資戦略の最適化や不正検知の精度向上に役立てることができます。

パーソナライズされたマーケティングとセールス: 

MCPを活用することで、AIアシスタントは顧客の行動履歴、購買パターン、嗜好性などを学習し、パーソナライズされたマーケティング施策を提案できます。例えば、ECサイトでは、顧客の過去の購入履歴や閲覧履歴に基づいて、個々の顧客に最適な商品を推薦したり、クーポンを発行したりすることで、コンバージョン率の向上を図ることができます。また、営業担当者は、AIアシスタントから顧客に関する詳細な情報や最適なアプローチ方法などのアドバイスを受け取ることで、営業活動の効率化と成約率の向上を実現できます。

効率的な業務プロセスの自動化: 

繰り返し行われる定型業務をAIアシスタントに任せることで、業務効率を大幅に改善できます。例えば、請求書の処理、データ入力、顧客対応、スケジュール調整といったタスクを自動化することで、従業員はより創造的な仕事に集中できます。MCPは、これらの自動化プロセスに必要なデータへのアクセスをAIアシスタントに提供する役割を果たします。

例えば、旅行代理店では、顧客からの旅行プランに関する問い合わせに対して、AIアシスタントが最適なフライト、ホテル、観光スポットなどを自動的に提案し、予約手続きまでサポートすることで、業務効率化と顧客満足度の向上を両立できます。

日常生活

パーソナルアシスタントの高度化: 

MCPにより、AIアシスタントは個人のスケジュール、健康データ、趣味嗜好、位置情報など、様々なパーソナルデータにアクセスできるようになります。これにより、AIアシスタントは、よりパーソナライズされたサービスを提供できます。

例えば、健康管理アプリと連携することで、AIアシスタントは個人のバイタルデータや食生活の情報を分析し、健康状態の改善に向けたアドバイスを提供したり、最適な運動プランを提案したりできます。また、スマートホームデバイスと連携することで、AIアシスタントは個人の生活パターンを学習し、照明、空調、家電製品などを自動的に制御することで、快適な生活環境を提供できます。

学習・教育の個別最適化: 

MCPを活用することで、AIアシスタントは学習者の学習履歴、理解度、得意・不得意分野などを把握し、個々の学習者に最適な学習プランを提案できます。

例えば、苦手な分野に特化した練習問題を提供したり、理解が不十分な部分を重点的に解説する動画を推薦したりすることで、学習効果の向上を図ることができます。また、学習進捗状況をリアルタイムでフィードバックすることで、学習モチベーションの維持にも役立ちます。

その他

研究開発の加速: 

MCPは、研究者が大量の研究データ、論文、実験結果などにアクセスし、分析することを容易にします。AIアシスタントは、これらのデータから新たな発見や洞察を導き出し、研究開発プロセスを加速させることができます。

例えば、新薬開発においては、AIアシスタントが膨大な化合物データや臨床試験データを分析することで、有望な新薬候補物質を特定したり、副作用のリスクを予測したりするのに役立ちます。

MCP の導入と使い方

MCP の導入手順 (macOS)

MCP を最も簡単に試す方法は、Claude Desktop アプリを使用することです。まず、macOS または Windows に Claude Desktop の最新版をインストールします。さらに、MCP サーバーとの通信やサーバーの実行に必要な uvgitsqlite3 もインストールしておきましょう。uv は、高速なファイルサーバーであり、uvx コマンドで MCP サーバーを起動するために使用します。git はバージョン管理システムであり、git サーバーを使用する場合に必要です。sqlite3 は、軽量なデータベースであり、sqlite サーバーを使用する場合に必要です。

次に、~/Library/Application\ Support/Claude/claude_desktop_config.json をテキストエディタで開き、以下の設定を追加します。YOUR_USERNAME はご自身のユーザー名に置き換えてください。

{
  "mcpServers": {
    "sqlite": {
      "command": "uvx",
      "args": [
        "mcp-server-sqlite",
        "--db-path",
        "/Users/YOUR_USERNAME/test.db" // SQLite データベースへのパスを指定
      ]
    }
  }
}

出典:https://modelcontextprotocol.io/quickstart

この設定により、Claude Desktop は “sqlite” という名前の MCP サーバーを uvx mcp-server-sqlite コマンドで起動し、/Users/YOUR_USERNAME/test.db にある SQLite データベースに接続します。設定を保存後、Claude Desktop を再起動してください。

データベースの準備として、以下のコマンドを実行し、products テーブルを作成し、サンプルデータを挿入します。

# 新しい SQLite データベースを作成
sqlite3 ~/test.db <<EOF
CREATE TABLE products (
  id INTEGER PRIMARY KEY,    -- 製品ID
  name TEXT,                -- 製品名
  price REAL                -- 価格
);
-- サンプルデータを挿入
INSERT INTO products (name, price) VALUES
('Widget', 19.99),
('Gadget', 29.99),
・・・割愛
('Fitness Tracker', 119.99),
('Portable SSD', 179.99);
EOF

出典:https://modelcontextprotocol.io/quickstart

これで MCP の導入は完了です。

MCP の使い方:プロンプト例

MCP の導入が完了したら、早速 Claude 3.5 に様々なプロンプトを送信して、その機能を試してみましょう。例えば、データベースに接続した Claude 3.5 に「私の SQLite データベースに接続して、利用可能な製品とその価格を教えてください」と尋ねると、Claude 3.5 は SQLite MCP サーバーに接続し、ローカルデータベースにクエリを実行し、結果をフォーマットして表示します。


私の SQLite データベースに接続して、利用可能な製品とその価格を教えてください。

データベースの基本的な操作に加えて、MCP はより複雑な操作も可能です。例えば、「データベースに登録されている全製品の平均価格を計算してください」と指示すれば、Claude 3.5 は SQL クエリを生成し、データベースから平均価格を算出してくれます。


データベースに登録されている全製品の平均価格を計算してください。

さらに、「価格分布を分析し、価格最適化の提案をしてください」といった高度な分析も可能です。Claude 3.5 はデータベース内の価格データを分析し、価格戦略の改善点などを提案してくれます。


価格分布を分析し、価格最適化の提案をしてください

また、「顧客注文を保存するための新しいテーブルを設計して作成してください」のように、データベースのスキーマを変更する操作も可能です。ただし、スキーマ変更操作は慎重に行う必要があり、Claude 3.5 からの提案をよく確認してから実行することが重要です。


顧客注文を保存するための新しいテーブルを設計して作成してください。

これらのプロンプト例は、MCP が提供する機能のほんの一部です。MCP を活用することで、Claude 3.5 との対話がより豊かになり、様々なタスクを効率的にこなせるようになります。

MCP の動作原理

MCP の動作原理

MCP (Model Context Protocol) は、AI アプリケーションとローカルまたはリモートのリソース間の安全で制御されたインタラクションを可能にするオープンなプロトコルです。

Claude Desktop、IDE、AI ツールなどの MCP ホストは、MCP クライアントを通じて複数の MCP サーバーに接続できます。各サーバーは、MCP を通じて特定の機能を公開します。これらのサーバーは、データベース、ファイル、サービスなどのローカルリソース、または API を通じてアクセス可能なリモートリソースに安全にアクセスできます。

MCPホスト: Claude Desktop、IDE、AIツールなど、MCPを介してリソースにアクセスしたいプログラム。

MCPクライアント: サーバーと1対1の接続を維持するプロトコルクライアント。

MCPサーバー: 標準化されたModel Context Protocolを通じて特定の機能を公開する軽量プログラム。

ローカルリソース: データベース、ファイル、サービスなど、MCPサーバーが安全にアクセスできるコンピュータ上のリソース。

リモートリソース: APIなどを通じてインターネット上で利用可能なリソース。
出典:https://modelcontextprotocol.io/quickstart
  • MCPホスト: Claude Desktop、IDE、AIツールなど、MCPを介してリソースにアクセスしたいプログラム。
  • MCPクライアント: サーバーと1対1の接続を維持するプロトコルクライアント。
  • MCPサーバー: 標準化されたModel Context Protocolを通じて特定の機能を公開する軽量プログラム。
  • ローカルリソース: データベース、ファイル、サービスなど、MCPサーバーが安全にアクセスできるコンピュータ上のリソース。
  • リモートリソース: APIなどを通じてインターネット上で利用可能なリソース。

Anthropicが公開しているクイックスタートガイドでは、SQLite データベースと SQLite MCP サーバーを例として使用します。Claude Desktop は MCP クライアントとして、SQLite MCP サーバーはデータベースへの安全なアクセスを提供し、ローカルの SQLite データベースが実際のデータを格納します。

SQLite MCP サーバーとローカル SQLite データベース間の通信は、完全にマシン上で行われ、SQLite データベースはインターネットに公開されません。MCP により、Claude Desktop は明確に定義されたインターフェースを通じて承認されたデータベース操作のみを実行できます。これにより、Claude 3.5 がローカルデータを分析し、インタラクトできるようにしながら、アクセスできる内容を完全に制御できます。

Claude Desktop は MCP クライアントとして、SQLite MCP サーバーはデータベースへの安全なアクセスを提供し、ローカルの SQLite データベースが実際のデータを格納します。SQLite MCP サーバーとローカル SQLite データベース間の通信は、完全にマシン上で行われ、SQLite データベースはインターネットに公開されません。MCP により、Claude Desktop は明確に定義されたインターフェースを通じて承認されたデータベース操作のみを実行できます。これにより、Claude 3.5 がローカルデータを分析し、インタラクトできるようにしながら、アクセスできる内容を完全に制御できます。
出典:https://modelcontextprotocol.io/quickstart

MCP は、サーバーの検出、プロトコルのハンドシェイク、インタラクションフロー、セキュリティという 4 つの段階を経て動作します。

まず、Claude Desktop は起動時に設定された MCP サーバーに接続します。ユーザーがデータについて質問すると、Claude Desktop はどの MCP サーバーが対応できるかを判断し (この場合は sqlite)、プロトコルを通じて機能をネゴシエートし、MCP サーバーにデータまたはアクションを要求します。

次に、インタラクションフローでは、Claude Desktop と MCP サーバー間で、リクエストとレスポンス、または通知が交換されます。MCP サーバーは、特定の制御された機能のみを公開します。MCP サーバーはローカルマシン上で実行され、アクセスするリソースはインターネットに公開されません。Claude Desktop は、機密性の高い操作に対してユーザーの確認を要求します。

MCP は、サーバーの検出、プロトコルのハンドシェイク、インタラクションフロー、セキュリティという 4 つの段階を経て動作します。

まず、Claude Desktop は起動時に設定された MCP サーバーに接続します。ユーザーがデータについて質問すると、Claude Desktop はどの MCP サーバーが対応できるかを判断し (この場合は sqlite)、プロトコルを通じて機能をネゴシエートし、MCP サーバーにデータまたはアクションを要求します。

次に、インタラクションフローでは、Claude Desktop と MCP サーバー間で、リクエストとレスポンス、または通知が交換されます。MCP サーバーは、特定の制御された機能のみを公開します。MCP サーバーはローカルマシン上で実行され、アクセスするリソースはインターネットに公開されません。Claude Desktop は、機密性の高い操作に対してユーザーの確認を要求します。
出典:https://modelcontextprotocol.io/quickstart

このシーケンス図は、MCP におけるメッセージのやり取りを示しています。Claude Desktop が MCP サーバーにリクエストを送信し、サーバーがデータベースにアクセスして結果を返す様子が視覚的に表現されています。

MCP のアーキテクチャと実装

MCP のアーキテクチャ

MCP は、ホスト (LLM アプリケーション)、クライアント、サーバーという 3 つの主要コンポーネントから成るクライアントサーバーアーキテクチャを採用しています。ホストは Claude Desktop や IDE などの LLM アプリケーションであり、接続を開始する役割を担います。クライアントはホストアプリケーション内でサーバーとの 1 対 1 の接続を維持します。サーバーはクライアントにコンテキスト、ツール、およびプロンプトを提供します。

MCP は、ホスト (LLM アプリケーション)、クライアント、サーバーという 3 つの主要コンポーネントから成るクライアントサーバーアーキテクチャを採用しています。ホストは Claude Desktop や IDE などの LLM アプリケーションであり、接続を開始する役割を担います。クライアントはホストアプリケーション内でサーバーとの 1 対 1 の接続を維持します。サーバーはクライアントにコンテキスト、ツール、およびプロンプトを提供します。
出典:https://modelcontextprotocol.io/docs/concepts/architecture
  • ホスト: Claude Desktop や IDE のようなLLMアプリケーションで、接続を開始する役割を果たします。
  • クライアント: ホストアプリケーション内でサーバーと1対1の接続を維持します。
  • サーバー: クライアントに対してコンテキスト、ツール、およびプロンプトを提供します。

MCP は、Stdio トランスポートと HTTP with SSE トランスポートの 2 つのトランスポートメカニズムをサポートしています。Stdio トランスポートは、標準入力/出力を使用して通信を行い、ローカルプロセスに最適です。HTTP with SSE トランスポートは、サーバー送信イベントを使用してサーバーからクライアントへのメッセージを送信し、クライアントからサーバーへのメッセージには HTTP POST を使用します。全てのトランスポートは JSON-RPC 2.0 を使用してメッセージを交換します。詳細なメッセージフォーマットについては、MCP の仕様書を参照してください。

MCP のメッセージタイプ

MCP では、リクエスト、通知、結果、エラーという 4 種類のメッセージタイプが定義されています。リクエストは、相手からの応答を期待するメッセージです。method フィールドにはリクエストのメソッド名、params フィールドにはリクエストのパラメータが格納されます。

通知は、応答を期待しない一方通行のメッセージです。method フィールドには通知のメソッド名、params フィールドには通知のパラメータが格納されます。結果は、リクエストに対する成功応答です。レスポンスの内容は、リクエストされたメソッドによって異なります。エラーは、リクエストが失敗したことを示すメッセージです。code フィールドにはエラーコード、message フィールドにはエラーメッセージ、data フィールドには追加情報が格納されます。

// リクエストインターフェース
interface Request {
  method: string;  // メソッド名
  params?: { ... }; // パラメータ
}

// 通知インターフェース
interface Notification {
  method: string;  // メソッド名
  params?: { ... }; // パラメータ
}

// 結果インターフェース
interface Result {
  [key: string]: unknown; // 結果
}

// エラーインターフェース
interface Error {
  code: number;      // エラーコード
  message: string;   // エラーメッセージ
  data?: unknown;    // 追加データ
}

// エラーコード列挙型
enum ErrorCode {
  // 標準 JSON-RPC エラーコード
  ParseError = -32700,      // パースエラー
  InvalidRequest = -32600,  // 無効なリクエスト
  MethodNotFound = -32601,  // メソッドが見つからない
  InvalidParams = -32602,   // 無効なパラメータ
  InternalError = -32603    // 内部エラー
}

出典:https://modelcontextprotocol.io/docs/concepts/architecture

SDK やアプリケーションは、-32000 以上の独自のエラーコードを定義できます。エラーは、リクエストに対するエラー応答、トランスポートのエラーイベント、プロトコルレベルのエラーハンドラを通じて伝播されます。

MCP の接続ライフサイクル

MCP の接続ライフサイクルは、初期化、メッセージ交換、終了の 3 つの段階に分けられます。

初期化段階では、クライアントが initialize リクエストをプロトコルバージョンと機能とともにサーバーに送信します。サーバーは、自身のプロトコルバージョンと機能で応答します。

クライアントは、確認応答として initialized 通知を送信します。その後、通常のメッセージ交換が始まります。メッセージ交換段階では、クライアントまたはサーバーがリクエストを送信し、相手側が応答するリクエスト-レスポンス方式、またはどちらの側も応答を期待しない一方通行の通知を送信できます。

終了段階では、close() メソッドによるクリーンシャットダウン、トランスポートの切断、エラー状態などによって接続が終了します。

このシーケンス図は、クライアントとサーバー間の初期化シーケンスを示しています。クライアントが initialize リクエストを送信し、サーバーが応答し、クライアントが initialized 通知を送信する流れが視覚的に表現されています。
出典:https://modelcontextprotocol.io/docs/concepts/architecture

MCP の実装例 (TypeScript)

以下は、MCP サーバーを実装する基本的な TypeScript のコード例です。この例では、example-server という名前と 1.0.0 というバージョンのサーバーを作成し、ListResourcesRequestSchema に対応するリクエストハンドラを定義しています。このハンドラは、example://resource という URI と Example Resource という名前のリソースを返すように実装されています。最後に、StdioServerTransport を使用してトランスポートを接続し、サーバーを起動します。

// 必要なモジュールをインポート
import { Server } from "@modelcontextprotocol/sdk/server/index.js";
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";

// サーバーインスタンスを作成
const server = new Server(
  {
    name: "example-server",    // サーバー名
    version: "1.0.0"          // サーバーバージョン
  },
  {
    capabilities: {
      resources: {}
    }
  }
);

// リクエストハンドラを定義
server.setRequestHandler(ListResourcesRequestSchema, async () => {
  // リソースリストを返す
  return {
    resources: [
      {
        uri: "example://resource",  // リソースURI
        name: "Example Resource"    // リソース名
      }
    ]
  };
});

// トランスポートを接続
const transport = new StdioServerTransport();
await server.connect(transport);

出典:https://modelcontextprotocol.io/docs/concepts/architecture

このコード例は、MCP サーバーの基本的な実装方法を示しています。より複雑な機能を実装するには、MCP の仕様書と SDK のドキュメントを参照してください。

MCP のリソースとプロンプト

リソース:データとコンテンツの公開

MCP において「リソース」とは、MCP サーバーがクライアントに提供するデータやコンテンツのことです。ファイルの内容、データベースレコード、API レスポンス、システムのライブデータ、スクリーンショット、画像、ログファイルなど、多様なデータがリソースとして扱われます。

各リソースは一意の URI によって識別され、テキストまたはバイナリデータを含みます。重要なのは、リソースはアプリケーションによって制御される点です。つまり、クライアントアプリケーションがリソースの使用方法と使用時期を決定します。異なる MCP クライアントは、リソースを異なる方法で処理する場合があります。

例えば、Claude Desktop は現在、ユーザーが明示的にリソースを選択する必要がありますが、他のクライアントはヒューリスティックに基づいてリソースを自動的に選択したり、AI モデル自体がどのリソースを使用するかを決定したりする可能性があります。

サーバー開発者は、リソースサポートを実装する際に、これらのインタラクションパターンのいずれにも対応できるように準備する必要があります。モデルにデータを自動的に公開するには、ツールなどのモデル制御のプリミティブを使用する必要があります。

リソース URI と種類

リソースは URI を使って識別されます。URI は [protocol]://[host]/[path] の形式に従います。例としては、file:///home/user/documents/report.pdfpostgres://database/customers/schemascreen://localhost/display1 などがあります。

プロトコルとパス構造は、MCP サーバーの実装によって定義されます。サーバーは独自のカスタム URI スキームを定義できます。リソースには、テキストリソースとバイナリリソースの 2 種類があります。

テキストリソースには、UTF-8 エンコードされたテキストデータが含まれます。ソースコード、設定ファイル、ログファイル、JSON/XML データ、プレーンテキストなどに適しています。バイナリリソースには、Base64 エンコードされた生のバイナリデータが含まれます。画像、PDF、音声ファイル、動画ファイル、その他のテキスト以外の形式に適しています。

{
  uri: string;           // リソースの一意の識別子
  name: string;         // 人間が読める名前
  description?: string;  // 説明 (オプション)
  mimeType?: string;    // MIME タイプ (オプション)
}

出典:https://modelcontextprotocol.io/docs/concepts/resources

クライアントは、resources/list エンドポイントを通じて利用可能なリソースを発見できます。また、動的なリソースの場合、サーバーはクライアントが有効なリソース URI を構築するために使用できる URI テンプレートを公開できます。

リソースの読み取りと更新

クライアントは、リソース URI を指定した resources/read リクエストを行うことでリソースを読み取ることができます。サーバーは、リソースの内容のリストで応答します。

{
  contents: [
    {
      uri: string;       // リソースの URI
      mimeType?: string; // MIME タイプ (オプション)
      // 以下のいずれか
      text?: string;      // テキスト形式のリソースの場合
      blob?: string;      // バイナリ形式のリソースの場合 (base64 エンコード)
    }
  ]
}

出典:https://modelcontextprotocol.io/docs/concepts/resources

サーバーは、resources/read リクエスト 1 つに対して複数のリソースを返すことができます。これは、例えば、ディレクトリが読み取られたときに、ディレクトリ内のファイルのリストを返すために使用できます。MCP は、リソースのリアルタイム更新をサポートしています。

サーバーは、notifications/resources/list_changed 通知を介して、利用可能なリソースのリストが変更されたときにクライアントに通知できます。クライアントは、resources/subscribe リクエストを送信することで、特定のリソースの更新をサブスクライブできます。

リソースが変更されると、サーバーは notifications/resources/updated 通知を送信します。クライアントは、resources/read リクエストで最新の内容を取得できます。クライアントは、resources/unsubscribe リクエストを送信することで、サブスクリプションを解除できます。

プロンプト:再利用可能なテンプレートとワークフロー

MCP のプロンプト機能を使用すると、サーバーは再利用可能なプロンプトテンプレートとワークフローを定義できます。クライアントは、これらのプロンプトをユーザーや LLM に簡単に提示できます。プロンプトは、LLM との共通のインタラクションを標準化および共有するための強力な方法を提供します。プロンプトはユーザー制御として設計されているため、ユーザーが明示的に選択して使用できるように、サーバーからクライアントに公開されます。

プロンプトの発見と使用方法

クライアントは、prompts/list エンドポイントを通じて、利用可能なプロンプトを検出できます。

// リクエスト
{
  method: "prompts/list"  // プロンプト一覧取得メソッド
}

// レスポンス
{
  prompts: [
    {
      name: "analyze-code",            // プロンプト名
      description: "コードの潜在的な改善点を分析する",  // プロンプトの説明
      arguments: [
        {
          name: "language",             // 引数名
          description: "プログラミング言語", // 引数の説明
          required: true                // 必須引数かどうか
        }
      ]
    }
  ]
}

出典:https://modelcontextprotocol.io/docs/concepts/prompts

プロンプトを使用するには、クライアントはprompts/getリクエストを行います。

// リクエスト
{
  method: "prompts/get",      // プロンプト取得メソッド
  params: {
    name: "analyze-code",    // プロンプト名
    arguments: {
      language: "python"     // 引数
    }
  }
}

// レスポンス
{
  description: "Python コードの潜在的な改善点を分析する", // プロンプトの説明
  messages: [
    {
      role: "user",            // メッセージの役割
      content: {
        type: "text",          // メッセージの種類
        text: "以下の Python コードの潜在的な改善点を分析してください:\n\npython\ndef calculate_sum(numbers):\n total = 0\n for num in numbers:\n total = total + num\n return total\n\nresult = calculate_sum([1, 2, 3, 4, 5])\nprint(result)\n" // メッセージの内容
      }
    }
  ]
}

出典:https://modelcontextprotocol.io/docs/concepts/prompts

MCP の将来性と発展

MCP の将来性

MCP は、LLM アプリケーションと外部データソースやツールとの連携を容易にする革新的なプロトコルです。現在、MCP は Claude Desktop アプリを通じてローカルサーバーとの接続をサポートしていますが、将来的にはリモートサーバーのサポート、エンタープライズグレードの認証、そしてより多くのツールやプラットフォームとの統合が計画されています。これらの発展により、MCP は AI アシスタントの活用範囲をさらに広げ、よりシームレスでセキュアなデータ連携を実現するでしょう。

MCP が期待される分野

MCP は、様々な分野での AI 活用を促進する可能性を秘めています。

例えば、社内システムとの連携を強化することで、企業内の情報共有や意思決定をより効率化できます。また、スマートフォンアプリとの連携により、モバイル環境での AI アシスタントの活用が促進されるでしょう。さらに、チーム全体での AI 活用を促進することで、共同作業の効率化や生産性向上に貢献する可能性があります。

そして、よりユーザーフレンドリーなセキュリティ設定の実現により、誰もが安心して MCP を活用できる環境が整うでしょう。

既に Block や Apollo といった大手企業が MCP の導入を開始しており、その実用性と将来性が認められています。また、開発ツール企業である Zed, Replit, Codeium, Sourcegraph なども MCP との連携を進めており、AI エージェントがコーディングタスクのコンテキストをより深く理解し、より洗練されたコードを生成できるようになると期待されています。

MCP サーバー一覧

公式サーバーとコミュニティサーバー

MCP サーバーは、Anthropic が管理する公式サーバーと、コミュニティによって開発・公開されているコミュニティサーバーの 2 種類に大別されます。公式サーバーは、GitHub リポジトリで公開されており、Filesystem, GitHub, GitLab, Git, Google Drive, PostgreSQL, Sqlite, Slack, Sentry, Memory, Puppeteer, Brave Search, Google Maps, Fetch など、13 種類以上のサーバーが提供されています。これらのサーバーは、ファイルアクセス、データベース接続、API 連携、コンテキストサービスなど、多様な機能を提供します。

一方、コミュニティサーバーは、様々な開発者や組織によって作成され、公開されています。例えば、Cloudflare, Raygun, NYTimes API, Kagi search API, Exa AI Search API, search1api, Tavily AI search API, ArXiv research papers search など、多岐にわたるサービスとの連携が可能です。これらのサーバーは、公式サーバーではカバーされていないニッチなニーズに対応するだけでなく、公式サーバーの機能を拡張する役割も担っています。コミュニティサーバーの一覧は、Awesome MCP Serversで確認できます。

本記事をご覧いただいた方にはこちらの資料がおすすめです!

人材業界向け生成AI活用ホワイトペーパーのカバー画像

人材業界ですぐに使える!
ChatGPTや生成AIの業務活用術

  • ChatGPTの概要と活用構成
  • 人材業界ですぐに使えるプロンプト例
  • 人材業界における生成AIの活用
  • 人材業界におけるサービス活用への課題

といった、特に人材業界向けの構成になっており、ChatGPTの基礎から、業務上の実務的な使用方法までをお伝えする資料です。

このような方にオススメ

  • 人材業界でChatGPTの基本が知りたい方
  • 人材業界でChatGPT導入を検討している方
  • 人材業界でChatGPTを業務やビジネスに活かす方法を知りたい方
Claude MCPでAIエージェントはさらなる未来へ・・・Anthropic社発表のAIとWebサービス統合標準規格

この記事が気に入ったら
いいね または フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次