mcp-azure
Enables MCP-capable clients to inventory and operate Azure resources via the Azure Resource Manager API, including resource groups, tags, and VM power, while enforcing governance controls like scoping, protected groups, location allowlists, delete gating, and confirmation.
README
mcp-azure
A Model Context Protocol server for Azure (via the Azure Resource Manager API — the programmatic layer behind the Azure Portal). It lets an MCP-capable client (Claude Desktop, Claude Code, Cursor, Codex, …) inventory and operate Azure resources — with a governance layer that keeps an AI agent inside safe boundaries.
What this offers
- Inventory — list subscriptions, locations, resource groups, and resources; get any resource by ARM id.
- Operations — create resource groups (in approved regions), merge tags onto any resource, and control VM power state (start / stop / restart / deallocate).
- Lifecycle — delete resource groups and individual resources, guarded.
- Governance built in — access modes, subscription/resource-group allowlists, protected resource groups, a location allowlist for new groups, delete gating, typed confirmation for high-impact deletes, dry-run, and JSON audit logging.
Governance & security model
| Concern | Flag | Default | Effect |
|---|---|---|---|
| What can the server do? | AZURE_MODE |
read-only |
read-only → inventory; read-write → create RG, tag, VM power; admin → deletes. Tools above the mode are never registered. |
| Which subscriptions? | AZURE_SUBSCRIPTION_ALLOWLIST |
(all) | Operations on other subscriptions are refused. |
| Which resource groups? | AZURE_RESOURCE_GROUP_ALLOWLIST |
(all) | Operations outside the list are refused. |
| Read-only-forever groups | AZURE_PROTECTED_RESOURCE_GROUPS |
(none) | Readable, never mutable. |
| Approved regions | AZURE_LOCATION_ALLOWLIST |
(any) | New resource groups may only be created here. |
| Can it delete? | AZURE_ALLOW_DELETE |
false |
Deletes need this and admin mode. |
| Typed confirmation | AZURE_REQUIRE_CONFIRMATION |
true |
Deletes require confirm to equal the target name — not just a boolean. |
| Preview | AZURE_DRY_RUN |
false |
Write/admin tools validate + log intent, then return. |
| Audit trail | AZURE_AUDIT_LOG |
true |
JSON line to stderr per guarded operation. |
Tools
Read (read-only+): list_subscriptions, list_locations, list_resource_groups, list_resources, get_resource
Write (read-write+): create_resource_group, tag_resource, control_vm
Admin (admin): delete_resource_group, delete_resource (both need AZURE_ALLOW_DELETE + typed confirm)
Quickstart — add to your agent
Published on npm as @dockndevai/mcp-azure. Runs via npx with an Entra ID service principal. See docs/CLIENTS.md for every client and .env.example for all variables.
Claude Code
claude mcp add azure -e AZURE_TENANT_ID="…" -e AZURE_CLIENT_ID="…" -e AZURE_CLIENT_SECRET="…" -e AZURE_SUBSCRIPTION_ID="…" -e AZURE_MODE="read-only" -- npx -y @dockndevai/mcp-azure
Claude Desktop · Cursor · Windsurf
{
"mcpServers": {
"azure": {
"command": "npx",
"args": ["-y", "@dockndevai/mcp-azure"],
"env": {
"AZURE_TENANT_ID": "…",
"AZURE_CLIENT_ID": "…",
"AZURE_CLIENT_SECRET": "…",
"AZURE_SUBSCRIPTION_ID": "…",
"AZURE_MODE": "read-only"
}
}
}
}
Example prompts
- "List all resource groups in my subscription and which region each is in"
- "Show every resource in the rg-web group"
- "Tag the app-plan resource with env=prod and owner=team-a" (needs read-write)
- "Stop the build-agent VM in rg-ci" (needs read-write)
Run from source (development)
npm install
npm run build
node dist/index.js # with the environment variables set
Develop
npm run dev
npm test # governance policy: modes, scoping, location allowlist, delete + confirmation
npm run typecheck
Publishing
Ships a server.json for the official MCP registry and an mcpName for npm ownership validation. See PUBLISHING.md.
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
Neon Database
MCP server for interacting with Neon Management API and databases
E2B
Using MCP to run code via e2b.
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.