AI连接扫描协议服务器

GreenboneMCP是一个通过GMP协议连接AI客户端与Greenbone/OpenVAS的模型上下文协议服务器,支持扫描创建、监控、报告获取及差异比较等漏洞管理工作流。

  • by matteocolazilli
  • Python
  • 本地部署
  • 3 星标
  • 更新于
在 GitHub 查看 matteocolazilli/GreenboneMCP

使用说明

GreenboneMCP

MCP(模型上下文协议)服务器,通过GMP将AI客户端连接到Greenbone/OpenVAS(python-gvm).

这个项目是什么

GreenboneMCP 在Greenbone/OpenVAS中公开用于扫描/报告工作流的MCP工具,因此助手可以:

  • 创建并启动扫描,
  • 监视扫描进度,
  • 停止扫描,
  • 获取报告,
  • 比较运行之间的报告增量。

服务器运行在 stdio 交通和会谈 gvmd 通过Unix套接字。

项目状态

这个项目是我硕士论文的一部分,目前是概念验证(PoC)。

只有当有明确的社区/用户兴趣时,它才能进一步发展。

欢迎投稿:欢迎开放 问题 并提交 拉取请求(参见 贡献 下面的部分。)

服务器暴露的工具

扫描工作流工具

这些总是注册的:

  • start_scan
  • scan_status
  • fetch_latest_report
  • restart_scan
  • delta_report

检查/控制工具

这些总是注册的:

  • get_targets
  • get_target
  • get_tasks
  • get_port_lists
  • start_task
  • stop_task

项目结构

src/
├── main.py                     # App entrypoint (stdio MCP server)
├── constants.py                # Default UUIDs and report format constants
├── config/
│   ├── gvm_client_config.py    # Env-based GVM client settings (USERNAME, PASSWORD, ...)
│   └── logging_config.py       # Logging configuration settings
├── core/
│   └── mcp_server.py           # MCP wiring, GVM connection, tool registration
├── services/
│   └── gvm_client.py           # Typed wrapper around python-gvm + XML parsing
├── tools/
│   ├── vm_workflow_tools.py      # VM workflow orchestration tools
│   ├── inspection_control_tools.py # Inspection/control tools for existing scan state
│   └── utils/
│       ├── constants.py            # Tool-scoped constants (scanner/config/port list IDs, formats)
│       └── helpers.py              # Internal parsing/formatting helpers for tool outputs
└── models/
    └── generated/             # Auto-generated dataclasses (xsdata output)

需求

  • Docker引擎+Docker编写插件
  • 具有可访问权限的Greenbone/OpenVAS实例 gvmd UNIX套接字
  • 有效的GMP证书

安装

兼容性

此服务器仅通过容器部署的Greenbone/OpenVAS进行了测试,特别是具有官方容器设置的Greenbone社区版:https://greenbone.github.io/docs/latest/22.4/container/

先决条件

通过在您拥有的目录中执行以下命令,确保官方Greenbone Community Edition容器设置正在运行 docker-compose.yml 对于Greenbone:

docker compose -f <path-to-greenbone-compose>/docker-compose.yml up -d

备注:官方Greenbone作曲设置使用 gvmd_socket_vol 安装在 /run/gvmd 在容器中。 使用默认的组合配置,此命名卷通常可用作:

greenbone-community-edition_gvmd_socket_vol.

在这个项目中,使用同名卷来访问 gvmd MCP服务器容器中的套接字。

1) 克隆此存储库

git clone https://github.com/matteocolazilli/GreenboneMCP.git
cd GreenboneMCP

2) 构建此MCP映像

docker build -t greenbonemcp:latest .

3) 创建 .env 配置和设置配置值

cp .env.example .env

编辑 .env 使用您的凭据和所需的设置。

你可以用这个 .env 通过在运行时传递它 --env-file 到 docker run 命令。

服务器从以下环境变量中读取配置,如果不设置,则恢复为默认值:

  • USERNAME:GMP用户名(默认值: admin)
  • PASSWORD:GMP密码(必填:无默认值,必须设置)
  • LOG_LEVEL:应用程序日志级别(默认值: INFO)

4) 配置MCP客户端并运行服务器

根据其文档配置您的MCP客户端/代理,以使用以下内容运行GreenboneMCP服务器 docker run 命令:

docker run 
  --rm -i 
  --env-file <path-to-your-env-file> 
  --name greenbonemcp 
  --volume greenbone-community-edition_gvmd_socket_vol:/run/gvmd 
  greenbonemcp:latest 

备注:the --env-file 路径必须指向 .env 您在步骤3中创建的。

5) 享受!

使用您的MCP兼容助手通过此服务器提供的工具与OpenVAS进行交互!

贡献

  • 为bug、想法或功能请求打开问题。
  • 打开一个包含重点更改和清晰描述的Pull Request。

欢迎并鼓励社区捐款。

工具模块惯例

为了保持工具模块的可维护性:

  • 保留MCP工具处理程序 src/tools/*_tools.py
  • 将非工具辅助函数(解析、格式化、输出整形)保存在 src/tools/utils/ (例如 src/tools/utils/helpers.py)
  • 使用 src/services/gvm_client.py 用于GMP交互原语,并在工具处理程序中保留编排逻辑

开发新工具

如果您想添加新的MCP工具(例如通过包装其他工具 python-gvm 方法),您可能需要新的XML响应类型模型。

此项目包含以下模型 src/models/generated.

添加新的数据类(当前方法)

目前,当您需要新的数据类用于其他GMP响应时,请手动添加它们。

推荐工作流程:

  1. 收集您想要支持的GMP方法的代表性XML响应。
  2. 在中使用现有模型 src/models/generated 作为命名、键入和结构的参考。
  3. 手动创建/更新数据类以匹配所需的XML形状。

gvm-tools / gvm-pyshell 是从Greenbone实例中获取真实XML响应样本的实用方法。

许可证

该项目已获得许可 GNU GPL v3.0或更高版本.

看 LICENSE.md 获取完整的许可证文本。

第三方通知

该项目包括并依赖于第三方开源软件。 看 THIRD_PARTY_NOTICES.md 有关直接依赖关系及其许可证的详细信息。