Skip to content

Restore missing Claude Desktop MCP helper#1578

Draft
r3dbars wants to merge 1 commit into
mainfrom
codex/fix-mcp-helper-self-heal
Draft

Restore missing Claude Desktop MCP helper#1578
r3dbars wants to merge 1 commit into
mainfrom
codex/fix-mcp-helper-self-heal

Conversation

@r3dbars

@r3dbars r3dbars commented Jul 25, 2026

Copy link
Copy Markdown
Owner

What changed

  • Restore the installed transcripted-mcp helper when Claude Desktop still has the canonical Transcripted config entry but the helper is missing or no longer executable.
  • Stage and chmod helper updates before atomically replacing the installed binary, so an interrupted refresh preserves the previous working helper.
  • Serialize the derived SQLite index setup window across MCP processes so concurrent cold starts cannot remove the database underneath each other.
  • Add regression coverage for missing-helper recovery, execute-permission repair, failed-update preservation, and two real MCP executables initializing against one shared cold index.

Root cause and user impact

Claude Desktop's JSON config could continue pointing at Transcripted while the installed helper was absent or non-executable after an interrupted update. The launch refresh only repaired helpers that already existed, so that state never self-healed. Claude then could not spawn the configured stdio server, leaving Transcripted absent from the local Connections/Connectors list even though its config entry remained.

A second startup defect allowed two MCP clients sharing a cold derived index to race through the schema rebuild. One process could remove the SQLite file while the other was preparing it, causing a pre-handshake crash and the same config-present/server-absent symptom.

Server key casing, helper name, canonical install path, app identity routing, and the shipped stdio protocol response were checked and were not the regression.

Synthetic proof

Only synthetic local data was used.

  • Before the index lock, two real MCP processes sharing a fresh index and 1,000 synthetic capture files reproduced a pre-initialize SQLite failure in 2 of 3 runs (disk I/O error / missing-table startup failure).
  • After the lock, both processes returned valid initialize responses in all 3 equivalent runs.
  • The automated process regression launches two built transcripted-mcp executables against one shared cold index and requires both server responses.
  • Focused helper installer regression suite: 179/179 passed.
  • Full MCP package suite: 191/191 passed.
  • Full app fast suite: 13,400/13,400 passed.
  • Deterministic E2E smoke, signed bash build.sh --no-open, agent preflight, git diff --check, and privacy leak sweep passed.
  • Independent codex review --uncommitted completed with no accepted or actionable findings.

Manual proof still required

This branch has not been merged or released, and no private user config or diagnostics were accessed. Final proof remains a current Claude Desktop run with an installed patched Transcripted build and a populated real library: use Transcripted's Connect/Repair action, fully quit and reopen Claude Desktop, then confirm Transcripted appears and connects in Claude Desktop's local Connections/Connectors list and Developer MCP status.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant