Azure MCP (Model Context Protocol) for Claude Desktop
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.
Features
- 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
Prerequisites
- Node.js (v18 or higher)
- Claude Desktop Application
- Azure Account with appropriate permissions
- Azure CLI (optional, for CLI-based authentication)
Installation
Installing via Smithery
To install Azure MCP for Claude Desktop automatically via Smitheryβ:
npx -y @smithery/cli install @Streen9/azure-mcp --client claude
Manual Installation
- 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"
]
}
}
}
Authentication
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.
Usage
- 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β
Example Conversation
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]
Development
Project Structure
azure-mcp/
βββ src/
β βββ launcher.ts # Server entry point
β βββ AzureServer.ts # Main MCP server implementation
β βββ LoggerService.ts # Logging utility
βββ package.json
βββ README.md
Key Components
- AzureMCPServer: Main server class implementing the MCP protocol
- HandleCallTool: Processes incoming tool requests
- ExecuteWithRetry: Implements retry logic for resilient operations
Troubleshooting
-
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
Contributing
Contributions are welcome! Please feel free to submit a Pull Request.
Contributors
- @calclaviaβ - Integration with smithery.ai
Acknowledgments
- Claude Desktop team for the MCP implementation
- Azure SDK team for the comprehensive SDK
- Model Context Protocol for enabling AI-service integration
Security Note
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.
Last updated on