claude-mcp-bridge
The claude-mcp-bridge server wraps the Claude Code CLI as MCP tools, enabling any MCP-compatible client (Cursor, VS Code, Windsurf, etc.) to leverage Claude's AI capabilities.
query: Execute prompts with optional file context (text/images), effort control (low/medium/high/max), per-call budget caps, session resume for multi-turn conversations, and a working directory for project-aware responses.structured: Generate JSON output validated against a provided JSON Schema — ideal for data extraction, classification, and machine-parseable output.search: Perform web searches via Claude's WebSearch/WebFetch tools, returning synthesized answers with source URLs.listSessions: Retrieve metadata for active Claude CLI sessions (model, cost, turn count, timestamps).ping: Health check verifying CLI installation, authentication status, and server configuration — no cost incurred.
Across all tools: every response includes execution metadata (_meta) with duration, model, session ID, cost, and token breakdowns. The server also handles concurrency management (up to 3 subprocesses), fallback models on quota exhaustion, and supports both subscription (claude login) and API key authentication.
claude-mcp-bridge
MCP server that wraps Claude Code CLI as a subprocess, exposing its capabilities as Model Context Protocol tools.
Works with any MCP client: Codex CLI, Gemini CLI, Cursor, Windsurf, VS Code, or any tool that speaks MCP.
Do you need this?
If you're in a terminal agent (Codex CLI, Gemini CLI) with shell access, call Claude Code CLI directly:
# Analyze specific files
claude -p --bare --tools Read -- "Analyze src/utils/parse.ts for edge cases"
# With budget cap
claude -p --bare --max-budget-usd 0.50 "Is this retry logic sound?"--bare skips hooks, memory, and plugins for clean subprocess use. --tools restricts which tools Claude can use at all; --allowed-tools only pre-approves permission and leaves everything else, including Bash, still reachable. --max-budget-usd prevents runaway costs.
--tools is variadic, so end the list with -- (or another flag) before the prompt. Without it the prompt is read as one more tool name and the CLI exits with "Input must be provided".
For code review, see Code review with this CLI.
Use this MCP bridge instead when:
Your client has no shell access (Cursor, Windsurf, Claude Desktop, VS Code)
You need structured output with native
--json-schemavalidationYou need session resume across calls (
--resume SESSION_ID)You need concurrency management and security hardening
You want cost metadata surfaced in MCP responses
Related MCP server: consult-mcp
Quick Start
npx claude-mcp-bridgePrerequisites
Claude Code CLI installed and on PATH
Authentication (one of):
Subscription (default):
claude login(uses your Pro/Max plan, no API credits needed)API key: set
ANTHROPIC_API_KEY+CLAUDE_BRIDGE_USE_API_KEY=1(billed per use via console.anthropic.com)
Codex CLI
Add to ~/.codex/config.json:
{
"mcpServers": {
"claude-bridge": {
"command": "npx",
"args": ["-y", "claude-mcp-bridge"]
}
}
}Gemini CLI
Add to ~/.gemini/settings.json:
{
"mcpServers": {
"claude-bridge": {
"command": "npx",
"args": ["-y", "claude-mcp-bridge"]
}
}
}Cursor / Windsurf / VS Code
Add to your MCP settings:
{
"claude-bridge": {
"command": "npx",
"args": ["-y", "claude-mcp-bridge"],
"env": {
"ANTHROPIC_API_KEY": "sk-ant-...",
"CLAUDE_BRIDGE_USE_API_KEY": "1"
}
}
}Tools
Tool | Description |
query | Execute prompts with file context, session resume, effort control, and budget caps. Supports text and images. For code review, see Code review with this CLI. |
search | Web search via Claude CLI's WebSearch and WebFetch tools. Returns synthesized answers with sources. |
structured | JSON Schema validated output via Claude CLI's native |
ping | Health check with CLI version, auth method, capabilities, and model config. |
listSessions | List active sessions with cumulative cost, turn count, and timestamps. |
query
Execute a prompt with optional file context. Supports session resume via sessionId, effort control (low/medium/high/max), and budget caps (maxBudgetUsd). Images (.png, .jpg, .gif, .webp, .bmp) up to 5MB each are passed to Claude's Read tool.
Key parameters: prompt (required), files, model (default sonnet), sessionId, effort, maxBudgetUsd, workingDirectory, timeout (default 60s).
search
Web search powered by Anthropic's WebSearch tool via Claude CLI. Returns synthesized answers with source URLs.
Key parameters: query (required), model (default sonnet), maxResponseLength, maxBudgetUsd, timeout (default 120s).
structured
Generate JSON conforming to a provided schema using Claude CLI's native --json-schema flag. Returns clean JSON in the first content block, metadata in a separate block so JSON parsing isn't broken.
Key parameters: prompt (required), schema (required, JSON string, max 20KB), files, model (default sonnet), sessionId, maxBudgetUsd, timeout (default 60s).
ping
No parameters. Returns CLI version, auth method (subscription/api-key/none), configured models, capabilities, and server version.
listSessions
No parameters. Returns active sessions with metadata: sessionId, model, createdAt, lastUsedAt, turnCount, totalCostUsd.
All tools attach execution metadata (_meta) with durationMs, model, sessionId, totalCostUsd, and token breakdowns. See DESIGN.md for details.
Configuration
Models
Variable | Default | Description |
| Shared default for all tools | |
|
| Default for query |
|
| Default for structured |
|
| Default for search |
|
| Fallback on quota exhaustion ( |
Model resolution: explicit parameter > tool-specific env var > CLAUDE_DEFAULT_MODEL > built-in default.
Runtime
Variable | Default | Description |
|
| Max concurrent subprocess spawns |
|
| Path to CLI binary |
| Global cost cap in USD (per call) | |
| API key (only forwarded when | |
| Set to |
Effort
Variable | Default | Description |
|
| Default effort for search |
| Default effort for query |
Tools
Each spawned subprocess gets an explicit built-in toolset. The defaults are read-only, so Bash, Write and Edit are not granted unless you widen them below.
Variable | Default | Description |
|
| Built-in tools for query |
|
| Built-in tools for structured |
|
| Built-in tools for search |
Accepts a comma or space separated list, default for the CLI's full built-in set, or an empty value for no tools. Widening these gives the subprocess real capability in the working directory you pass it. See SECURITY.md § Tool Sandboxing.
Choosing a Claude Code MCP server
You need... | Consider |
Structured output, effort/budget control, session resume, cost metadata | This bridge |
Multi-tool orchestration (read, grep, edit, bash as separate MCP tools) | |
Session continuity with async execution | |
Maintained lightweight wrapper | |
Native Claude Code MCP (built-in, no wrapper) |
|
Performance
Claude Code CLI has minimal startup overhead. Wall time is dominated by model inference and any agentic exploration.
Scenario | Typical time |
Trivial prompt (sonnet) | 5-10s |
Web search + synthesis | 15-30s |
Cost metadata (totalCostUsd, token breakdowns) is returned in _meta on every response.
Bridge family
Two MCP servers, same architecture, different underlying CLIs. Each wraps a terminal agent as a subprocess and exposes it as MCP tools. Pick the one that matches your model provider, or run both for cross-model workflows.
CLI | Claude Code | Codex CLI |
Provider | Anthropic | OpenAI |
Tools | query, search, structured, ping, listSessions | codex, search, query, structured, ping, listSessions |
Code review | Use Claude Code built-ins directly (not via this bridge), or |
|
Structured output | Native | Ajv validation |
Session resume | Native | Session IDs with multi-turn |
Budget caps | Native | Not supported |
Effort control |
| Not supported |
Cold start | ~1-2s | <100ms (inference dominates) |
Auth |
|
|
Cost | Subscription (default) or API credits (opt-in) | Pay-per-token |
Concurrency | 3 (configurable) | 3 (configurable) |
Model fallback | Auto-retry with fallback model | Auto-retry with fallback model |
Both share: subprocess env isolation, path sandboxing, output redaction, FIFO concurrency queue, MCP tool annotations, _meta response metadata, progress heartbeats.
Code review with this CLI
The reviewer prompt is supplied by the caller. The bridge does not bundle review prompts (see ADR-001).
In Claude Code (interactive REPL): use the built-in
/review,/security-review,/ultrareview. REPL-only; not reachable viaclaude -por this bridge.Through this bridge (
query/structured): pass the review prompt as plain text. Slash commands (built-in or user-installed~/.claude/commands/) do not resolve through the bridge, the isolation flags (--bareon the API-key path,--setting-sources ""on the subscription path) block all skill resolution by design. Tracked upstream: anthropics/claude-code#37207.Direct
claude -p(no bridge): user skills resolve as/skill-namewhen no isolation flags suppress them. For subprocess-isolated review use the hardened invocation below.
Route based on where you are:
Already in Claude Code? Type
/review,/security-review, or/ultrareview. Skip the rest of this section.Calling from another MCP host (Cursor, Codex CLI, Gemini CLI, Claude Desktop)? Slash commands and skills are not reachable through the bridge. Pass your review prompt as plain text to
query/structured, or invokeclaude -pdirectly per below.
Direct claude -p invocation (subprocess-isolated)
For shell-equipped consumers (terminal agents, CI, BYOS skills), invoke the CLI directly with hardened isolation flags:
claude -p \
--permission-mode plan \
--bare \
--add-dir <repo-root> \
--strict-mcp-config \
--mcp-config '{"mcpServers":{}}' \
--no-session-persistence \
--max-budget-usd 0.50 \
"<your review prompt + diff or file references>"--permission-mode plan: read-only.--bare: strips parent's hooks, plugins, auto-memory, andCLAUDE.mdautoload.--add-dir <repo-root>: makes the repo'sCLAUDE.md/AGENTS.mdavailable where the diff warrants it.--strict-mcp-config --mcp-config '{"mcpServers":{}}': blocks parent's MCP servers from leaking in. The innermcpServerskey is required; the schema rejects bare'{}'.--no-session-persistence: no session files for one-off reviews.--max-budget-usd: per-call cost cap.
Claude Code skill template
For Claude Code users who want a reusable command, drop this into ~/.claude/commands/review-claude.md:
---
description: Code review via subprocess-isolated claude -p
---
Run code review on the diff between origin/main and HEAD.
```bash
claude -p \
--permission-mode plan \
--bare \
--add-dir "$(git rev-parse --show-toplevel)" \
--strict-mcp-config \
--mcp-config '{"mcpServers":{}}' \
--no-session-persistence \
--max-budget-usd 0.50 \
"Review the diff below for bugs, missing error handling on user input, tests modified to silence failures, and security issues (injection, missing auth checks, secret leaks). For each finding cite file:line, severity, and a suggested fix. Skip style/formatting.
$(git diff origin/main...HEAD)"
```Representative review prompt
A starting point; adapt freely:
Review the following diff:
<diff content>
Look for:
- Bugs that would surface in production
- Missing error handling on user-supplied input
- Tests modified to silence failures rather than verify behaviour
- Security issues (injection, missing auth checks, secret leaks)
For each finding cite file:line, severity (high/medium/low), and a suggested fix.
Skip style/formatting; assume an autoformatter handles those.Development
npm install
npm run build # Compile TypeScript
npm run dev # Watch mode
npm test # Run tests (vitest)
npm run lint # ESLint
npm run typecheck # tsc --noEmit
npm run smoke # Smoke test against live CLIFurther reading
DESIGN.md - Architecture, sessions, cost tracking, response metadata, progress notifications
SECURITY.md - Environment isolation, path sandboxing, output redaction, tool sandboxing
CHANGELOG.md - Release history
License
MIT
Available Tools
5 toolslistSessionsList SessionsARead-onlyIdempotent
List active Claude CLI sessions tracked by this server. Returns session metadata (IDs, models, timing, turn counts, cumulative cost) for orchestration. Use to check available sessions before resuming with sessionId. No cost (local lookup only).
Inputs: no named parameters.
pingHealth CheckARead-onlyIdempotent
Health check: verifies Claude CLI is installed and authenticated, reports versions, capabilities, and configuration. No cost (local check only).
Inputs: no named parameters.
queryClaude QueryA
Execute a prompt via Claude Code CLI with optional file context and session resume. Claude is an AI coding agent that can generate, analyze, refactor, and explain code.
Capabilities: code generation and refactoring, code analysis and explanation, file understanding (text and images), multi-turn conversations via sessionId.
Cost: Default model is Sonnet (~$0.01-0.10/call). Use effort="low" for simple tasks, effort="high" + model="opus" for complex analysis. Set maxBudgetUsd to cap per-call cost (recommended for effort="max" or model="opus").
Tips:
Set workingDirectory to the target repo for project-aware responses.
Break complex tasks into focused prompts rather than one large request.
Resume multi-turn conversations with sessionId from a previous response's metadata.
Include relevant files via the files parameter for targeted context (text files inlined in prompt, images trigger allowed-tools mode).
Use noSessionPersistence=true for stateless one-shot calls.
Inputs: prompt (required), files, model, effort, +7 more.
searchWeb SearchAIdempotent
Web search via Claude Code CLI using WebSearch and WebFetch tools. Searches the web and synthesizes a comprehensive answer with source URLs.
Use for: current information, documentation lookups, API references, comparing libraries, and research questions.
Cost: Typically ~$0.02-0.05/search with Sonnet.
Tips:
Ask specific, focused questions for best results.
Results include source URLs for verification.
Use maxResponseLength to control response verbosity.
Increase timeout for complex research queries that may require multiple web fetches.
Inputs: query (required), model, effort, timeout, +5 more.
structuredStructured OutputA
Generate JSON conforming to a provided JSON Schema. Uses Claude CLI's native --json-schema flag for validated output (not client-side validation).
Use for: data extraction from text/files, classification, entity parsing, or any task needing machine-parseable output.
Cost: Similar to query (~$0.01-0.10/call). Schema complexity doesn't significantly affect cost.
Tips:
Pass the JSON Schema as a JSON string in the schema parameter.
Schema max size: 20KB. Keep schemas focused for reliable output.
For extraction tasks, include source text via the files parameter or inline in the prompt.
Inputs: prompt (required), schema (required), files, model, +5 more.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 5 tools
Each tool serves a clearly distinct purpose: listing sessions, health checking, executing prompts, web searching, and structured JSON generation. No overlap or ambiguity.
Tool names follow no consistent pattern: 'listSessions' uses camelCase verb_noun, 'ping' and 'query' are single-word verbs, 'search' is a verb, 'structured' is an adjective. Mixing conventions makes the naming unpredictable.
With 5 tools covering session management, health check, code query, web search, and structured output, the count is well-scoped for the server's purpose of bridging to Claude CLI.
The tool set covers the core intended actions (query, search, structured output) and adds session listing and health check. Minor gaps exist (no tool to create or manage sessions beyond listing), but agents can work around them.
Maintenance
Related MCP Connectors
Shared memory MCP server for Claude Code, Codex, Gemini CLI and Cursor. Cited, editable.
MCP server unifying ERPs, CRMs, APIs and knowledge base for Claude, ChatGPT and Gemini.
Real-time chat hub for AI agents — Claude Code, Cursor, Cline, Codex over MCP or REST.
Remote MCP server exposing your Node Command fleet (files, shell, processes, browser) to AI hosts.
Related MCP Servers
- AlicenseNot gradedqualityFmaintenanceAn MCP server that orchestrates AI coding assistants (Claude Code CLI and Gemini CLI) to perform complex programming tasks autonomously, allowing remote control of your local development environment from anywhere.19 npm140MIT
- AlicenseAqualityDmaintenanceMCP server orchestrating local CLI agents (Claude Code, OpenAI Codex, Google Gemini) for cross-validation, second opinions, and persona-driven prompting.18MIT
- AlicenseBqualityCmaintenanceMCP server connecting Claude/Cursor to Codex CLI, enabling code analysis via @ file references, multi-turn conversations, sandboxed edits, and structured change mode.13100 npm24MIT
- AlicenseNot gradedqualityCmaintenanceMCP server that bridges Claude Code to Google Antigravity's CLI, enabling Claude to orchestrate Gemini workers in parallel for reading, writing, verifying, and autonomous tasks. It provides tools for single dispatch, parallel fan-out, background jobs, and handles permission, cwd, and shell pitfalls.2MIT