Skip to main content
Glama
jseifeddine

NetBox MCP Server

by jseifeddine

netbox_get_changelogs

Retrieve and filter change history records from NetBox to track modifications, monitor user actions, and audit system activity.

Instructions

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

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
filtersYes

Implementation Reference

  • The primary handler function for the 'netbox_get_changelogs' MCP tool. It queries the NetBox 'core/object-changes' endpoint using the provided filters and returns the changelog records. The @mcp.tool() decorator handles registration and schema generation from the function signature and docstring.
    @mcp.tool() def netbox_get_changelogs(filters: dict): """ 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 """ endpoint = "core/object-changes" # Make API call return netbox.get(endpoint, params=filters)
  • JSON schema definition for the 'netbox_get_changelogs' tool provided to the LLM in the chatbot application. This schema describes the expected input parameters for tool calls.
    "type": "function", "function": { "name": "netbox_get_changelogs", "description": "Get object change records (changelogs) from NetBox based on filters. Use this to see audit trails and recent changes.", "parameters": { "type": "object", "properties": { "filters": { "type": "object", "description": "Filters to apply to the API call. Common filters include 'limit', 'time_after', 'time_before', 'action', 'user', 'changed_object_id'" } }, "required": [] } } }
  • Registration of the 'netbox_get_changelogs' tool schema in the chatbot's list of available tools for the LLM to use in tool calling.
    self.tools = [ { "type": "function", "function": { "name": "netbox_get_objects", "description": "Get objects from NetBox based on their type and filters. Use this to retrieve devices, sites, IP addresses, VLANs, etc.", "parameters": { "type": "object", "properties": { "object_type": { "type": "string", "description": "Type of NetBox object (e.g., 'devices', 'ip-addresses', 'sites', 'vlans', 'interfaces', 'racks', 'device-types', 'manufacturers', 'tenants', 'circuits', 'virtual-machines', 'prefixes', 'services')" }, "filters": { "type": "object", "description": "Filters to apply to the API call. Common filters include 'site', 'status', 'limit', 'name', etc." } }, "required": ["object_type"] } } }, { "type": "function", "function": { "name": "netbox_get_object_by_id", "description": "Get detailed information about a specific NetBox object by its ID.", "parameters": { "type": "object", "properties": { "object_type": { "type": "string", "description": "Type of NetBox object" }, "object_id": { "type": "integer", "description": "The numeric ID of the object" } }, "required": ["object_type", "object_id"] } } }, { "type": "function", "function": { "name": "netbox_get_changelogs", "description": "Get object change records (changelogs) from NetBox based on filters. Use this to see audit trails and recent changes.", "parameters": { "type": "object", "properties": { "filters": { "type": "object", "description": "Filters to apply to the API call. Common filters include 'limit', 'time_after', 'time_before', 'action', 'user', 'changed_object_id'" } }, "required": [] } } } ]
  • Fallback helper logic in the chatbot that automatically calls 'netbox_get_changelogs' when user input mentions 'change' or 'log' keywords if LLM doesn't invoke tools.
    tool_name = "netbox_get_changelogs" arguments = {"filters": {"limit": 10}}

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/jseifeddine/netbox-mcp-chatbot'

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