内容
# azure-mcp
MCP 服务器,用于直接从 Claude 查询 Azure API 管理(APIM)、应用程序洞察(Application Insights)和应用服务(App Service)Web 应用。
## 功能
- **APIM** — 列出 API、操作、后端、全局/ API/操作策略和策略片段
- **ExplainEndpoint** — 给定 HTTP 方法 + 路径,在 APIM 中查找相应的 API,返回所有级别的有效策略和目标后端
- **App Insights** — 自由 KQL 查询、最近的异常、失败的请求、缓慢的请求、依赖错误、按操作分组和可用性
- **Web Apps** — 列出应用、配置、应用设置、连接字符串、插槽和健康检查
- **Discovery** — 交互式列出和选择订阅资源,无需手动配置环境变量
## 前置条件
- [.NET 10 SDK](https://dotnet.microsoft.com/download)
- [Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli) 或其他 Azure 身份验证方式
- 目标订阅中 APIM、应用程序洞察(App Insights)和应用服务(App Service)的读取权限
## 配置
### 1. 身份验证
服务器使用 [`DefaultAzureCredential`](https://learn.microsoft.com/dotnet/azure/sdk/authentication/credential-chains)。本地最简单的方式是:
```bash
az login
```
对于非交互环境(CI、容器),通过环境变量配置服务主体:
| 变量 | 描述 |
|---|---|
| `AZURE_TENANT_ID` | Azure AD 租户 ID |
| `AZURE_CLIENT_ID` | 服务主体客户端 ID |
| `AZURE_CLIENT_SECRET` | 服务主体客户端密钥 |
### 2. 订阅
唯一必填变量是:
```
AZURE_SUBSCRIPTION_ID=<您的订阅ID>
```
### 3. 目标资源(首次使用)
MCP 工具交互式配置资源(APIM、workspace、resource group)。无需为它们配置环境变量 — 选择会自动保存到 `%APPDATA%\azure-mcp\settings.json`(Windows)或 `~/.config/azure-mcp/settings.json`(Linux/macOS)。
## 与 Claude Code 结合使用
在项目 `.claude/settings.json` 中添加:
```json
{
"mcpServers": {
"azure-mcp": {
"command": "dotnet",
"args": ["run", "--project", "/path/to/azure-mcp/src"],
"env": {
"AZURE_SUBSCRIPTION_ID": "<您的订阅ID>"
}
}
}
}
```
在第一次对话中,请 Claude:
1. `ListAvailableResources` — 列出可用的 APIM、Log Analytics 工作区和资源组
2. `SetActiveResources` — 保存选择(在会话之间持久化)
3. `ShowCurrentConfiguration` — 确认当前配置
之后,所有其他工具都无需额外配置。
## 可用工具
### Discovery(3)
| 工具 | 描述 |
|---|---|
| `ListAvailableResources` | 列出订阅中的 APIM、工作区和资源组 |
| `SetActiveResources` | 保存选择到 settings.json |
| `ShowCurrentConfiguration` | 显示当前配置 |
### APIM(11)
| 工具 | 描述 |
|---|---|
| `ListApis` | 列出所有已注册的 API |
| `GetApiDetails` | 获取 API 详情 |
| `ListApiOperations` | 获取 API 操作(端点) |
| `ExplainEndpoint` | 解释端点的完整流程(策略 + 后端) |
| `ListBackends` | 列出已配置的后端 |
| `GetBackend` | 获取后端详情 |
| `GetGlobalPolicy` | 获取 APIM 全局策略(XML) |
| `GetApiPolicy` | 获取 API 策略(XML) |
| `GetOperationPolicy` | 获取操作策略(XML) |
| `ListPolicyFragments` | 列出可重用的策略片段 |
| `GetPolicyFragment` | 获取策略片段内容 |
### App Insights(8)
| 工具 | 描述 |
|---|---|
| `QueryLogs` | 在工作区中执行自由 KQL 查询 |
| `GetRecentExceptions` | 获取最近的异常及其堆栈跟踪 |
| `GetFailedRequests` | 获取失败的请求(状态码 >= 400) |
| `GetSlowRequests` | 获取慢请求(高于阈值) |
| `GetDependencyErrors` | 获取依赖错误 |
| `GetRequestsByOperation` | 按操作分组,计算 P95 |
| `GetExceptionsByType` | 按类型排名的异常 |
| `GetAvailabilityResults` | 获取可用性测试结果 |
### Web App(8)
| 工具 | 描述 |
|---|---|
| `ListWebApps` | 列出资源组中的 Web 应用 |
| `GetWebAppDetails` | 获取 Web 应用详情 |
| `GetWebAppSettings` | 获取应用设置(环境变量) |
| `GetWebAppConnectionStrings` | 获取连接字符串 |
| `GetWebAppConfig` | 获取网站配置(TLS、CORS、运行时等) |
| `ListDeploymentSlots` | 列出部署槽 |
| `GetWebAppHealthCheck` | 获取健康检查配置 |
| `GetWebAppLoggingConfig` | 获取日志记录配置 |
## 本地构建
```bash
cd src
dotnet build
dotnet run
```
## 许可证
MIT — 见 [LICENSE](LICENSE)。