Azure MCP Agents Functions について
Azure DevOps を利用するチーム向けの Azure Functions ベースの MCP サーバーです。Azure Boards の作業項目操作と Azure Pipelines の管理機能をツールとして公開します。
主な機能
- 01Azure DevOps プロジェクトの一覧
- 02作業項目の検索と絞り込み
- 03作業項目の作成
- 04パイプラインの一覧と実行
- 05パイプライン実行状況の確認
活用シーン
- 01プロジェクト内の作業項目の確認
- 02バグ、タスク、ユーザーストーリーの作成
- 03指定ブランチでのパイプライン実行
- 04ビルド状況の確認
MCP 対応
Azure DevOps の操作を MCP ツールとして公開し、対応クライアントから検出・呼び出しできます。Azure Functions は設定済みの VssConnection を通じて Azure DevOps に接続します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Azure MCP Agents Functions
このプロジェクトは、「MCP(Model Context Protocol)ツール」として機能する Azure Functions を実装します。これらのツールはさまざまな Azure DevOps 機能を公開し、会話型 AI インターフェイスを通じて Azure Boards と Azure Pipelines を利用できるようにします。
プロジェクト構成
コアロジックは AzureMcpAgents.Functions ディレクトリにあります。
Program.cs:Azure Functions アプリケーションのエントリポイントです。以下を含むサービスの構成を処理します。- Functions Web アプリケーションのセットアップ。
- MCP ツールのメタデータの有効化。
local.settings.jsonの構成を使用した Azure DevOps への接続(VSS Connection)。
Tools/:個々の MCP ツールが含まれるディレクトリです。AzureBoardsTool.cs:Azure Boards を操作する機能を提供します。ListProjects:Azure DevOps プロジェクトを一覧表示します。ListWorkItems:指定したプロジェクト内の作業項目を一覧表示します。作業項目の種類によるフィルターや、件数の上限を指定できます。CreateWorkItem:指定したプロジェクトに、新しい作業項目(Bug、Task、User Story など)を作成します。タイトル、説明、担当者、タグなどの詳細を指定できます。
AzurePipelinesTool.cs:Azure Pipelines を操作する機能を提供します。ListPipelines:指定したプロジェクトの Azure DevOps パイプラインを一覧表示します。RunPipeline:特定の Azure DevOps パイプラインを実行します。ブランチやパイプライン変数を任意で指定できます。GetPipelineRunStatus:特定のパイプライン実行(ビルド)のステータスを取得します。
SayHelloTool.cs:「Hello」メッセージを返すシンプルなツールです。テストまたはデモ用と考えられます。
local.settings.json:ローカル開発用の設定が含まれます。以下の設定があります。- Azure Functions ワーカーランタイムの構成。
- Azure DevOps への接続情報:
Vss__OrgUrl:Azure DevOps 組織の URL。Vss__TenantId:Azure Active Directory テナント ID。Vss__ClientId:Azure DevOps での認証に使用するアプリケーション登録のクライアント ID。
Extensions/:Program.csのusing AzureMcpAgents.Functions.Extensions;に基づくと、このディレクトリにはサービス構成用の拡張メソッドや、その他の共有ユーティリティが含まれていると考えられます。
機能
- Azure Boards の統合:
- 利用可能な Azure DevOps プロジェクトを一覧表示します。
- プロジェクトから作業項目を取得し、種類でフィルターできます。
- 詳細情報を指定して、新しい作業項目を作成します。
- Azure Pipelines の統合:
- プロジェクト内のパイプラインを一覧表示します。
- ブランチとパラメーターを指定して、パイプラインの実行を開始します。
- パイプライン実行のステータスを確認します。
- MCP ツールのフレームワーク:
- 関数は MCP ツールとして公開され、
[McpToolTrigger]属性と[McpToolProperty]属性で識別できます。 - これにより、会話型 AI や同様のプラットフォームが、適切なパラメーターを指定してこれらの関数を検出し、呼び出せるようになります。
- 関数は MCP ツールとして公開され、
はじめに
前提条件
- .NET SDK(
local.settings.jsonに指定されたFUNCTIONS_WORKER_RUNTIMEと互換性のあるバージョン。「dotnet-isolated」の場合は .NET 8 以降)。 - Azure Functions Core Tools。
- Azure DevOps 組織と、その組織内のプロジェクト。
- Azure DevOps へのアクセス権限を持つ Azure Active Directory アプリケーション登録。
設定
- リポジトリをクローンします。
local.settings.jsonを更新します:Vss__OrgUrlに、Azure DevOps組織のURL(例:https://dev.azure.com/your-org)を入力します。Vss__TenantIdをAzure ADテナントIDで更新します。Vss__ClientIdをAADアプリ登録のクライアントIDで更新します。- 注:ローカル開発では、
AzureWebJobsStorageにUseDevelopmentStorage=trueが設定されており、Azure Storage Emulatorを使用します。起動していることを確認するか、実際のAzure Storageアカウントを指すように設定してください。
- 認証を設定します:AADアプリ登録に、Azure DevOpsに必要なAPI権限(例:「Work Items Read & Write」、「Build Read & Execute」)があることを確認します。必要に応じて、管理者の同意を付与してください。認証の仕組みでは、指定されたClientIdとTenantIdを使用し、Managed Identityやクライアントシークレットなどを利用している可能性があります(ただし、提示されたファイルにはシークレットは明示されていません。
VssConnectionでよく使われるパターンです)。
ローカルでの実行
AzureMcpAgents.Functionsディレクトリに移動します。- Functionsホストを起動します。
これにより、MCP対応プラットフォームからツールを呼び出せるようになります。func start
仕組み
このアプリケーションは、Microsoft.TeamFoundationServer.ClientライブラリとMicrosoft.VisualStudio.Services.Clientライブラリを使用して、Azure DevOps REST APIとやり取りします。
各「ツール」は、MCPフレームワークによってトリガーされるAzure Functionです。[McpToolTrigger]属性でツールの名前と説明を定義し、[McpToolProperty]属性で各ツールに必要な入力パラメーターを定義します。
ツールが(Copilotなどによって)呼び出されると、次の処理が行われます。
- Azure Functionがトリガーされます。
- 注入された
VssConnection(Program.csで設定)を使用して、Azure DevOpsに接続します。 - 対応するクライアント(例:
WorkItemTrackingHttpClient、BuildHttpClient)をVssConnectionから取得します。 - クライアントがAzure DevOpsをAPIで呼び出し、要求された操作(例:プロジェクトの一覧表示、作業項目の作成、パイプラインの実行)を実行します。
- 結果は通常JSONにシリアライズされ、返されます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。