A Model Context Protocol (MCP) implementation that enables Claude Desktop to interact with Azure services. This integration allows Claude to query and manage Azure resources directly through natural language conversations.
- Azure Resource Management: Interface with Azure Resource Management client
- Subscription Management: List and manage Azure subscriptions
- Tenant Management: List and select Azure tenants
- Automatic Authentication: Leverages DefaultAzureCredential for flexible authentication methods
- Error Handling: Robust error handling with retries for transient failures
- Clean Response Formatting: Properly formatted responses compatible with Claude Desktop
- Node.js (v18 or higher)
- Claude Desktop Application
- Azure Account with appropriate permissions
- Azure CLI (optional, for CLI-based authentication)
- Clone the repository:
git clone https://github.com/Streen9/azure-mcp.git
cd azure-mcp
- Install dependencies:
npm install
- Configure Claude Desktop:
- Open
claude_desktop_config.json
- Add the following MCP configuration:
- Open
{
"mcpServers": {
"sequential-thinking": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-sequential-thinking"
]
},
"azure": {
"command": "tsx",
"args": [
"C:/Users/[YourUsername]/path/to/azure-mcp/src/launcher.ts"
]
}
}
}
The server supports multiple authentication methods through DefaultAzureCredential:
- Environment Variables
- Managed Identity
- Azure CLI
- Visual Studio Code
- Interactive Browser
The server will automatically try these methods in sequence until one succeeds.
- Close Claude Desktop if it's running (check Task Manager)
- Start Claude Desktop
- In the chat, you can now ask Azure-related questions like:
- "Can you get all the available Azure accounts and subscriptions?"
- "List all resource groups in my subscription"
- "Show me all virtual machines in a specific resource group"
You: Can you get all the available Azure accounts and subscriptions?
Claude: I'll help you list all available Azure tenants and subscriptions.
[Claude will then use the Azure MCP to fetch and display the information]
azure-mcp/
├── src/
│ ├── launcher.ts # Server entry point
│ ├── AzureServer.ts # Main MCP server implementation
│ └── LoggerService.ts # Logging utility
├── package.json
└── README.md
- AzureMCPServer: Main server class implementing the MCP protocol
- HandleCallTool: Processes incoming tool requests
- ExecuteWithRetry: Implements retry logic for resilient operations
-
Authentication Issues:
- Ensure you're logged in via Azure CLI (
az login
) - Check environment variables if using service principal
- Verify your Azure account has necessary permissions
- Ensure you're logged in via Azure CLI (
-
Connection Issues:
- Verify Claude Desktop configuration
- Check paths in config file match your installation
- Ensure no other instances are running
-
Common Errors:
NO_TENANT
: Select a tenant using the 'select-tenant' toolNO_CLIENTS
: Ensure proper initialization and authenticationCODE_EXECUTION_FAILED
: Check Azure permissions and connection
Contributions are welcome! Please feel free to submit a Pull Request.
- @calclavia - Integration with smithery.ai
- Claude Desktop team for the MCP implementation
- Azure SDK team for the comprehensive SDK
- Model Context Protocol for enabling AI-service integration
This implementation follows Azure security best practices:
- No hardcoded credentials
- Secure credential chain implementation
- Proper error handling and sanitization
For security concerns or vulnerabilities, please create an issue.