Taste of Tech Topics

Acroquest Technology株式会社のエンジニアが書く技術ブログ

Azure MCP ServerとGitHub CopilotでAzure上のアプリをできる限り簡単に作る

こんにちは。データサイエンスチームYAMALEXの@Ssk1029Takashiです。
(YAMALEXについて詳細はこちらをぜひご覧下さい。)
www.acroquest.co.jp

MCP(Model Context Protocol)が登場して少し時間が経ちましたが、その間にMCPに対応するサービスが増え、LLM 用ツールとしてその利用も拡大しています。
ツール提供側・クライアント側のどちらのサービスも増えており、今後さらに対応が広がりそうです。

そのような中で、MicrosoftがAzure MCP ServerというAzureリソースをMCP経由で操作できるMCP Serverを公開しました。
github.com

現在は操作できるリソースは限られていますが、CosmosDBやBlob Storageなどのデータ参照などが可能です。
この記事では簡単にMCPについて説明した後、Github CopilotからAzure MCP Serverを呼び出してAzureリソースを使ったWebアプリを簡単に作成します。

MCPとは

MCPとはModel Context Protocolの略称であり、書いてある通りProtocol、つまり規格のことを指します。
では何の規格なのかというと、LLMモデルを使ったアプリケーションがツールを使用するときにどのようにコンテキストを取得してツールを呼び出すかというフローを規格にしたものになります。

ツール呼び出しというと、Function Callingが思い浮かびますが、MCPとは以下のようにレイヤが違う単語になります。

  1. Function Calling: ユーザーのプロンプトとツールごとの情報を入力して呼び出すツールを選択する機能
  2. MCP: LLMアプリケーションがどのようにツールを選択するか、ツール側はどのように提供するかを決めた規格

Model Context Protocol では『MCP Server』と『MCP Client』の 2 つの役割が定義されています。

  1. ホスト: MCPを利用したLLMアプリケーションのことを指す
  2. MCP Server: ツールを提供する。ツール情報の提供とツール実行を担当。
  3. MCP Client: MCP Serverからツールの情報を取得して、どのツールを呼び出すかを決めて呼び出す。
https://modelcontextprotocol.io/docs/concepts/architecture

厳密にいえばMCP Serverはプロンプトテンプレートの提供などほかの機能も提供できるのですが、本記事では省略します。

例えばClaude DesktopやGitHub Copilotなどはツールを呼び出す側のサービスなので上記でいうホストにあたり、MCP Clientを内包していることになります。

本記事では以下の構成で作業することになります。
NodeJSから起動されたMCP Serverを通して、Azureリソースを操作します。

Azure MCP Serverについて

MSから今月公開されたMCP Serverであり、Azureのリソース操作をツール経由で提供しています。
標準入力・HTTP両方での通信が可能です。
操作できる内容の例として以下のとおりです。

  • CosmosDBコンテナ一覧の取得
  • CosmosDBコンテナーへのSQLクエリの実行
  • Blob Storageコンテナ一覧の取得

Azureリソースを使ったWebアプリを作成する

今回は簡単にファイルをアップロード・ダウンロード・削除して、だれがいつ上げたのかを保存するWebアプリを作ってみます。
バックエンドとしてファイルストレージにBlob Storage、アップロード履歴管理にCosmosDBを使うものとします。
開発環境としては以下を使用します。

Azure MCP Serverを立ち上げる

Azure MCP Serverを立ち上げることは簡単です。
github.com
上記リポジトリをクローンし、以下のコマンドで起動します。

npx -y @azure/mcp@latest server start --transport sse

以下のような出力があれば無事起動しています。

info: Microsoft.Hosting.Lifetime[14]
      Now listening on: http://localhost:5008

Azure MCP ServerをVSCodeGitHub Copilotを使用するよう設定する

MCP Serverは起動しただけではクライアントから認識されません。
LLMアプリケーションが認識できるように登録する作業が必要になります。
今回はGitHub Copilotを使用しているため、以下の手順を参照します。
code.visualstudio.com

今回やることとしては、.vscode/mcp.jsonに以下の内容を記載すればOKです。

{
    "servers": {
        "azure-mcp-dev": {
            "url": "http://localhost:5008"
        }
    }
}

GitHub Copilotからアプリを作成する

まず、今回はAzureには以下のリソースグループ・リソースを事前に作成しておきます。
mcp-dev: リソースグループ
ssk-mcp-cosmos-dev: CosmosDB
sskmcpblobdev: ストレージアカウント

本当はリソース作成までAzure MCP Serverに実施させたいですが、リソース作成自体をLLMに任せるのはリスクもあるので、今回はここだけ手動で作成します。
この状態でAzure MCP Serverを連携したGitHub Copilotに以下のプロンプトを入れてみます。

mcp-devというリソースグループでBlob StorageとCosmosDBを使ってファイルアップロード管理システムを作りたいです。

- ユーザーごとにファイルのアップロード・ダウンロード・削除ができる。
- ユーザーごとにいつどのファイルを更新したかをCosmosDB上で管理する。
- PythonのFastAPIを使って開発する

上記条件で以下を実施してください。
- Azureリソースの設定を変更
- DB・ストレージの構成を示すドキュメントを出力する。

すると以下のように、まずは現状のリソースの状態をチェックします。

「Ran azmcp-group-list」というように表示されている箇所がAzure MCP Serverを実行している箇所になります。
リソースグループ・ストレージ・CosmosDBの状態を確認していることがわかります。

最初の回答では、必要な設計を教えてくれるので、続いてコードの出力を支持します。

ここではソースコードの生成まではしてくれますが、コンテナの作成はまだ実施されていません。
明確に指示しないとリソースに変更を加える操作は実施してくれない傾向があるので、指示を追加します。

するとリソース上に必要なコンテナがそれぞれ作成されます。

これで、ソースコードとバックエンドのリソース構築が完了しました。

実際に使ってみる

実際にアプリを動かしてみましょう。
画面についてはGitHub Copilotからプロンプトから生成しました。

見た目については何も指定せずに生成したので、最低限という状態です。
ここからschema.jsonというファイルをアップロードした状態ですが、Azureのリソースにも想定通りアップロードされたファイルと履歴が反映されています。

このようにAzure MCP ServerとGitHub Copilotを使えばAzureリソースの設定からアプリ作成まで一気にプロンプトで実施可能です。
ちょっとしたアプリをAzure上で作成したいときに便利に使えそうですね。

まとめ

本記事では、Azure MCP ServerとGitHub Copilotを使って、Azureリソースの設定・アプリ開発を簡単に検証しました。
もともとGitHub Copilotでできたアプリ作成に加えて、そのアプリに合わせたリソース設定がプロンプトで完結するのは便利ですね。
今後もMCP Serverによるツール拡張はさらに拡充されていくので、より便利な開発体験になりそうです。
それではまた。

Acroquest Technologyでは、キャリア採用を行っています。

  • Azure OpenAI/Amazon Bedrock等を使った生成AIソリューションの開発
  • ディープラーニング等を使った自然言語/画像/音声/動画解析の研究開発
  • マイクロサービス、DevOps、最新のOSSクラウドサービスを利用する開発プロジェクト
  • 書籍・雑誌等の執筆や、社内外での技術の発信・共有によるエンジニアとしての成長

少しでも上記に興味を持たれた方は、是非以下のページをご覧ください。

www.wantedly.com