Nautobot MCP Server User Guide¶
Nautobot MCP Server exposes Nautobot's REST and GraphQL APIs as Model Context Protocol tools. An AI client such as Claude Desktop or Cursor calls those tools instead of talking to Nautobot directly.
The project is nautobot-mcp on PyPI and bsmeding/nautobot-mcp-server on GitHub. Install and configuration are in the Admin Guide.
What you can ask¶
A read-only agent can answer questions such as "which active core devices in Amsterdam are missing a primary IP?" by composing search_devices, get_device_interfaces, and list_ip_addresses, or a single graphql_query.
With writes enabled and a scoped token, an agent can allocate prefixes and IPs, create cables, set statuses, and run Nautobot Jobs you already built.
For an MSP, lock one server to one customer with tenant scoping. Optional plugin tools can run Design Builder designs, onboard devices, trigger SSoT syncs, or check Golden Config compliance.
Connect Claude Desktop¶
uvx looks for an executable with the same name as the package, which is nautobot-mcp. Add this to claude_desktop_config.json:
{
"mcpServers": {
"nautobot": {
"command": "uvx",
"args": ["nautobot-mcp"],
"env": {
"NAUTOBOT_URL": "https://nautobot.example.com",
"NAUTOBOT_TOKEN": "YOUR_API_TOKEN"
}
}
}
}
If nautobot-mcp is already on PATH, set "command": "nautobot-mcp" and drop the uvx args.
This uses the stdio transport. Claude starts the process itself. You do not point Claude at the Nautobot URL.
HTTP and SSE¶
The Nautobot app does not serve MCP over HTTP. There is no /plugins/mcp-server endpoint to give a client. Run the console script with an HTTP transport, then point the client at that process or at a reverse proxy in front of it.
nautobot-mcp --transport streamable-http
nautobot-mcp --transport streamable-http --host 0.0.0.0 --port 8000
nautobot-mcp --transport sse
The default listen address is 127.0.0.1:8000. Streamable HTTP is at /mcp. SSE is at /sse. Use --host 0.0.0.0 (or NAUTOBOT_MCP_HOST) when the reverse proxy runs on another host. --port and NAUTOBOT_MCP_PORT change the port. A flag overrides the matching environment variable.
Read-only by default¶
rest_create, rest_update, and rest_delete stay blocked until NAUTOBOT_MCP_ALLOW_WRITES=true (or allow_writes: true in PLUGINS_CONFIG). GraphQL queries and Nautobot Job runs follow the API token's own permissions.
Tools¶
Start with nautobot_status, list_api_roots, tenant_scope_info, and list_active_plugins.
| Area | Tools |
|---|---|
| Discovery | nautobot_status, list_api_roots, list_endpoints_in, list_content_types, tenant_scope_info, list_active_plugins |
| Generic REST | rest_list, rest_get, rest_create, rest_update, rest_delete |
| DCIM | list_devices, get_device, get_device_interfaces, get_device_config_context, get_device_inventory, locations, racks, device types, roles, manufacturers, platforms, cables |
| IPAM | prefixes, available IPs and prefixes, IP addresses, VLANs, VLAN groups, VRFs, RIRs, namespaces |
| Circuits, tenancy, virtualization | circuits, providers, tenants, virtual machines, VM interfaces, clusters |
| Extras | jobs and job results, statuses, tags, roles, custom fields, relationships, config contexts, webhooks |
| Users | list_users, list_groups, list_object_permissions |
| GraphQL | graphql_query, graphql_introspect |
| Search | search_devices, search_ip_addresses, search_prefixes, search_locations, search_circuits |
Plugin tools register only when that integration is enabled. See the Admin Guide.