Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
HOSTNoHost address for HTTP server127.0.0.1
PORTNoPort for HTTP server8000
LOG_LEVELNoLogging verbosityINFO
TRANSPORTNoMCP transport protocolstdio
NETBOX_URLYesBase URL of your NetBox instance (e.g., https://netbox.example.com/)
VERIFY_SSLNoWhether to verify SSL certificatestrue
NETBOX_TOKENYesAPI token for authentication
MCP_AUTH_TOKENNoBearer token required on the HTTP endpoint. When unset, the HTTP transport is unauthenticated. Clients send Authorization: Bearer <token>.
ENABLE_PLUGIN_DISCOVERYNoAuto-discover plugin object types at startupfalse

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

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

Create a single new object in NetBox.

netbox_update_objectA

Update an existing NetBox object. This is a partial update (HTTP PATCH): only the fields you supply are changed, everything else is left alone.

netbox_bulk_create_objectsA

Create multiple objects of the same type in a single request. Prefer this over repeated netbox_create_object calls when populating NetBox.

netbox_bulk_update_objectsB

Update multiple existing objects of the same type in a single request.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 8 tools

Disambiguation4/5

Tools have largely distinct purposes: get_objects retrieves multiple objects with filters, get_object_by_id retrieves a single object by ID, and search_objects performs a global search. Some overlap exists between get_objects (with filters) and search_objects, as both can query multiple objects, but the descriptions clarify the difference (structured filtering vs. global text search).

Naming Consistency5/5

All tool names follow a consistent snake_case pattern with the prefix 'netbox_' followed by a verb and noun (e.g., netbox_get_objects, netbox_create_object). This predictable convention makes the tool set easy to navigate.

Tool Count5/5

With 8 tools, the set is well-scoped for interacting with NetBox. It covers essential operations (read, create, update, bulk operations, search, changelogs) without excessive fragmentation, aligning with the typical needs of an agent managing network infrastructure.

Completeness4/5

The server provides comprehensive CRUD coverage: create (single and bulk), read (get by filters, get by ID, search), and update (single and bulk). However, there is no delete operation, which is a notable gap for full lifecycle management, though agents might work around this by updating statuses or relying on other tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues