vulkro mcp
The Model Context Protocol surface: run Vulkro as an MCP server that Claude Desktop, Cursor, Windsurf, Continue, and VS Code MCP clients can call.
Today the only action is serve. The command group leaves room for
future sub-actions without breaking the CLI surface.
vulkro mcp <COMMAND>
| Command | Description |
|---|---|
serve | Run Vulkro as an MCP server over stdio (default) or SSE. |
The sibling subcommand vulkro mcp-audit audits MCP host
configs. It is not part of this group: it is kept at its original
top-level path for backwards compatibility.
Tools exposed by vulkro mcp serve
Any JSON-RPC 2.0 MCP client can call these:
| Tool | Description |
|---|---|
scan_project({path, format?}) | Full project scan, returning the same JSON shape as vulkro scan -f json. Returns a scan_id for re-filtering without re-scanning. format is json (default) or summary. |
scan_file({path}) | Scan and return only the findings whose source file matches the given path. Detects the containing project automatically. |
explain({rule_id}) | Markdown explanation of a rule ID. Accepts OWASP-category slugs, MCP-001..MCP-006, EXT-001..EXT-003, and SUP-COMPROMISE-001..SUP-COMPROMISE-005. |
list_rules() | Enumerate every rule, as { id, title, owasp_category, description } from the canonical catalogue. |
get_findings({scan_id, severity?}) | Re-read findings from a prior scan_project call, optionally filtered by severity. |
suggest_fixes({scan_id}) | Git-apply-ready fix suggestions for a prior scan: finding_id, rule kind, file/line, prose explanation, and a unified diff. Vulkro never applies the diff itself. Coverage is intentionally narrow and high-confidence. |
evidence_graph({path, repo_name?}) | The evidence-graph/1.0 document for a project: endpoints with route-shape and auth tier, outbound calls, taint flows, findings with reachability verdicts, dependency evidence. Deterministic, no model is called. |
aggregate({graphs}) | Link two or more evidence-graph documents to surface cross-repo edges. Same linker as vulkro aggregate. Deterministic, no model is called. |
inspect_repo({path}) | Vulkro Inspect as a pre-run check for a just-cloned repository. Surfaces malicious-capability shapes grouped by capability, with file and line per site, over the full unfiltered finding set. |
inspect_repo is a human-review surface, not a gate. It never certifies
code safe, clean, or trusted, and returns no proceed / allow / approve
verdict. Every response carries a top-level disclaimer.
Transport
stdio by default: line-delimited JSON-RPC 2.0 over stdin / stdout, the
transport every major MCP host uses. Pass --port N to expose an SSE
transport on 127.0.0.1:N instead.
vulkro mcp serve # stdio (default)
vulkro mcp serve --port 9100 # SSE on http://127.0.0.1:9100/sse
Client configuration
Example Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"vulkro": {
"command": "vulkro",
"args": ["mcp", "serve"]
}
}
}
Environment variables
| Variable | Effect |
|---|---|
VULKRO_MCP_LOG=1 | Emit per-request trace lines on stderr. Off by default so the stdio JSON-RPC stream stays clean. |
VULKRO_OFFLINE=1 | Disable any outbound HTTP call during scans triggered through the MCP surface (same semantics as the top-level scan subcommand). |
Exit codes
0clean shutdown (the host closed stdin, or Ctrl-C was hit in SSE mode).1the server started but encountered a Pro-feature refusal on a tool call that the caller treated as fatal.2operational error: bind failure, transport-level IO error, or a bad argument tomcp serve.
Related
vulkro mcp serve- the full reference for the server.vulkro mcp-audit- audit MCP host configs (a separate top-level command).vulkro inspect- the CLI form of theinspect_repotool.vulkro scan-mcp-server- scan an MCP server's own source.