list_findingsLABSCO SUMMARY
Report writing that reaches into the reporting tool.
Findings are the unit of work in a pentest report, and here they are first class: created, patched and listed against a live SysReptor project, with the schema readable so the fields line up. The generated plugin tools mean scanner output moves into the report without an intermediate step.
What it is
An MCP server built on the reptor CLI, exposing SysReptor's pentest reporting and automation as tools. Findings get full create, read, update and delete through reptor's Python API, and every reptor plugin — nmap, nessus, burp, zap, sslyze and the rest — is turned into a tool automatically.
What you get
- Findings created, read in detail, patched and deleted against a SysReptor project (create_finding, get_finding_details, patch_finding, delete_finding)
- Every finding on a project listed in one call (list_findings)
- The finding schema itself, so fields are discovered rather than guessed (get_finding_schema)
- One tool per reptor plugin, generated automatically — nmap, nessus, burp, zap, sslyze and others
- Template management alongside findings
- Sensitive fields stripped from data before it reaches the model, configured through REPTOR_MCP_EXCLUDE_FIELDS
- A non-blocking event loop with thread-safe, serialised plugin execution
Requirements
Python 3.10+ with uv or pip, and a running SysReptor instance: its address and an API token are both required, and you can name a default project so calls need not carry one. The server carries no authentication of its own and is built for local use — keep it off the internet and off untrusted networks. The underlying reptor CLI is alpha, so its API can still change.
Setup effort
Build from source — git clone https://github.com/slvnlrt/reptor-mcp.git
USE CASES
Writing up a finding while the evidence is still open
The finding is created against the live project from the conversation that produced it, rather than from notes reconstructed later.
Filling in the fields the template expects
Read the schema first and patch the finding against it, so a partially filled finding does not have to be fixed in the SysReptor UI afterwards.
Reviewing what is already in the report
List every finding on the project and pull the full detail of the ones you are unsure about, before deciding what still needs writing.
Getting scanner output into the report
Each reptor plugin — nmap, nessus, burp, zap, sslyze — becomes its own tool, so an import is a call rather than a separate CLI session.
Keeping client data out of the model
Name the sensitive fields in REPTOR_MCP_EXCLUDE_FIELDS and they are stripped before any response reaches the LLM client.
31 tools
Listed in project docs. Your client may show a different list.
get_finding_detailsget_finding_schemacreate_findingpatch_findingdelete_findingupload_templatenessusburpnmapopenvaszapqualyssslyzefindingfindingfromtemplatedeletefindingsexportfindingsprojectcreateprojectdeleteprojectspushprojecttemplatenotefiletranslateghostwriterdefectdojoimporterspackarchiveunpackarchiveBEFORE YOU INSTALL
What to know first
Tools you get
31 tools named in the project's documentation. Seven are the server's own finding tools; the other twenty-four wrap installed reptor CLI plugins, so the count changes with your reptor version and with exclusions in tool_config.py.
Requires
- Python 3.10+
- REPTOR_TOKEN in your environment
- REPTOR_SERVER in your environment
Where it runs
The documented client runs the server on your machine.
INSTALLATION
Connect your client
This one is built from source rather than installed with a single command.
Server setup
git clone https://github.com/slvnlrt/reptor-mcp.git
cd reptor-mcp
uv venv && source .venv/bin/activate
uv pip install -e .Set REPTOR_SERVER and REPTOR_TOKEN in the environment.
fastmcp run mcp_server.py:mcp --transport streamable-http --port 8008Point the MCP client at http://localhost:8008/mcp/ with the config block below.
MCP Clients
Any MCP client
{
"mcpServers": {
"reptor-mcp": {
"type": "streamable-http",
"url": "http://localhost:8008/mcp/"
}
}
}Clients spell the "type" value differently: Claude Code and VS Code use "http", Cline uses "streamableHttp", and Roo Code uses "streamable-http". Claude Desktop does not accept a URL entry in its config file.
REPTOR_SERVER (the URL of your SysReptor instance) and REPTOR_TOKEN (your SysReptor API token) are read from the environment of the server process, so set them in the shell where you run fastmcp run mcp_server.py:mcp --transport streamable-http --port 8008. The client configuration only points at http://localhost:8008/mcp/.