GreenboneMCP
MCP(模型上下文协议)服务器,通过GMP将AI客户端连接到Greenbone/OpenVAS(python-gvm).
这个项目是什么
GreenboneMCP 在Greenbone/OpenVAS中公开用于扫描/报告工作流的MCP工具,因此助手可以:
- 创建并启动扫描,
- 监视扫描进度,
- 停止扫描,
- 获取报告,
- 比较运行之间的报告增量。
服务器运行在 stdio 交通和会谈 gvmd 通过Unix套接字。
项目状态
这个项目是我硕士论文的一部分,目前是概念验证(PoC)。
只有当有明确的社区/用户兴趣时,它才能进一步发展。
欢迎投稿:欢迎开放 问题 并提交 拉取请求(参见 贡献 下面的部分。)
服务器暴露的工具
扫描工作流工具
这些总是注册的:
start_scanscan_statusfetch_latest_reportrestart_scandelta_report
检查/控制工具
这些总是注册的:
get_targetsget_targetget_tasksget_port_listsstart_taskstop_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实例
gvmdUNIX套接字 - 有效的GMP证书
安装
兼容性
此服务器仅通过容器部署的Greenbone/OpenVAS进行了测试,特别是具有官方容器设置的Greenbone社区版:https://greenbone.github.io/docs/latest/22.4/container/
先决条件
通过在您拥有的目录中执行以下命令,确保官方Greenbone Community Edition容器设置正在运行 docker-compose.yml 对于Greenbone:
docker compose -f
/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 GreenboneMCP2) 构建此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
--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响应时,请手动添加它们。
推荐工作流程:
- 收集您想要支持的GMP方法的代表性XML响应。
- 在中使用现有模型
src/models/generated作为命名、键入和结构的参考。 - 手动创建/更新数据类以匹配所需的XML形状。
gvm-tools / gvm-pyshell 是从Greenbone实例中获取真实XML响应样本的实用方法。
许可证
该项目已获得许可 GNU GPL v3.0或更高版本.
看 LICENSE.md 获取完整的许可证文本。
第三方通知
该项目包括并依赖于第三方开源软件。 看 THIRD_PARTY_NOTICES.md 有关直接依赖关系及其许可证的详细信息。
