chore(mcp-config): spawn de MCP zonder npx-wrapperlaag #61

Merged
janpeter merged 1 commit from chore/mcp-config-drop-npx-layer into master 2026-07-14 17:23:18 +02:00
Owner

Wat

mcp-config.json spawnde de MCP als npx tsx /opt/scrum4me-mcp/src/index.ts. Dat wordt tsx /opt/scrum4me-mcp/src/index.ts.

Gemeten in de runner-image (compose-worker-docs-1):

invocatie processen
npx tsx <script> 6
tsx <script> 4

tsx staat op /usr/bin/tsx, dus de npx-laag voegt niets toe behalve diepte en opstarttijd.

Wat dit NIET oplost

Eerlijk gezegd: niet het wees-lek. tsx start zelf nog steeds een node-child, dus de MCP-server blijft een kleinkind van Claude, en een SIGTERM naar Claude's directe child bereikt hem nog altijd niet.

De echte fix is scrum4me-mcp#89: de server sluit voortaan af op stdin-EOF / transport.onclose. Die stdin-pipe wordt door de hele keten geërfd, dus dat signaal komt wél aan — ongeacht hoe diep de spawn-keten is. Deze PR is opruimwerk dat daar netjes naast staat.

Context

Achtergrond van het lek (30 wees-MCP's in worker-docs, 32 idle DB-connecties, productie-DB op 97/100): zie scrum4me-mcp#89.

## Wat `mcp-config.json` spawnde de MCP als `npx tsx /opt/scrum4me-mcp/src/index.ts`. Dat wordt `tsx /opt/scrum4me-mcp/src/index.ts`. Gemeten in de runner-image (`compose-worker-docs-1`): | invocatie | processen | |---|---| | `npx tsx <script>` | 6 | | `tsx <script>` | 4 | `tsx` staat op `/usr/bin/tsx`, dus de npx-laag voegt niets toe behalve diepte en opstarttijd. ## Wat dit NIET oplost Eerlijk gezegd: **niet het wees-lek.** `tsx` start zelf nog steeds een node-child, dus de MCP-server blijft een kleinkind van Claude, en een SIGTERM naar Claude's directe child bereikt hem nog altijd niet. De echte fix is **scrum4me-mcp#89**: de server sluit voortaan af op stdin-EOF / `transport.onclose`. Die stdin-pipe wordt door de hele keten geërfd, dus dat signaal komt wél aan — ongeacht hoe diep de spawn-keten is. Deze PR is opruimwerk dat daar netjes naast staat. ## Context Achtergrond van het lek (30 wees-MCP's in `worker-docs`, 32 idle DB-connecties, productie-DB op 97/100): zie scrum4me-mcp#89.
chore(mcp-config): spawn de MCP zonder npx-wrapperlaag
All checks were successful
CI / Compose config (pull_request) Successful in 4s
CI / Docker build (pull_request) Successful in 56s
3965fce0ff
`npx tsx <script>` levert in de runner-image 6 processen op; `tsx <script>`
er 4. De npx-laag voegt niets toe — tsx staat gewoon op /usr/bin/tsx — en
maakt de procesboom onder Claude alleen dieper.

Let op wat dit NIET oplost: tsx start zelf nog steeds een node-child, dus de
MCP-server blijft een kleinkind van Claude en een SIGTERM naar Claude's
directe child bereikt hem nog altijd niet. De echte fix voor het wees-lek is
scrum4me-mcp#89 (afsluiten op stdin-EOF / transport.onclose), die werkt
ongeacht de diepte van de spawn-keten. Deze wijziging is opruimwerk.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
s4m-codex-reviewer left a comment

Verdict: APPROVED

Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden.

Findings

  • Geen blokkerende of error-severity findings.

Review-notities

  • De wijziging in mcp-config.json:5/mcp-config.json:6 verwijdert alleen de npx wrapper en spawnt tsx direct. Dat is consistent met de bestaande runner-praktijk waarin tsx direct vanaf PATH wordt gebruikt.
  • Productdoc Agent image — @shared/tsx env boundary + worker redeploy vereist dat de MCP-server TSX_TSCONFIG_PATH=/opt/scrum4me-mcp/tsconfig.json behoudt; de diff laat die env-regel intact.
  • Runtime smoke gecontroleerd: tsx staat op PATH en TSX_TSCONFIG_PATH=/opt/scrum4me-mcp/tsconfig.json tsx /opt/scrum4me-mcp/src/index.ts start de MCP stdio-server succesvol op.
# Verdict: APPROVED Geen gekoppeld plan gevonden — beoordeeld op codekwaliteit + product-standaarden. ## Findings - Geen blokkerende of error-severity findings. ## Review-notities - De wijziging in `mcp-config.json:5`/`mcp-config.json:6` verwijdert alleen de `npx` wrapper en spawnt `tsx` direct. Dat is consistent met de bestaande runner-praktijk waarin `tsx` direct vanaf `PATH` wordt gebruikt. - Productdoc `Agent image — @shared/tsx env boundary + worker redeploy` vereist dat de MCP-server `TSX_TSCONFIG_PATH=/opt/scrum4me-mcp/tsconfig.json` behoudt; de diff laat die env-regel intact. - Runtime smoke gecontroleerd: `tsx` staat op `PATH` en `TSX_TSCONFIG_PATH=/opt/scrum4me-mcp/tsconfig.json tsx /opt/scrum4me-mcp/src/index.ts` start de MCP stdio-server succesvol op.
janpeter merged commit bce7d3f4dd into master 2026-07-14 17:23:18 +02:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
janpeter/scrum4me-docker!61
No description provided.