AppServiceをMCP Serverにする方法のサンプルがシンプルでよい感じ!

この記事の内容

  • Azure App Service上にリモートMCPサーバーを構築するサンプルプログラムを紹介します
  • MCPサーバーをサーバー上に一元化することで、複数環境からの利用管理が簡単になります
  • C#とAzure SDKを使えば、驚くほど少ないコード量でMCPサーバーを実装できます
  • サンプルにはインフラ定義(Bicep)からアプリケーションコードまで一式が含まれており、すぐに試せます
  • ツールの追加実装も属性(アトリビュート)を付けるだけのシンプルな構造です

リモートMCPサーバーとは何か

MCPサーバーは、AIが特定のタスクを実行するためのツールセットを提供する仕組みです。AIエージェントからの要求を受け取り、ツールを実行して結果を返す役割を担います。

このMCPサーバーをローカル環境に構築してしまうと、利用するPCごとに個別の環境設定が必要となり、管理が煩雑になりがちです。複数のデバイスで同じツールセットを使いたい場合には特に面倒です。

そこで有効なのが、Azure App Serviceのようなクラウドサーバー上にMCPサーバーを一つ構築し、様々な環境から共通で利用するという構成です。管理が一元化され、どこからでも同じツールを呼び出せるようになります。


今回紹介するサンプルリポジトリ

Microsoftが公開しているGitHubリポジトリにて、Azure App Service上でリモートMCPサーバーを動かすサンプルが公開されています。

https://github.com/microsoft/RemoteMcpServer-AzureAppService

このサンプルには、すぐに動作確認できるよう必要なものが一通り含まれています。

構成要素内容
MCPサーバー本体C#で実装されたサーバーのコア部分(Program.cs
サンプルツール(3種)乗算ツール・温度変換ツール・天気情報取得ツール
インフラ定義Azure環境を構築するためのBicepファイル

インフラのコードからアプリケーションのソースコードまで揃っているため、クローンしてすぐに試すことができます。


驚くほどシンプルなソースコード

このサンプルの最大の特徴はコードのシンプルさです。

サーバー本体(Program.cs

サーバーの起動処理を担うProgram.csは非常に簡潔にまとまっています。SDKを活用することで、以下の3ステップだけでMCPサーバーとして動作します。

// 1. MCPサーバーサービスをDIコンテナに追加
builder.Services.AddMcpServer();

// 2. CORSを設定(クロスオリジンからのアクセスを許可)
app.UseCors();

// 3. MCPのエンドポイントをマッピング
app.MapMcp();

これだけで、MCPサーバーとして機能するバックエンドの基盤が完成します。

ツールの実装

ツール側の実装も同様にシンプルです。例えば乗算ツールは、通常のC#クラスに属性を付けるだけで、MCPサーバーのツールとして自動的に認識されます。

using ModelContextProtocol.Server;
using System.ComponentModel;

[McpServerToolType]
public class MultiplyTool
{
    [McpServerTool, Description("2つの数値を掛け算します")]
    public static double Multiply(double a, double b) => a * b;
}

実装の流れは以下の通りです。

  1. 必要なusingディレクティブを宣言する
  2. クラスに[McpServerToolType]属性を追加する
  3. メソッドに[McpServerTool]と説明(Description)の属性を追加する
  4. 通常のC#メソッドとしてロジックを実装する

MCPプロトコルとの接続部分はSDKが完全に抽象化してくれるため、開発者はツールの機能実装だけに集中できます。


自分専用ツールの追加が容易

このサンプルの優れた点は、カスタムツールの追加が非常に簡単なことです。C#で自由にロジックを記述できるため、外部APIと連携するような複雑な処理も追加開発しやすい構造になっています。

例えば以下のような用途が考えられます。

  • 社内システムのAPIを呼び出してデータを取得するツール
  • 定型業務を自動化するバッチ処理ツール
  • 特定のデータ変換や計算を行うユーティリティツール

サーバーをAzure App Service上に一度デプロイしてしまえば、あとはツールを追加・更新してデプロイするだけで、すべての接続クライアントが新しいツールを利用できるようになります。


まとめ

今回紹介したMicrosoftのサンプルリポジトリは、Azure App Service上に独自のリモートMCPサーバーを構築したい方にとって非常に優れた出発点となります。

  • コードがシンプル: Program.csはわずか数行、ツールは属性を付けるだけ
  • インフラも込み: BicepファイルでAzure環境の構築も自動化できる
  • 拡張性が高い: C#の豊富なエコシステムを活用して独自ツールを追加しやすい
  • 管理が一元化: サーバー上に一つ置けば、複数の環境から同じツールを利用できる

MCPサーバーの構築方法は複数ありますが、Azure App Serviceを活用するこのアプローチは、手軽さと拡張性を両立した選択肢です。日常の定型業務や雑務をAIに処理させる自分専用の環境構築の第一歩として、ぜひ試してみてください。

─────────────────────────────────────────────────