内容
# mcp-server-ntopng
[](https://pypi.org/project/mcp-ntopng)
NTOPNG模型上下文协议服务器
<a href="https://glama.ai/mcp/servers/@marcoeg/mcp-server-ntopng">
<img width="380" height="200" src="https://glama.ai/mcp/servers/@marcoeg/mcp-server-ntopng/badge" />
一个用于[NTOPNG](https://www.ntop.org/products/traffic-analysis/ntop/)的[模型上下文协议](https://modelcontextprotocol.io/)服务器实现,使AI代理能够使用NTOPNG数据库查询网络监控数据。
该MCP服务器假设`ntopng`使用ClickHouse存储历史流量和警报。请查看[ntopng Clickhouse](https://www.ntop.org/guides/ntopng/flow_dump/clickhouse/index.html)
## 工具
* `fetch_ntopng_all_ifids`
- 从ntopng中检索所有可用的接口ID。
* `get_ntopng_hosts_location`
- 获取主机的地理位置和其他信息。
* `fetch_ntopng_top_local_talkers`
- 检索指定接口的前10个本地通信者。
* `fetch_ntopng_top_remote_talkers`
- 检索指定接口的前10个远程通信者。
* `get_ntopng_all_alert_stats`
- 检索所有警报的统计信息。
* `get_ntopng_flow_alert_stats`
- 检索流警报的统计信息。
* `get_ntopng_host_alert_stats`
- 检索主机警报的统计信息。
* `get_ntopng_interface_alert_stats`
- 检索接口警报的统计信息。
* `get_ntopng_mac_alert_stats`
- 检索MAC警报的统计信息。
* `get_ntopng_network_alert_stats`
- 检索网络警报的统计信息。
* `get_ntopng_snmp_device_alert_list`
- 检索SNMP设备警报的列表。
* `get_ntopng_snmp_device_alert_stats`
- 检索SNMP设备警报的统计信息。
* `get_ntopng_system_alert_stats`
- 检索系统警报的统计信息。
* `query_ntopng_flows_data`
- 从ntopng流数据库中检索详细的流数据。
* `get_ntopng_top-k_flows`
- 从ntopng流数据库中检索前k个流的数据。
* `get_ntopng_user_alert_stats`
- 检索用户警报的统计信息。
* `get_ntopng_flow_devices_stats`
- 检索所有流设备的统计信息。
* `get_ntopng_sflow_devices_stats`
- 检索所有sFlow设备的统计信息。
* `list_tables_ntopng_database`
- 列出ntopng数据库的表结构。
* `query_ntopng_database`
- 查询ntopng Clickhouse数据库。
## 状态
与 Claude Desktop 应用程序及其他符合 MCP 的主机和客户端兼容。
尚不支持 MCP [资源](https://modelcontextprotocol.io/docs/concepts/resources) 或 [提示](https://modelcontextprotocol.io/docs/concepts/prompts)。
## 配置
1. 创建或编辑位于以下位置的Claude Desktop配置文件:
- 在macOS上:`~/Library/Application Support/Claude/claude_desktop_config.json`
- 在Windows上:`%APPDATA%/Claude/claude_desktop_config.json`
2. 添加以下内容:
```json
{
"mcpServers": {
"mcp-ntopng": {
"command": "/path/to/your/uv-binary",
"args": ["run", "--with", "mcp-ntopng", "--python", "3.13", "mcp-ntopng"],
"env": {
"NTOPNG_HOST": "<ntopng-host>",
"NTOPNG_DBPORT": "<ntopng-dbport>",
"NTOPNG_DBUSER": "<ntopng-dbuser>",
"NTOPNG_DBPASSWORD": "<ntopng-dbpassword>",
"NTOPNG_SECURE": "true",
"NTOPNG_VERIFY": "true",
"NTOPNG_CONNECT_TIMEOUT": "30",
"NTOPNG_SEND_RECEIVE_TIMEOUT": "300",
"NTOPNG_API_KEY": "NTOPNG_TOKEN"
}
}
}
}
```
3. 将`/path/to/your/uv-binary`替换为`uv`可执行文件的绝对路径。使用`which uv`查找路径。这确保在启动服务器时使用正确版本的`uv`。
4. 重启Claude Desktop以应用更改。
## 开发
1. 在 `claude_desktop_config.json` 文件中或在仓库根目录下的 `.env` 文件中设置环境变量。
```
NTOPNG_HOST=localhost
NTOPNG_PORT=9000
NTOPNG_USER=default
NTOPNG_PASSWORD=
```
3. 运行 `uv sync` 来安装依赖项。要安装 `uv`,请按照 [这里](https://docs.astral.sh/uv/) 的说明进行操作。然后执行 `source .venv/bin/activate`。
4. 从项目主目录使用 `uv pip install -e .` 安装 `mcp-ntopng` 包。
4. 为了方便测试,您可以运行 `mcp dev mcp_ntopng/mcp_server.py` 来启动 MCP 服务器。**请更换为合适的聊天客户端**
### 环境变量
以下环境变量用于配置数据库连接:
* `NTOPNG_HOST`: `ntopng` 服务器的主机名
* `NTOPNG_DBUSER`: Clickhouse 数据库认证的用户名
* `NTOPNG_DBPASSWORD`: Clickhouse 数据库认证的密码
* `NTOPNG_API_KEY`: `ntopng` 认证令牌。
#### 可选项
* `NTOPNG_DBPORT`: `ntopng` 服务器中 Clickhouse 数据库的端口号
- 默认: 如果启用 HTTPS,则为 `9000`,如果禁用,则为 `8123`
- 通常不需要设置,除非使用非标准端口
* `NTOPNG_SECURE`: 启用/禁用 TLS 连接
- 默认: `false`
- 设置为 `true` 以启用安全的 TLS 连接
* `NTOPNG_VERIFY`: 启用/禁用 SSL 证书验证
- 默认: `true`
- 设置为 `false` 以禁用证书验证(不推荐在生产环境中使用)
* `NTOPNG_CONNECT_TIMEOUT`: 连接超时时间(秒)
- 默认: `30`
- 如果遇到连接超时,请增加此值
* `NTOPNG_SEND_RECEIVE_TIMEOUT`: 发送/接收超时时间(秒)
- 默认: `300`
- 对于长时间运行的查询,请增加此值
> 请查看 `ntopng` 文档中的 [TLS 设置](https://www.ntop.org/guides/ntopng/flow_dump/clickhouse/clickhouse.html#tls-connection),了解如何设置与 Clickhouse 的 TLS 连接。
### 开发
在本地机器上安装包:
```
$ uv sync
$ uv pip install -e .
```
运行 MCP Inspector
```
$ cd mcp_ntopng
$ source .env
$ CLIENT_PORT=8077 SERVER_PORT=8078 mcp dev run_mcp_ntopng.py --with clickhouse-driver --with python-dotenv --with uvicorn --with pip-system-certs
```
在 Claude Desktop 中使用本地库。
找到: /Users/marco/Library/Application\ Support/Claude/claude_desktop_config.json
编辑 claude_desktop_config.json,修改本地路径:
```
{
"mcpServers": {
"mcp-ntopng": {
"command": "/Users/marco/Development/claude/mcp-server-ntopng/.venv/bin/python",
"args": [
"/Users/marco/Development/claude/mcp-server-ntopng/run_mcp_ntopng.py"
],
"env": {
"NTOPNG_HOST": "marcoeg-nod004.ntoplink.com",
"NTOPNG_DBPORT": "9000",
"NTOPNG_DBUSER": "default",
"NTOPNG_DBPASSWORD": "",
"NTOPNG_SECURE": "false",
"NTOPNG_VERIFY": "false",
"NTOPNG_CONNECT_TIMEOUT": "30",
"NTOPNG_SEND_RECEIVE_TIMEOUT": "300",
"SELECT_QUERY_TIMEOUT_SECS": "30",
"NTOPNG_API_KEY": "NTOPNG_TOKEN"
}
}
}
}
```