Better Fullstack
Plans, scaffolds and maintains multi-language full-stack projects from a catalogue of parts
Multi-perspective code and plan review, split across eight parallel reviewer prompts
By Story bloq TypeScript Local · stdio Developer tools
30 popularity score ★ 17 ↓ 66/wk
Opens the app, which asks before it adds the server.
npm install -g @storybloq/lensesclaude mcp add lenses -- lenses --mcp{
"mcpServers": {
"lenses": {
"command": "lenses",
"args": [
"--mcp"
]
}
}
}{
"mcpServers": {
"lenses": {
"command": "lenses",
"args": [
"--mcp"
]
}
}
}{
"servers": {
"lenses": {
"type": "stdio",
"command": "lenses",
"args": [
"--mcp"
]
}
}
}[mcp_servers.lenses]
command = "lenses"
args = ["--mcp"]gemini mcp add --scope user lenses lenses -- --mcpLENSES_SESSION_DIR |
Optional: Folder for saved review sessions; defaults to lenses-sessions under the system temp directory. |
|---|---|
LENSES_SESSION_TTL_MS |
Optional: How long saved sessions are kept, in milliseconds; defaults to 7 days. |
Lenses is a local MCP server that organises a code review (or a review of an implementation plan) as several narrow reviews at once. You hand it a diff or plan text and the list of changed files; it decides which of its eight reviewers apply (security, error-handling, clean-code, performance, api-design, concurrency, test-quality, accessibility), builds a full prompt for each, and suggests a model per reviewer (opus for security and concurrency, sonnet for the rest).
The server does not call any model itself. The assistant fetches each prompt, runs it in a subagent, and passes the outputs back. Lenses then checks each finding against a strict schema, removes duplicates across reviewers, drops low-confidence findings into a deferred list, applies its blocking rules and returns one verdict, with a coverage report and retry instructions for reviewers that failed, timed out or skipped without good reason. A reviewer left uncovered keeps the verdict below approve.
The flow is built around Claude Code, which spawns the subagents. The same package is also a library used by the storybloq review backend. Review sessions are kept between rounds as JSON files in a lenses-sessions folder under the system temp directory, kept for 7 days by default (src/cache/session.ts); the README does not mention this.
| Runtime | Node.js 20+ |
|---|
Node.js 20 or newer and npm to install the package globally. An MCP client that can spawn subagents and run the prompts it is given; the docs are written for Claude Code. No API key or account: the model calls happen in the client.
It reviews only what the client passes in (a diff or plan text and a list of files); it does not read the repository or run code. The review only completes if the client runs each reviewer prompt and returns the results, so clients without subagents gain little. The program exits with an error unless started with exactly the single argument --mcp (src/cli-args.ts). Retries are capped at 2 attempts per reviewer by default. Session files are capped at 10 MB.
Suits Claude Code users who want a structured, repeatable review of a diff or plan before merging, with findings grouped by concern and a single verdict, without managing an API key. Less useful in clients that cannot spawn subagents, or for anyone wanting a reviewer that reads the repository itself. Its licence (PolyForm Shield) allows any use except building a product that competes with storybloq or lenses. For an all-in-one project tracker that bundles this server, its makers point to storybloq, which we also list.
lens_review_startlens_review_get_promptlens_review_complete