🧠 Azure Self Help MCP Server について
Azure Self Help APIのワークフローを公開し、Azureリソースを段階的にトラブルシューティングするMCPサーバーです。調査セッションの開始、進行、確認、再起動を必要とするAIアプリやエージェント向けです。
主な機能
- 01トラブルシューティングセッションの作成
- 02現在の手順と説明の確認
- 03回答を送信してセッションを継続
- 04セッションの終了または再起動
- 05DefaultAzureCredentialによる認証
活用シーン
- 01Azure VMのSSH接続問題の診断を支援
- 02Azureトラブルシューティングを対話形式で進行
MCP 対応
Azure Self Help APIの操作を、互換ホスト向けのMCPツールとして公開します。セッションの作成、手順の取得、継続、終了、再起動に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
🧠 Azure Self Help MCP サーバー
Azure Troubleshooter MCP Server へようこそ。Model Context Protocol (MCP) の実践的な実装で、Azure Self Help API を使用して、Claude や Semantic Kernel などのインテリジェントなエージェントが Azure リソースのトラブルシューティングを段階的に行えるように設計されています。
簡単に言うと、AI アプリが Azure の Guided Troubleshooter とやり取り し、よくある診断ワークフローを自動化できます。
💡 これは何ですか?
このプロジェクトは、Azure の Self Help API をツールセットとして公開する MCP サーバー を実装しています。Claude Desktop や SK App などの MCP ホストに接続すると、エージェントに次のことを依頼できます。
- トラブルシューティングセッションを作成する
- 現在のステップを確認する
- 回答してフローを続行する
- セッションを終了または再起動する
Azure 診断のための 対話型 AI アシスタント としてご活用ください。
✨ ライブデモのユースケース
❓ 「Azure VM に SSH 接続できません。」
このツールを使うと、Microsoft の Guided Troubleshooter API を利用して、LLM が考えられる原因と解決策を対話形式で案内します。

🧰 前提条件
- .NET 8 SDK
- Azure CLI(ログイン済み)
- Claude アプリまたは任意の MCP ホスト
- IDE/ターミナル
📦 セットアップ
ステップ 1:パッケージをインストールする
dotnet add package ModelContextProtocol --prerelease
dotnet add package Microsoft.Extensions.Hosting
dotnet add package Azure.ResourceManager.SelfHelp
dotnet add package Azure.Identity
ステップ 2:MCP サーバーを作成する
Program.cs で:
var builder = Host.CreateEmptyApplicationBuilder(settings: null);
builder.Services.AddMcpServer()
.WithStdioServerTransport()
.WithToolsFromAssembly(); // Registers [McpServerTool] methods
var app = builder.Build();
await app.RunAsync();
ステップ 3:MCP ツールを作成する
AzureTroubleshooterTools.cs で:
[McpServerToolType]
public static class AzureTroubleshooterTools
{
[McpServerTool, Description("Create a troubleshooter session")]
public static async Task<string> CreateTroubleshooter([Description("Resource Uri of the azure resource")]string scope)
{
string solutionId = "e104dbdf-9e14-4c9f-bc78-21ac90382231"; // this is solutionId for vm ssh issue. This id can be found using Discovery API of Azure Help, which will also be part of this MCP Server
string troubleshooterName = Guid.NewGuid().ToString();
var client = new ArmClient(new DefaultAzureCredential());
var troubleshooterId = SelfHelpTroubleshooterResource.CreateResourceIdentifier(scope, troubleshooterName);
var troubleshooter = client.GetSelfHelpTroubleshooterResource(troubleshooterId);
var data = new SelfHelpTroubleshooterData
{
SolutionId = solutionId,
Parameters = { ["ResourceURI"] = scope }
};
ArmOperation<SelfHelpTroubleshooterResource> lro = await troubleshooter.UpdateAsync(WaitUntil.Completed, data);
return $"Troubleshooter created with ID: {lro.Value.Data.Id}";
}
// Tools: Get, Continue, End, Restart...
}
🤖 Claude またはその他のホスト向け MCP 設定
Claude などの MCP 対応アプリを MCP サーバーに接続するには、設定ファイルを更新します(Claude Desktop の場合:Settings > Developer)。
{
"mcpServers": {
"azurehelpTroubleshooter": {
"command": "dotnet",
"args": [
"run",
"--project",
"/Users/yourname/Projects/AzureTroubleshooterServer",
"--no-build"
]
}
}
}
保存して再起動すると、Claude がツールを検出し、Azure 診断をサポートできるようになります! ✅
🧪 利用可能なツール
| メソッド | 説明 |
|---|---|
CreateTroubleshooter | リソースの新しいトラブルシューティングセッションを開始する |
GetTroubleshooterStep | 現在のステップと手順を確認する |
ContinueTroubleshooter | 現在のステップの質問に回答する |
EndTroubleshooter | セッションを終了する |
RestartTroubleshooter | 最初のステップからやり直す |
🛡 認証
DefaultAzureCredential を使用しているため、次の環境ですぐに動作します。
- Azure CLI
- 環境変数
- マネージド ID
🧠 重要な理由
Model Context Protocol (MCP) は、LLM がツールとやり取りする方法を大きく変えています。Azure Help API 向けの MCP サーバーを構築することで、次のことが可能になります。
- Azure のデバッグを エージェントネイティブ にする
- AI アプリにクラウドインテリジェンスをもたらす
- 同じ構造で他の Microsoft API にも拡張する
📎 関連ブログ
🙌 謝辞
このような開発者向けの魔法を実現してくださった、素晴らしい Azure SDK チームと MCP の開発者の皆さんに感謝します。 ✨
- https://learn.microsoft.com/en-us/rest/api/help/
- https://docs.anthropic.com/en/docs/agents-and-tools/mcp
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。