librenms-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Logging level | INFO |
| SENTRY_DSN | No | Sentry DSN for error tracking (optional) | |
| LIBRENMS_URL | Yes | URL of the LibreNMS instance (e.g., https://domain.tld:8443) | |
| DISABLED_TAGS | No | Comma-separated list of tags to disable tools for | |
| MCP_HTTP_HOST | No | Host to bind the HTTP server | 0.0.0.0 |
| MCP_HTTP_PORT | No | Port to bind the HTTP server | 8000 |
| MCP_TRANSPORT | No | Transport type: stdio, sse, or http | stdio |
| LIBRENMS_TOKEN | Yes | API token for LibreNMS authentication | |
| READ_ONLY_MODE | No | Set true to disable all write operations | false |
| LIBRENMS_TIMEOUT | No | Connection timeout in seconds | 30 |
| RATE_LIMIT_ENABLED | No | Enable rate limiting | false |
| LIBRENMS_VERIFY_SSL | No | Enable SSL certificate verification | true |
| TOOL_SEARCH_ENABLED | No | Replace full tool listings with search_tools + call_tool | false |
| TOOL_SEARCH_STRATEGY | No | Search strategy: bm25 or regex | bm25 |
| MCP_HTTP_BEARER_TOKEN | No | Optional bearer token for HTTP authentication | |
| RATE_LIMIT_MAX_REQUESTS | No | Maximum requests allowed per window | 100 |
| TOOL_SEARCH_MAX_RESULTS | No | Maximum number of tools returned by search_tools | 5 |
| RATE_LIMIT_WINDOW_MINUTES | No | Window size in minutes | 1 |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| 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
| Name | Description |
|---|---|
| alerts_getB | Get alerts from LibreNMS with optional filters. |
| alert_get_by_idA | Get a specific alert from LibreNMS by ID. |
| alert_acknowledgeA | Acknowledge an alert in LibreNMS by ID. |
| alert_unmuteA | Unmute an alert in LibreNMS by ID. |
| alert_rules_listC | List all alert rules from LibreNMS. Returns: dict: The JSON response from the API. |
| alert_rule_getA | Get details for a specific alert rule by ID. |
| alert_rule_addB | Add a new alert rule to LibreNMS. |
| alert_rule_editB | Edit an existing alert rule in LibreNMS. |
| alert_rule_deleteA | Delete an alert rule from LibreNMS by ID. |
| alert_templates_listB | List all alert templates from LibreNMS. Returns: dict: The JSON response from the API. |
| alert_template_getA | Get a specific alert template from LibreNMS by ID. |
| alert_template_createB | Create a new alert template in LibreNMS. |
| alert_template_editA | Edit an existing alert template in LibreNMS. |
| alert_template_deleteA | Delete an alert template from LibreNMS by ID. |
| bills_listB | List bills from LibreNMS with optional filters. |
| bill_getA | Get a specific bill from LibreNMS by ID. |
| bill_graphC | Get bill graph image from LibreNMS. |
| bill_graph_dataB | Get bill graph data from LibreNMS. |
| bill_historyB | Get bill history from LibreNMS. |
| bill_history_graphA | Get bill history graph from LibreNMS. |
| bill_history_graph_dataB | Get bill history graph data from LibreNMS. |
| bill_create_or_updateA | Create or update a bill in LibreNMS. |
| bill_deleteA | Delete a bill from LibreNMS by ID. |
| devices_listA | List devices from LibreNMS with optional filters. |
| device_addB | Add a new device to LibreNMS. |
| device_getA | Get device details from LibreNMS by hostname. |
| device_deleteA | Delete a device from LibreNMS by hostname. |
| device_updateA | Update device fields in LibreNMS. |
| device_portsB | List ports for a device from LibreNMS. |
| device_ports_getB | Get port info for a device by interface name. |
| device_availabilityA | Get device availability from LibreNMS. |
| device_outagesC | Get device outages from LibreNMS. |
| device_set_maintenanceB | Set device maintenance in LibreNMS. |
| devicegroups_listA | List all device groups from LibreNMS. Returns: dict: The JSON response from the API. |
| devicegroup_addA | Add a new device group to LibreNMS. |
| devicegroup_updateB | Update a device group in LibreNMS. |
| devicegroup_deleteB | Delete a device group from LibreNMS by name. |
| devicegroup_devicesB | List devices in a device group from LibreNMS. |
| devicegroup_set_maintenanceC | Set maintenance for a device group in LibreNMS. |
| devicegroup_add_devicesA | Add devices to a device group in LibreNMS. |
| devicegroup_remove_devicesA | Remove devices from a device group in LibreNMS. |
| device_discoverB | Trigger device rediscovery in LibreNMS. |
| device_renameB | Rename a device in LibreNMS. |
| device_maintenance_statusA | Check if a device is currently in maintenance mode. |
| device_vlansB | Get VLANs configured on a specific device. |
| device_linksB | Get network links for a specific device. |
| device_eventlog_addB | Add a custom event log entry for a device. |
| device_fdbA | List the forwarding database (learned MAC addresses) for a device. Each entry carries the port_id it was learned on, so this is the device-wide view of what is plugged into a switch. |
| device_nacA | List network access control (802.1X / MAB) sessions on a device. Shows authenticated endpoints per port, including the authentication method and the assigned VLAN where the device reports it. |
| device_graphs_listA | List the graph types available for a device. Use this to discover the values accepted by the |
| device_graphA | Render a device-level graph as an image. |
| port_graphA | Render a per-port graph as an image, for example interface traffic. Some LibreNMS releases fail to render through the per-port endpoint and answer 500 with an empty graph type in the message. For 'bits' this tool then falls back to the port-group endpoint, which renders the same traffic data, so callers still get a graph without needing a port ID. |
| port_group_graphA | Render a traffic graph for one or more ports, by port ID. Plots every supplied port on the same axes, which makes it useful for comparing members of a LAG. Unlike port_graph this takes numeric port IDs rather than interface names. |
| health_listA | List available health graphs for a device. |
| health_by_typeA | Get health data by sensor type for a device. |
| health_sensor_getA | Get a specific sensor by ID for a device. |
| sensors_listA | List all sensors across all devices. |
| inventory_deviceC | Get inventory for a device from LibreNMS. |
| inventory_device_flatA | Get flattened inventory for a device from LibreNMS. |
| locations_listB | List locations from LibreNMS. |
| location_addA | Add a new location to LibreNMS. |
| location_deleteA | Delete a location from LibreNMS by identifier. |
| location_editB | Edit a location in LibreNMS. |
| location_getA | Get a specific location from LibreNMS by identifier. |
| location_set_maintenanceB | Set maintenance mode for all devices in a location. |
| logs_eventlogA | Get event logs for a device from LibreNMS. |
| logs_syslogB | Get syslogs for a device from LibreNMS. |
| logs_alertlogA | Get alert logs for a device from LibreNMS. |
| logs_authlogC | Get auth logs for a device from LibreNMS. |
| logs_syslogsinkC | Add a syslog entry to LibreNMS via API sink. |
| arp_searchB | Retrieve ARP entries from LibreNMS by search query. |
| bgp_sessionsA | List BGP sessions from LibreNMS with optional filters. Returns: dict: The JSON response from the API. |
| bgp_session_getA | Get BGP session from LibreNMS by ID. |
| bgp_session_editA | Edit BGP session in LibreNMS by ID. |
| routing_ip_addressesA | List all IP addresses from LibreNMS. Returns: dict: The JSON response from the API. |
| switching_vlansB | List all VLANs from LibreNMS. Returns: dict: The JSON response from the API. |
| switching_linksB | List all links from LibreNMS. Returns: dict: The JSON response from the API. |
| fdb_lookupB | Look up a MAC address in the forwarding database. |
| ospf_listB | List all OSPF instances from LibreNMS. Returns: dict: The JSON response from the API. |
| ospf_portsC | List all OSPF ports/interfaces from LibreNMS. Returns: dict: The JSON response from the API. |
| vrf_listA | List all VRF (Virtual Routing and Forwarding) instances from LibreNMS. Returns: dict: The JSON response from the API. |
| nac_listA | List network access control (802.1X / MAB) sessions across all devices. Note that LibreNMS answers with a 404 and "Nac entry does not exist" rather than an empty list when nothing matches. |
| oxidized_listA | List devices tracked by Oxidized for config backup. |
| oxidized_config_getA | Get the stored device configuration from Oxidized for a specific device. |
| oxidized_config_searchA | Search all Oxidized device configurations for a string. |
| poller_group_getB | Get poller group(s) from LibreNMS. |
| port_security_listA | List port security configuration across all devices. Covers switchport port-security state such as the maximum number of learned MAC addresses, violation mode and current status. |
| port_security_deviceA | Get port security configuration for every port on a device. |
| port_security_portA | Get port security configuration for a single port. |
| ports_listA | Get all ports from LibreNMS with optional filters. |
| ports_searchA | Search ports in LibreNMS by search string. |
| ports_search_fieldB | Search ports in LibreNMS by specific field. |
| ports_search_macA | Search ports in LibreNMS by MAC address. |
| port_getA | Get port info from LibreNMS by port ID. |
| port_ip_infoA | Get port IP info from LibreNMS by port ID. |
| port_transceiverA | Get port transceiver info from LibreNMS by port ID. |
| port_description_getA | Get port description from LibreNMS by port ID. |
| port_description_updateB | Update port description in LibreNMS by port ID. |
| port_groups_listB | List port groups from LibreNMS. Returns: dict: The JSON response from the API. |
| port_group_addB | Add a port group to LibreNMS. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/mhajder/librenms-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server