Apidog

オールインワン協働API開発プラットフォーム

API設計

APIドキュメント

APIデバッグ

APIモック

API自動テスト

Azure Functions MCPサーバーの使い方(初心者向けガイド)

中村 拓也

中村 拓也

Updated on 4月 7, 2025

モデルコンテキストプロトコル (MCP) は、アプリケーションが大規模言語モデル (LLM) にコンテキストと機能を提供できるようにする新しい標準です。MCPの主な機能の1つは、AIエージェントがタスクを実行するために活用できるツールを定義できることです。Azure Functions MCPは、サーバーレスのクラウドコンピューティングとAIアシスタントの機能との間のギャップを埋め、開発者がAIエージェントによってアクセス可能なスケーラブルなツールを構築できるようにします。

このチュートリアルでは、Azure Functions MCPとは何か、インストール方法、MCPサーバーの起動方法、およびGitHub Copilotとの使用方法を探ります。このガイドの終わりまでには、AIエージェントが有用なタスクを実行するためにアクセスできる機能的なMCPサーバーを実行できるようになります。

プロのヒント: MCPサーバーを構築する際には、APIエンドポイントを徹底的にテストする必要があります。Apidogを試すことを強くお勧めします。これは、APIテストと開発のためのPostmanの最良の代替品です。

ボタン

従来のAPIツールとは異なり、Apidogは組み込みのモックサーバー、自動テスト、共同作業スペースを提供しており、Azure Functionsのようなイベント駆動型アーキテクチャで作業する際に特に役立ちます。

ボタン

SSEストリームをリアルタイムで可視化する機能は、MCPサーバー実装のデバッグ時に非常に貴重です。開発ワークフローを効率化するために、apidog.comで入手できます。

ボタン

Azure Functions MCPサーバーとは何ですか?

Azure Functions MCPサーバーは、MicrosoftのサーバーレスコンピューティングソリューションであるAzure Functionsにモデルコンテキストプロトコル (MCP) サポートを追加する実験的プレビューフィーチャーです。AIエージェントがMCPを介して使用できるツールを作成するために特別に設計されたトリガーとバインディングを導入します。

この統合により、開発者はクラウド規模のリモートMCPサーバーを構築でき、AIモデル(GitHub Copilotなど)の活用が可能になります。Azure Functions MCPは、Python、Node.js(TypeScript)、および.NET(C#)環境でのイベント駆動型、自動スケーリングのAI支援ツールを開発するシームレスな方法を提供します。

重要なコンポーネントは、MCPツールトリガーであり、これにより関数がAIエージェントがコンテキストに基づいて発見および呼び出すことができる定義されたプロパティを持つツールとして機能することができます。

Azure Functions MCPサーバーのインストール方法

Azure Functions MCPをインストールして構成する手順を説明します。

前提条件

  1. Visual Studio Code
  2. Azure Functions Core Tools
  3. .NET SDK 6.0以上(C#開発用)
  4. Node.js(TypeScript開発用)
  5. Python 3.8以上(Python開発用)
  6. Azure CLI(Azureへのデプロイ用)

インストール手順

Azure Functionsプロジェクトを作成: お好みの言語で新しいAzure Functionsプロジェクトを作成します。プロジェクト作成のためにVisual Studio CodeのAzure Functionsドキュメントを参照できます。

MCP拡張機能を追加:

C#の場合:

dotnet add package Microsoft.Azure.Functions.Worker.Extensions.Mcp --version 1.0.0-preview.1

PythonとNode.jsの場合、host.jsonファイルに実験的拡張バンドルを追加する必要があります:

"extensionBundle": {
  "id": "Microsoft.Azure.Functions.ExtensionBundle.Experimental",
  "version": "[4.*, 5.0.0)"
}

Azuriteをインストール(ローカル開発用): MCP拡張機能はBlobストレージを使用するため、Azure StorageエミュレーターであるAzuriteをローカルで実行する必要があります:

コマンドパレットを開く (Shift + Ctrl + P)

「Azurite: Start」を選択

local.settings.jsonを使用するように更新します:

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "FUNCTIONS_WORKER_RUNTIME": "dotnet-isolated"
  }
}

Azure Functions MCPサーバーの起動方法

MCP拡張機能をインストールしたので、MCPサーバーを作成して実行しましょう:

MCPツールの作成

次に、C#でシンプルな時間ユーティリティツールを作成する例を示します:

using Microsoft.Azure.Functions.Worker;
using Microsoft.Azure.Functions.Worker.Extensions.Mcp;
using System.Globalization;
using System.Text.Json;

namespace AzfuncMcp;

public class TimeUtil
{
    [Function(nameof(GetCurrentTime))]
    public string GetCurrentTime(
        [McpToolTrigger("getcurrenttime", "現在の時間を取得します。タイムゾーンが指定されていない場合、ツールはUTCの時間を返します。")] ToolInvocationContext context,
        [McpToolProperty("timezone", "string", "タイムゾーンの名前。")] string timezone = "UTC")
    {
        try
        {
            TimeZoneInfo timeZoneInfo = TimeZoneInfo.FindSystemTimeZoneById(timezone);
            DateTime currentTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, timeZoneInfo);

            var response = new {
                timezone = timeZoneInfo.StandardName,
                time = currentTime.ToString("yyyy-MM-dd HH:mm:ss", CultureInfo.InvariantCulture),
                displayName = timeZoneInfo.DisplayName
            };

            return JsonSerializer.Serialize(response);
        }
        catch (TimeZoneNotFoundException)
        {
            return $"タイムゾーン '{timezone}' は見つかりませんでした。";
        }
        catch (InvalidTimeZoneException)
        {
            return $"タイムゾーン '{timezone}' は無効です。";
        }
        catch
        {
            return "現在の時間を取得できませんでした。";
        }
    }
}

MCP用のProgram.csの構成

MCPツールを登録するためにProgram.csファイルを更新します:

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

var builder = FunctionsApplicationBuilder.CreateBuilder(args);
builder.ConfigureFunctionsWebApplication();
builder.EnableMcpToolMetadata();
builder.ConfigureMcpTool(nameof(TimeUtil.GetCurrentTime))
    .WithProperty("timezone", "string", "タイムゾーン。");

builder.Build().Run();

サーバーの起動

MCPサーバーをローカルで起動するには:

Azuriteが実行されていることを確認します。

プロジェクトディレクトリでターミナルを開きます。

次のコマンドを実行します:

func start

またはVisual Studio Codeのデバッグ機能を使用します:

  • 「実行とデバッグ」ビューを開く
  • 「.NET Functionsにアタッチ」を選択
  • F5を押すか、緑の再生ボタンをクリック

起動後、MCPサーバーは次のアドレスでアクセス可能になります: http://localhost:7071/runtime/webhooks/mcp/sse

Azure Functions MCPサーバーをGitHub Copilotで使用する方法

MCPサーバーが実行されているので、GitHub Copilotに接続しましょう:

GitHub Copilotを使用してMCPサーバーを構成する

VS CodeにMCPサーバーを追加:

  • コマンドパレットを開く (Shift + Ctrl + P)
  • 「MCP: サーバーを追加」を入力し、選択
  • 「HTTP(サーバー送信イベント)」オプションを選択
  • URLを入力: http://localhost:7071/runtime/webhooks/mcp/sse
  • サーバーに名前を付ける(例:「my-azfunc-mcp-server」)

構成を確認: VS Codeのワークスペース内のsettings.jsonファイルは、次のように更新されるべきです:

"mcp": {
  "inputs": [],
  "servers": {
    "my-azfunc-mcp-server": {
      "type": "sse",
      "url": "<http://localhost:7071/runtime/webhooks/mcp/sse>"
    }
  }
}

必要に応じてサンプルサーバーを削除: 事前に構成されたサンプルサーバー(「mcp-server-time」など)がある場合は、実装と競合しないようにそれらを削除することをお勧めします。

GitHub CopilotでMCPサーバーを使用する

  1. GitHub Copilot Chatを開く:
  • モードが「エージェント」モードに設定されていることを確認(これはMCP機能に不可欠です)
  1. MCPサーバーを有効にする:
  • MCP設定アイコン(レンチとドライバーのアイコン)をクリック
  • 追加したMCPサーバーが有効になっていることを確認
  1. ツールと対話する:
  • チャットウィンドウで、MCPツールが必要な質問をします
  • たとえば、時間ユーティリティツールを使用して「今何時ですか?」や「東京の現在の時間は?」と尋ねることができます
  • GitHub Copilotが外部MCPツールを使用する許可を求めます
  • 「続ける」をクリックすると、CopilotがMCPツールを呼び出し、結果を表示します
  1. 関数の動作を観察する: デバッグモードで実行している場合、関数にブレークポイントを設定し、GitHub Copilotがツールを呼び出すときにそれらがヒットするのを確認できます。

Azureへのデプロイ

運用使用のためには、MCPサーバーをAzureにデプロイする必要があります:

関数アプリをデプロイ: Azure Functions Core ToolsまたはAzure Developer CLIを使用します:

func azure functionapp publish <your-function-app-name>

または

azd up

認証でMCPクライアントを構成: デプロイされたAzure Functionにアクセスするには、認証を提供する必要があります。settings.jsonを更新します:

"mcp": {
  "inputs": [
    {
      "type": "promptString",
      "id": "functions-mcp-extension-system-key",
      "description": "Azure Functions MCP拡張システムキー",
      "password": true
    }
  ],
  "servers": {
    "my-azfunc-mcp-server": {
      "type": "sse",
      "url": "<your-app-name>.azurewebsites.net/runtime/webhooks/mcp/sse",
      "headers": {
        "x-functions-key": "${input:functions-mcp-extension-system-key}"
      }
    }
  }
}

関数キーを取得:

  • Azureポータルの関数アプリに移動
  • アプリキーに移動
  • mcp_extensionシステムキーをコピー

使用例

Azure Functions MCPはさまざまなシナリオに使用できます:

  1. コードスニペット管理: コードスニペットを保存および取得するツールを作成
  2. データ取得: データベースやAPIにアクセスして特定の情報を取得
  3. 計算: LLMでは簡単にできない複雑な計算を実行
  4. 外部システム統合: エンタープライズシステム、API、またはサービスに接続

制限事項と考慮事項

  • これは初期の実験的プレビューであるため、機能が進化する中で破壊的な変更があることを期待してください。
  • 執筆時点では、Windows Azure FunctionsホスティングはMCPに問題がある可能性があるため、Linuxホスティングが推奨されます。
  • MCPは現在ツールをサポートしていますが、プロンプトなどの他の機能が時間とともに追加される予定です。
  • これはプレビュー機能であるため、標準のAzureサポートプランにはまだ適用されません。

結論

Azure Functions MCPは、AIエージェントをカスタムツールで拡張する強力な方法を提供し、Azureエコシステムのすべての力を活用できます。このガイドに従うことで、Azure Functions MCPのインストール、構成、およびGitHub Copilotとの使用方法を学びました。

MCPがより広く採用されるにつれて、これらのスキルを持つことで、LLMの推論能力とカスタムコードの実行能力を組み合わせたますます洗練されたAI駆動のアプリケーションを構築できるようになります。

MCPは進化する標準であり、Azure Functions MCPはプレビュー中であることに留意し、公式ドキュメントやコミュニティフォーラムでの更新とベストプラクティスを確認してください。

リソース

このガイドに従うことで、今やAzure Functions MCPを利用して、GitHub Copilotや他のMCP互換インターフェースでAIエージェントによって使用できる強力なツールを作成する知識を持つことができます。