claude-bridge
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| CLAUDE_BRIDGE_CWD | No | Default working dir for claude -p. Per-call cwd= overrides | bridge process cwd |
| CLAUDE_BRIDGE_LOG | No | If set to a path, writes one JSONL line per state transition (dispatch_start, dispatch_end, dispatch_cancelled, dispatch_error, bridge_init_orphans). Helps when something looks wrong at the bridge layer | |
| CLAUDE_BRIDGE_STATE | No | Channel→session map (atomic writes). The same directory holds jobs.json, schedules.json, job-output/<job_id>/{stdout,stderr} and (if enabled) the JSONL log | ~/.claude-bridge/sessions.json |
| CLAUDE_BRIDGE_CLAUDE_BIN | No | Override claude binary location | claude |
| CLAUDE_BRIDGE_LOG_PROMPTS | No | Set to 1 to include prompts in the JSONL log too. Off by default | |
| CLAUDE_BRIDGE_PERSIST_PROMPTS | No | Set to 1 to include the prompt text in jobs.json. Off by default; opt in for post-mortem debugging | |
| CLAUDE_BRIDGE_DEFAULT_PERMISSION_MODE | No | Default if caller omits permission_mode | acceptEdits |
Capabilities
Features and capabilities supported by this server
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| bridge_helpA | Return a structured guide to every tool, recommended workflow, and common gotcha. Call this once when you start using the bridge, or whenever you're unsure which tool fits a situation. The shape:
|
| dispatchA | Run a prompt against Claude Code in this devcontainer; return the result. Use for short prompts (under ~60s round trip). For anything longer
use Args:
prompt: The natural-language task for Claude Code.
channel: Logical conversation thread. Same channel = shared
session (subsequent calls Returns:
Success: |
| dispatch_asyncA | Spawn a dispatch in the background, return a Use this for anything that may exceed the MCP transport's per-call
ceiling (~60s in Cowork) — persona runs, refactors, anything in a
busy project. The subprocess is spawned with its own session
( Then poll with Args mirror Optional webhook notification ( Payload shape (truncated to 4KB on Returns:
Success: |
| get_dispatchA | Non-blocking read of a job's current state.
Unknown |
| wait_dispatchA | Long-poll a job for up to Default 50s is intentionally below the typical MCP transport
ceiling (~60s) — call this in a loop and break when |
| cancel_dispatchA | User-cancel a running job. SIGTERMs the subprocess by PID, then
cancels the asyncio task. Status becomes Returns |
| list_jobsA | All tracked jobs (running and finished). |
| schedule_dispatchA | Recurring dispatch: fire Each tick is an independent Args:
prompt: The text fired at each tick.
channel: Channel for every tick. Same-session continuity
across ticks (each tick Returns:
Self-cancellation: if any tick's result text contains
Webhook payload shape ( |
| list_schedulesB | Every schedule the bridge knows about — active, completed, cancelled, error. |
| get_scheduleC | Detail view of one schedule. Includes |
| cancel_scheduleA | Stop a schedule from firing further ticks. In-flight ticks are
not cancelled — use |
| list_completionsA | Jobs whose Use Returns |
| wait_any_completionA | Long-poll up to Default 50s is below the MCP transport ceiling so you can re-enter
in a loop. Useful when watching schedule ticks land without
polling each tick's |
| list_eventsA | Return bridge events whose The event log records dispatch starts/ends, schedule ticks, sentinel hits, schedule completions, webhook outcomes, and recovery actions. The buffer is bounded (default 1000 events) and persisted across bridge restarts. Two read modes:
Cursor pattern: pass
Common
Each event has Note: events generated before this feature shipped are gone — the
in-memory buffer only captures from the current bridge process
onward. Anything you persisted before then lives in the optional
|
| list_channelsA | channel → pinned session_id. Doesn't tell you whether work is
in flight on a channel — use |
| reset_channelA | Drop a channel's pinned session so the next dispatch starts a fresh Claude Code session. Useful when a project MCP server has wedged inside the channel's session and you want a clean reconnect. Does not cancel running work — use |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/JosiahSiegel/claude-bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server