Security Review MCP
MCP server for security-oriented code review (vulnerabilities and misconfigurations), usable from VS Code / Copilot, Claude or a CI/CD agent. It provides review prompts, checklists, a pattern scan with focused Tree-sitter checks for unsafe Python SQL, Angular DOM flows and unchecked message origins, an offline dependency analysis and a report database (SQLite or PostgreSQL) usable in pipelines.
📖 Full documentation: https://cyr-ius.github.io/security-review-mcp/
Capabilities
| Prompts | security-review, api-security-review, configuration-review, codebase-review, dependency-review, triage-report, development-standards |
| Tools | checklists, scan_code, scan_dependencies, saving and reading of reports with their checklist coverage (grouped by a normalized project name), status proposals (propose_finding_status: an agent never closes a finding), project posture and gate, SARIF export, trends, rule management |
| CLI | security-review-mcp (MCP server, enroll, scan-deps for a commit hook) and security-review-controller (serve, db, advisories, rules, token, user, audit), exit codes 0 / 1 / 2 |
| Pipelines | security-review-ci (gate, sarif, trend, scan-code, scan-deps, which store their reports through the API): lightweight client of the REST API for Jenkins, GitLab or GitHub, with a ci token restricted to the selected projects, no database driver |
| Rules | More than 140 rules and more than 80 checklist items: Python, Java, Angular / Node.js, Docker, Kubernetes, configuration, GitLab CI, Jenkins, Spring, FastAPI, copied into the database at first start, plus your internal rules (TOML import/export from the CLI or the web interface) |
| Development standards | conventions by technology managed in the web interface (TOML import/export) and handed to the AI assistant before it codes (prompt, get_development_standards / list_development_standards tools, resources) |
| Vulnerabilities | manifests, lockfiles and CycloneDX SBOMs checked against an OSV database (PyPI, npm, Maven) imported offline or updated every day by the controller, optional proxy |
| Transport | HTTP (shared server) or stdio (local mode), with optional Bearer tokens stored in the database (token CLI) with expiry and rotation, and TLS (optionally mutual) |
| Audit and metrics | audit log of triage decisions, tokens and enrollments, and Prometheus metrics on /metrics (metrics token) |
| Ticketing | findings sent to Jira or ServiceNow by hand or automatically above a severity threshold, one ticket per issue; third-party connectors for other tools |
| Deployment | MCP server and controller (REST API, web interface) separated on a shared database, Alembic migrations, Docker Compose and Kubernetes examples |
| Enrollment | an MCP client without a token requests its project (request_enrollment MCP tool or enroll CLI), an administrator approves it, then the user creates a personal MCP token in the web interface; a refused token gets a 401 that says how to get a new one |
| Web interface | in English, French or Spanish: dashboard, triage by a person (reason, approver and expiry of the accepted risks and false positives), risk acceptances to renew or remove, with append-only comments, per-project list of open findings for an expert review, management of rules, checklists, tokens (per project or for all projects), report language, outgoing proxy (OSV and OIDC) and OSV updates, local or OIDC user accounts, the only ones to open the interface (tokens are for machines: MCP agents, pipelines, scripts; personal or role API tokens for the REST API and Swagger, personal MCP tokens on the projects of the user, with the mcp-user role; initial admin account in the logs), optional OpenID Connect OIDC login, configurable in the interface, with accounts created on the fly, and roles, groups and permissions (groups matched by name with the OIDC groups claim, roles per project given to groups, never directly to accounts) |
Details: how a review works (rules, checklists, standards, AGENTS.md),
prompts and tools,
whole codebase scan,
dependencies,
gate,
SARIF,
trends.
Quick start
The product runs as two services sharing one database: the MCP server
(security-review-mcp), used by the agents and the CI, and the controller
(security-review-controller), used by people: web interface, REST API, tokens and accounts.
See two services, two roles.
pip install security-review-mcp # Python ≥ 3.14; [postgres] extra for PostgreSQL
# from the same directory (shared SQLite file)
security-review-controller db upgrade # schema (Alembic)
security-review-controller user create admin --group administrators # web interface account
security-review-controller token create --label alice # token of the agent
security-review-controller serve --port 8080 # /ui interface and REST API
security-review-mcp serve --transport streamable-http --port 8000 # /mcp endpoint
security-review-ci gate --url http://localhost:8080 --project portal # block a pipeline (ci token: SECREVIEW_TOKEN)
Host configuration (VS Code with a token, .vscode/mcp.json; Claude and .mcp.json: see
connecting the host):
{
"servers": {
"security-review": {
"type": "http",
"url": "http://127.0.0.1:8000/mcp",
"headers": { "Authorization": "Bearer ${input:secreview-token}" }
}
},
"inputs": [
{ "id": "secreview-token", "type": "promptString", "description": "Token", "password": true }
]
}
Step by step: deploying the server,
connecting the host (VS Code, Claude, enrollment).
Other cases: offline installation,
local stdio mode,
HTTP, authentication and TLS,
Docker images (ghcr.io/cyr-ius/security-review-mcp, docker.io/cyrius44/security-review-mcp) and Docker Compose with PostgreSQL,
architecture and Kubernetes,
SECREVIEW_* variables.
Limits
The scan produces leads, with false positives. Its Python Tree-sitter check covers only simple local SQL flows. It replaces neither a full SAST or SCA analysis, nor a human review. See security and limits.
Contributing
uv sync --extra dev && uv run pytest && uv run ruff check .
Development happens on dev, and a version is released by pushing a vX.Y.Z tag on master.
See the contribution guide and
AGENTS.md (instructions for AI agents).
Security and license
Report a vulnerability privately, as described in SECURITY.md. The project is
distributed under the Apache 2.0 license.
Metadata
Release files for security-review-mcp 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| security_review_mcp-1.0.0.tar.gz | 1.6 MB | With provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| security_review_mcp-1.0.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 3.0 MB
Release files / security_review_mcp-1.0.0.tar.gz
| Download URL | security_review_mcp-1.0.0.tar.gz |
|---|---|
| Size | 1.6 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7613059123df5c8ca9fa3e444706df7f1a0ffc4cca3de786c11cb6be7a853b78
|
|
BLAKE2b-256 checksum How to use checksums |
7074e629602b545723105978fdeb85bbf1ab704e943b540f7c3c7c34c66784b5
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logRelease files / security_review_mcp-1.0.0-py3-none-any.whl
| Download URL | security_review_mcp-1.0.0-py3-none-any.whl |
|---|---|
| Size | 1.5 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
4f98523cedc00c3873665fe28254a697c64a08f02a5c7bef4b85ed7e46494440
|
|
BLAKE2b-256 checksum How to use checksums |
b939aede118fbc766db91ec0c9c2aeb01b9808d9ee7ab867037fa39167bbecf3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logSecurity for security-review-mcp 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 2 files in this release have been uploaded with provenance metadata.
Attestation for security_review_mcp-1.0.0.tar.gz
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 22, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.