(上の画像をクリックすると、このレッスンのビデオが表示されます)
実践的な実装は、Model Context Protocol(MCP)の力が具体化する場所です。MCPの理論やアーキテクチャを理解することは重要ですが、実際にこれらの概念を適用して現実の問題を解決するソリューションを構築、テスト、デプロイするときに真の価値が現れます。この章では、概念的な知識とハンズオン開発のギャップを埋め、MCPベースのアプリケーションを実現するプロセスを案内します。
インテリジェントアシスタントの開発、ビジネスワークフローへのAI統合、データ処理のカスタムツール構築など、MCPは柔軟な基盤を提供します。言語非依存の設計と人気のあるプログラミング言語向けの公式SDKにより、幅広い開発者に利用可能です。これらのSDKを活用することで、異なるプラットフォームや環境で迅速にプロトタイピング、反復、スケーリングが可能になります。
以下のセクションでは、C#、Java(Spring付き)、TypeScript、JavaScript、PythonでのMCP実装の実例、サンプルコード、デプロイ戦略を紹介します。また、MCPサーバーのデバッグとテスト、API管理、Azureを使ったクラウドデプロイについても学びます。これらのハンズオンリソースは、学習を加速し、堅牢で本番対応可能なMCPアプリケーションを自信を持って構築できるよう設計されています。
このレッスンは、複数のプログラミング言語にわたるMCP実装の実践的側面に焦点を当てています。C#、Java(Spring付き)、TypeScript、JavaScript、PythonのMCP SDKを使って堅牢なアプリケーションを構築し、MCPサーバーのデバッグとテスト、リソース・プロンプト・ツールの再利用可能な作成方法を探ります。
このレッスンの終了時には、以下ができるようになります:
- 公式SDKを使って様々なプログラミング言語でMCPソリューションを実装する
- MCPサーバーを体系的にデバッグおよびテストする
- サーバー機能(リソース、プロンプト、ツール)を作成し利用する
- 複雑なタスクに対する効果的なMCPワークフローを設計する
- パフォーマンスと信頼性を最適化したMCP実装を行う
Model Context Protocolは、複数言語の公式SDKを提供しています(MCP Specification 2025-11-25準拠):
- C# SDK
- Java with Spring SDK 注: Project Reactorへの依存が必要です。(ディスカッション Issue 246を参照)
- TypeScript SDK
- Python SDK
- Kotlin SDK
- Go SDK
このセクションでは複数言語におけるMCP実装の実例を紹介します。samplesディレクトリに各言語別のサンプルコードがあります。
リポジトリには以下の言語でのサンプル実装が含まれています:
各サンプルは特定の言語・エコシステム向けのMCPの主要概念と実装パターンを示します。
追加の実践的なMCP実装ガイド:
- ページネーションと大規模結果セット - ツール、リソース、大規模データセットのカーソルベースページネーションの処理
MCPサーバーは以下の機能の任意の組み合わせを実装できます:
リソースはユーザーやAIモデルが使用するコンテキストやデータを提供します:
- ドキュメントリポジトリ
- ナレッジベース
- 構造化データソース
- ファイルシステム
プロンプトはユーザー向けのテンプレート化されたメッセージやワークフローです:
- 事前定義された会話テンプレート
- ガイド付きインタラクションパターン
- 特殊な対話構造
ツールはAIモデルが実行する関数です:
- データ処理ユーティリティ
- 外部API連携
- 計算機能
- 検索機能
公式C# SDKリポジトリには、MCPの異なる側面を示す複数のサンプル実装が含まれています:
- 基本的なMCPクライアント:MCPクライアントの作成とツール呼び出しの単純例
- 基本的なMCPサーバー:基本的なツール登録を含む最小限のサーバー実装
- 高度なMCPサーバー:ツール登録、認証、エラーハンドリングを備えたフル機能のサーバー
- ASP.NET連携:ASP.NET Coreとの統合例
- ツール実装パターン:さまざまな複雑度のツール実装パターン集
C# MCP SDKはプレビュー段階であり、APIは変更される可能性があります。SDKの進化に合わせて本ブログを継続的に更新します。
C#の完全な実装サンプルは、公式C# SDKサンプルリポジトリを参照してください。
Java with Spring SDKはエンタープライズ対応機能を備えた堅牢なMCP実装オプションを提供します。
- Spring Frameworkとの統合
- 強力な型安全性
- リアクティブプログラミング対応
- 包括的なエラーハンドリング
完全なJava with Spring実装サンプルは、サンプルディレクトリ内のJava with Springサンプルを参照してください。
JavaScript SDKは軽量で柔軟なMCP実装アプローチを提供します。
- Node.jsおよびブラウザ対応
- PromiseベースAPI
- Expressなどのフレームワークとの簡単な統合
- ストリーミング向けWebSocketサポート
完全なJavaScript実装サンプルはサンプルディレクトリのJavaScriptサンプルを参照してください。
Python SDKはPythonらしいMCP実装アプローチを取り、優れたMLフレームワーク連携を提供します。
- asyncioによるasync/awaitサポート
- FastAPI統合
- シンプルなツール登録
- 人気のMLライブラリとのネイティブ統合
完全なPython実装サンプルはサンプルディレクトリのPythonサンプルを参照してください。
Azure API ManagementはMCPサーバーをセキュアに保つための優れたソリューションです。アイデアは、Azure API ManagementインスタンスをMCPサーバーの前に置き、以下のような望ましい機能を担当させることです:
- レート制限
- トークン管理
- 監視
- ロードバランシング
- セキュリティ
こちらはAzure API ManagementでMCPサーバーを作成しセキュア化するサンプルです:MCPサーバーのAzure API Managementによるセキュア化
認証フローが以下の画像のように行われます:
この画像で行われていること:
- Microsoft Entraによる認証/認可が行われる
- Azure API Managementがゲートウェイとして働き、ポリシーでトラフィックを制御管理
- Azure Monitorがすべてのリクエストをログに記録し分析に役立てる
認可フローを詳細に見てみましょう:
MCP認可仕様について詳しく学べます。
先に述べたサンプルをデプロイしてみましょう:
-
リポジトリをクローン
git clone https://github.com/Azure-Samples/remote-mcp-apim-functions-python.git cd remote-mcp-apim-functions-python -
Microsoft.Appリソースプロバイダーを登録します。- Azure CLIを使う場合は、
az provider register --namespace Microsoft.App --waitを実行します。 - Azure PowerShell使用時は
Register-AzResourceProvider -ProviderNamespace Microsoft.Appを実行し、しばらくしてから(Get-AzResourceProvider -ProviderNamespace Microsoft.App).RegistrationStateで登録状態を確認します。
- Azure CLIを使う場合は、
-
このazdコマンドを実行し、API管理サービス、関数アプリ(コード含む)、その他必要なAzureリソースをプロビジョニングします。
azd up
このコマンドはAzure上のすべてのクラウドリソースをデプロイします。
-
新しいターミナルウィンドウでMCP Inspectorをインストールして起動します。
npx @modelcontextprotocol/inspector
以下のようなインターフェースが表示されるはずです:
-
表示されるURL(例:http://127.0.0.1:6274/#resources)からMCP InspectorのWebアプリをCTRL+クリックで開きます。
-
トランスポートタイプを
SSEに設定します。 -
実行中のAPI管理のSSEエンドポイントURLを
azd upの後に表示されるものに設定し、接続をクリックします。https://<apim-servicename-from-azd-output>.azure-api.net/mcp/sse
-
ツール一覧を表示し、ツールを選択してツールを実行します。
すべてのステップが成功すれば、MCPサーバーに接続されツール呼び出しができています。
Remote-mcp-functions: これはPython、C# .NET、Node/TypeScriptでAzure Functionsを使い、カスタムのリモートMCPサーバーを構築・デプロイするためのクイックスタートテンプレートです。
このサンプルは開発者に完全なソリューションを提供し、以下を可能にします:
- ローカルで構築・実行: ローカルマシンでMCPサーバーの開発とデバッグ
- Azureへのデプロイ: シンプルな
azd upコマンドでクラウドへ簡単デプロイ - クライアントからの接続: VS CodeのCopilotエージェントモードやMCP Inspectorツールなど多様なクライアントからMCPサーバーに接続
- セキュリティを考慮した設計: MCPサーバーはキーとHTTPSで保護
- 認証オプション: 組み込み認証やAPI Managementを使ったOAuth対応
- ネットワーク分離: Azure Virtual Networks(VNET)によるネットワーク分離が可能
- サーバーレスアーキテクチャ: Azure Functionsを活用したスケーラブルなイベント駆動実行
- ローカル開発: 包括的なローカル開発・デバッグサポート
- 簡単なデプロイ: Azureへの展開プロセスが簡素化
リポジトリには、本番対応可能なMCPサーバー実装を素早く開始するための必要な構成ファイル、ソースコード、インフラ定義がすべて含まれています。
- Azure Remote MCP Functions Python — Pythonを使ったAzure FunctionsによるMCP実装サンプル
- Azure Remote MCP Functions .NET — C# .NETを使ったAzure FunctionsによるMCP実装サンプル
- Azure Remote MCP Functions Node/Typescript — Node/TypeScriptを使ったAzure FunctionsによるMCP実装サンプル
- MCP SDKは言語特有のツールを提供し、堅牢なMCPソリューションの実装を支援します。
- デバッグとテストのプロセスは信頼性の高いMCPアプリケーションに不可欠です。
- 再利用可能なプロンプトテンプレートにより一貫したAIインタラクションを可能にします。
- 洗練されたワークフローにより、複数のツールを使った複雑なタスクをオーケストレーションできます。
- MCPソリューション実装にはセキュリティ、性能、エラーハンドリングへの配慮が必要です。
自分のドメインでの現実的な問題を解決する実践的なMCPワークフローを設計してみましょう:
- この問題解決に役立つ3~4個のツールを特定する
- これらのツールがどのように連携するかを示すワークフローダイアグラムを作成する
- 好みの言語でツールの基本バージョンを実装する
- モデルが効果的にツールを利用するためのプロンプトテンプレートを作成する
免責事項:
本書類はAI翻訳サービス「Co-op Translator」(https://github.com/Azure/co-op-translator) を使用して翻訳されています。正確性の向上に努めておりますが、自動翻訳には誤りや不正確な部分が含まれる可能性があります。原文の言語によるオリジナルの文書が正本としての権威ある情報源となります。重要な情報については、専門の人間による翻訳を推奨いたします。本翻訳の利用に起因するいかなる誤解や誤訳に対しても責任を負いかねますので、ご了承ください。



