OpenNMS管理协议服务

一个连接Claude与OpenNMS的MCP服务器,支持通过自然语言管理警报、节点、事件、资产记录、类别和服务收集。

  • by c-perronnet
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 c-perronnet/opennms-mcp

使用说明

opennms-mcp

一 MCP(模型上下文协议) 将Claude连接到OpenNMS的服务器。让Claude列出警报、检查节点、发送事件、更新资产记录、管理类别和控制服务收集——所有这些都是用简单的语言完成的。

先决条件

  • Node.js 22+
  • 可通过HTTP/HTTPS访问的OpenNMS实例
  • 具有API访问权限的用户帐户(管理员或读/写角色)

安装

git clone https://github.com/c-perronnet/opennms-mcp.git
cd opennms-mcp
npm install
npm run build

配置

使用您的OpenNMS凭据创建一个JSON文件。支持两种身份验证格式:

基本认证 (opennms/myserver.json):

{
  "url": "https://opennms.example.com",
  "username": "admin",
  "password": "secret"
}

令牌身份验证 (opennms/myserver.json):

{
  "url": "https://opennms.example.com",
  "token": "your-api-token"
}

添加 "insecure": true 选择任一格式以跳过TLS证书验证(对自签名证书有用)。

将配置文件存储在 opennms/ directory——它被git忽略,因此永远不会提交凭据。

连接到克劳德桌面

将服务器添加到您的 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"
      }
    }
  }
}

或者,将配置路径作为位置参数传递:

{
  "mcpServers": {
    "opennms": {
      "command": "node",
      "args": [
        "/absolute/path/to/opennms-mcp/dist/index.js",
        "/absolute/path/to/opennms-mcp/opennms/myserver.json"
      ]
    }
  }
}

连接到克劳德代码

Claude Code从读取MCP服务器配置 ~/.claude/claude_mcp_settings.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"
      }
    }
  }
}

或者通过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

验证服务器是否已加载 /mcp 在克劳德代码提示中。下面列出的工具将在任何对话中可用。

可用工具

连接性

工具 说明
server_info 验证连接并返回OpenNMS版本

警报

工具 说明
list_alarms 列出警报,可选择按FIQL表达式过滤
get_alarm 按ID获取警报的完整详细信息
acknowledge_alarm 确认警报
modify_alarm 不确认、清除或升级警报

节点

工具 说明
list_nodes 列出节点,可选择按FIQL表达式过滤
get_node 获取完整的节点详细信息(接受数字ID或 foreignSource:foreignId)
get_node_ip_interfaces 列出节点的IP接口
get_node_snmp_interfaces 列出节点的SNMP接口
get_node_outages 列出节点的中断
rescan_node 触发节点的功能重新扫描

事件

工具 说明
list_events 列出事件,可选择按FIQL表达式筛选
get_event 按ID获取事件的完整详细信息
send_event 向OpenNMS事件总线发送自定义事件

资产记录

工具 说明
get_node_asset_record 获取节点的资产记录
update_node_asset_record 更新节点的一个或多个资产字段

类别

工具 说明
list_categories 列出OpenNMS中定义的所有类别
get_node_categories 列出分配给节点的类别
add_category_to_node 为节点分配类别
remove_category_from_node 从节点中删除类别

收集/投票

工具 说明
list_node_services 列出节点IP接口上的受监视服务
enable_service_collection 为服务启用收集(设置为“活动”)
disable_service_collection 禁用服务的收集(设置为强制非托管)

FIQL过滤

几个列表工具接受 filter 参数使用 FIQL 语法:

运算符 含义
== 等于
!= 不等于
=lt= 小于
=gt= 大于
; 以及
, 或

示例:

  • severity==CRITICAL --仅限关键警报
  • node.label==web* --标签以“web”开头的节点
  • severity==MAJOR,severity==CRITICAL --重大或关键警报
  • category.name==Routers --路由器类别中的节点

发展

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)

许可证

麻省理工学院