Azure FunctionsでMCPサーバーを構築する:VS Codeでの動作確認ガイド
2025.07.14
目次
はじめに
MS開発部の松坂です。2025年春、Azure FunctionsでMCP サーバー(Model Context Protocol サーバー)が構築できるようになりました。この記事では、Azure Functionsを使ってMCPサーバーを立て、Visual Studio Code(VS Code)で動作確認する手順を解説します。C#を例にしますが、PythonやNode.jsにも応用可能です。
今回はAzure FunctionsでAzure AI Searchの結果を取得する構成を取ります。このMCPサーバーを作成することで、様々なエージェントからAzure AI Searchの呼び出しが可能となります。

1. 開発環境の準備
Visual Studio 2022Visual Studio Code
Azure Functions Core Tools
.NET SDK(C#の場合は6.0以上)
2. Azure Functionsプロジェクトの作成
Visual Studioを起動し、Azure Functionsのテンプレートを選択します。
任意のプロジェクト名で作成し、FunctionWorkerを「.NET 9.0 Isolated」を選択、Functionは任意で作成します。

3. MCP拡張機能の導入
プロジェクトが立ち上がったら、上部メニュー「プロジェクト」→「NuGet パッケージの管理」を選択します。
以下パッケージをインストールしてください。
|
1 2 3 |
Microsoft.Azure.Functions.Worker.Extensions.Mcp --version 1.0.0-preview.6 |
4. MCPサーバーのコード実装(C#例)
GetTimeTool.cs の例:|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Mcp; [Function("MCPSend")] public async Task Run( [McpToolTrigger("searchMcp", "キーワード指定し、社内情報から検索し情報を取得します。")] ToolInvocationContext context, [McpToolProperty("searchQuery", "string", "キーワード指定し、社内情報を検索し取得します。")] string searchQuery ) { var resultsList = new List<Dictionary<string, string>>(); try { var client = new SearchClient( new Uri("<Azure AI SearchのURL>"), "<インデックス名>", new AzureKeyCredential("<Azure AI SearchのKey>") ); var options = new SearchOptions { Size = 5 }; var searchResults = await client.SearchAsync(searchQuery, options); // ここはインデクサーの構成により取得方法が異なります。 await foreach (var result in searchResults.Value.GetResultsAsync()) { if (result.Document.TryGetValue("chunk", out object contentValue) && result.Document.TryGetValue("title", out object title)) { resultsList.Add(new Dictionary<string, string> { { title.ToString(), contentValue?.ToString() } }); } } } catch (Exception ex) { return ex.Message; } return JsonSerializer.Serialize(resultsList); } |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
using Microsoft.Azure.Functions.Worker; using Microsoft.Azure.Functions.Worker.Builder; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Hosting; var builder = FunctionsApplication.CreateBuilder(args); builder.ConfigureFunctionsWebApplication(); builder.EnableMcpToolMetadata(); // ここを追加 builder.Services .AddApplicationInsightsTelemetryWorkerService() .ConfigureFunctionsApplicationInsights(); builder.Build().Run(); |
5. ローカルでの動作確認(VS Code)
Functionのプロジェクトを実行すると、ローカルでMCPサーバーが立ち上がります。
Visual Studio のコンソール上にMCPサーバーのURIが表示されるので保存してください。
次にVisual Studio CodeのCopilotを利用して動作確認をします。
Visual Studio Code左下の設定ボタンからSettingsを選択します。

Userタブにてmcpで検索を行いmcpの設定ファイルを開きます。

mcpの構造が作成されるので、以下の形で書き換えてください。
|
1 2 3 4 5 6 7 8 9 10 |
{ "servers": { "my-mcp-server-Azure": { "type": "sse", "url": "https://localhost〇〇〇.net/runtime/webhooks/mcp/sse" } } } |

次にVisual Studio Codeの「Toggle Second Side Bar」を表示し、Copilotを立ち上げます。

左下をAgentに切り替えます。ConfigureToolsボタンを押下するとエージェントに紐づけられているツール一覧が表示されるので、先ほど設定したMCPサーバーがあることを確認します。

6. 結果
これでMCP を利用したチャットが可能になります。今回は以前の記事で使用した武将データのインデクサを使って確認しました。(Gemini産DeepResearchのオープンソースをAzure環境で再構築!社内文書のディープリサーチを作る手順 – 株式会社ディープコム)
7. Azureへのデプロイ
Azureリソース作成を作成します。現在Azure FunctionsでMCPサーバーを立ち上げる際、オペレーションシステムはLinuxが推奨されてます。
Visual Studioのソリューションエクスプローラーにあるプロジェクトを右クリックし、発行を選択します。
先ほど作成した関数を選択し、発行ボタンを押下してください。

8. Azure Functionsの動作確認
「5. ローカルの動作確認」と同様に、Azure Functions の MCP サーバー設定を行います。AzurePortalで作成したAzureFunctionsの認証キーを取得します。
以下のようにVisual Studio CodeでMCPサーバーの設定を行ってください。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 |
{ "servers": { "my-mcp-server-Azure": { "type": "sse", "url": "https://〇〇〇.azurewebsites.net/runtime/webhooks/mcp/sse", "headers": { "x-functions-key": "<取得したキー>" } } } } |
ツール一覧でもMCPサーバーが設定されていることを確認し、同様にチャットを行ってください。
まとめ
Azure Functionsを使えば、簡単にMCPサーバーを構築でき、VS Code等を使ってローカル・リモート双方で動作確認が可能です。認証キーの取り扱いとストレージ設定に注意しながら、ぜひ最新のMCP開発を体験してみてください。以上、最後までご愛読いただき
ありがとうございました。
お問い合わせは、
以下のフォームへご連絡ください。




