Spec Driven Development
MCP Server that facilitates spec-driven development workflows, not just Vibe Coding.
Descripción del creador (original en inglés)
Coordinate and verify OpenCode workers over MCP Streamable HTTP.
Estos tres nunca se combinan en una sola puntuación: las opiniones, las mediciones y la popularidad son cosas distintas.
Todavía no escribimos un resumen sencillo para este. Abajo están los datos que leímos del registro.
Elige la app de IA que usas y copia la configuración.
AuthorizationLos valores marcados como secretos son llaves de tu cuenta. Nunca los compartas ni los pegues en un chat.
Necesitas
¿Qué app usas?
Elige tu app arriba. La recordamos, así que la próxima vez el botón dirá “Instalar en …”.
Esta dirección necesita una clave en un header de la solicitud, y el menú para agregar conectores no puede ponerla. Usa Claude Code, Cursor o VS Code.
Ejecuta esto en tu terminal
claude mcp add --transport http opencode-bridge https://opencode-mcp.manuotel.com/worker-mcp --header 'Authorization: your-value'Completa los valores vacíos antes de ejecutarlo.
Pégalo en .cursor/mcp.json de tu proyecto, o en ~/.cursor/mcp.json
{
"mcpServers": {
"opencode-bridge": {
"url": "https://opencode-mcp.manuotel.com/worker-mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Pégalo en .vscode/mcp.json de tu proyecto
{
"servers": {
"opencode-bridge": {
"type": "http",
"url": "https://opencode-mcp.manuotel.com/worker-mcp",
"headers": {
"Authorization": "your-value"
}
}
}
}Tu navegador te pide permiso para abrir la app; luego la app muestra la configuración y te pide confirmar. Los valores de las claves quedan vacíos para que los completes tú.
Esta dirección necesita una clave en un header de la solicitud, y el menú para agregar conectores no puede ponerla. Usa Claude Code, Cursor o VS Code.
Tu elección se guarda en una cookie en este dispositivo; no necesitas cuenta.
Authorization secreto obligatorio HTTP headerEsta configuración se genera a partir de la ficha del creador en el registro. Si el README dice otra cosa, sigue el README.
Todavía no hemos leído la lista de herramientas de este servidor; revisamos los endpoints por turnos.
Revisamos información que cualquiera puede ver; no hemos leído el código. Las revisiones que no aplican no se cuentan. · Revisado el 6 nov 2026
El nombre en el registro se verificó con la cuenta de GitHub ManuOtel, dueña del repo
Todavía no hemos leído este repo en GitHub
Todavía no hemos leído este repo en GitHub
Aún sin revisar; revisamos los endpoints por turnos
Aún sin revisar; revisamos los endpoints por turnos
Aún sin revisar; leemos la lista de herramientas cuando revisamos el endpoint
Comparado con todos los servidores activos de esta categoría en el registro. Las estrellas solo cuentan cuando quien lo publica es dueño del repo.
Superó 1 de 1 revisiones básicas aplicables. No hemos leído el código. Antes de agregar una clave o un token, revisa qué acceso pide el servidor y usa una clave que tenga solo los permisos que necesitas.
Debes completar: Authorization
Se ejecuta en la nube del creador. Te conectas por internet sin instalar nada, pero lo que envías pasa por los servidores del creador.
El repo de GitHub cambió por última vez –, y la última versión (0.2.0) llegó al registro hace 2 meses.
Las apps compatibles con MCP, como Claude Desktop, Claude Code, Cursor y VS Code. Se conecta por URL, así que también funcionan las apps que aceptan servidores MCP remotos, como ChatGPT en modo desarrollador.
En la misma categoría: Spec Driven Development, Remote Desktop Commander, HotCodePush
Servidores de la misma categoría hechos por otros creadores, ordenados por estrellas.
Cómo leer una tarjeta:★ Estrellas de GitHubiTres pilares: reseñas · revisiones · usoiActualizado = fecha en que se publicó la última versión en el registroi
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.
Manage over-the-air (OTA) updates for React Native, Expo, Capacitor and Cordova apps.
Copiado tal cual del repo del creador. PopNx MCP no lo ha revisado ni lo respalda. Se quitaron HTML, imágenes y scripts. Los enlaces llevan fuera de este sitio.
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 retSolo se muestra el principio; lee el resto en el repo