Skip to main content
Glama
alexkiwi1

NetBox MCP Server - Read & Write Edition

by alexkiwi1

netbox_bulk_update_objects

Update multiple NetBox objects simultaneously by specifying object type and data with IDs, reducing API calls and saving time.

Instructions

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
dataYes
object_typeYes

Implementation Reference

  • The main handler function for the 'netbox_bulk_update_objects' tool. It is registered via the @mcp.tool() decorator. Validates the object_type using the NETBOX_OBJECT_TYPES mapping, resolves the API endpoint, and calls the NetBoxRestClient's bulk_update method to perform the bulk PATCH request.
    @mcp.tool() def netbox_bulk_update_objects(object_type: str, data: list): """ 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"} ]) """ # Validate object_type exists in mapping if object_type not in NETBOX_OBJECT_TYPES: valid_types = "\n".join(f"- {t}" for t in sorted(NETBOX_OBJECT_TYPES.keys())) raise ValueError(f"Invalid object_type. Must be one of:\n{valid_types}") # Get API endpoint from mapping endpoint = NETBOX_OBJECT_TYPES[object_type] # Make API call return netbox.bulk_update(endpoint, data)
  • Shared helper constant mapping object_type names to NetBox API endpoints. Used by the tool's handler for validation and endpoint resolution.
    # Mapping of simple object names to API endpoints NETBOX_OBJECT_TYPES = { # DCIM (Device and Infrastructure) "cables": "dcim/cables", "console-ports": "dcim/console-ports", "console-server-ports": "dcim/console-server-ports", "devices": "dcim/devices", "device-bays": "dcim/device-bays", "device-roles": "dcim/device-roles", "device-types": "dcim/device-types", "front-ports": "dcim/front-ports", "interfaces": "dcim/interfaces", "inventory-items": "dcim/inventory-items", "locations": "dcim/locations", "manufacturers": "dcim/manufacturers", "modules": "dcim/modules", "module-bays": "dcim/module-bays", "module-types": "dcim/module-types", "platforms": "dcim/platforms", "power-feeds": "dcim/power-feeds", "power-outlets": "dcim/power-outlets", "power-panels": "dcim/power-panels", "power-ports": "dcim/power-ports", "racks": "dcim/racks", "rack-reservations": "dcim/rack-reservations", "rack-roles": "dcim/rack-roles", "regions": "dcim/regions", "sites": "dcim/sites", "site-groups": "dcim/site-groups", "virtual-chassis": "dcim/virtual-chassis", # IPAM (IP Address Management) "asns": "ipam/asns", "asn-ranges": "ipam/asn-ranges", "aggregates": "ipam/aggregates", "fhrp-groups": "ipam/fhrp-groups", "ip-addresses": "ipam/ip-addresses", "ip-ranges": "ipam/ip-ranges", "prefixes": "ipam/prefixes", "rirs": "ipam/rirs", "roles": "ipam/roles", "route-targets": "ipam/route-targets", "services": "ipam/services", "vlans": "ipam/vlans", "vlan-groups": "ipam/vlan-groups", "vrfs": "ipam/vrfs", # Circuits "circuits": "circuits/circuits", "circuit-types": "circuits/circuit-types", "circuit-terminations": "circuits/circuit-terminations", "providers": "circuits/providers", "provider-networks": "circuits/provider-networks", # Virtualization "clusters": "virtualization/clusters", "cluster-groups": "virtualization/cluster-groups", "cluster-types": "virtualization/cluster-types", "virtual-machines": "virtualization/virtual-machines", "vm-interfaces": "virtualization/interfaces", # Tenancy "tenants": "tenancy/tenants", "tenant-groups": "tenancy/tenant-groups", "contacts": "tenancy/contacts", "contact-groups": "tenancy/contact-groups", "contact-roles": "tenancy/contact-roles", # VPN "ike-policies": "vpn/ike-policies", "ike-proposals": "vpn/ike-proposals", "ipsec-policies": "vpn/ipsec-policies", "ipsec-profiles": "vpn/ipsec-profiles", "ipsec-proposals": "vpn/ipsec-proposals", "l2vpns": "vpn/l2vpns", "tunnels": "vpn/tunnels", "tunnel-groups": "vpn/tunnel-groups", # Wireless "wireless-lans": "wireless/wireless-lans", "wireless-lan-groups": "wireless/wireless-lan-groups", "wireless-links": "wireless/wireless-links", # Extras "config-contexts": "extras/config-contexts", "custom-fields": "extras/custom-fields", "export-templates": "extras/export-templates", "image-attachments": "extras/image-attachments", "jobs": "extras/jobs", "saved-filters": "extras/saved-filters", "scripts": "extras/scripts", "tags": "extras/tags", "webhooks": "extras/webhooks", }
  • Core helper method in NetBoxRestClient that implements the bulk update by sending a PATCH request to the NetBox REST API bulk endpoint with the provided data list.
    def bulk_update(self, endpoint: str, data: List[Dict[str, Any]]) -> List[Dict[str, Any]]: """ Update multiple objects in NetBox via the REST API. Args: endpoint: The API endpoint (e.g., 'dcim/sites', 'ipam/prefixes') data: List of object data to update (must include ID) Returns: List of updated objects as dicts Raises: requests.HTTPError: If the request fails """ url = f"{self._build_url(endpoint)}bulk/" response = self.session.patch(url, json=data, verify=self.verify_ssl) response.raise_for_status() return response.json()
  • The docstring of the handler function defines the tool's input schema (parameters: object_type str, data list[dict]), expected data format (data items must include 'id'), return type, and usage examples.
    """ 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"} ]) """

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/alexkiwi1/netbox-mcp-rw'

If you have feedback or need assistance with the MCP directory API, please join our Discord server