# NetBox MCP Server A Model Context Protocol (MCP) server that connects to NetBox and exposes network infrastructure data for use with Claude and other MCP-compatible LLMs. ## Overview This server provides a bridge between NetBox and MCP-compatible LLMs like Claude, allowing you to: - Query and analyze your network infrastructure data - Check device configurations and connections - Examine virtualization clusters and virtual machines - Analyze VLANs, IP address allocations, and more - Generate network topology information - Detect NVMe storage in clusters The server exposes: - **Tools**: Functions that perform operations ## Requirements - Python 3.10 or higher - NetBox instance with API access - NetBox API token with read permissions - `httpx` library for HTTP requests - `mcp` Python SDK for Model Context Protocol ## Installation ### Using uv (recommended) ```bash # Create a virtual environment uv venv source .venv/bin/activate # On Windows: .venv\Scripts\activate # Install required packages uv add mcp httpx ``` ### Using pip ```bash # Create a virtual environment python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install required packages pip install mcp httpx ``` ## Usage ### Running the Server Directly ```bash python netbox_server.py --url https://your-netbox-instance.example.com --token your-api-token ``` You can also set environment variables instead of using command-line arguments: ```bash export NETBOX_URL="https://your-netbox-instance.example.com" export NETBOX_TOKEN="your-api-token" python netbox_server.py ``` ### Integration with Claude Desktop To integrate with Claude Desktop: 1. Install Claude Desktop from [https://claude.ai/download](https://claude.ai/download) 2. Open the Claude menu and select "Settings..." 3. Click on "Developer" in the left sidebar 4. Click on "Edit Config" 5. Add the NetBox server configuration to `claude_desktop_config.json`: ```json { "mcpServers": { "netbox": { "command": "python", "args": [ "/path/to/netbox_server.py", "--url", "https://your-netbox-instance.example.com", "--token", "your-api-token" ] } } } ``` 6. Save the file and restart Claude Desktop ## Available Features ### Tools The server provides these tools: - `get_all_clusters` - Get list of all clusters with key information - `get_cluster_virtual_machines` - Get all VMs in a specific cluster - `get_cluster_interfaces` - Get all interfaces from all VMs in a cluster ## Example Queries for Claude Once the server is connected to Claude Desktop, you can ask questions like: - "Show me a list of all clusters in our NetBox instance" - "Show me all the virtual machines in our primary cluster" ## License This project is licensed under the MIT License - see the LICENSE file for details. ## Acknowledgments - [NetBox](https://github.com/netbox-community/netbox) - Network infrastructure modeling - [Model Context Protocol](https://modelcontextprotocol.io) - Protocol for providing context to LLMs - [Claude](https://claude.ai) - Anthropic's AI assistant