Lenses

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

Connect your client

Local (npm)

Add in one click

Opens the app, which asks before it adds the server.

Or add it by command or config

FirstTerminal
npm install -g @storybloq/lenses
Claude CodeTerminal
claude mcp add lenses -- lenses --mcp
Claude Desktopclaude_desktop_config.json
{
  "mcpServers": {
    "lenses": {
      "command": "lenses",
      "args": [
        "--mcp"
      ]
    }
  }
}
Cursor~/.cursor/mcp.json
{
  "mcpServers": {
    "lenses": {
      "command": "lenses",
      "args": [
        "--mcp"
      ]
    }
  }
}
VS Code.vscode/mcp.json
{
  "servers": {
    "lenses": {
      "type": "stdio",
      "command": "lenses",
      "args": [
        "--mcp"
      ]
    }
  }
}
Codex~/.codex/config.toml
[mcp_servers.lenses]
command = "lenses"
args = ["--mcp"]
Gemini CLITerminal
gemini mcp add --scope user lenses lenses -- --mcp

Settings 2

LENSES_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.

What it does

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.

What it needs

RuntimeNode.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.

Limits

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.

Who it suits

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.

Tools 3

lens_review_start
Opens a review of a diff or plan, picks the reviewers that apply and returns their ids, models and deadlines plus any cached findings
lens_review_get_prompt
Returns the full prompt for one reviewer in an open review and starts its timeout
lens_review_complete
Takes reviewer outputs, in whole or in part, and returns the merged verdict, coverage report and any retries to run

Similar servers