Azure Topology Graph MCP Server
Enables exploration and analysis of Azure infrastructure by querying Azure Resource Graph, ARM, and Network Watcher APIs to create interactive topology maps. Provides tools for searching resources, discovering relationships, finding connectivity paths, and visualizing complete Azure infrastructure topologies.
README
Azure Topology Graph MCP Server
A Model Context Protocol (MCP) server that queries Azure Resource Graph, ARM, and Network Watcher to create topology maps that Cursor can explore.
Features
- Resource Inventory: Query resources across multiple subscriptions using Azure Resource Graph
- Detailed Configuration: Pull detailed configuration for specific resources using ARM APIs
- Network Topology: Build network topology using Azure Network Watcher
- Graph Representation: Represent infrastructure as nodes and edges
- MCP Tools: Expose powerful tools for searching, exploring, and analyzing Azure infrastructure
Available Tools
search_resources: Search Azure resources by name, type, or other propertiesget_resource: Get detailed information about a specific Azure resourceget_neighbors: Get resources connected to a specific resourcefind_path: Find connection paths between two Azure resourcesexport_topology: Export the complete topology graph (JSON or summary)refresh_topology: Refresh the topology cache by re-querying Azure
Prerequisites
- Azure Service Principal: You need an Azure service principal with appropriate permissions
- Azure Permissions: The service principal needs at least
Readeraccess to the subscriptions and resource groups you want to query - Node.js: Version 16 or later
Setup
1. Clone and Install Dependencies
git clone <your-repo-url>
cd azure_mcp_graph
npm install
2. Configure Azure Credentials
Create a .env file in the project root:
AZURE_TENANT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_CLIENT_ID=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
AZURE_CLIENT_SECRET=your-service-principal-secret
SUBSCRIPTION_IDS=sub-id-1,sub-id-2,sub-id-3
DEFAULT_RG=MyWorkloadRG
DEFAULT_REGION=eastus
NETWORK_WATCHER_NAME=NetworkWatcher_eastus
3. Build the Server
npm run build
4. Configure Cursor MCP
Add the following to your Cursor MCP configuration file (usually ~/.cursor/config.json):
{
"mcpServers": {
"azure-graph": {
"command": "node",
"args": ["/path/to/azure_mcp_graph/dist/server.js"],
"env": {
"AZURE_TENANT_ID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"AZURE_CLIENT_ID": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"AZURE_CLIENT_SECRET": "your-service-principal-secret",
"SUBSCRIPTION_IDS": "sub-id-1,sub-id-2,sub-id-3",
"DEFAULT_RG": "MyWorkloadRG",
"DEFAULT_REGION": "eastus",
"NETWORK_WATCHER_NAME": "NetworkWatcher_eastus"
}
}
}
}
Usage Examples
Once configured, you can use the following commands in Cursor:
Search for Resources
Search for all virtual machines in my infrastructure
Explore Resource Relationships
Show me all resources connected to my VM named "web-server-01"
Find Connectivity Paths
Find the network path between my application gateway and backend VMs
Export Topology
Export a summary of my entire Azure topology
Development
Run in Development Mode
npm run dev
Build
npm run build
Clean Build Output
npm run clean
Architecture
The server consists of several key components:
- Azure Clients: Interfaces with Azure Resource Graph, ARM, and Network Watcher APIs
- Graph Builder: Constructs topology graphs from Azure resource data
- Relationship Analyzer: Identifies and builds relationships between resources
- MCP Tools: Exposes functionality through the Model Context Protocol
- Caching: Intelligent caching with configurable TTL for performance
Troubleshooting
Authentication Issues
- Ensure your service principal has the correct permissions
- Verify your Azure credentials are correctly configured
- Check that your subscription IDs are valid and accessible
Performance Issues
- The server caches topology data for 5 minutes by default
- Use
refresh_topologytool to force a cache refresh - Consider filtering by resource type for large subscriptions
Network Issues
- Ensure your environment has access to Azure APIs
- Check firewall and proxy settings if running behind corporate networks
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Test thoroughly
- Submit a pull request
License
This project is licensed under the ISC License - see the package.json file for details.
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.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
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.