Content
# azure-mcp
MCP server para consultar Azure API Management (APIM), Application Insights e App Service Web Apps diretamente do Claude.
## Funcionalidades
- **APIM** — listar APIs, operações, backends, políticas globais/API/operação e fragmentos de política
- **ExplainEndpoint** — dado um método HTTP + path, descobre a API correspondente no APIM, retorna as políticas efetivas em todos os níveis e o backend destino
- **App Insights** — queries KQL livres, exceções recentes, requisições com falha, requisições lentas, erros de dependência, agrupamento por operação e disponibilidade
- **Web Apps** — listar apps, configurações, app settings, connection strings, slots e health check
- **Discovery** — listar e selecionar recursos da subscription interativamente, sem precisar configurar env vars manualmente
## Pré-requisitos
- [.NET 10 SDK](https://dotnet.microsoft.com/download)
- [Azure CLI](https://learn.microsoft.com/cli/azure/install-azure-cli) ou outra forma de autenticação Azure
- Permissões de leitura no APIM, App Insights e App Service da subscription alvo
## Configuração
### 1. Autenticação
O servidor usa [`DefaultAzureCredential`](https://learn.microsoft.com/dotnet/azure/sdk/authentication/credential-chains). A forma mais simples localmente é:
```bash
az login
```
Para ambientes sem interação (CI, containers), configure Service Principal via variáveis de ambiente:
| Variável | Descrição |
|---|---|
| `AZURE_TENANT_ID` | ID do tenant Azure AD |
| `AZURE_CLIENT_ID` | Client ID do Service Principal |
| `AZURE_CLIENT_SECRET` | Client Secret do Service Principal |
### 2. Subscription
A única variável obrigatória é:
```
AZURE_SUBSCRIPTION_ID=<id-da-sua-subscription>
```
### 3. Recursos alvo (primeira vez)
Os recursos (APIM, workspace, resource group) são configurados de forma interativa via tools do MCP. Não é necessário configurar env vars para eles — a seleção é salva automaticamente em `%APPDATA%\azure-mcp\settings.json` (Windows) ou `~/.config/azure-mcp/settings.json` (Linux/macOS).
## Uso com Claude Code
Adicione ao `.claude/settings.json` do seu projeto:
```json
{
"mcpServers": {
"azure-mcp": {
"command": "dotnet",
"args": ["run", "--project", "/caminho/para/azure-mcp/src"],
"env": {
"AZURE_SUBSCRIPTION_ID": "<sua-subscription-id>"
}
}
}
}
```
Na primeira conversa, peça ao Claude para:
1. `ListAvailableResources` — lista APIM, workspaces Log Analytics e resource groups disponíveis
2. `SetActiveResources` — salva a seleção (persiste entre sessões)
3. `ShowCurrentConfiguration` — confirma o que está ativo
A partir daí, todos os outros tools funcionam sem configuração adicional.
## Tools disponíveis
### Discovery (3)
| Tool | Descrição |
|---|---|
| `ListAvailableResources` | Lista APIM, workspaces e resource groups da subscription |
| `SetActiveResources` | Salva a seleção em settings.json |
| `ShowCurrentConfiguration` | Mostra a configuração ativa |
### APIM (11)
| Tool | Descrição |
|---|---|
| `ListApis` | Lista todas as APIs registradas |
| `GetApiDetails` | Detalhes de uma API |
| `ListApiOperations` | Operações (endpoints) de uma API |
| `ExplainEndpoint` | Explica o fluxo completo de um endpoint (políticas + backend) |
| `ListBackends` | Lista backends configurados |
| `GetBackend` | Detalhes de um backend |
| `GetGlobalPolicy` | Política global do APIM (XML) |
| `GetApiPolicy` | Política de uma API (XML) |
| `GetOperationPolicy` | Política de uma operação (XML) |
| `ListPolicyFragments` | Lista fragmentos de política reutilizáveis |
| `GetPolicyFragment` | Conteúdo XML de um fragmento |
### App Insights (8)
| Tool | Descrição |
|---|---|
| `QueryLogs` | Query KQL livre no workspace |
| `GetRecentExceptions` | Exceções recentes com stack trace |
| `GetFailedRequests` | Requisições com falha (status >= 400) |
| `GetSlowRequests` | Requisições mais lentas acima de um threshold |
| `GetDependencyErrors` | Erros em chamadas de dependência |
| `GetRequestsByOperation` | Agrupamento por operação com P95 |
| `GetExceptionsByType` | Ranking de exceções por tipo |
| `GetAvailabilityResults` | Resultados de testes de disponibilidade |
### Web App (8)
| Tool | Descrição |
|---|---|
| `ListWebApps` | Lista Web Apps no resource group |
| `GetWebAppDetails` | Detalhes de um Web App |
| `GetWebAppSettings` | App Settings (variáveis de ambiente) |
| `GetWebAppConnectionStrings` | Connection strings |
| `GetWebAppConfig` | Configuração do site (TLS, CORS, runtime, etc.) |
| `ListDeploymentSlots` | Slots de deployment |
| `GetWebAppHealthCheck` | Configuração do health check |
| `GetWebAppLoggingConfig` | Configuração de logging |
## Build local
```bash
cd src
dotnet build
dotnet run
```
## Licença
MIT — veja [LICENSE](LICENSE).