Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【ITニュース解説】Core Concepts of MCP

2025年09月15日に「Dev.to」が公開したITニュース「Core Concepts of MCP」について初心者にもわかりやすく解説しています。

作成日: 更新日:

ITニュース概要

MCPは、AIが外部のデータや機能、指示テンプレートを共通のルールで使うための標準技術だ。JSON-RPC 2.0を基盤とし、通信方法を選ばない。AIと様々なシステム連携を簡単、効率的、安全にする。

出典: Core Concepts of MCP | Dev.to公開日:

ITニュース解説

Model Context Protocol(MCP)は、人工知能(AI)システムがさまざまな外部のツールやデータと一貫性のある方法で連携するためのオープンな標準規格である。MCPサーバーは、データとして「リソース」、実行可能な「ツール」、そしてAIモデルへの指示テンプレートである「プロンプト」といった機能を提供する。統合開発環境(IDE)やAIエージェントなどのクライアントは、これらの機能を自動的に発見し、利用できる。

MCPは、JSON-RPC 2.0という軽量な標準に基づいて構築されている。JSON-RPCは、リクエスト、レスポンス、エラーの形式を予測可能にすることで、異なるプログラミング言語間でも簡単に実装できる通信方法を提供する。MCPの大きな特徴は、このプロトコルが「トランスポート非依存」である点だ。これは、メッセージの内容や形式はMCPが定義するが、そのメッセージがどのように伝送されるか(例えば、コンピューター内部のプロセス間通信であるstdin/stdout、ネットワーク経由のソケット、ウェブブラウザで使われるWebSocketsなど)は問わないという意味である。これにより、一度MCPサーバーを作成すれば、さまざまな通信環境に対応できるため、統合の移植性が高く、将来の変化にも対応しやすくなる。例えば、クライアントが「validateConfig」というツールを呼び出し、「filePath」という引数を渡すリクエストを送ると、サーバーはその設定ファイルが有効かどうかを検証し、「status: ok」のような結果を返すといった通信が行われる。

MCPサーバーが提供する主要な構成要素の一つが「リソース」である。リソースとは、サーバーがクライアントに提供する構造化されたデータのことだ。例えば、設定ファイル、データ構造の定義(スキーマ)、データベースのテーブルの内容、その他の外部データセットなどがこれにあたる。各リソースには、名前、説明、データの種類(MIMEタイプ)といったメタデータと、データの具体的な構造を定義するスキーマが付随している。これにより、クライアントはリソースを要求する際に、どのような形式のデータが返されるかを事前に正確に知ることができる。MCPプロトコルは、リソースを扱うための標準的なメソッドを定義しており、具体的には resources/list で存在するリソースのメタデータをリストアップし、resources/read で特定のリソースの実際のコンテンツを取得できる。この標準化により、クライアントはサーバーごとに異なるカスタムコードを書く必要がなく、同じプロトコルメソッドを呼び出すだけでさまざまなサーバーのリソースとやり取りできるため、相互運用性が高まる。AIエージェントは、通常、RAG(Retrieval-Augmented Generation)というパターンでリソースを利用する。まず resources/list で目的のリソースを見つけ(Retrieve)、次に resources/read でそのコンテンツを読み込み(Read)、その内容をAIモデルへの指示(プロンプト)に組み込んで知識を補強し(Augment)、最終的な回答やアクションを生成する(Generate)という流れだ。サーバーが大量のリソースを扱う場合でも、MCPはページネーション、URIテンプレート、サーバーサイド検索ツール、サブスクリプションなどの機能を提供し、効率的なリソースの発見と取得を可能にする。これにより、エージェントは必要な時に必要なリソースだけを動的に取得し、スケーラブルに動作できる。

次に、「ツール」はMCPサーバーが提供するもう一つの重要な構成要素であり、サーバーがクライアントやAIエージェントの代わりに実行できるアクションを指す。例えば、製品の比較、在庫の確認、ショッピングカートの管理といった操作がツールとして提供されうる。MCPは、クライアントがツールを発見し、実行する方法を標準化している。クライアントは tools/list メソッドで利用可能なツールの名前、説明、必要な引数(入力スキーマ)、そして返される結果(出力スキーマ)といったメタデータを取得できる。その後、callTool メソッドを使って、特定のツールを構造化された引数とともに呼び出し、構造化された結果を受け取る。ツールは必ず、一意の名前、機能の説明、入力のJSONスキーマ、出力のJSONスキーマを定義する。これにより、ツールの利用が予測可能になり、型付けされた状態で異なるクライアント間での相互運用性が保証される。クライアントは、あらかじめサーバーがどのようなツールをサポートしているかを知る必要がなく、動的にツールを発見できるため、サーバー側でツールを追加したり削除したりしても、クライアント側の変更は不要である。

最後に、「プロンプト」はMCPサーバーが提供するガイダンスの層である。これは、再利用可能なプロンプトテンプレートを指し、エージェントがAIモデルと一貫性のある、構造化された方法で対話するのを助ける。プロンプトは、データの要約や説明の方法を標準化したり、一般的なタスク(技術仕様の要約、トレーニングの紹介、広告文の生成など)のための再利用可能なテンプレートを提供したり、プロンプトエンジニアリングの作業負担を軽減したりするのに役立つ。プロンプトも動的に発見される。クライアントは prompts/list メソッドを呼び出すことで、利用可能なプロンプトの名前、説明、そして埋めるべき引数に関するメタデータを取得できる。その後、prompts/get メソッドを使って特定のプロンプトを取得し、引数を埋め込んでAIモデルへの具体的な指示を作成する。プロンプトがサーバー上で管理されるため、クライアント側のロジックを変更することなく、プロンプトを追加、更新、削除できる。さらに、サーバーは異なるペルソナやスタイルでプロンプトを提供することも可能であり、例えば、同じデータから「厳格なインストラクター」風の簡潔な指示を生成したり、「熱心なセールス担当者」風のエネルギッシュなセールストークを生成したりできる。これにより、エージェントはユーザーの要求に応じて適切な「声」を選んで情報を提供できる。

これらのリソース、ツール、プロンプトは、MCPエージェントのワークフローにおいて有機的に連携する。例えば、ユーザーが「FTL-2000スターシップの技術仕様の要約とセールスピッチをください」とAIエージェントに要求した場合、エージェントはまず prompts/listresources/listtools/list を使って利用可能な機能を発見する。次に、resources/read を使って、FTL-2000の技術仕様ファイルやマーケティングノートといった関連リソースから事実データを取得する。その後、prompts/get を使って、「技術仕様要約」用と「セールスピッチ」用のプロンプトテンプレートに、取得したリソースデータを埋め込んで、AIモデルへの具体的な指示文を組み立てる。最後に、これらの組み立てられたプロンプトを使ってAIモデルに情報を生成させ、ユーザーのリクエストに応じた技術仕様の要約とセールスピッチの両方を出力するのである。このように、MCPはAIシステムが外部のデータ、機能、そして指示テンプレートを標準化された方法で利用するための強力な枠組みを提供し、複雑なAIエージェントの構築を可能にしている。

関連コンテンツ

関連IT用語