使用说明
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)
许可证
麻省理工学院
