You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(mcp): drop static docker --name so MCP servers survive host reconnect (#452)
All four Docker-based MCP templates hardcoded `docker run --name <mcp>-<slug>`.
On a dropped stdio pipe the host (e.g. Claude Code) re-spawns the server, but
the original `--rm` container is still Up, so the reconnect's `docker run
--name …` collides with "container name already in use" and the host surfaces
an opaque MCP -32000 (JSON-RPC server error).
Remove the static --name from crystalium/tonberry/atomos/atlas-aci templates.
Per-project identity/filtering already rides `--label eidolons.project=<slug>`,
and parallel-project isolation is preserved by the distinct per-project bind
mounts — every `docker run` is its own container regardless of name; the name
only added a singleton guard that broke reconnect. `cli/src/memory.sh` already
strips --name from its out-of-band recall path for this exact reason.
atlas-aci's summary log line + render tests now assert the --label slug in
place of the retired --name. Consumers parse .mcp.json args by value, so
existing generated files with --name stay readable; regenerate via
`eidolons mcp sync`. mcp_atlas_aci.bats 17/17.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: CHANGELOG.md
+4Lines changed: 4 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -12,6 +12,10 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Version
12
12
13
13
- **README revamped for the v2 line — research-grounded recomposition, not a polish pass.** Grounded in a 16-repo study of celebrated OSS READMEs plus peer-reviewed attention/reading research (F-pattern scanning, curiosity-gap theory, serial-position effects, processing fluency, the blemishing effect), produced with deliberate model tiering (haiku fact audit / sonnet research / opus cold-read checker / Fable composition). New: a **"See it route"** demo showing real, reproducible `eidolons run --json` kernel output; a **"When Eidolons is the wrong tool"** honest-scoping section; the ESL + **ECM** "lifecycle and the context economy" section (four sibling-contract table, 5-MCP catalogue incl. atomos); a linked MANIFESTO (previously orphaned) closing in the recency slot; and one deadpan acknowledgment of the Final Fantasy naming. Restructured: benefit-first intro (the ~90-word 11-concept sentence is gone), team-before-proof ordering, the free zero-token routing benchmark now *leads* "Does it actually work?" with the four billed measurements compressed to one summary table + `<details>`. Verified maker≠checker under ESL change `.spectra/changes/readme-v2-revamp/` (30/30 links, every number traced to committed scorecards, dynamic badges intact, dual-audience cold-read PASS).
14
14
15
+
### Fixed
16
+
17
+
- **Docker MCP servers no longer fail to reconnect after a dropped stdio pipe** (`cli/templates/mcp/{crystalium,tonberry,atomos,atlas-aci}.mcp.json.tmpl`). All four Docker-based MCP templates hardcoded a static `docker run --name <mcp>-<slug>`. When a host (e.g. Claude Code) lost the stdio connection and re-spawned the server, the original `--rm` container was still `Up`, so the reconnect's `docker run --name …` collided — `docker: Error response from daemon: Conflict. The container name "…" is already in use` — the subprocess exited immediately and the host surfaced it as an opaque MCP `-32000` (JSON-RPC server error). The static `--name` is removed from every template; per-project identity/filtering now rides the already-present `--label eidolons.project=<slug>`, and parallel-project isolation is preserved by the distinct per-project bind mounts (every `docker run` is its own container regardless of name — the name only added a singleton guard that broke reconnect). `cli/src/memory.sh` already stripped `--name` from its out-of-band recall path for this exact reason (*"avoid colliding with running serve container"*). atlas-aci's summary log line (`cli/src/mcp_atlas_aci.sh`) and its render tests (`cli/tests/mcp_atlas_aci.bats`) now assert the `--label` slug in place of the retired `--name`. Consumers already parse `.mcp.json` args by value, so existing generated files with `--name` remain readable; regenerate cleanly via `eidolons mcp sync`.
0 commit comments