モデル コンテキスト プロトコル (MCP) は、AI アプリと外部ツールとデータ ソース間の統合を標準化するように設計されたオープン プロトコルです。 MCP を使用することで、開発者は AI モデルの機能を強化し、より正確で関連性の高いコンテキストに対応した応答を生成できます。
たとえば、MCP を使用して、LLM を次のようなリソースに接続できます。
- ドキュメント データベースまたはストレージ サービス。
- ビジネス データまたはロジックを公開する Web API。
- ファイルを管理したり、ユーザーのデバイスでローカル タスクを実行したりするツール。
多くの Microsoft 製品では、次のような MCP が既にサポートされています。
MCP C# SDK を使用すると、独自の MCP 統合をすばやく作成し、コードを大幅に変更せずにさまざまな AI モデルを切り替えることができます。
MCP クライアントとサーバーのアーキテクチャ
MCP は、AI を利用したアプリ (ホスト) が MCP クライアントを介して複数の MCP サーバーに接続できるようにするクライアント サーバー アーキテクチャを使用します。
- MCP ホスト: MCP を通じてコンテキスト リソースを使用して AI モデルを強化する AI ツール、コード エディター、またはその他のソフトウェア。 たとえば、Visual Studio Code の GitHub Copilot は MCP ホストとして機能し、MCP クライアントとサーバーを使用してその機能を拡張できます。
- MCP クライアント: コンテキスト データを取得するために MCP サーバーに接続するためにホスト アプリケーションによって使用されるクライアント。
- MCP サーバー: MCP を介してクライアントに機能を公開するサービス。 たとえば、MCP サーバーでは、ビジネス データを AI モデルに提供するために、REST API またはローカル データ ソースに対する抽象化が提供される場合があります。
次の図は、このアーキテクチャを示しています。
MCP クライアントとサーバーは、一連の標準メッセージを交換できます。
メッセージ | 説明 |
---|---|
InitializeRequest |
この要求は、クライアントが最初に接続するときにサーバーに送信され、初期化を開始するように求められます。 |
ListToolsRequest |
サーバーに含まれるツールの一覧を要求するためにクライアントによって送信されます。 |
CallToolRequest |
サーバーによって提供されるツールを呼び出すためにクライアントによって使用されます。 |
ListResourcesRequest |
使用可能なサーバー リソースの一覧を要求するためにクライアントによって送信されます。 |
ReadResourceRequest |
特定のリソース URI を読み取るためにクライアントからサーバーに送信されます。 |
ListPromptsRequest |
サーバーから使用可能なプロンプトとプロンプト テンプレートの一覧を要求するためにクライアントによって送信されます。 |
GetPromptRequest |
サーバーによって提供されるプロンプトを取得するためにクライアントによって使用されます。 |
PingRequest |
サーバーまたはクライアントによって発行された pingで、相手が正常に動作しているかどうかを確認します。 |
CreateMessageRequest |
クライアント経由で LLM をサンプリングするためのサーバーによる要求。 クライアントは、どのモデルを選択するかについて完全な裁量権を持っています。 クライアントは、サンプリングを開始する前にユーザーに通知して、要求 (ループ内の人間) を検査し、承認するかどうかを決定できるようにする必要もあります。 |
SetLevelRequest |
ログ記録を有効または調整するための、クライアントによるサーバーへの要求。 |
MCP C# SDK を使用した開発
.NET 開発者は、MCP クライアントとサーバーを作成して MCP を使用して、カスタム統合を使用してアプリを強化できます。 MCP を使用すると、AI モデルをさまざまなツール、サービス、データ ソースに接続する際の複雑さが軽減されます。
公式の MCP C# SDK は NuGet から入手でき、.NET アプリとライブラリ用の MCP クライアントとサーバーを構築できます。 SDK は、Microsoft、Anthropic、および MCP オープン プロトコル組織間のコラボレーションを通じて維持されます。
作業を開始するには、MCP C# SDK をプロジェクトに追加します。
dotnet add package ModelContextProtocol --prerelease
多くの場合、統合ポイントごとに固有のコネクタを構築する代わりに、GitHub や Docker などのさまざまなプロバイダーから事前構築済みの統合を利用または参照できます。
Microsoft.Extensions.AI との統合
MCP C# SDK は、さまざまな AI の対話とタスクを処理する Microsoft.Extensions.AI ライブラリ に依存します。 これらの拡張ライブラリは、AI サービスを操作するためのコア型と抽象化を提供するため、開発者は特定のプラットフォームやプロバイダーの実装ではなく、概念的な AI 機能に対するコーディングに集中できます。
NuGet パッケージ ページで MCP C# SDK の依存関係を表示します。
その他の .NET MCP 開発リソース
MCP クライアントとサーバーの構築や既存の MCP サーバーとの統合を支援するために、.NET と Azure のエコシステムでは、さまざまなツール、サービス、学習リソースを利用できます。
次の開発ツールの使用を開始します。
- セマンティック カーネル を使用すると、MCP サーバー用のプラグインを追加できます。 セマンティック カーネルでは、標準 I/O 経由のローカル MCP サーバーと、HTTPS 経由で SSE 経由で接続するリモート サーバーの両方がサポートされます。
- Azure Functions リモート MCP サーバーは、 MCP 標準と Azure Functions の柔軟なアーキテクチャを組み合わせています。 コード例については、 リモート MCP 関数のサンプル リポジトリ を参照してください。
- Azure MCP Server では、 AZURE Storage、Cosmos DB などの主要な Azure サービスと AI エージェントをシームレスに接続するための MCP 仕様が実装されています。
.NET と MCP の詳細については、次のリソースを使用してください。
- Microsoft は Anthropic と提携し、モデル コンテキスト プロトコル用の公式の C# SDK を作成します
- C でモデル コンテキスト プロトコル (MCP) サーバーを構築する#
- MCP C# SDK README
関連コンテンツ
.NET