NetBox MCP Server - Read & Write Edition
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| NETBOX_URL | Yes | The URL of your NetBox instance | |
| NETBOX_TOKEN | Yes | Your NetBox API token |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Server capabilities have not been inspected yet.
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| netbox_get_objectsB | Get objects from NetBox based on their type and filters Args: object_type: String representing the NetBox object type (e.g. "devices", "ip-addresses") filters: dict of filters to apply to the API call based on the NetBox API filtering options Valid object_type values: DCIM (Device and Infrastructure):
IPAM (IP Address Management):
Circuits:
Virtualization:
Tenancy:
VPN:
Wireless:
See NetBox API documentation for filtering options for each object type. |
| netbox_get_object_by_idC | Get detailed information about a specific NetBox object by its ID. Args: object_type: String representing the NetBox object type (e.g. "devices", "ip-addresses") object_id: The numeric ID of the object Returns: Complete object details |
| netbox_get_changelogsA | Get object change records (changelogs) from NetBox based on filters. Args: filters: dict of filters to apply to the API call based on the NetBox API filtering options Returns: List of changelog objects matching the specified filters Filtering options include:
Example: To find all changes made to a specific device with ID 123: {"changed_object_type_id": "dcim.device", "changed_object_id": 123} To find all deletions in the last 24 hours: {"action": "delete", "time_after": "2023-01-01T00:00:00Z"} Each changelog entry contains:
|
| netbox_create_objectB | Create a new object in NetBox. Args: object_type: String representing the NetBox object type (e.g. "devices", "ip-addresses") data: Dict containing the object data to create Returns: The created object as a dict Example: To create a new site: netbox_create_object("sites", { "name": "New Site", "slug": "new-site", "status": "active" }) To create a new device: netbox_create_object("devices", { "name": "new-device", "device_type": 1, # ID of device type "site": 1, # ID of site "role": 1, # ID of device role "status": "active" }) |
| netbox_update_objectB | Update an existing object in NetBox. Args: object_type: String representing the NetBox object type (e.g. "devices", "ip-addresses") object_id: The numeric ID of the object to update data: Dict containing the object data to update (only changed fields needed) Returns: The updated object as a dict Example: To update a site's description: netbox_update_object("sites", 1, {"description": "Updated description"}) To change a device's status: netbox_update_object("devices", 5, {"status": "offline"}) |
| netbox_delete_objectA | Delete an object from NetBox. Args: object_type: String representing the NetBox object type (e.g. "devices", "ip-addresses") object_id: The numeric ID of the object to delete Returns: True if deletion was successful WARNING: This permanently deletes the object and cannot be undone! Example: To delete a device: netbox_delete_object("devices", 5) To delete an IP address: netbox_delete_object("ip-addresses", 123) |
| netbox_bulk_create_objectsB | Create multiple objects in NetBox in a single request. Args: object_type: String representing the NetBox object type (e.g. "devices", "ip-addresses") data: List of dicts containing the object data to create Returns: List of created objects Example: To create multiple sites: netbox_bulk_create_objects("sites", [ {"name": "Site A", "slug": "site-a", "status": "active"}, {"name": "Site B", "slug": "site-b", "status": "active"} ]) |
| netbox_bulk_update_objectsA | Update multiple objects in NetBox in a single request. Args: object_type: String representing the NetBox object type (e.g. "devices", "ip-addresses") data: List of dicts containing the object data to update (must include "id" field) Returns: List of updated objects Example: To update multiple devices: netbox_bulk_update_objects("devices", [ {"id": 1, "status": "offline"}, {"id": 2, "status": "maintenance"} ]) |
| netbox_bulk_delete_objectsA | Delete multiple objects from NetBox in a single request. Args:
object_type: String representing the NetBox object type (e.g. "devices", "ip-addresses") Returns: Success status WARNING: This permanently deletes the objects and cannot be undone! Example: To delete multiple devices: netbox_bulk_delete_objects("devices", [5, 6, 7]) |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 9 tools
Every tool has a clearly distinct purpose with no ambiguity. The bulk operations (create, update, delete) are separate from single-object operations, and changelog retrieval is a distinct audit function. The object_type parameter consistently differentiates which resource each tool acts upon.
All tools follow a perfect 'netbox_verb_object' pattern with consistent snake_case throughout. The naming is predictable: netbox_create_object, netbox_get_objects, netbox_update_object, etc., with clear differentiation between singular and bulk operations.
9 tools is well-scoped for a comprehensive NetBox API interface. It covers all essential CRUD operations (create, read, update, delete) for both single and bulk scenarios, plus changelog retrieval, without being overwhelming or redundant.
The toolset provides complete CRUD/lifecycle coverage for NetBox's domain. It includes single and bulk operations for create, read, update, and delete, plus changelog access for audit trails. There are no obvious gaps for the stated read/write purpose.