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開発を体験してみてください。以上、最後までご愛読いただき
ありがとうございました。
お問い合わせは、
以下のフォームへご連絡ください。
 
 





