review-lsp
Provides semantic code review context for a specific Git commit by materializing the candidate source from Git objects and enabling LSP hover and definition queries against that exact commit.
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., "@review-lspwhat's the hover result for the symbol at src/example.ts:12:8 in commit abc123?"
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.
Review-LSP
Candidate-bound semantic code intelligence with provenance for AI code review.
Review-LSP runs LSP semantic queries against an exact Git candidate, not whichever checkout happens to be live. Each successful query returns a content-addressed receipt binding the candidate, document, semantic toolchain, environment, request, result, and isolation mode.
Current public release: 0.1.0-alpha.1.
npm install review-lsp@alpha
npx review-lsp artifact-infoThe registry currently exposes both
alphaandlatestas0.1.0-alpha.1. Use@alphaexplicitly while Review-LSP is prerelease software.
Why Review-LSP?
Editor LSPs answer questions about the workspace that is open now. Code review frequently needs a different authority: the exact commit being reviewed.
Review-LSP makes that distinction explicit.
commit A: value is string
commit B: value becomes number
live checkout: B
query(candidate = A) -> string
query(live workspace) -> irrelevant to the reviewThe included A/B acceptance test exercises exactly this case.
Related MCP server: io.github.wende/cicada
What it proves — and what it does not
Claim | Meaning |
| The retained source matches the admitted candidate manifest at the required integrity checks. |
| The semantic inputs covered by the active profile are fully admitted. |
| Some semantic input, such as package dependencies or external config, is not yet snapshot-bound. |
| Native candidate bytes are read-only and integrity-checked, but the host itself is trusted. |
| Linux verified the candidate as a read-only mount and the exact container image identity is bound. |
Receipts are tamper-evident evidence, not signatures and not proof that the language server—or the reviewed code—is semantically correct.
Architecture
flowchart LR
G[Exact Git commit] --> C[Candidate materialization]
C --> M[Source manifest]
M --> E[Environment admission]
E --> L[Pinned TypeScript LSP]
L --> R[Semantic result]
R --> P[Content-addressed receipt]
P --> X[Review consumer]
W[Live checkout] -. not review authority .-> XThe standalone core does not depend on Zamery Workbench or OpenCodeReview. Consumer adapters can admit Review-LSP receipts independently.
For the component-level model and trust boundaries, see docs/ARCHITECTURE.md.
Alpha surface
The current TypeScript profile includes:
typescript-language-server@6.0.0;typescript@6.0.3;exact local Git commit candidates;
hoveranddefinition;CLI lifecycle:
prepare,inspect,query,validate,close;MCP stdio server with:
review_lsp_candidate_inforeview_lsp_hoverreview_lsp_definition;
native
TRUSTED_LOCALexecution;Linux
CONTAINER_READ_ONLYexecution;content-addressed package/provider artifact identity.
Quickstart
Prepare an exact commit:
npx review-lsp prepare /path/to/repo <commit> --state /tmp/review-lsp-stateThe output includes candidate_descriptor. Query it using 0-based LSP positions:
npx review-lsp query <candidate.json> hover src/example.ts 12 8
npx review-lsp query <candidate.json> definition src/example.ts 12 8Validate the persisted receipt:
npx review-lsp validate <receipt.json>Release the retained candidate when finished:
npx review-lsp close <candidate.json>Inspect the installed provider identity:
npx review-lsp artifact-infoMCP
Run an MCP stdio server bound to one candidate at process start:
npx review-lsp serve /path/to/repo <commit> --state /tmp/review-lsp-stateThe semantic MCP tools require expected_candidate_id, so a caller cannot silently retarget a running process to another candidate. Logs go to stderr; stdout is reserved for MCP framing.
Linux container profile
From a source checkout on Linux with Docker:
pnpm container:build
pnpm test:container:linuxThe container profile uses:
a read-only candidate bind mount;
a read-only root filesystem;
no network;
dropped Linux capabilities;
no-new-privileges;bounded memory, CPU, and PIDs;
tmpfs only for bounded writable state/scratch;
exact Docker image identity in the environment manifest.
The inner process verifies that /candidate is an explicit Linux read-only mount before a receipt may claim CONTAINER_READ_ONLY.
Release evidence
0.1.0-alpha.1 was verified with:
macOS 14 / Node 22.19.0 — PASS;
macOS 14 / Node 24.19.0 — PASS;
Ubuntu 24.04 / Node 22.19.0 — PASS;
Ubuntu 24.04 / Node 24.19.0 — PASS;
Linux Docker isolation smoke — PASS;
clean public-registry install + A/B semantic smoke — PASS.
See compatibility evidence and the release notes.
Current limitations
Dependency snapshots are not admitted yet; dependency-bearing projects remain
PARTIAL.TypeScript only for this alpha.
Dirty-worktree candidates are not supported.
References, symbols, diagnostics, and additional semantic operations are deferred.
MCP is local stdio only.
Windows is not in the alpha compatibility claim.
Native mode is not a hostile-host sandbox.
A malicious container host administrator is outside the container profile's threat boundary.
See ROADMAP.md for likely next areas.
Development
Requirements:
Node.js 22.19+ or 24.x;
pnpm 10.20.0;
Git;
Docker for the Linux container profile.
git clone https://github.com/maemreyo/review-lsp.git
cd review-lsp
pnpm install --frozen-lockfile
pnpm checkThis source repository is managed with pnpm. Do not run npm install review-lsp@alpha inside a checkout whose node_modules was created by pnpm; npm 11 can crash while traversing pnpm-managed symlinks. Test the published package in a fresh consumer directory instead.
Useful commands:
pnpm test:unit
pnpm test:acceptance
pnpm demo:ab
pnpm test:mcp:stdio
pnpm test:package
pnpm benchmarkContributing and support
Bugs and feature requests belong in GitHub Issues. Usage questions and integration design discussions belong in GitHub Discussions. Security vulnerabilities should use GitHub private vulnerability reporting.
License
Apache-2.0. Direct runtime dependency license evidence is generated into dist/review-lsp-licenses.json during the alpha build.
This server cannot be deployed
Maintenance
Related MCP Connectors
Deterministic context layer for your codebase: change impact, blast radius, answers with receipts.
Codebase graphs, caller impact analysis, and recorded project context for AI coding agents.
Versioned documentation registry and semantic search for AI tools and coding assistants.
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Related MCP Servers
AlicenseNot gradedqualityAmaintenanceEnables AI agents to query architecture context, data contracts, and blast radius to prevent cross-repo architectural breakage before merging.24Apache 2.0- AlicenseNot gradedqualityDmaintenanceProvides structured, token-efficient code context for AI assistants by indexing codebases with AST-level analysis, supporting 17+ languages, enabling semantic search, call-site tracking, and PR attribution.40MIT
- AlicenseNot gradedqualityBmaintenanceEnables coding agents to generate question-scoped repository maps, inspect symbols and SQL lineage, and audit working-tree diffs for ripple candidates, all verified against the current Git commit.1Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI coding assistants to query a persistent local code graph for targeted context, blast-radius analysis, and incremental updates, so they read only relevant files during reviews and large-repo workflows.MIT