MCP服务器

将reptor CLI工具转换为MCP服务器,提供渗透测试报告和自动化功能,支持与其他工具、脚本或AI代理的程序化交互。

  • by slvnlrt
  • Python
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 slvnlrt/reptor-mcp

使用说明

reptor-mcp:用于reptor/SysReptor的mcp服务器

这个项目改变了 reptor CLI工具集成到MCP(模型上下文协议)服务器中,将其强大的渗透测试报告和自动化功能作为可编程服务公开。

它允许其他工具、脚本或AI代理通过MCP协议以编程方式与SysReptor交互,从而促进与自动化工作流程的集成。

[!警告] 阿尔法软件: 底层 reptor CLI工具处于alpha版本。其API可能会发生变化,可能会中断 reptor-mcp.

[!小心] 无身份验证: 此服务器已 无身份验证或授权。它仅供当地使用。 不要将其暴露于互联网或不受信任的网络。

[!重要] 数据敏感性: 如果您处理敏感的项目数据,请考虑通过此服务器将其发送到LLM的影响。使用 REPTOR_MCP_EXCLUDE_FIELDS 在敏感场到达LLM之前将其剥离。

特性

  • 动态工具生成: 从所有可用工具中自动创建MCP工具 reptor 插件(nmap、nessus、burp、zap、sslyze等)。
  • API直接工具: 直接使用报告程序的Python API为结果CRUD、模式发现和模板管理提供结构化工具。
  • 字段排除: 在将数据返回给LLM客户端之前,从数据中剥离敏感字段(可通过环境变量配置)。
  • 异步安全: 具有线程安全序列化插件执行的非阻塞事件循环。

先决条件

  • Python 3.10+
  • uv (推荐)或 pip
  • 跑步 SysReptor 带有API令牌的实例

安装

git clone https://github.com/slvnlrt/reptor-mcp.git
cd reptor-mcp
uv venv && source .venv/bin/activate
uv pip install -e .

这将安装 reptor 和 fastmcp 自动从PyPI。无需单独克隆reptor存储库。

Development setup (local reptor clone)

如果您需要与报告员的本地签出对抗(例如,测试未发布的更改):

uv pip install -e /path/to/reptor-source
uv pip install -e .

或者,设置 REPTOR_MAIN_PATH=/path/to/reptor-source 在运行时将其注入 sys.path.

配置

服务器是通过环境变量配置的:

变量 必填 描述
REPTOR_SERVER 是 SysReptor实例的URL
REPTOR_TOKEN 是 您的SysReptor API令牌
REPTOR_PROJECT_ID 否 操作的默认项目ID
REPTOR_MCP_INSECURE 否 设置为 true 禁用SSL验证
REQUESTS_CA_BUNDLE 否 自定义CA捆绑包文件的路径
REPTOR_MCP_EXCLUDE_FIELDS 否 从LLM响应中删除逗号分隔的字段名(例如。 internal_notes,api_token)
REPTOR_MCP_DEBUG 否 设置为 true 用于详细的调试日志记录

运行服务器

fastmcp run mcp_server.py:mcp --transport streamable-http --port 8008

服务器将可在以下位置访问 http://localhost:8008/mcp/.

客户端连接

使用这样的配置连接MCP客户端(例如 mcp_settings.json):

{
  "mcpServers": {
    "reptor-mcp": {
      "type": "streamable-http",
      "url": "http://localhost:8008/mcp/"
    }
  }
}

可用工具

自定义工具(直接API)

这些工具直接使用reptor的Python API进行结构化、支持架构的操作:

工具 说明
list_findings 列出带有筛选器的发现(状态、严重性、标题)。
get_finding_details 按ID获取查找的完整详细信息
get_finding_schema 发现项目的可用查找字段、类型和约束。打电话之前 create_finding 或 patch_finding.
create_finding 从平面数据字典创建新发现
patch_finding 更新查找结果上的单个字段。
delete_finding 按ID删除查找结果(需要明确确认)。
upload_template 从JSON或TOML上传查找模板。

插件工具(动态包装器)

服务器动态包装所有 reptor CLI插件作为MCP工具:

类别 工具
漏洞导入器 nessus, burp, nmap, openvas, zap, qualys, sslyze
寻找管理 finding, findingfromtemplate, deletefindings, exportfindings
项目管理 project, createproject, deleteprojects, pushproject
模板 template
笔记和文件 note, file
翻译 translate (通过DeepL)
导入/导出 ghostwriter, defectdojo, importers, packarchive, unpackarchive

可以通过连接的MCP客户端检查每个工具的确切参数。

与报告人的本地MCP服务器的关系

从reptor v0.33开始,reptor包含自己的内置MCP服务器(reptor mcp).这两台服务器是 互补的:

能力 报告员mcp 本地 reptor mcp
结果CRUD :white_check_mark: :white_check_mark
正在查找架构发现 :white_check_mark: :white_check_mark:
报告部分CRUD :x: :white_check_mark:
漏洞导入程序(nmap、nessus、burp等) :white_check_mark: :x:
项目管理(搜索、创建、导出、复制) :white_check_mark: :x:
注释、文件、翻译 :white_check_mark: :x:
模板管理 :white_check_mark: :white_check_mark:
字段排除 :white_check_mark: :white_check_mark:

建筑

mcp_server.py           # Server entry point, lifespan, configuration
├── tool_generator.py   # Dynamic MCP tool generation from plugin argparse definitions
│   ├── signature_utils.py  # argparse → Python function signature translation
│   └── wrapper_utils.py    # Plugin execution, stdin/stdout capture, config handling
├── custom_tools.py     # Direct API tools (findings CRUD, schema, templates)
└── tool_config.py      # Plugin exclusions, stdin consumers, config overwrite mappings

关键设计决策:

  • 插件包装器 使用序列化锁在线程中运行,在保护共享状态的同时保持异步事件循环的响应。
  • 定制工具 使用 asyncio.to_thread() 用于非阻塞API调用。
  • 字段排除 在返回客户端之前,递归地从所有嵌套数据结构中删除指定字段。

许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

致谢

如果没有原件,这个项目是不可能的 reptor命令行界面工具 由SysReptor团队及其贡献者开发。 reptor-mcp 基于他们出色的工作,提供了一个MCP接口。