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.
Command reference
Generated from vulkro help mcp on vulkro 0.26.0. This block is the
authoritative flag, usage, and exit-code reference for this command; the
prose above is the friendly explanation. Do not edit this block by hand;
run npm run docs:cli after a release.
Run Vulkro as a tool server for AI assistants (Model Context Protocol).
Model Context Protocol surface: run Vulkro as an MCP server that Claude Desktop, Cursor, Windsurf, Continue, and VS Code MCP clients can call. The sibling `vulkro mcp-audit` subcommand audits MCP host configs (it is not part of this group: kept at its original top-level path for backwards compatibility).
Today the only action is `serve`. More sub-actions may be added in future releases.
Exit code: 0 on a clean shutdown, 2 on an operational error. See `vulkro mcp serve --help` for the full per-action contract.
Usage: vulkro mcp [OPTIONS] <COMMAND>
Commands:
serve Run Vulkro as an MCP server. Claude Desktop, Cursor, Windsurf, Continue, and any other JSON-RPC 2.0 MCP client can call the following tools:
help Print this message or the help of the given subcommand(s)
Options:
--offline
Hard-disable every outbound network call for this run (sets VULKRO_OFFLINE=1). Blocks the CVE feed, the license heartbeat, the update check, webhooks, and any cloud AI endpoint; a loopback model (http://127.0.0.1, http://localhost) is still allowed. Equivalent to exporting VULKRO_OFFLINE=1, and the flag wins when both are set
-h, --help
Print help (see a summary with '-h')
$ vulkro mcp serve --help
------------------------------------------------------------
Run Vulkro as an MCP server. Claude Desktop, Cursor, Windsurf, Continue, and any other JSON-RPC 2.0 MCP client can call the following tools:
* `scan_project({path, format?})` - full project scan * `scan_file({path})` - single-file scan * `explain({rule_id})` - per-rule markdown explainer * `list_rules()` - rule catalogue * `get_findings({scan_id})` - re-read prior scan findings
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.
Example Claude Desktop config (`claude_desktop_config.json`):
```json { "mcpServers": { "vulkro": { "command": "vulkro", "args": ["mcp", "serve"] } } } ```
Environment variables honoured by `mcp serve`: * `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).
Pro capabilities (attack-path and impact maps, the release gate, evidence and compliance packs, heavy output formats, etc.) remain Pro capabilities: every language is Free, and a Free-tier user calling a Pro tool gets a JSON-RPC error with a clear upgrade message; the server keeps running.
Exit codes: `0` clean shutdown (the host closed stdin, or Ctrl-C was hit in the SSE mode). `1` the server started but encountered a Pro-feature refusal on a tool call that the caller treated as fatal. `2` operational error: bind failure, transport-level IO error, bad argument to `mcp serve`.
Usage: vulkro mcp serve [OPTIONS]
Options:
--offline
Hard-disable every outbound network call for this run (sets VULKRO_OFFLINE=1). Blocks the CVE feed, the license heartbeat, the update check, webhooks, and any cloud AI endpoint; a loopback model (http://127.0.0.1, http://localhost) is still allowed. Equivalent to exporting VULKRO_OFFLINE=1, and the flag wins when both are set
--port <PORT>
SSE port. When set, the server binds an HTTP listener on `127.0.0.1:<PORT>` and exposes `/sse` (event stream) and `/messages` (POST endpoint for JSON-RPC requests). When omitted, the default stdio transport is used
-h, --help
Print help (see a summary with '-h')