VisionMCP
A local MCP server for managing visual evidence projects: capture, inspect, compare, verify, and review visual artifacts.
List available, blocked, and experimental capabilities for the active profile.
Run an offline core doctor without optional dependencies.
Create portable projects and open, close, or check the status of project paths.
Capture local visual targets into durable OBSERVED evidence with no browser.
Query observed perceptual graphs with exact artifact citation.
Explain evidence, authority, and uncertainty at a given observed pixel.
Compare two captures by digest identity and overview metadata.
Verify captures by evidence digest or verify receipt files.
List and retrieve content-addressed artifacts by SHA-256 digest.
Return compact perception progress and evidence counts.
List items that still require named human or policy review.
Provides 3D analysis capabilities using Blender, including geometry reconstruction, GLB/glTF handling, validation, and rendering, with optional authorized Blender lane for visual evidence in VisionMCP.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@VisionMCP compile the visual program from the latest capture"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
VisionMCP
A visual compiler and verifier for coding agents.
VisionMCP turns rendered evidence into inspectable visual programs, compares target and candidate worlds, maps residuals back to source, and binds claims to tamper-evident receipts. It runs locally, exposes a small MCP surface by default, and moves heavy evidence through content-addressed resources.
uvx --from \
'visionmcp-ocular[compiler] @ git+https://github.com/joshuahickscorp/visionmcp@v0.8.0-alpha.2' \
visionmcp demo compilerThat demo needs no account, API key, model weight, or network after installation. It compiles a bundled CC0 fixture, injects one controlled source defect, maps the residual to its declaration, repairs it, verifies the receipt, and rejects two tampered copies.
Public alpha. Ocular is EXPERIMENTAL. The previous Apple benchmark scored 297 cases across three experiments with zero complete passes. VisionMCP does not claim a perfect copy or original-source recovery.

What works
A 15-tool lightweight core for projects, local evidence, artifact lookup, comparison, verification, progress, and review.
Versioned, paginated, content-addressed MCP resources for captures, states, motion, correspondence, residuals, source bindings, repairs, receipts, benchmarks, models, and binary analyses.
An evidence-to-
VisualProgramIRcompiler with deterministic HTML/CSS emission and explicit uncertainty.A loopback-only Studio with target/candidate views, correspondence, residuals, source traces, repair queue, motion, receipts, 3D, and authorized binary summaries.
Portable receipt verification that rejects changed payloads and artifacts.
Optional physical Ghidra and Blender lanes with governed authorization and honest blockers when runtimes are absent.
The machine-readable claim authority is
artifacts/capability-ledger.json; the
human view is docs/CAPABILITY_LEDGER.md. README
claims are checked against that ledger in CI.
Related MCP server: Witnessed
Try it from a clone
git clone https://github.com/joshuahickscorp/visionmcp
cd visionmcp
uv sync --extra dev --extra ocular
uv run visionmcp doctor --core
uv run visionmcp demo compiler
uv run visionmcp demo verify
uv run visionmcp studioThe distribution name remains visionmcp-ocular; the import and command are
both visionmcp. Production PyPI is not published as part of this alpha
without separate operator authorization.
Profiles
Profile | Adds | Host requirements |
| projects, local media evidence, receipts, resources | none beyond core Python dependencies |
| governed Chromium/DOM/a11y/style/network evidence |
|
| VisualProgramIR, emission, repair planning, benchmark creation | core install |
| Blender, GLB/glTF, geometry and validation | Blender; geometry extra for reconstruction |
| authorized isolated Ghidra analysis | Ghidra 11.2.1 and JDK 21+ |
| recorded streams, tracking, world state, next-view |
|
| accepted public profiles | profile-specific runtimes |
| evaluators, probes, attack fixtures, diagnostics |
|
visionmcp serve --profile core
visionmcp serve --profile compiler
visionmcp capabilities --profile compiler --jsonCore exposes 15 high-level MCP tools—inside the 12–20 target—and does not load a browser, Blender, Java adapter, model backend, or plugin at startup.
Studio
visionmcp studio
# prints and opens http://127.0.0.1:7741/Studio binds only to 127.0.0.1, has no account or telemetry, lazy-loads heavy
evidence, draws correspondence graphs on a bounded canvas, supports keyboard
navigation, and exports a static report. It refuses 0.0.0.0.
Demos
visionmcp demo compiler
visionmcp demo verify
visionmcp demo binary # physical Ghidra or structured BLOCKED + exact fix
visionmcp demo 3d # physical Blender or structured BLOCKED + exact fix
visionmcp demo ocular # EXPERIMENTAL recorded fixturedemo binary analyzes a source-known fixture without executing it or giving
the analyzer its source. Decompiler output is labelled approximation.
demo 3d produces an editable BLEND, desktop/mobile GLBs, a fixed Cycles
render, an authority/uncertainty map, reopen validation, and a receipt. Neither
demo silently substitutes a fallback PASS.
Receipts and benchmarks
visionmcp receipt explain path/to/receipt.json
visionmcp receipt verify path/to/receipt.json
visionmcp benchmark escrow doctor --escrow path/to/escrow
visionmcp benchmark escrow rehearse --escrow path/to/escrow --public-onlyA receipt says what physically ran, what was inferred, what was blocked or substituted, and which claims remain experimental. Integrity verification is not fidelity verification.
Evaluator escrow binds corpus splits, metrics, thresholds, environment, canaries, counters, commands, schemas, rights, and digests. Hidden execution is opaque and policy-gated; Apple Parity 05 hidden remains untouched until every frozen public case passes.
Local-first and safe by default
Telemetry is off.
Core doctor is offline.
No model or browser is downloaded automatically.
Studio is loopback-only.
Plugin discovery reads data manifests and imports no third-party code.
Optional workers are bounded and checked for leaks.
Public export audits reject creator-local paths and private benchmark data.
See docs/SECURITY.md, docs/PRIVACY.md,
docs/security/THREAT_MODEL.md, and
docs/LIMITATIONS.md.
Honest failure history
The Apple work is valuable because it failed loudly. Three Parity 04 experiments produced zero complete passes over 297 scored cases and exposed false-pass mechanisms around identity, observability, containment, assets, and evaluator authority. Those failures are preserved in the capability ledger and launch notes. The public alpha is useful independently of Apple Parity 05.
Contributing
Run the focused public gates:
python tools/scripts/check_capability_ledger.py
pytest -q
ruff check .
python -m build # core wheel
uv build tools/packaging/visionmcp-ocular-kernels # companion wheelBoth wheels are required. Every extra except imaging pins
visionmcp-ocular-kernels, and python -m build does not produce it — a core
wheel alone gives ModuleNotFoundError on roughly forty subpackages.
Start with .github/CONTRIBUTING.md,
docs/ARCHITECTURE.md, and
docs/PLUGIN_API.md. Security reports follow
docs/SECURITY.md; do not open a public issue for an undisclosed
vulnerability.
Apache-2.0. Demo and model asset licenses are enumerated separately.
Available Tools
15 toolsproject.createC
Create a portable project (millimetres, right-handed, Z-up).
Inputs: name (required), target_fidelity. Returns: object
project.statusC
Return project status and directory health.
Inputs: project_path (required). Returns: object
system.doctorC
Core doctor: offline, no optional dependency required.
Inputs: no named parameters. Returns: object
vision.capabilitiesA
List available, blocked, and experimental capabilities for the active profile.
Inputs: no named parameters. Returns: object
vision.close_projectA
Forget a project path from the session map (does not delete files).
Inputs: project_path (required). Returns: object
vision.compareC
Compare two captures by digest identity and overview metadata.
Inputs: capture_a (required), capture_b (required), project_path (required). Returns: object
vision.explain_regionC
Explain evidence, authority, and uncertainty at an observed pixel.
Inputs: x (required), y (required), capture_id (required), project_path (required), +1 more. Returns: object
vision.get_artifactC
Resolve a content-addressed artifact by SHA-256 digest.
Inputs: digest (required), project_path (required), include_path. Returns: object
vision.list_artifactsC
List content-addressed artifacts recorded in the project.
Inputs: project_path (required), limit. Returns: object
vision.observeB
Capture a local visual target into durable OBSERVED evidence (no browser).
Inputs: project_path (required), rights_decision (required), target, adapter, +2 more. Returns: object
vision.open_projectA
Open an existing project path and remember it for this session.
Inputs: project_path (required). Returns: object
vision.progressC
Return compact perception progress and evidence counts.
Inputs: project_path (required). Returns: object
vision.queryC
Query an observed perceptual graph with exact artifact citation.
Inputs: query (required), capture_id (required), project_path (required). Returns: object
vision.review_queueC
List items that still require named human or policy review.
Inputs: project_path (required). Returns: object
vision.verifyC
Verify a capture by evidence digest or verify a receipt file.
Inputs: project_path (required), capture_id, receipt_path. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 15 tools
Each tool has a clearly distinct purpose: capabilities, system doctor, project management (create/status/open/close), artifact listing/resolution, visual capture (observe, query, explain, compare, verify), progress reporting, and review queue. No two tools overlap in function.
Naming uses a mix of conventions: 'vision.capabilities' (noun), 'system.doctor' (noun), 'project.create' (verb), 'vision.open_project' (verb with underscore). While readable, the pattern is inconsistent across tools.
With 15 tools, the server covers project, artifact, and visual capture workflows comprehensively without unnecessary bloat. The count feels well-scoped for the domain.
The tool surface covers core operations: project lifecycle (create/status/open/close), artifact access, visual capture and verification, and review. Minor gaps like absence of project update/delete or artifact removal exist, but the domain is self-contained.
Maintenance
Related MCP Connectors
Cryptographically anchored evidence for agents: verified run receipts, proof-gated settlement.
AI-native programming language and toolchain for accountable, verifiable agent-driven development.
One-stop claim verification for AI agents: verdicts with confidence, evidence, signed receipts.
Bounded authorization and independently verifiable execution evidence for agents.
Related MCP Servers
AlicenseNot gradedqualityDmaintenanceTamper-evident receipts for AI agent actions. The notary layer for agent-to-agent transactions.40 npm1MIT- AlicenseNot gradedqualityDmaintenanceVerifiable action receipts for AI agents — agents sign claims locally, an independent witness countersigns and timestamps, anyone can verify offline.9 npmMIT
- AlicenseNot gradedqualityDmaintenanceA deterministic AST evidence engine that forces AI agents to debug using verified execution facts instead of pattern-matching symptoms, enabling hallucination-free debugging for MCP-compatible agents.27 npmBusiness Source 1.1
- AlicenseNot gradedqualityDmaintenanceGives AI coding agents a closed-loop verification cycle for visual, audio, and video output, with enforcement hooks that make verification mandatory.Apache 2.0