Nautobot MCP Demo Build (Cursor)
Date: April 2026
FMCP Version: 0.5
Agent: Cursor (Composer)
MCP Connection
- Connected to MCP server:
project-0-MPC_development-IBrokeProd(server nameIBrokeProd). - Validated tool groups with
helpactions before building (dcim,ipam,extras). - No
mcp_authtool was present for this server, so no additional interactive auth step was required in-session.
Network Built
Built a small routed topology in Nautobot consisting of:
- 1 region and 1 data center location
- 2 routers in the new data center
- 1 physical link (cable) between router interfaces
- 3 prefixes (
/16,/24,/31) - 4 IP addresses (2 loopbacks + 2 transit)
- Interface/IP bindings and device primary IPv4 assignments
Objects Created
Locations
- Region:
Cursor Demo Region- ID:
c08b1aab-a99d-49dd-a02d-688ff77a200c
- ID:
- Data Center:
Cursor Demo DC1(child ofCursor Demo Region)- ID:
8bf480b9-4547-4379-b22e-9de09262c7f2
- ID:
Devices
cursor-demo-rtr1- ID:
c295258b-920c-4b46-a7da-56ea47b35a46 - Device Type:
Cisco ASR9001 - Role:
Router - Primary IPv4:
10.60.0.1/32
- ID:
cursor-demo-rtr2- ID:
d6db428e-4be5-41bb-a72a-50725f0262d0 - Device Type:
Cisco ASR9001 - Role:
Router - Primary IPv4:
10.60.0.2/32
- ID:
Interfaces
cursor-demo-rtr1Loopback0(virtual) — IDd9f6a980-77ec-4878-854d-fe07791fa993Ethernet0/0(1000base-t) — ID5759a685-8333-4952-b0a9-c56d4622dce7
cursor-demo-rtr2Loopback0(virtual) — ID2e277920-d814-4c9b-9056-f7499218cd5bEthernet0/0(1000base-t) — ID269d37cb-3504-43ac-8231-6bb1440e8e78
Cable
- Label:
cursor-demo-rtr1:Eth0/0 <-> cursor-demo-rtr2:Eth0/0 - ID:
7603fcc5-973b-4e45-8ee7-c82dfaf6ea99 - Type:
aoc - Status:
Connected
Prefixes (Global Namespace)
10.60.0.0/16(container) — ID75306190-4425-435b-bba7-6d81ad329a1c10.60.0.0/24(loopback subnet) — ID0325cc68-ec24-4667-a877-f3f3bda2481210.60.2.0/31(P2P transit subnet) — ID08e3b6c2-85e2-42c2-a9a8-d81c85f90bb4
IP Addresses
10.60.0.1/32(cursor-demo-rtr1 loopback) — ID6785c697-f47f-4f9a-9221-e5036b4f596b10.60.0.2/32(cursor-demo-rtr2 loopback) — ID8bd4aef9-5dd0-496a-9782-6c66f9bb479e10.60.2.0/31(cursor-demo-rtr1 transit) — ID6dca681f-ca6b-49e5-900c-f01535df1c9310.60.2.1/31(cursor-demo-rtr2 transit) — ID69d7e168-2c3c-4e4f-8ab0-a1980f433cc3
IP-to-Interface Assignments
10.60.0.1/32->cursor-demo-rtr1 Loopback0(primary on interface)- Assignment ID:
69f952eb-e364-4592-960d-3b5911e07884
- Assignment ID:
10.60.0.2/32->cursor-demo-rtr2 Loopback0(primary on interface)- Assignment ID:
04529aff-19c8-4e5e-8834-c7cd93e0f37f
- Assignment ID:
10.60.2.0/31->cursor-demo-rtr1 Ethernet0/0- Assignment ID:
050307b3-aac9-489b-90fc-38fe92b48e93
- Assignment ID:
10.60.2.1/31->cursor-demo-rtr2 Ethernet0/0- Assignment ID:
4b9263ad-cbd4-4310-8038-5af8a2bacc1d
- Assignment ID:
Verification Notes
- Confirmed the new DC (
Cursor Demo DC1) reportsdevice_count: 2. - Confirmed both
Ethernet0/0interfaces now show cable peers andconnected_endpoint_reachable: true. - Confirmed both devices now have
primary_ip4populated from their loopback addresses.
Pattern Validation (Demo Server)
This server is intended to demonstrate which MCP usage patterns work reliably in live Nautobot and which do not.
Patterns That Worked
Dispatcher pattern (
group -> resource -> action)- Used
dcim,ipam, andextrasdispatchers successfully. - Created and linked all required objects for a routed mini-topology without unrecoverable failures.
action="help"provided enough discovery to continue building safely when exact action syntax was unknown.
- Used
Incremental object graph build
- Building in dependency order (location -> device -> interface -> cable -> IP -> binding -> primary IP) worked consistently.
- Explicit IDs made downstream linking deterministic.
Nautobot 2.x binding model
ipaddresstointerfacejoin records were required and worked as expected.- Setting
primary_ip4after assignment worked reliably.
Patterns That Did Not Work (or Were Fragile)
Assumed filter operators
prefix__icandaddress__icwere rejected (Unknown filter field), so partial-text filtering was not universally available.- Reliable path in this session was direct
retrieveby known object ID.
Zero-discovery operation
- Skipping discovery entirely is brittle in unfamiliar environments.
- One-time
helpprobes are low cost and prevented invalid calls.
Token Take for Demo Purposes
Dispatcher vs Flat MCP Tool Listing
For this demo goal, the dispatcher pattern is the better fit and likely lower token cost in real agent sessions:
Why it saves tokens
- The model reasons over a few dispatcher schemas instead of hundreds or thousands of flat tool schemas.
- Schema footprint stays compact while retaining full backend capability.
Where it adds tokens
- Discovery calls (
action="help") add some overhead early in the run. - In repeat sessions, that is typically amortized because the workflow becomes known.
- Discovery calls (
Demo conclusion
- Dispatcher pattern is validated as "works and scales better for agent context."
- Flat tool exposure is useful for manual/debug inspection, but is generally a worse default for large MCP surfaces.