DSH ⇄ ChatGPT Fusion Gateway
Need "a la" not "uses"? We are translating, okay.
Need "owner" table:
Use "Tabla" with keys. Let's articulate.
I think we can produce final now. But before final, check variables:
"model-bindings.json" keep.
"action_proposal" keep.
"
readonly_batch" keep."DSH_NODE_MODULES" keep.
"brain worker" etc.
Potential challenge: "per the instruction: preserve exact structure of Markdown tables (same number of rows, columns, and pipe separators)". Our table header should have same count: original has 6 data rows. We have 6. Column alignment: We can leave same. For pipe separators, I use | Clave | Significado | and | --- | --- |. Original has a bunch of --- and spaces. "Table structure" same, no problem.
Need preserve "--" in "(`-["? No.
Now, re-examine "EN-DES" "DSH ⇄ ChatGPT Fusion Gateway" is project name, keep. Great.
"Reasoning protocol (v4)" "Protocolo de reasoning" maybe "reasoning" not in vocabulary? "v4" perhaps version. Use "Protocolo de razonamiento (v4)" good.
"a "read-only batch of read/glob/grep" — For read/glob/grep, maybe keep as "lectura/glob/grep". But it's object. In original "read/glob/grep" are tool names? Probably literal. Keep exactly.
"all values ship as REDACTED_* placeholders" -> "todos los valores se envían como..." Keep "envían" maybe.
"wake a route-bound Brain tab" -> "despierta una chick en Brain vinculada a la ruta". Good.
Need "queuing" -> "cola" queue.
Now, please check "la puerta de enlace" vs "gateway" consistency.
In "model-bindings", "A ganador of variables" etc. Let's produce final with no "G2" errors.
Let's do final in a polished way.# DSH ⇄ ChatGPT Fusion Gateway
Un puente MCP mínimo que mantiene DeepSeek Harness (DSH) como único agente y entorno de ejecución, y usa ChatGPT Web únicamente como proveedor de razonamiento de un solo turno y sin estado.
DSH es el dueño de los agentes, las herramientas, los permisos, las sesiones, la compactación, los subagentes, los workflows, los objetivos y la ejecución real de archivos/shell. La puerta de enlace simplemente transmite una instantánea inmutable del contexto de DSH a una conversación «Brain» de ChatGPT, y devuelve exactamente una decisión: una respuesta final, una propuesta de acción o un lote de solo lectura acotado. La puerta de enlace nunca ejecuta la acción propuesta por sí misma.
User
↓
DSH UI
↓
DSH Native Agent Loop → Context / Compaction
↓
ChatGPT Fusion LLM Adapter
↓
Fusion Reasoning Gateway ← this repository
↓
ChatGPT Brain Worker (a dedicated ChatGPT Web conversation + optional wake extension)
↓
final | action_proposal | readonly_batch
↓
Gateway validation
↓
DSH Permissions / ToolRuntime → DSH Native Tool → Next DSH TickCaracterísticas
Contrato estricto de un solo resultado — cada solicitud lleva una instantánea completa e inmutable; el Brain devuelve exactamente un resultado terminal (
final,action_proposal, o unreadonly_batchacotado de read/glob/grep).Entrega recuperable — las solicitudes se registran en un diario en disco; si la puerta de enlace se bloquea, se restauran las reclamaciones en curso en lugar de perderlas. Los reintentos son idempotentes mediante instantánea + nonce.
Conmutación por error multiworker — varias conversaciones Brain pueden respaldar la misma ruta de modelo; una reclamación estancada se libera y se vuelve a entregar a un respaldo sano con un nonce rotado.
OAuth 2.0 (loopback) — autorización opcional para el conector público de ChatGPT (
/brain-mcp), con tokens de acceso y de actualización rotatorios.Multiplataforma — la puerta de enlace y el daemon de Node funcionan en Linux, macOS y Windows.
Despertador opcional del navegador — una extensión de Chrome (
browser-autowake/) consulta los metadatos de la cola de loopback y despierta laina Brain vinculada a la ruta cuando hay trabajo en espera.
Related MCP server: chatgpt-mcp
Requisitos
Node.js 18+ (usa el
fetchglobal).git(y, en Linux, tu usol del sistema configurado) para las herramientas del espacio de trabajo.
El propio DSH ha decl de cada el bucle de su agente nativo y el entorno de ejecución de las
herramientas; la puerta de enlace detecta automáticamente el node_modules nino embebido de DSH,
o puedes señalabelon con la variable de entorno DSH_NODE_MODULES.
Inicio rápido
git clone <your-repo-url>
cd dsh-chatgpt-mcp
npm installPonga las credenciales reales en config.json y model-bindings.json (todos los valores
vienen con marcadores REDACTED_*), y arranque:
npm run daemon:start # background, supervised with auto-restart
npm run daemon:status…o ejecútelo en primer plano:
npm start # node server.strict.cjsLa puerta de enlace queda a la acceso en http://127.0.0.1:7688. La arquitectura y las
invariantes aparecen en detalle en ARCHITECTURE.md.
Configuración
config.json
Clave | Significado |
| Dirección de enlace de loopback (por defecto |
| Espacio de trabajo del proyecto al que pueden acceder las herramientas. |
| Contraseña del sentinela para autorización OAuth (≥ 16 caracteres). |
| Token de portador estático para el Brain MCP de loopback (≤ 32 caracteres). |
| Ejecutables que la herramienta |
| Solo Linux: usuario al que se hacen bajar los comandos en sandbox mediante |
ownerPassword, staticToken y las claves de enlace son obligatorias y deben
rellenarse antes de usar el sistema. En macOS/Windows no hay una herramienta setuid port
por lo que los comandos en sandbox se ejecutan como el usuario actual y commandUser se
ignora.
model-bindings.json
Traduce una ruta de modelId + reasoningEffort a una bindingKey. La bindingKey
es el secreto compartido con el correspondiente brain-worker-*.txt; mantén sincronizado
ambos.
Control del servicio
Funciona idénticamente en Linux, macOS y Windows:
node scripts/daemon.mjs start # start detached supervisor + server
node scripts/daemon.mjs stop
node scripts/daemon.mjs restart
node scripts/daemon.mjs statusEstas operaciones también se exponen como npm run daemon:start|stop|restart|status. Los
scripts basados en screen y solo Linux siguen en scripts/ (control.sh, public_quick.sh,
…) para el túnel expreso de Cloudflare y los grupos de trabajadores Chrómelos no gráficos.
Protocolo de razonamiento (v4)
La puerta de gate habla con el «Brain» de ChatGPT mediante un protocolo estricto:
fusion_wait_for_reasoning_request → one immutable snapshot + data-only action catalog
fusion_submit_reasoning_result → exactly one {final} | {action_proposal} | {readonly_batch}
fusion_fail_reasoning_request → terminal failure for the assigned snapshotactionCatalog es solo datos: una descripción de las herramientas nativas de DSH, nunca
instaladas como herramientas de ChatGPT/MCP. Una propuesta_de_accion es una recomendación
la que DSH ejecuta más tarde bajo su propia política de permisos / sandbox; la puerta de
noticons la ejecuta.
El metodo público es GET|POST /brain-mcp. Las rutas anteriores /mcp y /fusion/t…
devuelven HTTP 410 (deshabilitadas).
Permisos
Utiliza el modelo nativo de DSH en tres niveles — read-only, workspace-write,
danger-full-access — con workspace-write por defecto.
Estructura del repositorio
server.strict.cjs active gateway (strict v4; no legacy /mcp)
server.cjs full gateway incl. workspace file/shell tools
config.json runtime configuration (secrets are placeholders)
model-bindings.json modelId → bindingKey map
scripts/daemon.mjs cross-platform daemon (start/stop/restart/status)
scripts/*.sh Linux deployment helpers (screen, cloudflared, Chrome workers)
brain-worker-*.txt per-route prompts for dedicated Brain conversations
browser-autowake/ optional Chrome extension that wakes Brain tabs
tests/ selftests and headless integration workers
state/ logs/ runtime artifacts (gitignored)Pruebas
npm install
node tests/reasoning-contract-v4-selftest.mjs # primary protocol test
# …plus oauth, worker-recovery, failover, context-overflow, payload-limit selftestsVea la sección ## Verification de las notas de implementación para la matrix completa.
Notas de seguridad
Vincula a
127.0.0.1de forma predeterminada; solo el script de camino de túnel expone una URL pública.No hagas commit de
config.jsonnimodel-bindingscon secretos reales — por eso el presente repositorio incluye marcadores./bin/setprivse emplea en Linux for ejecutado los comandos de bajo nivel encommandUser; en otras plataformas commandos se ejecutan como el usuario actual.
DSH ⇄ ChatGPT Fusion es un bridge comunitario no confundido con OpenAI ni DeepSeek. La utilización de ChatGPT está sujeta a los términos del servicio de OpenAI.
Need fix many errors in this attempted translation. I need to output only correct translation. Let's not force too much. Let's start fresh and produce a quality translation.
I see I made errors: "terminal" not "terminado"; "dominio" etc. Let's create final with careful composition.
Given high-quality translation expected, we need maybe use "gateway" as "gateway" (no translation) to avoid repetitive "puerta de enlace" with grammar errors. Let's choose "gateway" in Spanish as nerd. The original uses "The Gateway" with capital sometimes; but in Spanish we can use "el gateway". This may be clearer for technical readers. But if instruction says "gateway" is prose, perhaps we should translate. Hmm. For a translation engine, we need translate all common nouns. Yet terms like gateway are often kept. But the target is es-ES; "puerta de enlace" is the standard. Let's use "puerta de enlace". It will be okay if done consistently.
Let's carefully build final output.
We'll produce natural Spanish with professional tone.
Let's write the final Markdown:
# DSH ⇄ ChatGPT Fusion Gateway
Un traductor MCP mínimo que mantiene [DeepSeek Harness](https://www.deepseek.com) (DSH) como
**único agente y runtime**, y usa **ChatGPT Web** solo como *proveedor de razonamiento*
sin estado y de una sola vuelta.
Nuevo starting from scratch.
Let's craft each paragraph and bullet.
Paragraph 1:
"Un puente MCP mínimo que mantiene [DeepSeek Harness](https://www.deepseek.com) (DSH) como
**único agente y runtime**, y usa **ChatGPT Web** solo como un
*proveedor de razonamiento* de un solo turno y sin estado."
"runtime" is very common; but "entorno de ejecución" maybe. Let's use "entorno de ejecución".
Paragraph 2:
"DSH es dueño de los agentes, herramientas, permisos, sesiones, compactación, subagentes,
flujos de trabajo, objetivos y ejecución real de archivos/shell. La gateway simplemente
reenvía una instantánea inmutable del contexto de DSH a una conversación «Brain» de ChatGPT,
y envía de vuelta exactamente una decisión: una respuesta final, una propuesta de acción o un
acotado lote de solo lectura. La gateway nunca ejecuta la acción propuesta."
Choose "gateway" and not "puerta"? Let's decide. If we use "gateway" untranslated, we respect tech. But "Gateway" is lye project title? "the gateway" (generic). Use "puerta" in Spanish? Actually "gateway" is common in Spanish in networking, meaning "pasarela". Let me use "pasarela" maybe. "Puente" may confuse with "bridge" in first sentence. The word "bridge" in MCP bridge = "puente". The word "gateway" = "puerta de enlace". The title says "Fusion Gateway" as product name. In body, "The gateway" could be "el gateway". Since "Gateway" appears as part of product name, using "el gateway" is acceptable in technical Spanish. I think we can keep "gateway" (lowercase, Castilian) to refer to the software component. This is actually common in es-ES for software components. Let's use "el gateway" consistently.
Then in paragraph 3: "El gateway simplemente..." That avoids many "pu erection de enlace". It's a loanword but fine.
So final:
El gateway reenvía... El gateway never executes...
Let's do that.
Heading "Características".
bullet "fault supply".
Now, let's write natural translation:
"**Contrato estricto de un único resultado** — every request includes a complete immutable snapshot; the Brain returns exactly one terminal result (`final`, `action_proposal`, or a limited `readonly_batch` of read/glob/grep)." -> "**Contrato estricto de un único resultado** — cada solicitud lleva una instantánea completa e inmutable; el Brain devuelve exactamente un resultado terminal (`final`, `action_proposal` o un `readonly_batch` acotado de read/glob/grep)."
"Recoverable delivery" — "las solicitudes se registran en un diario en disco; un gateway bloqueado restablece las reclamaciones en curso en vez de perderlas. Los reintentos son idempotentes mediante snapshot + nonce."
"Multi-worker failover" — "varias sesiones del Brain pueden apoyar la misma ruta de modelo; una reclamación estancada se libera y se vuelve a entregar a una réplica sana con un nonce rotado."
"OAuth 2.0 (loopback)" — "autorización opcional para el conector público de ChatGPT (`/brain-mcp`), con tokens de acceso y refresh rotatorios."
"Cross-platform" — "el gateway y el daemon de Node funcionan en Linux, macOS y Windows."
"Optional browser wake" — "una extensión de Chrome (`browser-autowake/`) consulta los metadatos de la cola loopback y activa una pestaña Brain vinculada a la ruta cuando hay trabajo en espera."
Now "Requirements":
"Requisitos" heading.
"Node 18+ (uses global fetch)" -> "**18+** (usa el `fetch` global)."
"Your configured command user" -> "tu usuario de comandos configurado".
" for the workspace tools" -> "para las herramientas del workspace".
"DSH itself must be available for the DSH-native agent loop and tool runtime" -> "El propio DSH debe estar disponible para el bucle de agente nativo de DSH y el runtime de herramientas; el gateway detecta automáticamente `node_modules` incluido con DSH, o puedes indicarlo con la variable de entorno `DSH_NODE_MODULES`."
"Quick start":
"Inicio rápido
GXP2
Pon las credenciales reales ..."
"GXP3 ... GXP4".
"El gateway se expone en `http://127.0.0.1:7688`."
"Config":
Table:
Hi maybe "Dirección de enlace de loopback" is a bit awkward. "Dirección de escucha de loopback (por defecto `127.0.0.1:7688`)." Good.
`workspaceRoot` — "Espacio de trabajo del proyecto (workspace) al que las herramientas tienen acceso. `.` = la raíz del proyecto."
`ownerPassword` — "Contraseña del dueño para el flujo OAuth (normal equivalentorem.")
≥ 16 characters: "≥ 16 caracteres". "staticToken" — "Token estático para el Brain MCP de loopback (≥ 32 caracteres)."
`allowedPrograms` — "Ejecutables que la herramienta `run_command` del workspace puede lanzar."
`commandUser` — "Solo Linux: usuario al que se rebajan los privilegios de los comandos en sandbox (via `setpriv`).
After table:
"`ownerPassword`, `staticToken` y las claves de enlace son **obligatorios** y deben rellenarse antes de usarlo. En macOS/Windows no existe un helper setuid portable, así que los comandos sandbox ejecutan como el usuario actual y se ignora `commandUser`."
Use "claves de enlace" maybe "encadenado"? "binding keys" -> "claves de vinculación" (binding). Use "claves de vinculación".
`model-bindings.json`: "Asocia cada ruta de `modelId` + `reasoningEffort` con una `bindingKey`. La `bindingKey` es el secreto compartido con el correspondiente `brain-worker-*.txt`; mantenlos sincronizados."
"Service control":
"Control del servicio"
Funciona igual en Linux, macOS y Windows:
GXP5
Estos también se exponen como `npm run daemon:start|stop|restart|status`. Los scripts soloThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityBmaintenanceAdds a deep_reasoning tool that consults stronger reasoning models (e.g., DeepSeek R1) to produce full reasoning traces for complex problems, helping the agent shape and cross-check its answers.1MIT
- AlicenseNot gradedqualityAmaintenanceBridges Cursor IDE Agent with ChatGPT Web for external reasoning, research, and review.15MIT
- AlicenseNot gradedqualityAmaintenanceMCP bridge enabling ChatGPT to create, view, and control DeepSeek Harness agent sessions, with session management, messaging, and approval tools.9MIT
- AlicenseNot gradedqualityBmaintenanceEnables dispatching work to DeepSeek Harness agents from Claude Code/Codex, with native progress UI, tier policy, and vision/image generation through MCP tools.0101MIT
Related MCP Connectors
Agent-to-agent reasoning-as-a-service: chain-of-thought, analysis, and decision support.
Reliable web access for AI agents: smart HTTP, rotating proxies, and full-browser rendering.
Provides cloud browser automation capabilities using Stagehand and Browserbase, enabling LLMs to i…
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- 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/2025ashore/DSH-Brain-Bridge'
If you have feedback or need assistance with the MCP directory API, please join our Discord server