mcpField
M
mcp-server-ntopng

mcp-server-ntopng

本地服务
github.com/marcoeg数据与分析284 周前更新

关于 mcp-server-ntopng

mcp-server-ntopng 将 ntopng 的网络监控数据通过 MCP 提供给 AI Agent 查询,适用于需要检查流量、主机和告警的场景。它依赖 ClickHouse 保存的历史流量与告警数据。

主要功能

  1. 01查询接口 ID 与主机位置
  2. 02查看本地和远程通信方排名
  3. 03获取各类告警统计
  4. 04查询详细流量与热门流
  5. 05检查并查询 ntopng 数据库

适用场景

  1. 01按接口检查本地或远程通信方
  2. 02汇总流量、主机或系统告警
  3. 03查询历史流量记录
  4. 04查看数据库表结构并执行查询

MCP 相关

该 MCP 服务向 MCP 客户端提供 ntopng 接口、主机、流量、告警和数据库查询工具;不提供资源或提示词。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

mcp-server-ntopng

PyPI - Version

NTOPNG Model Context Protocol 服务

README 配图

一个适用于 NTOPNG 的 Model Context Protocol 服务实现,可让 AI Agent 使用 NTOPNG 数据库查询网络监控数据。

此 MCP 服务假定 ntopng 使用 ClickHouse 存储历史流量和告警。查看 ntopng Clickhouse

工具

  • 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 资源或提示词。

配置

  1. 创建或编辑位于以下位置的 Claude Desktop 配置文件:

    • macOS:~/Library/Application Support/Claude/claude_desktop_config.json
    • Windows:%APPDATA%/Claude/claude_desktop_config.json
  2. 添加以下内容:

{
  "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"
      }
    }
  }
}
  1. 将 /path/to/your/uv-binary 替换为 uv 可执行文件的绝对路径。使用 which uv 查找路径。这样可确保启动服务时使用正确版本的 uv。

  2. 重启 Claude Desktop 以应用更改。

开发

  1. 在 claude_desktop_config.json 文件中设置环境变量,或在仓库根目录下的 .env 文件中设置。
NTOPNG_HOST=localhost
NTOPNG_PORT=9000
NTOPNG_USER=default
NTOPNG_PASSWORD=
  1. 运行 uv sync 安装依赖项。按照此处的说明安装 uv。然后运行 source .venv/bin/activate。

  2. 在项目主目录下运行 uv pip install -e . 安装 mcp-ntopng 包。

  3. 为了方便测试,可以运行 mcp dev mcp_ntopng/mcp_server.py 来启动 MCP 服务。替换为合适的聊天客户端

环境变量

以下环境变量用于配置数据库连接:

  • NTOPNG_HOST:ntopng 服务的主机名
  • NTOPNG_DBUSER:Clickhouse DB 身份验证的用户名
  • NTOPNG_DBPASSWORD:Clickhouse DB 身份验证的密码
  • NTOPNG_API_KEY:ntopng 身份验证令牌。
可选
  • NTOPNG_DBPORT:ntopng 服务中 Clickhouse DB 的端口号
    • 默认值:启用 HTTPS 时为 9000,禁用时为 8123
    • 通常无需设置,除非使用非标准端口
  • NTOPNG_SECURE:启用/禁用 TLS 连接
    • 默认值:false
    • 设置为 true 可启用安全的 TLS 连接
  • NTOPNG_VERIFY:启用/禁用 SSL 证书验证
    • 默认值:true
    • 设置为 `false to disable certificate verification (not recommended for production)
  • NTOPNG_CONNECT_TIMEOUT:连接超时时间(秒)
    • 默认值:`30
    • 如果遇到连接超时,请增大此值
  • NTOPNG_SEND_RECEIVE_TIMEOUT:发送/接收超时时间(秒)
    • 默认值:300
    • 对于长时间运行的查询,请增大此值

有关如何设置到 Clickhouse 的 TLS 连接,请参阅 ntopng 文档中的 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"
        }
      }
    }
  }

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。