USB-C ライトニングケーブル 純正 1M 3本セット【2025新版 MFi認証】 iphone充電ケーブルタイプC 20W対応 PD急速充電 iPhone コード 超高耐久&高速データ同期 for iPhone14/13/12 Pro Max/11/X/8/iPad/AirPods/MacBookなど各種対応
¥999 (2025年4月25日 13:07 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)Anker USB Power Strip (10-in-1, 20W) (USBタップ 電源タップ AC差込口/USB-C/USB-A/延長コード 1.5m) 【PSE技術基準適合/USB Power Delivery対応 】MacBook PD対応 Windows PC iPad iPhone Galaxy Android スマートフォン ノートPC 各種 その他機器対応
¥2,990 (2025年4月25日 13:07 GMT +09:00 時点 - 詳細はこちら価格および発送可能時期は表示された日付/時刻の時点のものであり、変更される場合があります。本商品の購入においては、購入の時点で当該の Amazon サイトに表示されている価格および発送可能時期の情報が適用されます。)
はじめに
Azure Functions で MCP サーバーが作れるようになりました!
Build AI agent tools using remote MCP with Azure Functions
桜の時期のお気に入りの散歩コースを歩いて記事を書こうと思ったら、JP さんに先を越されてました…。
試してみよう
JP さんのやっていることと同じにはなりますが、私は Visual Studio 2022 で C# のみでやります。
まずは Azure Functions のプロジェクトを作成します。今回は .NET Aspire の機能も使いたいと思っているので .NET Aspire オーケストレーションへの参加 (プレビュー) をオンにしました。プロジェクト名は McpAzureFunctions
という名前で作成しました。この後のコード例は、このプロジェクトで作成した前提のコードになります。次に以下の NuGet パッケージをインストールします。
- Microsoft.Azure.Functions.Worker.Extensions.Mcp v1.0.0-preview.1
そして天気予報を返してくれる関数を作成します。以下のようなコードにしました。
using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Mcp;
using System.ComponentModel;
namespace McpAzureFunctions;
public class MyMcpTools
{
[Function(nameof(GetWeatherForecast))]
public WeatherForecastResult GetWeatherForecast(
[McpToolTrigger(nameof(GetWeatherForecast), "指定された場所の天気予報を取得します。")]
ToolInvocationContext context,
[McpToolProperty(nameof(location), "string", "天気を知りたい場所の名前")]
string location)
{
return location switch
{
"東京" => new WeatherForecastResult("東京", "晴れ"),
"大阪" => new WeatherForecastResult("大阪", "曇り"),
"福岡" => new WeatherForecastResult("福岡", "雨"),
_ => new WeatherForecastResult(location, "不明"),
};
}
}
public record WeatherForecastResult(
string Location,
string Weather);
これで実行して Azure Functions のプロジェクトの標準出力を確認すると、以下のような出力がされます。
[2025-04-05T08:05:20.358Z] Worker process started and initialized.
Functions:
GetWeatherForecast: mcpToolTrigger
ちゃんと mcpToolTrigger で GetWeatherForecast が登録されているのがわかります。
この MCP ツールを試してみましょう。AppHost プロジェクトの Program.cs
に以下のコードを追加して @modelcontextprotocol/inspector
を実行するようにします。
Program.cs
builder.AddExecutable(
"mcp-inspector",
"npx",
".",
"@modelcontextprotocol/inspector",
"node",
"build/index.js")
.WithHttpEndpoint(8080,6274);
実行すると以下のように .NET Aspire のダッシュボードに mcp-inspector が表示されます。
mcp-inspector の部分に表示されているエンドポイントを選択すると以下のような画面が出るので、SSE を選んで http://localhost:7173/runtime/webhooks/mcp/sse
を入力して Connect を押します。
そして List Tools を選択してツールを取得すると、以下のように GetWeatherForecast ツールが取得できます。そしてパラメーターを入れて実行をして結果を確認することが出来ます。
Azure にデプロイ
Azure にデプロイして VS Code で接続したらタイムアウトになって動かなかったので、後で確認しようと思います。現時点では私は動かせていません。
まとめ
Azure Functions で MCP サーバーが作れるようになりました。プレビューですが、一般提供開始になるとお手軽に MCP サーバーが作れるようになると思います。認証とかもサービス側で設定するだけで出来るようになるので、そこらへんも楽なポイントだと思います。
個人的には Azure Functions の 230 秒の HTTP リクエストのタイムアウトって大丈夫なんだろうかというのが心配ではありますが、そこら辺は実際に Azure にデプロイできたら確認してみようと思います。
今回、試しに .NET Aspire と組み合わせて Model Context Protocol inspector を一緒に起動してみました。MCP サーバーの開発をする際には仕込んでおくと簡単に動作確認が出来るので楽だと思います。
ちゃんとテストするなら .NET Aspire のテスト機能でサーバーを実際に実行させて MCP クライアント系のライブラリで繋いでテストすることになるのかなと思います。