Azure FunctionsでMCPサーバーを構築する:VS Codeでの動作確認ガイド

2025.07.14
Azure FunctionsでMCPサーバーを構築する:VS Codeでの動作確認ガイド

はじめに

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 2022
Visual 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 パッケージの管理」を選択します。



以下パッケージをインストールしてください。

Microsoft.Azure.Functions.Worker.Extensions.Mcp --version 1.0.0-preview.6

4. MCPサーバーのコード実装(C#例)

GetTimeTool.cs の例:

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(""),
            "<インデックス名>",
            new AzureKeyCredential("")
        );
        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);
}

Program.cs で MCP ツールの登録も忘れずに行いましょう。

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の構造が作成されるので、以下の形で書き換えてください。

{
    "servers": {
        "my-mcp-server-Azure": {
            "type": "sse",
            "url": "https://localhost〇〇〇.net/runtime/webhooks/mcp/sse"
        }
    }
}
書き換え後、startを押下してください。outputコンソールに以下の表示が出れば、正常に動作しています。



次に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サーバーの設定を行ってください。

{
    "servers": {
        "my-mcp-server-Azure": {
            "type": "sse",
            "url": "https://〇〇〇.azurewebsites.net/runtime/webhooks/mcp/sse",
            "headers": {
                "x-functions-key": "<取得したキー>"
            }
        }
    }
}
VS CodeでMCPクライアント(例:GitHub Copilot Agent Mode)から疎通確認を行い、
ツール一覧でもMCPサーバーが設定されていることを確認し、同様にチャットを行ってください。

まとめ

Azure Functionsを使えば、簡単にMCPサーバーを構築でき、VS Code等を使ってローカル・リモート双方で動作確認が可能です。認証キーの取り扱いとストレージ設定に注意しながら、ぜひ最新のMCP開発を体験してみてください。

以上、最後までご愛読いただき
ありがとうございました。

お問い合わせは、
以下のフォームへご連絡ください。

お問い合わせ

PAGETOP