OpenCode MCP Bridge
Coordinate and verify OpenCode workers over MCP Streamable HTTP.
Connector by ManuOtel · GitHub account verified by the MCP Registry
Chalk Labs
Need help deploying OpenCode MCP Bridge?
Chalk Labs sets up agents like this inside real teams: connected to your tools, tested on your data, with a human in the loop where it matters.
Install
Works with Claude Code, VS Code, Cursor, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install connector/manuotel-opencode-mcp-bridge
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Remote endpoint
https://opencode-mcp.manuotel.com/worker-mcpRemote (HTTP)
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this server can do and what it asks for, from its tool list, install config and code. Checked Oct 25, 2026.
- Tools
- 10 read · 5 write · 4 delete
- Secrets
- 1 (API keys, tokens or passwords)
- Install scripts
- Nothing to install (hosted)
- Runs as
- Hosted (remote endpoint)
Tools by what they do 19
Read from the source code; the running server may list different tools.
Read 10 · Look things up without changing anything.
get_diffget_sessionlist_agentslist_messageslist_providerslist_sessionsworker_catalogworker_statusworker_verifyworker_wait
Write 5 · Create, change, send or run things.
create_sessionsend_messageworker_decideworker_resumeworker_run
Delete 4 · Delete, drop, revoke or wipe things.
abort_sessiondelete_sessionexec_runworker_cleanup
Secrets and settings it asks for
Secrets: values you paste in that let it act as you.
Authorization
Network hosts it talks to 5
github.com· found in codeglama.ai· found in codehost.docker.internal· found in codeopencode-mcp.manuotel.com· found in remote endpoint, install command, codeopencode.ai· found in code
Files it touches
/var/lib/opencode-mcp-bridge/tasks.json- Your home directory (~)
- Any path the agent passes to its tools
Tools (19)
Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].
abort_sessioncan change or delete dataAbort a running session. Args: sessionID: Session ID. directory: Working directory override. Returns: Dict with sessionID and aborted=True.
create_sessionCreate a new opencode session. Args: title: Session title. directory: Working directory (must be within allowed directories). Returns: Created session returned by opencode. Select agent, provider, and model on send_message.
delete_sessioncan change or delete dataDelete a session and all its data. Use to clean up test sessions. Args: sessionID: Session ID. directory: Working directory override. Returns: Dict with sessionID and deleted=True.
exec_runcan change or delete dataRun a raw shell command on the server. Full access, no sandbox. Opt-in only: disabled unless ENABLE_EXEC_RUN=true. The tool stays listed on /mcp for backward compatibility, but calls fail closed when disabled. Prefer opencode sessions for code changes (they track diffs). Use this for system ops: docker, systemctl, logs, networking, disk. /worker-mcp never exposes this tool; it is the recommended endpoint. Args: command: Shell command to run. workdir: Working directory. Defaults to the server default. timeout_s: Timeout in seconds. Defaults to server setting. Returns: Dict wi…
get_diffread-onlyGet file diffs produced by a session. Args: sessionID: Session ID. messageID: Optional message to scope the diff. directory: Working directory override. Returns: File diff list from opencode.
get_sessionread-onlyGet one session by ID. Args: sessionID: Session ID. directory: Working directory override. Returns: Simplified session dict.
list_agentsread-onlyList available opencode agents (e.g. plan, build). Args: directory: Working directory. Defaults to the server default. Returns: Agent list with name/mode/description.
list_messagesread-onlyList messages in a session (user prompts and assistant replies). Args: sessionID: Session ID. directory: Working directory override. limit: Max messages (1-200). Returns: List of {id, role, text, time} dicts.
list_providersread-onlyList opencode providers and models. Call this first for the model picker. Returns: Dict with providers [{providerID, name, modelIDs, connected}] and default map.
list_sessionsread-onlyList recent opencode sessions. Args: directory: Filter directory. limit: Max sessions (1-100). Returns: Simplified session dicts.
send_messageSend a prompt to a session and wait for the assistant reply. Args: sessionID: Session ID from create_session. message: The message text for the agent. prompt: Backward-compatible alias for message. Supply exactly one. providerID: Optional model override provider. modelID: Optional model override model. agent: Optional agent override. directory: Working directory override. Returns: Dict with sessionID, messageID, text, and model info.
worker_catalogread-onlyList worker models with free/connected filters. Free means the model ID or name contains an explicit "free" marker (case-insensitive). Zero token-cost metadata alone never counts as free; cost metadata is preserved in entries but does not infer billing entitlement. The configured default provider/model sorts first when it survives filters, then provider/model order. `recommendations` is filter-independent and always lists rank 1 (configured free default, try first) then rank 2 (paid OpenCode Go `opencode-go/muse-spark-1.3-contributor`, explicit request only). Args: query: Case-insensitiv…
worker_cleanupcan change or delete dataClean up a worker with an explicit abort or delete action. All arguments are validated before any side effect runs. Delete is idempotent: when the session is already gone from OpenCode (HTTP 404 on abort or delete), the task record is still removed and delete reports success with a generic warning, so stale workers clean up safely. Only the given taskID is ever touched; unrelated sessions are never listed or killed. Args: taskID: Task ID from worker_run (the session ID). directory: Working directory override. action: Either "abort" (stop the worker, keep the session) or "…
worker_decideDecide a paused approval-gated task without starting any work. Approve moves approval_required to approved (still no OpenCode call; start it with worker_resume and the same inputs). Reject moves it to rejected, terminal. Expired, duplicate, or mismatched decisions fail safely with no state change and no side effects. The approval token must match the token returned by worker_run for the same taskID. An optional directory must canonically match the stored directory when supplied; omitted recovers the stored directory. Args: taskID: Pending approval task ID from worker_run (apr_ prefix). …
worker_resumeResume an approved task by starting the deferred worker exactly once. Only approval_required tasks that worker_decide approved, with a matching approval_token and the same inputs (message fingerprint), unexpired, and not already resumed, may start. The deferred session is created and prompted once; duplicates, mismatches, rejections, expirations, and re-resumes fail safely with no second session. The prompt text is hashed for same-task matching and never stored. Args: taskID: Approved task ID from worker_run (apr_ prefix). approval_token: Matching token returned by worker_run. me…
Show 4 more tools
worker_runStart a background worker: create a session and prompt it without waiting. Model overrides, request IDs, and directory lengths are validated before anything is created, so invalid input has no side effects. When requestID repeats with the same inputs, the existing task returns with deduplicated=true and no second session is created. If the recorded session no longer exists in OpenCode (registry survived while the session did not, e.g. after cleanup or server data loss), the retry transparently recreates it and returns deduplicated=false. Uncertain liveness (non-404 lookup failures) keeps the …
worker_statusread-onlyPoll a background worker for state and its latest assistant text. Immediate snapshot fallback for worker_wait: never blocks, never invokes an LLM call, never requires client sleep polling. Pass the directory returned by worker_run when it differs from the configured default: status and messages are directory-scoped. When directory is omitted, the saved task record is used to recover it. A worker that stays running with empty output past TASK_STALE_AFTER_S is classified stale with a bounded reason and a recovery hint; clean it with worker_cleanup action=delete for this taskID only. Args: …
worker_verifyread-onlyVerify a worker: bounded latest output plus a read-only git bundle. Never runs caller-provided commands. Git inspection uses only fixed arguments via asyncio.create_subprocess_exec, never a shell, each with a narrowly scoped ``-c safe.directory`` for the inspected directory. Args: taskID: Task ID from worker_run (the session ID). directory: Repository directory to verify. Defaults to server default. max_output_chars: Output cap, clamped to a bounded range. Returns: Compact dict with taskID, sessionID, state, status, bounded output counts, directory, and a verification bu…
worker_waitread-onlyWait for a background worker to change state, bounded server-side. Coordinator-friendly alternative to client sleep polling: the server polls OpenCode on the caller's behalf and returns as soon as the task state (or assistant output progress) changes, or when the bounded timeout expires. Never waits indefinitely: timeout_s is clamped to a finite [1, 120]s range and the call always returns by the deadline. Never invokes an extra LLM call: only read-only GET /session/status and the latest assistant message are used, never prompt_async. Keep worker_run asynchronous and use worker_status for an i…
Signals
- Stars
- 3
- Forks
- 0
- Open issues
- 0
- Last commit
- Oct 15, 2026 (15 days ago)
- Last release
- Sep 21, 2026 (1 month ago)
From GitHub (fetched Oct 24, 2026).
Details
- Registry name
io.github.ManuOtel/opencode-mcp-bridge- Version
- 0.2.0
- Auth
- Bearer token
- License
- License unknown
- Repository
- github.com/ManuOtel/opencode-mcp-bridge
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
Done for you
Rather not set it up yourself?
Chalk Labs scopes, builds and runs agents for your team: the task audit, the eval harness, the integrations and the weekly ops report. Fixed scope, priced before we start.
See how we build AI agents →Read the case studies
Chalk Labs is a two-founder AI and growth studio. We build AI agents, CRMs and MVPs for Web3 and AI companies, and have shipped 50+ product and token launches.
- launches shipped
- 50+
- launches shipped
- media placements
- 500+
- media placements
- founders on every account
- 2
- founders on every account
Press we've placed: Forbes · CoinDesk · Decrypt · Cointelegraph · The Block
Rahil Jain, Co-founder, Chalk Labs. Ex-Goldman Sachs engineer. You talk to the person who builds it.
Get OpenCode MCP Bridge running in your business
Tell us what you want to automate. A founder replies within one working day with a plan, not a pitch deck.
Cite this page
OpenCode MCP Bridge. Agent Mart. https://agentmart.dev/connectors/manuotel-opencode-mcp-bridge (last updated 2026-10-24)