reptor-mcp

An MCP server for Reptor/SysReptor that exposes the reptor CLI tool as a programmable service, configured via environment variables.

reptor-mcp: An MCP Server for Reptor/SysReptor

This project transforms the reptor CLI tool into an MCP (Model-Context-Protocol) server, exposing its powerful pentest reporting and automation features as a programmable service.

It allows other tools, scripts, or AI agents to programmatically interact with SysReptor via the MCP protocol, facilitating integration into automated workflows.

[!WARNING] Alpha Software: The underlying reptor CLI tool is in alpha. Its API may change, potentially breaking reptor-mcp.

[!CAUTION] No Authentication: This server has no authentication or authorization. It is designed for local use only. DO NOT EXPOSE IT TO THE INTERNET OR UNTRUSTED NETWORKS.

[!IMPORTANT] Data Sensitivity: If you handle sensitive project data, consider the implications of sending it to LLMs via this server. Use REPTOR_MCP_EXCLUDE_FIELDS to strip sensitive fields before they reach the LLM.

Features

  • Dynamic Tool Generation: Automatically creates MCP tools from all available reptor plugins (nmap, nessus, burp, zap, sslyze, etc.).
  • Direct API Tools: Provides structured tools for findings CRUD, schema discovery, and template management using reptor's Python API directly.
  • Field Exclusion: Strips sensitive fields from data before returning it to LLM clients (configurable via environment variable).
  • Async-Safe: Non-blocking event loop with thread-safe serialized plugin execution.

Prerequisites

  • Python 3.10+
  • uv (recommended) or pip
  • A running SysReptor instance with an API token

Installation

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

This installs reptor and fastmcp automatically from PyPI. No need to clone the reptor repository separately.

Development setup (local reptor clone)

If you need to work against a local checkout of reptor (e.g. to test unreleased changes):

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

Alternatively, set REPTOR_MAIN_PATH=/path/to/reptor-source at runtime to inject it into sys.path.

Configuration

The server is configured via environment variables:

VariableRequiredDescription
REPTOR_SERVERYesURL of your SysReptor instance
REPTOR_TOKENYesYour SysReptor API token
REPTOR_PROJECT_IDNoDefault project ID for operations
REPTOR_MCP_INSECURENoSet to true to disable SSL verification
REQUESTS_CA_BUNDLENoPath to a custom CA bundle file
REPTOR_MCP_EXCLUDE_FIELDSNoComma-separated field names to strip from LLM responses (e.g. internal_notes,api_token)
REPTOR_MCP_DEBUGNoSet to true for verbose debug logging

Running the Server

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

The server will be accessible at http://localhost:8008/mcp/.

Client Connection

Connect an MCP client using a configuration like this (e.g., in mcp_settings.json):

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

Available Tools

Custom Tools (Direct API)

These tools use reptor's Python API directly for structured, schema-aware operations:

ToolDescription
list_findingsLists findings with filters (status, severity, title).
get_finding_detailsGets full details of a finding by ID.
get_finding_schemaDiscovers available finding fields, types, and constraints for a project. Call before create_finding or patch_finding.
create_findingCreates a new finding from a flat data dict.
patch_findingUpdates a single field on a finding.
delete_findingDeletes a finding by ID (requires explicit confirmation).
upload_templateUploads a finding template from JSON or TOML.

Plugin Tools (Dynamic Wrappers)

The server dynamically wraps all reptor CLI plugins as MCP tools:

CategoryTools
Vulnerability Importersnessus, burp, nmap, openvas, zap, qualys, sslyze
Finding Managementfinding, findingfromtemplate, deletefindings, exportfindings
Project Managementproject, createproject, deleteprojects, pushproject
Templatestemplate
Notes & Filesnote, file
Translationtranslate (via DeepL)
Import/Exportghostwriter, defectdojo, importers, packarchive, unpackarchive

The exact arguments for each tool can be inspected via a connected MCP client.

Relationship to reptor's Native MCP Server

Since reptor v0.33, reptor includes its own built-in MCP server (reptor mcp). The two servers are complementary:

Capabilityreptor-mcpNative reptor mcp
Findings CRUD:white_check_mark::white_check_mark:
Finding schema discovery:white_check_mark::white_check_mark:
Report sections CRUD:x::white_check_mark:
Vulnerability importers (nmap, nessus, burp, etc.):white_check_mark::x:
Project management (search, create, export, duplicate):white_check_mark::x:
Notes, files, translation:white_check_mark::x:
Templates management:white_check_mark::white_check_mark:
Field exclusion:white_check_mark::white_check_mark:

Architecture

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

Key design decisions:

  • Plugin wrappers run in threads with a serialization lock, keeping the async event loop responsive while protecting shared state.
  • Custom tools use asyncio.to_thread() for non-blocking API calls.
  • Field exclusion recursively strips specified fields from all nested data structures before returning to the client.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Acknowledgements

This project would not be possible without the original reptor CLI tool developed by the SysReptor team and its contributors. reptor-mcp builds upon their excellent work to provide an MCP interface.

Servidores relacionados

NotebookLM Web Importer

Importe páginas da web e vídeos do YouTube para o NotebookLM com um clique. Confiado por mais de 200.000 usuários.

Instalar extensão do Chrome