- Move repository from bandit to personal-projects organization - Remove all "Bandit Labs" references - Update author to Leo Miranda - Rename marketplace from bandit-claude-marketplace to claude-code-marketplace - Add MIT LICENSE file - Remove outdated root .mcp.json (MCP servers now bundled in plugins) - Update all repository URLs to new location Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
8.6 KiB
8.6 KiB
NetBox MCP Server
MCP (Model Context Protocol) server for comprehensive NetBox API integration with Claude Code.
Overview
This MCP server provides Claude Code with full access to the NetBox REST API, enabling infrastructure management, documentation, and automation workflows. It covers all major NetBox application areas:
- DCIM - Sites, Locations, Racks, Devices, Interfaces, Cables, Power
- IPAM - IP Addresses, Prefixes, VLANs, VRFs, ASNs, Services
- Circuits - Providers, Circuits, Terminations
- Virtualization - Clusters, Virtual Machines, VM Interfaces
- Tenancy - Tenants, Contacts, Contact Assignments
- VPN - Tunnels, IKE/IPSec Policies, L2VPN
- Wireless - Wireless LANs, Links, Groups
- Extras - Tags, Custom Fields, Webhooks, Config Contexts, Audit Log
Installation
1. Clone and Setup
cd /path/to/mcp-servers/netbox
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
pip install -r requirements.txt
2. Configure Credentials
Create the system-level configuration file:
mkdir -p ~/.config/claude
cat > ~/.config/claude/netbox.env << 'EOF'
NETBOX_API_URL=https://your-netbox-instance/api
NETBOX_API_TOKEN=your-api-token-here
NETBOX_VERIFY_SSL=true
NETBOX_TIMEOUT=30
EOF
Getting a NetBox API Token:
- Log into your NetBox instance
- Navigate to your profile (top-right menu)
- Go to "API Tokens"
- Click "Add a token"
- Copy the generated token
3. Register with Claude Code
Add to your Claude Code MCP configuration (~/.config/claude/mcp.json or project .mcp.json):
{
"mcpServers": {
"netbox": {
"command": "/path/to/mcp-servers/netbox/.venv/bin/python",
"args": ["-m", "mcp_server.server"],
"cwd": "/path/to/mcp-servers/netbox"
}
}
}
Configuration
Environment Variables
| Variable | Required | Default | Description |
|---|---|---|---|
NETBOX_API_URL |
Yes | - | Full URL to NetBox API (e.g., https://netbox.example.com/api) |
NETBOX_API_TOKEN |
Yes | - | API authentication token |
NETBOX_VERIFY_SSL |
No | true |
Verify SSL certificates |
NETBOX_TIMEOUT |
No | 30 |
Request timeout in seconds |
Configuration Hierarchy
- System-level (
~/.config/claude/netbox.env): Credentials and defaults - Project-level (
.envin current directory): Optional overrides
Available Tools
DCIM (Data Center Infrastructure Management)
| Tool | Description |
|---|---|
dcim_list_sites |
List all sites |
dcim_get_site |
Get site details |
dcim_create_site |
Create a new site |
dcim_update_site |
Update a site |
dcim_delete_site |
Delete a site |
dcim_list_devices |
List all devices |
dcim_get_device |
Get device details |
dcim_create_device |
Create a new device |
dcim_update_device |
Update a device |
dcim_delete_device |
Delete a device |
dcim_list_interfaces |
List device interfaces |
dcim_create_interface |
Create an interface |
dcim_list_racks |
List all racks |
dcim_create_rack |
Create a new rack |
dcim_list_cables |
List all cables |
dcim_create_cable |
Create a cable connection |
| ... and many more |
IPAM (IP Address Management)
| Tool | Description |
|---|---|
ipam_list_prefixes |
List IP prefixes |
ipam_create_prefix |
Create a prefix |
ipam_list_available_prefixes |
List available child prefixes |
ipam_create_available_prefix |
Auto-allocate a prefix |
ipam_list_ip_addresses |
List IP addresses |
ipam_create_ip_address |
Create an IP address |
ipam_list_available_ips |
List available IPs in prefix |
ipam_create_available_ip |
Auto-allocate an IP |
ipam_list_vlans |
List VLANs |
ipam_create_vlan |
Create a VLAN |
ipam_list_vrfs |
List VRFs |
| ... and many more |
Circuits
| Tool | Description |
|---|---|
circuits_list_providers |
List circuit providers |
circuits_create_provider |
Create a provider |
circuits_list_circuits |
List circuits |
circuits_create_circuit |
Create a circuit |
circuits_list_circuit_terminations |
List terminations |
| ... and more |
Virtualization
| Tool | Description |
|---|---|
virtualization_list_clusters |
List clusters |
virtualization_create_cluster |
Create a cluster |
virtualization_list_virtual_machines |
List VMs |
virtualization_create_virtual_machine |
Create a VM |
virtualization_list_vm_interfaces |
List VM interfaces |
| ... and more |
Tenancy
| Tool | Description |
|---|---|
tenancy_list_tenants |
List tenants |
tenancy_create_tenant |
Create a tenant |
tenancy_list_contacts |
List contacts |
tenancy_create_contact |
Create a contact |
| ... and more |
VPN
| Tool | Description |
|---|---|
vpn_list_tunnels |
List VPN tunnels |
vpn_create_tunnel |
Create a tunnel |
vpn_list_l2vpns |
List L2VPNs |
vpn_list_ike_policies |
List IKE policies |
vpn_list_ipsec_policies |
List IPSec policies |
| ... and more |
Wireless
| Tool | Description |
|---|---|
wireless_list_wireless_lans |
List wireless LANs |
wireless_create_wireless_lan |
Create a WLAN |
wireless_list_wireless_links |
List wireless links |
| ... and more |
Extras
| Tool | Description |
|---|---|
extras_list_tags |
List all tags |
extras_create_tag |
Create a tag |
extras_list_custom_fields |
List custom fields |
extras_list_webhooks |
List webhooks |
extras_list_journal_entries |
List journal entries |
extras_create_journal_entry |
Create journal entry |
extras_list_object_changes |
View audit log |
extras_list_config_contexts |
List config contexts |
| ... and more |
Usage Examples
List all devices at a site
Use the dcim_list_devices tool with site_id filter to see all devices at site 5
Create a new prefix and allocate IPs
1. Use ipam_create_prefix to create 10.0.1.0/24
2. Use ipam_list_available_ips with the prefix ID to see available addresses
3. Use ipam_create_available_ip to auto-allocate the next IP
Document a new server
1. Use dcim_create_device to create the device
2. Use dcim_create_interface to add network interfaces
3. Use ipam_create_ip_address to assign IPs to interfaces
4. Use extras_create_journal_entry to add notes
Audit recent changes
Use extras_list_object_changes to see recent modifications in NetBox
Architecture
mcp-servers/netbox/
├── mcp_server/
│ ├── __init__.py
│ ├── config.py # Configuration loader
│ ├── netbox_client.py # Generic HTTP client
│ ├── server.py # MCP server entry point
│ └── tools/
│ ├── __init__.py
│ ├── dcim.py # DCIM operations
│ ├── ipam.py # IPAM operations
│ ├── circuits.py # Circuits operations
│ ├── virtualization.py
│ ├── tenancy.py
│ ├── vpn.py
│ ├── wireless.py
│ └── extras.py
├── tests/
│ └── __init__.py
├── requirements.txt
└── README.md
API Coverage
This MCP server provides comprehensive coverage of the NetBox REST API v4.x:
- Full CRUD operations for all major models
- Filtering and search capabilities
- Special endpoints (available prefixes, available IPs)
- Pagination handling (automatic)
- Error handling with detailed messages
Error Handling
The server returns detailed error messages from the NetBox API, including:
- Validation errors
- Authentication failures
- Not found errors
- Permission errors
Security Notes
- API tokens should be kept secure and not committed to version control
- Use environment variables or the system config file for credentials
- SSL verification is enabled by default
- Consider using read-only tokens for query-only workflows
Troubleshooting
Common Issues
- Connection refused: Check
NETBOX_API_URLis correct and accessible - 401 Unauthorized: Verify your API token is valid
- SSL errors: Set
NETBOX_VERIFY_SSL=falsefor self-signed certs (not recommended for production) - Timeout errors: Increase
NETBOX_TIMEOUTfor slow connections
Debug Mode
Enable debug logging:
import logging
logging.basicConfig(level=logging.DEBUG)
Contributing
- Follow the existing code patterns
- Add tests for new functionality
- Update documentation for new tools
- Ensure compatibility with NetBox 4.x API
License
MIT License - Part of the Claude Code Marketplace (support-claude-mktplace).