opennms-mcp
Connects Claude to OpenNMS, allowing plain language interaction with alarms, nodes, events, asset records, categories, and service collection.
README
opennms-mcp
An MCP (Model Context Protocol) server that connects Claude to OpenNMS. Ask Claude to list alarms, inspect nodes, send events, update asset records, manage categories, and control service collection — all in plain language.
Prerequisites
- Node.js 22+
- An OpenNMS instance reachable over HTTP/HTTPS
- A user account with API access (admin or a read/write role)
Installation
git clone https://github.com/c-perronnet/opennms-mcp.git
cd opennms-mcp
npm install
npm run build
Configuration
Create a JSON file with your OpenNMS credentials. Two auth formats are supported:
Basic auth (opennms/myserver.json):
{
"url": "https://opennms.example.com",
"username": "admin",
"password": "secret"
}
Token auth (opennms/myserver.json):
{
"url": "https://opennms.example.com",
"token": "your-api-token"
}
Add "insecure": true to either format to skip TLS certificate validation (useful for self-signed certs).
Store config files in the opennms/ directory — it is git-ignored so credentials are never committed.
Connecting to Claude Desktop
Add the server to your claude_desktop_config.json:
{
"mcpServers": {
"opennms": {
"command": "node",
"args": ["/absolute/path/to/opennms-mcp/dist/index.js"],
"env": {
"OPENNMS_CONFIG": "/absolute/path/to/opennms-mcp/opennms/myserver.json"
}
}
}
}
Alternatively, pass the config path as a positional argument:
{
"mcpServers": {
"opennms": {
"command": "node",
"args": [
"/absolute/path/to/opennms-mcp/dist/index.js",
"/absolute/path/to/opennms-mcp/opennms/myserver.json"
]
}
}
}
Connecting to Claude Code
Claude Code reads MCP server config from ~/.claude/claude_mcp_settings.json. Add the server there:
{
"mcpServers": {
"opennms": {
"command": "node",
"args": ["/absolute/path/to/opennms-mcp/dist/index.js"],
"env": {
"OPENNMS_CONFIG": "/absolute/path/to/opennms-mcp/opennms/myserver.json"
}
}
}
}
Or configure it via the CLI:
claude mcp add opennms \
-e OPENNMS_CONFIG=/absolute/path/to/opennms-mcp/opennms/myserver.json \
-- node /absolute/path/to/opennms-mcp/dist/index.js
Verify the server is loaded with /mcp in the Claude Code prompt. The tools listed below will then be available in any conversation.
Available tools
Connectivity
| Tool | Description |
|---|---|
server_info |
Verify connectivity and return OpenNMS version |
Alarms
| Tool | Description |
|---|---|
list_alarms |
List alarms, optionally filtered by FIQL expression |
get_alarm |
Get full details for an alarm by ID |
acknowledge_alarm |
Acknowledge an alarm |
modify_alarm |
Unacknowledge, clear, or escalate an alarm |
Nodes
| Tool | Description |
|---|---|
list_nodes |
List nodes, optionally filtered by FIQL expression |
get_node |
Get full node details (accepts numeric ID or foreignSource:foreignId) |
get_node_ip_interfaces |
List IP interfaces for a node |
get_node_snmp_interfaces |
List SNMP interfaces for a node |
get_node_outages |
List outages for a node |
rescan_node |
Trigger a capability rescan for a node |
Events
| Tool | Description |
|---|---|
list_events |
List events, optionally filtered by FIQL expression |
get_event |
Get full details for an event by ID |
send_event |
Send a custom event to the OpenNMS event bus |
Asset records
| Tool | Description |
|---|---|
get_node_asset_record |
Get the asset record for a node |
update_node_asset_record |
Update one or more asset fields for a node |
Categories
| Tool | Description |
|---|---|
list_categories |
List all categories defined in OpenNMS |
get_node_categories |
List categories assigned to a node |
add_category_to_node |
Assign a category to a node |
remove_category_from_node |
Remove a category from a node |
Collection / polling
| Tool | Description |
|---|---|
list_node_services |
List monitored services on a node's IP interface |
enable_service_collection |
Enable collection for a service (set to Active) |
disable_service_collection |
Disable collection for a service (set to Forced Unmanaged) |
FIQL filtering
Several list tools accept a filter parameter using FIQL syntax:
| Operator | Meaning |
|---|---|
== |
equals |
!= |
not equals |
=lt= |
less than |
=gt= |
greater than |
; |
AND |
, |
OR |
Examples:
severity==CRITICAL— critical alarms onlynode.label==web*— nodes whose label starts with "web"severity==MAJOR,severity==CRITICAL— major or critical alarmscategory.name==Routers— nodes in the Routers category
Development
npm run dev # watch mode — recompiles on file changes
npm run build # one-shot compile to dist/
npm start # run compiled server (requires OPENNMS_CONFIG)
License
MIT
Recommended Servers
playwright-mcp
A Model Context Protocol server that enables LLMs to interact with web pages through structured accessibility snapshots without requiring vision models or screenshots.
Magic Component Platform (MCP)
An AI-powered tool that generates modern UI components from natural language descriptions, integrating with popular IDEs to streamline UI development workflow.
Audiense Insights MCP Server
Enables interaction with Audiense Insights accounts via the Model Context Protocol, facilitating the extraction and analysis of marketing insights and audience data including demographics, behavior, and influencer engagement.
VeyraX MCP
Single MCP tool to connect all your favorite tools: Gmail, Calendar and 40 more.
graphlit-mcp-server
The Model Context Protocol (MCP) Server enables integration between MCP clients and the Graphlit service. Ingest anything from Slack to Gmail to podcast feeds, in addition to web crawling, into a Graphlit project - and then retrieve relevant contents from the MCP client.
Kagi MCP Server
An MCP server that integrates Kagi search capabilities with Claude AI, enabling Claude to perform real-time web searches when answering questions that require up-to-date information.
E2B
Using MCP to run code via e2b.
Neon Database
MCP server for interacting with Neon Management API and databases
Exa Search
A Model Context Protocol (MCP) server lets AI assistants like Claude use the Exa AI Search API for web searches. This setup allows AI models to get real-time web information in a safe and controlled way.
Qdrant Server
This repository is an example of how to create a MCP server for Qdrant, a vector search engine.