Skip to main content
Glama
alexkiwi1

NetBox MCP Server - Read & Write Edition

by alexkiwi1

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

  1. Clone this repository:

git clone https://github.com/alexkiwi1/netbox-mcp-rw.git
cd netbox-mcp-rw
  1. Install dependencies:

# Using UV (recommended)
uv sync

# Or using pip
pip install -e .
  1. Set environment variables:

export NETBOX_URL="https://your-netbox-instance.com/"
export NETBOX_TOKEN="your-api-token"
  1. Test the server:

NETBOX_URL=https://netbox.example.com/ NETBOX_TOKEN=<your-token> uv run server.py

MCP 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 type

  • netbox_get_object_by_id - Get specific object details

  • netbox_create_object - Create new objects

  • netbox_update_object - Update existing objects

  • netbox_delete_object - Delete objects

  • netbox_bulk_create_objects - Bulk create operations

  • netbox_bulk_update_objects - Bulk update operations

  • netbox_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:

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Add tests

  5. 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 tools
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"} ])

ParametersJSON Schema
NameRequiredDescriptionDefault
object_typeYes
dataYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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])

ParametersJSON Schema
NameRequiredDescriptionDefault
object_typeYes
object_idsYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness5/5

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.

Completeness4/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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"} ])

ParametersJSON Schema
NameRequiredDescriptionDefault
object_typeYes
dataYes

TDQS

A4/5.0
Behavior3/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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" })

ParametersJSON Schema
NameRequiredDescriptionDefault
object_typeYes
dataYes

TDQS

B3.3/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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)

ParametersJSON Schema
NameRequiredDescriptionDefault
object_typeYes
object_idYes

TDQS

A4.4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose5/5

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.

Usage Guidelines4/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
filtersYes

TDQS

A4/5.0
Behavior4/5

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.

Conciseness4/5

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.

Completeness4/5

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.

Parameters5/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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

ParametersJSON Schema
NameRequiredDescriptionDefault
object_typeYes
object_idYes

TDQS

C2.9/5.0
Behavior2/5

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.

Conciseness4/5

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.

Completeness3/5

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.

Parameters3/5

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.

Purpose4/5

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.

Usage Guidelines2/5

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.

ParametersJSON Schema
NameRequiredDescriptionDefault
object_typeYes
filtersYes

TDQS

B3.2/5.0
Behavior2/5

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.

Conciseness3/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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"})

ParametersJSON Schema
NameRequiredDescriptionDefault
object_typeYes
object_idYes
dataYes

TDQS

B3.4/5.0
Behavior2/5

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.

Conciseness5/5

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.

Completeness3/5

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.

Parameters4/5

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.

Purpose4/5

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.

Usage Guidelines3/5

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.

  1. 9 tool updatesv1.0.0
    • Changednetbox_bulk_create_objects1 field changed
      • addedInput schema / title
        Added value: +"netbox_bulk_create_objectsArguments"
    • Changednetbox_bulk_delete_objects1 field changed
      • addedInput schema / title
        Added value: +"netbox_bulk_delete_objectsArguments"
    • Changednetbox_bulk_update_objects1 field changed
      • addedInput schema / title
        Added value: +"netbox_bulk_update_objectsArguments"
    • Changednetbox_create_object1 field changed
      • addedInput schema / title
        Added value: +"netbox_create_objectArguments"
    • Changednetbox_delete_object1 field changed
      • addedInput schema / title
        Added value: +"netbox_delete_objectArguments"
    • Changednetbox_get_changelogs1 field changed
      • addedInput schema / title
        Added value: +"netbox_get_changelogsArguments"
    • Changednetbox_get_object_by_id1 field changed
      • addedInput schema / title
        Added value: +"netbox_get_object_by_idArguments"
    • Changednetbox_get_objects1 field changed
      • addedInput schema / title
        Added value: +"netbox_get_objectsArguments"
    • Changednetbox_update_object1 field changed
      • addedInput schema / title
        Added value: +"netbox_update_objectArguments"
  2. 9 tool updates
    • First observednetbox_bulk_create_objects
    • First observednetbox_bulk_delete_objects
    • First observednetbox_bulk_update_objects
    • First observednetbox_create_object
    • First observednetbox_delete_object
    • First observednetbox_get_changelogs
    • First observednetbox_get_object_by_id
    • First observednetbox_get_objects
    • First observednetbox_update_object

TDQS

A3.9/5.0

Scored across 9 tools

Disambiguation5/5

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.

Naming Consistency5/5

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.

Tool Count5/5

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.

Completeness5/5

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

ActivityInactive
ResponsivenessUnresponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    D
    maintenance
    Enables 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.
    3
    Apache 2.0
  • F
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables 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
    -