codemode-mcp
codemode-mcp
Agrega varios servidores MCP stdio locales en una herramienta code de Cloudflare Code Mode.
El agente ya no se enfrenta a un montón de definiciones de herramientas, solo ve una herramienta code; el modelo escribe código en un sandbox aislado y orquesta las herramientas de cada servidor MCP con codemode.<prefix>_<tool>(...), dejando los resultados intermedios en el sandbox, sin que entren en el contexto de la conversación.
Agent ── 只见 1 个 code 工具 ──> http://localhost:8787/mcp
│ sandbox: codemode.<prefix>_<tool>()
▼
桥 :9230(官方 MCP SDK,stdio ↔ Streamable HTTP)
│ 按 mcp.jsonc 拉起各 stdio server
▼
chrome-devtools-mcp ──> 你的 Chrome(--auto-connect)
@modelcontextprotocol/server-filesystem ──> 文件系统
...任何 stdio MCP serverInicio rápido
Requisitos: Bun 1.3+; para conectar con el Chrome local se necesita Chrome 144+ y activar la depuración remota en chrome://inspect/#remote-debugging.
bun install
bun run devbun run dev hará lo siguiente en orden: leer mcp.jsonc (en la primera ejecución se genera automáticamente desde mcp.jsonc.example) → levantar cada servidor MCP stdio → iniciar el puente (:9230) → iniciar wrangler dev (:8787). Un Ctrl+C limpia todos los subprocesos de una vez.
Conexión de agentes / clientes MCP:
{
"mcpServers": {
"codemode": { "url": "http://localhost:8787/mcp" }
}
}También se puede verificar gráficamente con MCP Inspector: npx @modelcontextprotocol/inspector@latest, conexión Streamable HTTP a http://localhost:8787/mcp; en List Tools solo debería verse un code, cuya descripción contiene los métodos <prefix>_<tool> de cada servidor.
Related MCP server: MCP Hub
Configuración: mcp.jsonc
El único archivo que necesita editarse (JSONC, admite comentarios; está ignorado por .gitignore, puede escribir configuración personal sin preocupaciones):
{
"mcpServers": {
"chrome-devtools": {
"command": "bun",
"args": ["x", "chrome-devtools-mcp", "--auto-connect"]
},
"filesystem": {
"command": "bun",
"args": ["x", "@modelcontextprotocol/server-filesystem", "/data"]
// "prefix": "fs" // 可选,默认取名字首段:chrome-devtools -> chrome
}
}
}command/args/env: formato común del ecosistema MCP, igual que Claude Desktop, opencode, etc.;prefix: prefijo de método del sandbox (opcional, por defecto toma la primera parte del nombre; los conflictos de prefijo provocan un error al iniciar);añadir un servidor no requiere cambiar ningún código; reiniciar
bun run devpara que surta efecto;si un servidor individual falla al iniciar, simplemente se omite con degradación (indicado en los registros), sin afectar a los demás servidores.
Cómo funciona
Archivo | Responsabilidad |
| Lista de servidores MCP (única fuente de configuración, se genera automáticamente la primera vez) |
| Orquestación local: iniciar puente → esperar a que esté listo → iniciar wrangler, limpieza unificada |
| Levanta cada servidor stdio según mcp.jsonc, los reexpone en :9230 como Streamable HTTP reutilizando la ruta |
| Análisis JSONC (jsonc-parser de Microsoft) y derivación de prefix |
| Servidor stdio de demostración (herramienta echo), se puede eliminar de la configuración |
| Entrada del Worker: agregación + envoltura |
| Lado del Worker: descubre cada servidor a través de |
Algunos puntos clave de diseño:
Por qué se necesita el puente:
codeMcpServer()solo acepta instancias deMcpServerdentro del proceso, mientras que los servidores MCP stdio (como chrome-devtools-mcp) no pueden iniciarse en workerd. El puente utiliza el@modelcontextprotocol/sdkoficial para la conversión de protocolo stdio ↔ HTTP; tanto la definición de herramientas como su ejecución pasan por el protocolo MCP en todo momento.Descubrimiento dinámico: el Worker no lee el archivo de configuración; en cada solicitud obtiene la lista a través del endpoint
/serversdel puente y luego registra conlistTools; cuando un servidor ascendente se actualiza y añade herramientas, no es necesario modificar este proyecto.JSON Schema → zod: el Worker (workerd) prohíbe
eval, por lo que se eligió@dmitryrechkin/json-schema-to-zod, que construye objetos zod directamente en tiempo de ejecución (compatible con Cloudflare Workers).División de trabajo en tiempo de ejecución: bun ejecuta el puente y la orquestación (entorno Node), wrangler (workerd) ejecuta el Worker; ambos se comunican por HTTP en el puerto 9230.
Notas y limitaciones
Este proyecto es un enlace local: después de implementar con
wrangler deployen Cloudflare, el Worker en línea no puede acceder al puente en127.0.0.1:9230ni al Chrome local; si se necesita una implementación remota, ejecute el puente en un host accesible desde el Worker y modifiquevars.MCP_BRIDGE_URLenwrangler.jsonc.El
--auto-connectde chrome-devtools depende de la opción de depuración remota de Chrome 144+ (chrome://inspect/#remote-debugging); también se puede usar--browserUrlpara apuntar al puerto CDP tradicional (--remote-debugging-port, que en Chrome 136+ debe combinarse con un--user-data-dirno predeterminado).En un entorno de proxy transparente TUN, si
bunxfalla al descargar dependencias (el DNS devuelve IPv6 pero TUN solo gestiona IPv4), basta con establecerHTTPS_PROXYen el proceso del puente apuntando al puerto del proxy local (scripts/bridge.tsya inyectahttp://127.0.0.1:7890por defecto; se puede modificar según sea necesario).
Dependencias
Cloudflare Code Mode (
@cloudflare/codemode) — herramienta únicacodey ejecución aisladachrome-devtools-mcp — automatización del navegador
Model Context Protocol TypeScript SDK — implementación del protocolo MCP
jsonc-parser — análisis JSONC
Wrangler — runtime local de workerd
This server cannot be deployed
Maintenance
Related MCP Connectors
MCP server for your apps' tools and custom tools, plus hosted AI agents and approval-gated workflows
Hosted MCP runtime where your agent publishes its own tools by tool call and keeps working.
Real-time chat for AI agents. Claude Code, Cursor, Cline and Codex join channels over MCP.
One MCP endpoint for Claude, GPT & Gemini: 100+ tools + no-code connectors + agent workers.
Related MCP Servers
AlicenseAqualityBmaintenanceAggregates multiple MCP servers into a single interface, reducing token overhead and simplifying tool management for LLMs.6129 npm18Apache 2.0- FlicenseNot gradedqualityCmaintenanceAggregates multiple MCP servers into a single standard MCP interface for agents like Claude Code, with automatic tool prefixing and hot-reload.2-
- AlicenseNot gradedqualityAmaintenanceEnables building safe, programmable Code Mode MCP servers from upstream tool sources, with model-authored TypeScript running in a sandbox and tool calls routed to trusted host-side providers.1Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables multiple Claude Code sessions to share a single HTTP MCP endpoint, lazily spawning stdio MCP servers only when their tools are called, reducing idle processes and memory usage.MIT