MCP Server Sample について
MCP Server Sampleは、従業員の休暇残日数を管理する.NETおよびTypeScript製のMCPサンプルです。SSEと標準入出力の通信方式で、サーバーとクライアントの実装を示します。
主な機能
- 01休暇残日数の照会と更新
- 02SSE通信のサンプル
- 03標準入出力通信のサンプル
- 04.NETとTypeScriptの実装
活用シーン
- 01従業員の休暇残日数の確認
- 02取得済み休暇日数の記録
MCP 対応
従業員の休暇残日数の照会と更新を、ツールとしてMCPクライアントに公開します。SSEと標準入出力の通信方式を扱います。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
MCP サーバーのサンプル
このプロジェクトでは、従業員の休暇日数を管理するための Model Context Protocol(MCP)サーバーとクライアントを .NET で実装する方法を紹介します。従業員の休暇残日数の追跡、照会、更新を行うバックエンドサービスを提供し、これらの機能を MCP ツールとして公開します。
コンポーネント
- SSE フォルダーには、HTTP Streaming / SEE トランスポート層を使用した Model Context Protocol(MCP)のクライアントとサーバーの実装が含まれています。このソリューションは .NET Aspire をベースとしており、サーバー(ASP.NET Core をベースとしたもの)とクライアント(Blazor と Semantic Kernel で構築された Web アプリケーション)が含まれています。
- Stdio フォルダーには、標準入出力トランスポート層を使用した Model Context Protocol(MCP)のクライアントとサーバーの実装が含まれています。サーバーはコンソールアプリケーションとして実装されています。
ドキュメント
このサンプルは、以下の一連のブログ記事で解説されています。
- エージェントで Model Context Protocol を使用する - はじめに
- エージェントで Model Context Protocol を使用する - Copilot Studio
- エージェントで Model Context Protocol を使用する - Semantic Kernel を使用したプロコードエージェント
はじめに
このリポジトリには、同じサンプルの 2 つのバージョンが含まれています。1 つは C# と .NET で構築され、もう 1 つは TypeScript で構築されています。
.NET サンプルを実行するには、以下の前提条件をインストールする必要があります。
TypeScript サンプルを実行するには、以下の前提条件をインストールする必要があります。
どちらの言語でも、以下の前提条件をインストールする必要があります。
stdio サンプルの実行
.NET サンプルの実行
- アプリケーションバーのボタンをクリックするか、コマンドパレット(Ctrl+Shift+P)を開いて Azurite: Start Table Service を選択し、Azurite Table サービスエミュレーターを起動します。
- 以下の設定を使用して、任意のクライアントアプリケーション(Visual Studio Code、AI Toolkit、カスタムアプリケーション)を接続できます。
- コマンド:
dotnet - 引数:
run --project src/csharp/Stdio/MCP.Stdio.Server/MCP.Stdio.Server.csproj
TypeScript サンプルの実行
- アプリケーションバーのボタンをクリックするか、コマンドパレット(Ctrl+Shift+P)を開いて Azurite: Start Table Service を選択し、Azurite Table サービスエミュレーターを起動します。
- 以下の設定を使用して、任意のクライアントアプリケーション(Visual Studio Code、AI Toolkit、カスタムアプリケーション)を接続できます。
- コマンド:
node - 引数:
/src/ts/stdio/server/dist/app.js
使用する前に、以下のコマンドを実行して TypeScript コードをコンパイルしてください。
cd src/ts/stdio/server
npm run build
SSE サンプルの実行
SSE サンプルを実行するには、次の手順に従ってください。
-
リポジトリをローカルマシンにクローンします。
-
SSEフォルダー内のMCP.SSE.AppHostプロジェクトにあるappsettings.jsonファイルを開き、次の形式で Azure OpenAI の接続文字列を使用してopenAiConnectionNameプロパティを更新します。"openAiConnectionName": "Endpoint=https://<your-endpoint>.openai.azure.com/;Key=<your-key>" -
アプリケーションバーのボタンをクリックするか、コマンドパレット(Ctrl+Shift+P)を開いて Azurite: Start Table Service を選択し、Azurite Table サービスエミュレーターを起動します。
-
次のコマンドを使用して
MCP.SSE.AppHostプロジェクトを実行します。dotnet run --project MCP.SSE.AppHost/MCP.SSE.AppHost.csproj -
プロジェクトが起動すると、Aspire ダッシュボードが新しいブラウザーウィンドウで自動的に開きます。
-
新しいブラウザータブを開き、次の URL にアクセスします。
http://localhost:5291/ -
これで、Blazor アプリケーションを使って LLM にプロンプトを送信できます。次のいずれかのプロンプトを使うと、MCP ツールのいずれかを呼び出せます。
"従業員の一覧と、残っている休暇日数を教えてください" "Alice Johnson に休暇を5日分付与してください""
Teams AI library サンプルの実行
Teams AI library サンプルは、Aspire ソリューションの一部としてすでに登録されています。ただし、使用する前に、次の手順に従ってください。
- SSE フォルダー内の ttk2-agent プロジェクトを開きます
- .
env.exampleファイルの名前を.envに変更します - ファイルを開き、Azure OpenAI サービスの正しい値で変数を更新します。
AZURE_OPENAI_API_KEYに Azure OpenAI サービスのキーを設定しますAZURE_OPENAI_ENDPOINTに Azure OpenAI サービスのエンドポイントを設定しますAZURE_OPENAI_API_VERSIONに API バージョンを設定します(モデルのバージョンとは異なる値なので注意してください。Azure OpenAI ポータルで確認できます)AZURE_OPENAI_MODEL_DEPLOYMENT_NAMEに Azure OpenAI のモデルデプロイ名を設定します
Aspire ダッシュボードが起動すると、**ttk2-agent **プロジェクトに2つのエンドポイントがあることがわかります。

エージェントのテストツールには、ポート番号が大きい方のエンドポイントを使い、末尾に /devtools パスを追加してアクセスできます。
たとえば、前の画像の場合、URL は次のようになります。
http://localhost:54251/devtools/
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。