Skip to main content
Glama
netboxlabs

NetBox MCP Server

Official
by netboxlabs

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOSTNoHost address for HTTP server (required if TRANSPORT=http)127.0.0.1
PORTNoPort for HTTP server (required if TRANSPORT=http)8000
LOG_LEVELNoLogging verbosity (DEBUG, INFO, WARNING, ERROR, CRITICAL)INFO
TRANSPORTNoMCP transport protocol (stdio or http)stdio
NETBOX_URLYesBase URL of your NetBox instance (e.g., https://netbox.example.com/)
VERIFY_SSLNoWhether to verify SSL certificatestrue
NETBOX_TOKENYesAPI token for authentication
ENABLE_PLUGIN_DISCOVERYNoAuto-discover plugin object types at startupfalse

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
netbox_get_objectsA
Get objects from NetBox based on their type and filters

Args:
    object_type: String representing the NetBox object type (e.g. "dcim.device", "ipam.ipaddress")
    filters: dict of filters to apply to the API call based on the NetBox API filtering options

            FILTER RULES:
            Valid: Direct fields like {'site_id': 1, 'name': 'router', 'status': 'active'}
            Valid: Field-supported lookups like {'name__ic': 'switch', 'vid__gte': 100}
            Invalid: Multi-hop like {'device__site_id': 1} - NOT supported

            Lookup suffixes: n, ic, nic, isw, nisw, iew, niew, ie, nie,
                             empty, regex, iregex, lt, lte, gt, gte
            Lookup support is field-specific. NetBox may silently ignore unsupported
            lookups and return overly broad results. The '__in' suffix is not supported
            and is rejected by this tool. For multiple values, pass a list as the field
            value directly: {'vminterface_id': [621493, 631527]} or {'id': [1, 2, 3]}.

            Two-step pattern for cross-relationship queries:
              sites = netbox_get_objects('dcim.site', {'name': 'NYC'})
              netbox_get_objects('dcim.device', {'site_id': sites[0]['id']})

    fields: Optional list of specific fields to return
            **IMPORTANT: ALWAYS USE THIS PARAMETER TO MINIMIZE TOKEN USAGE**
            Field filtering significantly reduces response payload and is critical for performance.

            - None or [] = returns all fields (NOT RECOMMENDED - use only when you need complete objects)
            - ['id', 'name'] = returns only specified fields (RECOMMENDED)

            Examples:
            - For counting: ['id'] (minimal payload)
            - For listings: ['id', 'name', 'status']
            - For IP addresses: ['address', 'dns_name', 'description']

            Uses NetBox's native field filtering via ?fields= parameter.
            **Always specify only the fields you actually need.**

    brief: returns only a minimal representation of each object in the response.
           This is useful when you need only a list of available objects without any related data.

    limit: Maximum results to return (default 5, max 100)
           Start with default, increase only if needed

    offset: Skip this many results for pagination (default 0)
            Example: offset=0 (page 1), offset=5 (page 2), offset=10 (page 3)

    ordering: Fields used to determine sort order of results.
              Field names may be prefixed with '-' to invert the sort order.
              Multiple fields may be specified with a list of strings.

              Examples:
              - 'name' (alphabetical by name)
              - '-id' (ordered by ID descending)
              - ['facility', '-name'] (by facility, then by name descending)
              - None, '' or [] (default NetBox ordering)


Returns:
    Paginated response dict with the following structure:
        - count: Total number of objects matching the query
                 ALWAYS REFER TO THIS FIELD FOR THE TOTAL NUMBER OF OBJECTS MATCHING THE QUERY
        - next: URL to next page (or null if no more pages)
                ALWAYS REFER TO THIS FIELD FOR THE NEXT PAGE OF RESULTS
        - previous: URL to previous page (or null if on first page)
                    ALWAYS REFER TO THIS FIELD FOR THE PREVIOUS PAGE OF RESULTS
        - results: Array of objects for this page
                   ALWAYS REFER TO THIS FIELD FOR THE OBJECTS ON THIS PAGE

ENSURE YOU ARE AWARE THE RESULTS ARE PAGINATED BEFORE PROVIDING RESPONSE TO THE USER.

Valid object_type values:

- circuits.circuit
  • circuits.circuitgroup

  • circuits.circuitgroupassignment

  • circuits.circuittermination

  • circuits.circuittype

  • circuits.provider

  • circuits.provideraccount

  • circuits.providernetwork

  • circuits.virtualcircuit

  • circuits.virtualcircuittermination

  • circuits.virtualcircuittype

  • core.datafile

  • core.datasource

  • core.job

  • core.objectchange

  • core.objecttype

  • dcim.cable

  • dcim.cabletermination

  • dcim.consoleport

  • dcim.consoleporttemplate

  • dcim.consoleserverport

  • dcim.consoleserverporttemplate

  • dcim.device

  • dcim.devicebay

  • dcim.devicebaytemplate

  • dcim.devicerole

  • dcim.devicetype

  • dcim.frontport

  • dcim.frontporttemplate

  • dcim.interface

  • dcim.interfacetemplate

  • dcim.inventoryitem

  • dcim.inventoryitemrole

  • dcim.inventoryitemtemplate

  • dcim.location

  • dcim.macaddress

  • dcim.manufacturer

  • dcim.module

  • dcim.modulebay

  • dcim.modulebaytemplate

  • dcim.moduletype

  • dcim.moduletypeprofile

  • dcim.platform

  • dcim.powerfeed

  • dcim.poweroutlet

  • dcim.poweroutlettemplate

  • dcim.powerpanel

  • dcim.powerport

  • dcim.powerporttemplate

  • dcim.rack

  • dcim.rackreservation

  • dcim.rackrole

  • dcim.racktype

  • dcim.rearport

  • dcim.rearporttemplate

  • dcim.region

  • dcim.site

  • dcim.sitegroup

  • dcim.virtualchassis

  • dcim.virtualdevicecontext

  • extras.bookmark

  • extras.configcontext

  • extras.configcontextprofile

  • extras.configtemplate

  • extras.customfield

  • extras.customfieldchoiceset

  • extras.customlink

  • extras.eventrule

  • extras.exporttemplate

  • extras.imageattachment

  • extras.journalentry

  • extras.notification

  • extras.notificationgroup

  • extras.savedfilter

  • extras.script

  • extras.subscription

  • extras.tableconfig

  • extras.tag

  • extras.taggeditem

  • extras.webhook

  • ipam.aggregate

  • ipam.asn

  • ipam.asnrange

  • ipam.fhrpgroup

  • ipam.fhrpgroupassignment

  • ipam.ipaddress

  • ipam.iprange

  • ipam.prefix

  • ipam.rir

  • ipam.role

  • ipam.routetarget

  • ipam.service

  • ipam.servicetemplate

  • ipam.vlan

  • ipam.vlangroup

  • ipam.vlantranslationpolicy

  • ipam.vlantranslationrule

  • ipam.vrf

  • tenancy.contact

  • tenancy.contactassignment

  • tenancy.contactgroup

  • tenancy.contactrole

  • tenancy.tenant

  • tenancy.tenantgroup

  • users.group

  • users.objectpermission

  • users.owner

  • users.ownergroup

  • users.token

  • users.user

  • virtualization.cluster

  • virtualization.clustergroup

  • virtualization.clustertype

  • virtualization.virtualdisk

  • virtualization.virtualmachine

  • virtualization.vminterface

  • vpn.ikepolicy

  • vpn.ikeproposal

  • vpn.ipsecpolicy

  • vpn.ipsecprofile

  • vpn.ipsecproposal

  • vpn.l2vpn

  • vpn.l2vpntermination

  • vpn.tunnel

  • vpn.tunnelgroup

  • vpn.tunneltermination

  • wireless.wirelesslan

  • wireless.wirelesslangroup

  • wireless.wirelesslink

    See NetBox API documentation for filtering options for each object type.

netbox_get_object_by_idB

Get detailed information about a specific NetBox object by its ID.

netbox_get_changelogsB

Get object change records (changelogs) from NetBox based on filters.

netbox_search_objectsA
Perform global search across NetBox infrastructure.

Searches names, descriptions, IP addresses, serial numbers, asset tags,
and other key fields across multiple object types.

Args:
    query: Search term (device names, IPs, serial numbers, hostnames, site names)
           Examples: 'switch01', '192.168.1.1', 'NYC-DC1', 'SN123456'
    object_types: Limit search to specific types (optional)
                 Default: [dcim.device', 'dcim.site', 'ipam.ipaddress', 'dcim.interface', 'dcim.rack', 'ipam.vlan', 'circuits.circuit', 'virtualization.virtualmachine]
                 Examples: ['dcim.device', 'ipam.ipaddress', 'dcim.site']
    fields: Optional list of specific fields to return (reduces response size) IT IS STRONGLY RECOMMENDED TO USE THIS PARAMETER TO MINIMIZE TOKEN USAGE.
            - None or [] = returns all fields (no filtering)
            - ['id', 'name'] = returns only specified fields
            Examples: ['id', 'name', 'status'], ['address', 'dns_name']
            Uses NetBox's native field filtering via ?fields= parameter
    limit: Max results per object type (default 5, max 100)

Returns:
    Dictionary with object_type keys and list of matching objects.
    All searched types present in result (empty list if no matches).

Example:
    # Search for anything matching "switch"
    results = netbox_search_objects('switch')
    # Returns: {
    #   'dcim.device': [{'id': 1, 'name': 'switch-01', ...}],
    #   'dcim.site': [],
    #   ...
    # }

    # Search for IP address
    results = netbox_search_objects('192.168.1.100')
    # Returns: {
    #   'ipam.ipaddress': [{'id': 42, 'address': '192.168.1.100/24', ...}],
    #   ...
    # }

    # Limit search to specific types with field projection
    results = netbox_search_objects(
        'NYC',
        object_types=['dcim.site', 'dcim.location'],
        fields=['id', 'name', 'status']
    )

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

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/netboxlabs/netbox-mcp-server'

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