😺

Zennの記事 やってみました Azure Function でMCPサーバー

に公開

ちょっと前にX (fka Twitter)のタイムラインに流れてきた✨大田一希さんのZennの記事やってみました。

Xユーザーのかずき(Kazuki Ota) | CSA & Evangelist at MSさん:
「Azure Functions で MCP サーバーが作れるようになりました!|Kazuki Ota https://t.co/5fCtO8yIgC #zenn」 / X
https://x.com/okazuki/status/1908454010627252594

私は Visual Studio 2022 で C# のみでやります。

に惹かれて…

Azureへのデプロイまではやらずにローカル実行までです。

Azure Functions で MCP サーバーが作れるようになりました!
2025/04/05に公開 🔄2025/04/07
https://zenn.dev/microsoft/articles/mcp-azurefunctions

ところでMCP Inspector 便利ですね。
Inspector - Model Context Protocol
https://modelcontextprotocol.io/docs/tools/inspector

自分がやったときはv0.8.2 になっていました。
その他にもNuGet パッケージとか更新が入っていましたが、最新版でも動きました。

それからVS Codeの拡張機能にも同じ様な機能のものありました。
MCP Inspector - Visual Studio Marketplace
Dhananjay Senday さん
Last updated 2025/3/30 3:56:01
https://marketplace.visualstudio.com/items/?itemName=DhananjaySenday.mcp--inspector

また自分…

書いてあるようにやっても…
うまくいかない…なぜ?(まあコピペしただけですが)
なんも知らんでまず動かしてみてから…
ってのがいけないんですよね…

MCP Inspector で…
プロパティ
location
天気を知りたい場所の名前
が表示されない…

alt text

最終的にはlocationの入力は出来るようになりましたが。
alt text
(アニメGIF、4o さんにつくってもらったら表示時間の間隔がうまく伝わらず…)

VS Codeの拡張機能 MCP Inspector でも同じ…

ということはコピーペーストしたコード側がなんか違う…
という感じですかね…?

まあちゃんといろいろ見ないといけないですよね(定期)

彷徨ってやっと出来ました。

alt text

自分の環境ではどこを変えたのか…

builder.EnableMcpToolMetadata();
を追加しました。

\McpAzureFunctions\McpAzureFunctions\Program.cs

using McpAzureFunctions;
using Microsoft.Azure.Functions.Worker.Builder;
using Microsoft.Extensions.Hosting;

var builder = FunctionsApplication.CreateBuilder(args);

builder.AddServiceDefaults();

builder.ConfigureFunctionsWebApplication();

builder.EnableMcpToolMetadata();

// builder.ConfigureMcpTool(nameof(MyMcpTools.GetWeatherForecast))
//     .WithProperty("location", "string", "天気を知りたい場所の名前");

// Application Insights isn't enabled by default. See https://aka.ms/AAt8mw4.
// builder.Services
//     .AddApplicationInsightsTelemetryWorkerService()
//     .ConfigureFunctionsApplicationInsights();

builder.Build().Run();

builder.EnableMcpToolMetadata()

4o さん調べ


🔍 EnableMcpToolMetadata() の役割
このメソッドを呼び出すことで、MCP サーバーは登録されているツールのメタデータ(名前、説明、引数のスキーマなど)をクライアントに提供できるようになりますこれにより、MCP Inspector や他のツールがサーバーのツール情報を取得し、適切な UI を生成することが可能になります


🛠 使用方法

Program.csまたはAppHost` の構成ファイル内で、MCP サーバーのビルダーに対して以下のように呼び出しま:

builder.EnableMcpToolMetadata();

これにより、MCP サーバーはツールのメタデータを含むエンドポイントを公開し、クライアントがツールの詳細情報を取得できるようになりま。


という感じでいろいろと彷徨ってやっとちゃんと動きました。ほっ!

彷徨ったおかげでちょっとだけ、ほんのちょっとだけわかったかも知れません。おぃ!

alt text

alt text

thinks

Azure FunctionsでMCPサーバーを作る!|Junpei Tsuchida(07JP27)
https://zenn.dev/microsoft/articles/azure-function-mcp

[MCP再入門]「MCPはAIアプリにとってのUSB-C」がしっくりこなかったあなたに
https://qiita.com/takashiuesaka/items/49559b830366255d1216


Build AI agent tools using remote MCP with Azure Functions | Microsoft Community Hub
Apr 05, 2025
https://techcommunity.microsoft.com/blog/appsonazureblog/build-ai-agent-tools-using-remote-mcp-with-azure-functions/4401059

ローカルでの Azure Storage の開発に Azurite エミュレーターを使用する | Microsoft Learn
https://learn.microsoft.com/ja-jp/azure/storage/common/storage-use-azurite?tabs=visual-studio%2Cblob-storage#running-azurite-from-an-azure-functions-project

Issues · modelcontextprotocol/inspector
https://github.com/modelcontextprotocol/inspector/issues

.NET .NET Aspire の概要 - .NET Aspire | Microsoft Learn
https://learn.microsoft.com/ja-jp/dotnet/aspire/get-started/aspire-overview

.NET Aspire Azure Functions の統合 (プレビュー) - .NET Aspire | Microsoft Learn
https://learn.microsoft.com/ja-jp/dotnet/aspire/serverless/functions?tabs=dotnet-cli&pivots=visual-studio

Release 0.9.0 · modelcontextprotocol/inspector
https://github.com/modelcontextprotocol/inspector/releases/tag/0.9.0

Discussion