NetBox MCP Server - Read & Write Edition
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@NetBox MCP Server - Read & Write EditionCreate a new server named 'web-01' in rack R42 at the NYC-DC1 site"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
NetBox MCP Server - Read & Write Edition
The first Model Context Protocol (MCP) server with full read AND write capabilities for NetBox.
Unlike existing read-only NetBox MCP implementations, this server provides comprehensive CRUD (Create, Read, Update, Delete) operations, enabling you to not only query your NetBox data but also modify it directly through LLMs that support MCP.
What Makes This Special
First Read-Write NetBox MCP: The only MCP server that allows both reading from AND writing to NetBox
Full CRUD Operations: Create, read, update, and delete any NetBox object type
Bulk Operations: Efficiently handle multiple objects at once
Comprehensive Coverage: Supports all major NetBox models (DCIM, IPAM, Circuits, Virtualization, etc.)
Production Ready: Built with proper error handling, validation, and security practices
Related MCP server: NetBox MCP Server
Features
Read Operations
List and filter any NetBox object type
Get detailed information about specific objects
Access change history and audit trails
Advanced filtering and search capabilities
Write Operations
Create new devices, IP addresses, sites, racks, and more
Update existing object properties
Delete objects (with proper safeguards)
Bulk create, update, and delete operations
Supported Object Types
DCIM (Device and Infrastructure):
devices, device-types, device-roles, manufacturers
sites, locations, racks, rack-roles
cables, interfaces, power-ports, console-ports
platforms, regions, virtual-chassis
IPAM (IP Address Management):
ip-addresses, prefixes, vlans, vrfs
asns, aggregates, services
roles, rirs, route-targets
Circuits:
circuits, circuit-types, providers
circuit-terminations, provider-networks
Virtualization:
virtual-machines, clusters, cluster-groups
cluster-types, vm-interfaces
And many more...
Installation
Clone this repository:
git clone https://github.com/alexkiwi1/netbox-mcp-rw.git
cd netbox-mcp-rwInstall dependencies:
# Using UV (recommended)
uv sync
# Or using pip
pip install -e .Set environment variables:
export NETBOX_URL="https://your-netbox-instance.com/"
export NETBOX_TOKEN="your-api-token"Test the server:
NETBOX_URL=https://netbox.example.com/ NETBOX_TOKEN=<your-token> uv run server.pyMCP Client Configuration
Claude Desktop (Mac/Windows)
Add to your Claude Desktop configuration:
{
"mcpServers": {
"netbox-rw": {
"command": "uv",
"args": [
"--directory",
"/path/to/netbox-mcp-rw",
"run",
"server.py"
],
"env": {
"NETBOX_URL": "https://your-netbox-instance.com/",
"NETBOX_TOKEN": "your-api-token"
}
}
}
}Other MCP Clients
This server works with any MCP-compatible client. Adjust the command and arguments based on your client's requirements.
Usage Examples
Reading Data
"Show me all active devices in the NYC datacenter"
"List available IP addresses in the 10.0.1.0/24 subnet"
"What changes were made to devices last week?"Writing Data
"Create a new server called 'web-01' in rack R42 at site NYC-DC1"
"Add IP address 192.168.1.100/24 to device 'firewall-01'"
"Update device 'switch-01' status to maintenance mode"
"Create a new VLAN 100 named 'DMZ' at site headquarters"Bulk Operations
"Create 10 new servers with names web-01 through web-10"
"Update all Cisco devices to set the platform to 'ios'"
"Delete all IP addresses in the decommissioned subnet"Available Tools
Device Management
netbox_get_objects- List/filter any object typenetbox_get_object_by_id- Get specific object detailsnetbox_create_object- Create new objectsnetbox_update_object- Update existing objectsnetbox_delete_object- Delete objectsnetbox_bulk_create_objects- Bulk create operationsnetbox_bulk_update_objects- Bulk update operationsnetbox_bulk_delete_objects- Bulk delete operations
Audit & History
netbox_get_changelogs- Access change history and audit trails
Security Features
API tokens stored in environment variables (never hardcoded)
SSL/TLS verification enabled by default
Proper error handling and validation
Audit trail preservation through NetBox's built-in changelog
Requirements
Python 3.13+
NetBox instance with API access
Valid NetBox API token with appropriate permissions
Contributing
This is the first read-write NetBox MCP server - help us make it better:
Fork the repository
Create a feature branch
Make your changes
Add tests
Submit a pull request
Roadmap
Add input validation with Pydantic models
Implement caching for better performance
Add async support
Create comprehensive test suite
Add support for custom fields and plugins
License
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.
Acknowledgments
Built on top of the excellent FastMCP framework and NetBox's comprehensive REST API.
Warning: This server has write capabilities. Always test in a development environment first and ensure your API token has appropriate permissions. Use bulk operations carefully as they can modify many objects at once.
Available Tools
9 toolsnetbox_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"} ])
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | Yes | ||
| data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states it's a creation operation but doesn't disclose behavioral traits like required permissions, rate limits, error handling for partial failures, or whether it's transactional. The example adds some context but lacks comprehensive behavioral details needed for a mutation tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the purpose clearly, followed by structured sections for Args, Returns, and an Example. Every sentence earns its place without redundancy, making it efficient and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (bulk creation with 2 parameters), no annotations, and no output schema, the description is moderately complete. It covers purpose and parameters well but lacks details on behavioral aspects like permissions or error handling, which are important for a mutation tool. The example helps but doesn't fully compensate for the missing context.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description compensates well by explaining both parameters: 'object_type' as a string representing NetBox object type with examples, and 'data' as a list of dicts containing object data. It provides an example that clarifies usage, adding significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool creates multiple objects in NetBox in a single request, specifying the verb ('create multiple objects') and resource ('in NetBox'). It distinguishes from the singular 'netbox_create_object' sibling by emphasizing bulk operations, though it doesn't explicitly differentiate from other bulk siblings like 'netbox_bulk_update_objects'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for creating multiple objects at once, suggesting when to use it over the singular create tool. However, it doesn't provide explicit guidance on when to choose this over other bulk tools (e.g., 'netbox_bulk_update_objects') or mention any prerequisites or exclusions, leaving some context to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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")
object_ids: List of numeric IDs to delete
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])
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | Yes | ||
| object_ids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses critical behavioral traits: the operation is permanent ('cannot be undone'), destructive (deletes objects), and operates on multiple items in a single request. It also mentions the return value ('Success status'), though briefly. It doesn't cover authentication needs, rate limits, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and front-loaded with the core purpose, followed by Args, Returns, a WARNING, and an Example. Every section adds value without redundancy, making it efficient and easy to scan.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (destructive bulk operation), no annotations, no output schema, and 0% schema coverage, the description is mostly complete. It covers purpose, parameters, returns, and critical warnings, but lacks details on error responses, permissions, or sibling tool differentiation, which would be helpful for full contextual understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaning for both parameters: object_type is explained as a string representing NetBox object types with examples ('devices', 'ip-addresses'), and object_ids as a list of numeric IDs to delete. The example further clarifies usage, though it doesn't detail constraints like valid object_type values or ID formats.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Delete multiple objects') and resource ('from NetBox'), distinguishing it from siblings like netbox_delete_object (singular) and netbox_bulk_create_objects. It precisely communicates the bulk deletion functionality.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for deleting multiple objects at once, with the example showing deletion of multiple devices. However, it lacks explicit guidance on when to use this versus netbox_delete_object (for single deletions) or warnings about alternatives like netbox_bulk_update_objects for modifications instead of deletions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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"} ])
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | Yes | ||
| data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses that this is a mutation operation ('update') and specifies the required 'id' field in data, but lacks details on permissions, error handling, rate limits, or what happens with partial failures in bulk updates.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear purpose statement, parameter explanations, return value, and a practical example. It's appropriately sized, though the example could be slightly more concise, and every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a bulk mutation tool with 2 parameters, 0% schema coverage, no annotations, and no output schema, the description is adequate but incomplete. It covers the basics but lacks details on authentication, error responses, or the format of returned objects, which are important for safe usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It effectively explains both parameters: object_type as a string representing NetBox object types with examples, and data as a list of dicts requiring an 'id' field, adding crucial meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('update multiple objects'), resource ('in NetBox'), and scope ('in a single request'), distinguishing it from sibling tools like netbox_update_object (single object) and netbox_bulk_create_objects/delete_objects (different operations).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (updating multiple objects in bulk) and the example demonstrates usage, but it doesn't explicitly state when NOT to use it or compare it to alternatives like netbox_update_object for single updates, leaving some guidance implicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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" })
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | Yes | ||
| data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It states this is a creation operation but doesn't mention authentication requirements, rate limits, error conditions, or what happens on duplicate data. The examples show successful creation but don't describe failure modes or behavioral traits beyond the basic 'creates and returns' pattern.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (purpose, args, returns, examples) and front-loaded information. The examples are helpful but slightly lengthy. Most sentences earn their place, though some example details could potentially be condensed while maintaining clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a creation tool with 2 parameters, no annotations, and no output schema, the description provides adequate basics but lacks completeness. It explains parameters well and shows examples, but doesn't cover authentication, error handling, or return format details beyond 'dict'. Given the mutation nature and sibling tools, more context about when this tool fails or succeeds would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate, which it does effectively. It explains that 'object_type' is a string representing NetBox object types (e.g., 'devices', 'ip-addresses') and 'data' is a dict containing object data. The examples provide concrete syntax and format, adding significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb ('Create') and resource ('new object in NetBox'), making the purpose immediately understandable. However, it doesn't explicitly differentiate this single-object creation tool from its sibling 'netbox_bulk_create_objects', which handles multiple objects. The examples help clarify but don't provide explicit sibling differentiation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through examples (creating sites and devices) but doesn't explicitly state when to use this tool versus alternatives like 'netbox_bulk_create_objects' for multiple objects or 'netbox_update_object' for modifications. The context is clear (creating single objects), but no explicit guidance on exclusions or alternatives is provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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)
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | Yes | ||
| object_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It clearly states this is a destructive operation ('permanently deletes the object and cannot be undone'), which is crucial information for a deletion tool. It also specifies the return value (True if successful). However, it doesn't mention potential authentication requirements, error conditions, or rate limits.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Args, Returns, WARNING, Example) and front-loads the core purpose. Every sentence adds value, though the formatting with separate sections could be slightly more concise. The warning is appropriately emphasized for a destructive operation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a destructive tool with no annotations and no output schema, the description does well by explaining the irreversible nature, parameters, return value, and providing examples. However, it could be more complete by mentioning authentication requirements or error handling, which are important for a deletion operation in a system like NetBox.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description fully compensates by providing detailed parameter information. It explains what object_type represents ('String representing the NetBox object type') with concrete examples ('devices', 'ip-addresses'), and clarifies object_id as 'The numeric ID of the object to delete'. The examples further illustrate proper parameter usage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Delete') and resource ('an object from NetBox'), distinguishing it from siblings like netbox_create_object and netbox_update_object. It provides concrete examples showing deletion of different object types, making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for when to use this tool (permanently deleting objects) and includes a warning about irreversibility. However, it doesn't explicitly mention when NOT to use it or name specific alternatives like netbox_bulk_delete_objects for multiple deletions, leaving some guidance implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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:
user_id: Filter by user ID who made the change
user: Filter by username who made the change
changed_object_type_id: Filter by ContentType ID of the changed object
changed_object_id: Filter by ID of the changed object
object_repr: Filter by object representation (usually contains object name)
action: Filter by action type (created, updated, deleted)
time_before: Filter for changes made before a given time (ISO 8601 format)
time_after: Filter for changes made after a given time (ISO 8601 format)
q: Search term to filter by object representation
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:
id: The unique identifier of the changelog entry
user: The user who made the change
user_name: The username of the user who made the change
request_id: The unique identifier of the request that made the change
action: The type of action performed (created, updated, deleted)
changed_object_type: The type of object that was changed
changed_object_id: The ID of the object that was changed
object_repr: String representation of the changed object
object_data: The object's data after the change (null for deletions)
object_data_v2: Enhanced data representation
prechange_data: The object's data before the change (null for creations)
postchange_data: The object's data after the change (null for deletions)
time: The timestamp when the change was made
| Name | Required | Description | Default |
|---|---|---|---|
| filters | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It effectively discloses behavioral traits: it's a read operation (implied by 'Get'), returns a list of changelog objects, details the structure of each entry (e.g., id, user, action, time), and includes filtering capabilities. However, it does not mention potential limitations like rate limits, authentication needs, or pagination, which are relevant for API tools.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with clear sections (Args, Returns, Filtering options, Example, entry details) and front-loaded purpose. It is appropriately sized for the complexity, but could be slightly more concise by integrating some details (e.g., entry fields) into a more streamlined format without losing clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (filtering changelogs), no annotations, no output schema, and 0% schema coverage, the description is largely complete. It covers purpose, parameters with examples, return format, and entry details. However, it lacks information on error handling, pagination, or authentication, which are common in API contexts, leaving minor gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, with only one parameter ('filters') documented minimally in the schema. The description compensates fully by detailing filtering options (e.g., user_id, action, time_before), providing examples of filter usage, and explaining the parameter's role in the API call. This adds significant meaning beyond the basic schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get object change records (changelogs) from NetBox based on filters.' It specifies the verb ('Get'), resource ('object change records'), and scope ('from NetBox based on filters'), but does not explicitly differentiate it from sibling tools like 'netbox_get_objects' or 'netbox_get_object_by_id' beyond the changelog focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving changelogs with filtering, but does not explicitly state when to use this tool versus alternatives like 'netbox_get_objects' for current data. It provides example use cases (e.g., finding changes to a device or deletions in a time range), which offer some contextual guidance, but lacks direct comparisons or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | Yes | ||
| object_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It states this is a read operation ('Get'), implying it's non-destructive, but doesn't disclose behavioral traits like authentication requirements, rate limits, error handling, or what 'Complete object details' entails (e.g., format, depth). For a tool with no annotations, this leaves significant gaps in understanding how it behaves.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is appropriately sized and front-loaded: the first sentence states the core purpose clearly. The 'Args' and 'Returns' sections are structured but slightly verbose for such a simple tool. Every sentence adds value, though it could be more concise by integrating the parameter details into the main text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (2 parameters, no nested objects) but lack of annotations and output schema, the description is minimally adequate. It covers the basic what and how but misses context like error cases, performance, or integration with siblings. For a read-only tool, this is passable but leaves the agent to guess about behavioral nuances.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The description adds basic meaning for both parameters: 'object_type' is described as 'String representing the NetBox object type (e.g. "devices", "ip-addresses")' and 'object_id' as 'The numeric ID of the object.' With schema description coverage at 0%, this compensates somewhat by providing examples and clarifications. However, it doesn't detail constraints (e.g., valid object types, ID ranges) or advanced usage, keeping it at a baseline level.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get detailed information about a specific NetBox object by its ID.' It specifies the verb ('Get'), resource ('NetBox object'), and key constraint ('by its ID'). However, it doesn't explicitly distinguish this from sibling tools like 'netbox_get_objects' (which likely lists objects rather than fetching a specific one).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'netbox_get_objects' (for listing) or 'netbox_get_changelogs' (for history), nor does it specify prerequisites or contexts where this tool is preferred. The agent must infer usage from the name and description alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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):
cables
console-ports
console-server-ports
devices
device-bays
device-roles
device-types
front-ports
interfaces
inventory-items
locations
manufacturers
modules
module-bays
module-types
platforms
power-feeds
power-outlets
power-panels
power-ports
racks
rack-reservations
rack-roles
regions
sites
site-groups
virtual-chassis
IPAM (IP Address Management):
asns
asn-ranges
aggregates
fhrp-groups
ip-addresses
ip-ranges
prefixes
rirs
roles
route-targets
services
vlans
vlan-groups
vrfs
Circuits:
circuits
circuit-types
circuit-terminations
providers
provider-networks
Virtualization:
clusters
cluster-groups
cluster-types
virtual-machines
vm-interfaces
Tenancy:
tenants
tenant-groups
contacts
contact-groups
contact-roles
VPN:
ike-policies
ike-proposals
ipsec-policies
ipsec-profiles
ipsec-proposals
l2vpns
tunnels
tunnel-groups
Wireless:
wireless-lans
wireless-lan-groups
wireless-links
See NetBox API documentation for filtering options for each object type.
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | Yes | ||
| filters | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions filtering based on NetBox API options, hinting at read-only behavior, but doesn't explicitly state whether this is a safe read operation, its pagination or rate limits, error handling, or output format. For a tool with two parameters and no annotation coverage, this leaves significant gaps in understanding its behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and args, but the lengthy list of object types (over 60 items) dominates the text, making it verbose. While the list is informative, it could be summarized or referenced externally to improve conciseness. The structure is logical but not optimally sized for quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 2 parameters, no annotations, no output schema, and 0% schema coverage, the description does well by detailing parameter semantics and object types. However, it lacks information on behavioral aspects (e.g., read-only nature, pagination) and output format, which are critical for a retrieval tool. It's partially complete but misses key contextual elements for full agent understanding.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It provides extensive context: 'object_type' is explained with a string example and a comprehensive list of valid values across categories (DCIM, IPAM, etc.), and 'filters' is described as a dict for API filtering with a reference to NetBox documentation. This adds substantial meaning beyond the bare schema, though it doesn't detail filter syntax or examples.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Get objects from NetBox based on their type and filters.' It specifies the verb ('Get') and resource ('objects from NetBox'), and distinguishes it from siblings like 'netbox_get_object_by_id' by implying bulk retrieval with filters. However, it doesn't explicitly differentiate from other read operations like 'netbox_get_changelogs' beyond the object focus.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for retrieving multiple objects with filtering, as opposed to 'netbox_get_object_by_id' for single objects by ID. It lists valid object types, suggesting when to use it for specific data categories. However, it lacks explicit guidance on when not to use it (e.g., vs. bulk operations or changelogs) or clear alternatives beyond the implied sibling distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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"})
| Name | Required | Description | Default |
|---|---|---|---|
| object_type | Yes | ||
| object_id | Yes | ||
| data | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It discloses that it updates existing objects and returns the updated object, but lacks critical behavioral details such as required permissions, whether changes are reversible, error handling, or rate limits. For a mutation tool with zero annotation coverage, this is a significant gap.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. It starts with a clear purpose, lists args and returns with brief explanations, and includes two relevant examples. Every sentence adds value without redundancy, making it easy to scan and understand.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (mutation with 3 parameters, no annotations, no output schema), the description is moderately complete. It covers the basic purpose, parameters, and examples, but lacks details on behavioral aspects like authentication, side effects, or error cases. Without an output schema, it should ideally explain return values more thoroughly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It adds meaningful semantics: 'object_type' is described as a string representing NetBox object types with examples, 'object_id' as a numeric ID, and 'data' as a dict containing only changed fields. This goes beyond the schema's basic types, providing practical context and usage guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Update an existing object in NetBox.' It specifies the verb ('update') and resource ('existing object'), but doesn't explicitly differentiate from siblings like 'netbox_bulk_update_objects' or 'netbox_create_object' beyond the singular vs. plural naming.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage through examples (e.g., updating a site's description or device's status) but doesn't explicitly state when to use this tool versus alternatives like 'netbox_bulk_update_objects' for multiple updates or 'netbox_create_object' for new objects. The context is clear but lacks explicit guidance on exclusions or prerequisites.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
9 tool updates
v1.0.0- Changed
netbox_bulk_create_objects1 field changed- added
Input schema / titleAdded value: +"netbox_bulk_create_objectsArguments"
- Changed
netbox_bulk_delete_objects1 field changed- added
Input schema / titleAdded value: +"netbox_bulk_delete_objectsArguments"
- Changed
netbox_bulk_update_objects1 field changed- added
Input schema / titleAdded value: +"netbox_bulk_update_objectsArguments"
- Changed
netbox_create_object1 field changed- added
Input schema / titleAdded value: +"netbox_create_objectArguments"
- Changed
netbox_delete_object1 field changed- added
Input schema / titleAdded value: +"netbox_delete_objectArguments"
- Changed
netbox_get_changelogs1 field changed- added
Input schema / titleAdded value: +"netbox_get_changelogsArguments"
- Changed
netbox_get_object_by_id1 field changed- added
Input schema / titleAdded value: +"netbox_get_object_by_idArguments"
- Changed
netbox_get_objects1 field changed- added
Input schema / titleAdded value: +"netbox_get_objectsArguments"
- Changed
netbox_update_object1 field changed- added
Input schema / titleAdded value: +"netbox_update_objectArguments"
9 tool updates
- First observed
netbox_bulk_create_objects - First observed
netbox_bulk_delete_objects - First observed
netbox_bulk_update_objects - First observed
netbox_create_object - First observed
netbox_delete_object - First observed
netbox_get_changelogs - First observed
netbox_get_object_by_id - First observed
netbox_get_objects - First observed
netbox_update_object
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.
Maintenance
Related MCP Connectors
Provides capabilities that let LLM agents perform a range of infrastructure management tasks.
Protocol-native energy infrastructure orchestration for AI data centers. Provides 46 MCP tools across 8 grid protocols (IEC-61850, DNP3, Modbus, OCPP, OpenADR, IEEE 2030.5, IEC 60870-5-104, ICCP) with 5 core API primitives: connect, dispatch, settle, comply, and intel. Enables AI agents to programmatically interact with substations, grid interfaces, and energy assets for real-time workload-grid coordination.
Manage Rackspace Spot Kubernetes Cloudspaces, node pools, and VMs from your AI assistant.
- PlixanaOAuthcom.plixana
Operate the Plixana CRM from any AI: contacts, deals, quotes, WhatsApp and metrics.
Related MCP Servers
- AlicenseBqualityDmaintenanceEnables read-only interaction with NetBox network documentation and infrastructure data through LLMs. Allows querying devices, sites, IP addresses, and viewing change history via natural language.3Apache 2.0
- FlicenseNot gradedqualityNot gradedmaintenanceEnables interaction with NetBox infrastructure management platform to query and manage devices, VMs, IP addresses, and VLANs. Features secure HashiCorp Vault integration and PostgreSQL state tracking for comprehensive infrastructure automation.2-
- AlicenseAqualityCmaintenanceEnables LLMs to manage IP addresses, subnets, and network sections through natural language, with security features like read-only by default.13MIT
- AlicenseBqualityAmaintenanceGives AI assistants read (and optionally write) access to a NetBox instance, covering DCIM, IPAM, circuits, virtualization, tenancy, and more.10021MIT