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