Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Description from the maker (original English)
Coordinate and verify OpenCode workers over MCP Streamable HTTP.
These three are never merged into one score: opinions, measurements and popularity are different things.
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
Pick the AI app you use, then copy the settings.
AuthorizationValues marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Run this in your terminal
claude mcp add --transport http opencode-bridge https://opencode-mcp.manuotel.com/worker-mcp --header 'Authorization: your-value'Fill in the empty values before running it.
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"opencode-bridge": {
"url": "https://opencode-mcp.manuotel.com/worker-mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Paste into .vscode/mcp.json in your project
{
"servers": {
"opencode-bridge": {
"type": "http",
"url": "https://opencode-mcp.manuotel.com/worker-mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This address needs a key in a request header, which the add-connector menu cannot set. Use Claude Code, Cursor or VS Code instead.
Your choice stays on this device in a cookie; no account needed.
Authorization secret required HTTP headerThese settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
We have not read this server’s tool list yet; we check endpoints in rotation.
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 6, 2026
The registry name was verified with the GitHub account ManuOtel, which owns the repo
We have not read this repo from GitHub yet
We have not read this repo from GitHub yet
Not checked yet; we check endpoints in rotation
Not checked yet; we check endpoints in rotation
Not checked yet; we read the tool list when we check the endpoint
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
It passed 1 of 1 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
You need to fill in: Authorization
It runs in the maker’s cloud. Connect over the internet with nothing to install, but what you send passes through the maker’s servers.
The GitHub repo last changed –, and the latest version (0.2.0) reached the registry 2 months ago.
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. It connects by URL, so apps that accept remote MCP servers work too, such as ChatGPT in developer mode.
In the same category: Spec Driven Development, Remote Desktop Commander, Recta
Servers in the same category from other makers, sorted by stars.
Reading a card:★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Remote Desktop Commander: use files, terminal and processes on your own computers from any AI app.
Cheaper cross-chain stablecoin routes for AI agents; 5 % of the verified saving, nothing if none.
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
opencode-mcp-bridge A coordinator-facing MCP server for a self-hosted OpenCode instance. First use in 60 seconds Protocol-level compatibility (MCP over Streamable HTTP) - no official partnerships; some harnesses are unverified end-to-end, see docs/compatibility.md :
A host harness (Codex, Claude Code, or any MCP-capable client) delegates repository or system work to an OpenCode worker on another machine. The host model scopes the task, coordinates the worker, and verifies the result. The bridge speaks MCP over Streamable HTTP with Bearer authentication (remote HTTP only; there is no local stdio transport). It coordinates OpenCode workers; it does not replace OpenCode.
Bring your own bridge: you provide an OpenCode server, your own bridge deployment, your own token, and your own https:// /worker-mcp. Generic installs never point at another person's server. The optional community demo endpoint operated by ManuOtel at https://opencode-mcp.manuotel.com/worker-mcp (/worker-mcp only) is opt-in only, requires its own token, and is not for production. Self-host for production with your own token. https://YOUR-BRIDGE-HOST/worker-mcp (as shipped in .mcp.json) is a placeholder, not a usable server; it fails loudly by design.
/worker-mcp (recommended) vs /mcp (legacy).docs/harnesses.md.You need your own bridge deployment and its Bearer token. Keep the token in environment variables. Never paste a real token into a file, a chat log, or a commit. The optional community demo above is separate and may require its own token; generic steps below only use your bridge.
export OPENCODE_MCP_URL="https://<your-domain>/worker-mcp"
export OPENCODE_MCP_BEARER_TOKEN=" "
Replace with your bridge host and with MCP_BEARER_TOKEN from that host. Generate a fresh token with python3 -c "import secrets; print(secrets.token_urlsafe(48))".
Quick connect (your own bridge): ./scripts/install-client.sh both registers Codex and Claude Code transports from OPENCODE_MCP_URL and OPENCODE_MCP_BEARER_TOKEN. It fails clearly when either is missing or the URL is malformed (http(s)://... ending in /mcp or /worker-mcp); it never falls back to anyone else's server.
./scripts/install-client.sh both --dry-run
Full steps: docs/client-setup.md. Copilot-family products: docs/copilot-setup.md.
Every example below uses https:// /worker-mcp (safe default, recommended: the eight worker tools worker_catalog, worker_run, worker_wait, worker_status, worker_verify, worker_cleanup, worker_decide, worker_resume; never exec_run) or https:// /mcp (legacy full catalog of 19 tools, with exec_run only when the operator sets ENABLE_EXEC_RUN=true). Codex plugin bundles do not interpolate env vars in the server URL, so register the transport per machine with your concrete URL.
Two Streamable HTTP endpoints share one Bearer token. GET /health plus read-only GET/HEAD on /.well-known/oauth-protected-resource (and /mcp and /worker-mcp children) and /.well-known/mcp/server-card.json stay open with no secrets.
| Endpoint | Tools | Use |
|---|---|---|
/worker-mcp | Worker tools only (8, never exec_run) | Default for all new clients. Least privilege; no shell. |
/mcp | Full compatibility catalog (19 tools) | Legacy only. exec_run fails closed unless ENABLE_EXEC_RUN=true. |
/health | None (open) | Reverse-proxy liveness checks. |
/ready | None (Bearer token) | Readiness: OpenCode plus registry (200/503). |
/metrics | None (Bearer token) | Bounded counters, no sensitive data. |
Protocol-level compatibility (MCP over Streamable HTTP with a Bearer header) unless an end-to-end test is documented. Matrix, status labels, and first-call contract: docs/compatibility.md.
codex mcp add opencode --url "$OPENCODE_MCP_URL" --bearer-token-env-var OPENCODE_MCP_BEARER_TOKEN
Codex reads the token from the environment at request time. The opencode-worker plugin adds skills (delegate-to-opencode, then verify-opencode-work, on failure recover-opencode-task; code changes follow opencode-git-workflow). Install from the Git marketplace pinned at v0.6.0, then register your own transport as above (the bundled placeholder URL is not usable):
codex plugin marketplace add ManuOtel/opencode-mcp-bridge --ref v0.6.0
Details: docs/client-setup.md sections 2 and 6. Official docs: https://developers.openai.com/codex/cli/reference
Preferred transport: a project .mcp.json entry with type: http, url: ${OPENCODE_MCP_URL}, and header Authorization: Bearer ${OPENCODE_MCP_BEARER_TOKEN} (expanded at load time, token stays out of the file). CLI alternative, same reference form:
claude mcp add --transport http --header 'Authorization: Bearer ${OPENCODE_MCP_BEARER_TOKEN}' opencode "$OPENCODE_MCP_URL"
claude mcp add --transport http --header 'Authorization: Bearer ${OPENCODE_MCP_BEARER_TOKEN}' opencode-bridge "$OPENCODE_MCP_URL"
A shell-expanded header would persist the secret in local config; rotate the token if a config file leaks. Recommended: the opencode-worker plugin from this repo's Claude marketplace (.claude-plugin/marketplace.json), bundling the transport plus the coordinate-opencode-worker skill. Export both variables first:
claude plugin marketplace add ManuOtel/opencode-mcp-bridge
claude plugin install opencode-worker@opencode-mcp-bridge
There is no npm or Brew package; both marketplaces install from this Git repo. Details: docs/client-setup.md sections 3 and 7. Official docs: https://docs.anthropic.com/en/docs/claude-code/mcp
Config keys differ per product; confirm key names in the linked official docs before pasting. Full copy-ready blocks: docs/harnesses.md. Safe pattern everywhere: URL https:// /worker-mcp, header Authorization: Bearer ${OPENCODE_MCP_BEARER_TOKEN}, the eight worker_* tools (worker_wait is the bounded read-only long-poll; worker_decide/worker_resume are approval-gated).
| Harness | Where | Status |
|---|---|---|
| ChatGPT Developer Mode / connectors | docs/harnesses.md | Unverified with a static Bearer header |
| Cursor | docs/harnesses.md | Protocol-level |
| VS Code | docs/harnesses.md | Protocol-level |
| Gemini CLI | docs/harnesses.md | Protocol-level |
| OpenHands | docs/harnesses.md | Unverified |
| Windsurf | docs/harnesses.md | Protocol-level |
| Cline | docs/harnesses.md | Protocol-level |
| Roo Code | docs/harnesses.md | Protocol-level |
| Pi | docs/harnesses.md | Protocol-level |
| Hermes Agent | docs/harnesses.md | Protocol-level |
| GitHub Copilot / Copilot Studio / M365 Copilot | docs/copilot-setup.md | Separate guide |
| MCP Inspector | docs/harnesses.md | Debugging only |
openhands mcp add opencode-bridge --transport http \
--header "Authorization: Bearer " \ "https:// /worker-mcp"
Replace with MCP_BEARER_TOKEN from your bridge host (key names per https://docs.openhands.dev/openhands/usage/cli/mcp-servers). Unverified end-to-end; full block: docs/harnesses.md. Without a client: ./scripts/smoke.sh.
worker_run is asynchronous (returns a taskID at once). Then wait bounded server-side with worker_wait, or snapshot with worker_status:
worker_catalog()
worker_run(message="Implement X in /path/to/repo", directory="/path/to/repo", title="feat-x") worker_wait(taskID=" ", directory="/path/to/repo", timeout_s=30) worker_verify(taskID=" ", directory="/path/to/repo") worker_cleanup(taskID=" ", directory="/path/to/repo")
worker_catalog (free and connected by default). Default: opencode/muse-spark-1.3-contributor-free. Paid fallback opencode-go/muse-spark-1.3-contributor only when explicitly requested, passed as providerID/modelID. Never auto-selected.worker_run with message, directory, title, optional requestID for safe retries (deduplicated=true on same-input retOnly the beginning is shown; read the rest in the repo