chore(bots): per-window MCP isolation (--strict-mcp-config per role) #700

Merged
lekss361 merged 1 commit from chore/per-window-mcp into main 2026-05-30 08:09:59 +00:00
Collaborator

Summary

Каждое bot-окно грузит ТОЛЬКО серверы своей роли, не все 7+.

Зачем (честно): tool-search (default ON) и так бережёт контекст — deferred-серверы ≈ бесплатны. Реальный выигрыш сплита: (1) не спавнить heavy-серверы зря — docker postgres-gendesign больше не поднимается в frontend/qa-окнах; (2) right-size eager-набор (5s-блок на старте × только нужные); (3) чистый tool-surface на роль.

Как:

  • .claude/mcp/{analyst,backend,frontend,reviewer,qa}.json — self-contained per-role конфиги, без секретов (${OBSIDIAN_API_KEY} / ${GENDESIGN_DB_URI} / ${GLITCHTIP_TOKEN} через env-expansion — подтверждено в доках Claude Code).
  • start-bot.ps1: извлекает MCP-секреты из ~/.claude.json (единый источник) → export → claude --strict-mcp-config --mcp-config .claude/mcp/<role>.json.

Матрица (E=eager, ·=deferred, –=нет):

forgejo obsidian context7 pg-gendesign playwright a11y lighthouse shadcn fetch glitchtip
analyst E E E ·
backend E E E E · ·
frontend E E E · · · ·
reviewer E E E E
qa E E E · · ·

Main/интерактивное окно (без start-bot.ps1) — полный .mcp.json+user, без изменений.

Test plan

  • scripts/start-bot.ps1 frontend → claude стартует, /mcp показывает только frontend-набор (нет docker-postgres)
  • backend-окно: mcp__postgres-gendesign__* доступны, ${GENDESIGN_DB_URI} подставился
  • обе роли: forgejo/obsidian/context7 живы; секреты из ~/.claude.json подхвачены

Зависит

  • Существующий .claude/mcp/ (commit-able, не в .gitignore). Role-файлы секрет-free → в репо OK.
  • NB: PR трогает bot-pipeline → проверить self-extending guard (это launcher+конфиги, не auto-code-reviewer.md — авто-merge должен быть OK, но подтверди).
## Summary Каждое bot-окно грузит ТОЛЬКО серверы своей роли, не все 7+. **Зачем (честно):** tool-search (default ON) и так бережёт контекст — deferred-серверы ≈ бесплатны. Реальный выигрыш сплита: (1) не спавнить heavy-серверы зря — `docker postgres-gendesign` больше не поднимается в frontend/qa-окнах; (2) right-size eager-набор (5s-блок на старте × только нужные); (3) чистый tool-surface на роль. **Как:** - `.claude/mcp/{analyst,backend,frontend,reviewer,qa}.json` — self-contained per-role конфиги, **без секретов** (`${OBSIDIAN_API_KEY}` / `${GENDESIGN_DB_URI}` / `${GLITCHTIP_TOKEN}` через env-expansion — подтверждено в доках Claude Code). - `start-bot.ps1`: извлекает MCP-секреты из `~/.claude.json` (единый источник) → export → `claude --strict-mcp-config --mcp-config .claude/mcp/<role>.json`. **Матрица** (E=eager, ·=deferred, –=нет): | | forgejo | obsidian | context7 | pg-gendesign | playwright | a11y | lighthouse | shadcn | fetch | glitchtip | |---|---|---|---|---|---|---|---|---|---|---| | analyst | E | E | E | · | – | – | – | – | – | – | | backend | E | E | E | E | – | – | – | – | · | · | | frontend | E | E | E | – | · | · | · | · | – | – | | reviewer | E | E | E | E | – | – | – | – | – | – | | qa | E | E | – | – | E | · | · | – | – | · | Main/интерактивное окно (без start-bot.ps1) — полный `.mcp.json`+user, без изменений. ## Test plan - [ ] `scripts/start-bot.ps1 frontend` → claude стартует, `/mcp` показывает только frontend-набор (нет docker-postgres) - [ ] backend-окно: `mcp__postgres-gendesign__*` доступны, `${GENDESIGN_DB_URI}` подставился - [ ] обе роли: forgejo/obsidian/context7 живы; секреты из ~/.claude.json подхвачены ## Зависит - Существующий `.claude/mcp/` (commit-able, не в .gitignore). Role-файлы секрет-free → в репо OK. - NB: PR трогает bot-pipeline → проверить self-extending guard (это launcher+конфиги, не auto-code-reviewer.md — авто-merge должен быть OK, но подтверди).
bot-backend added 1 commit 2026-05-30 08:05:48 +00:00
Каждое bot-окно грузит ТОЛЬКО нужные роли серверы (не все 7+ в каждом окне).
Выигрыш: не спавнить heavy-серверы зря (docker postgres в frontend/qa), right-size
eager-набор, чистый tool-surface на роль. (Контекст tool-search и так бережёт —
deferred ≈ бесплатно; это про процессы + eager + ясность.)

- .claude/mcp/{analyst,backend,frontend,reviewer,qa}.json — self-contained per-role
  конфиги. Секреты НЕ инлайнятся: ${OBSIDIAN_API_KEY}/${GENDESIGN_DB_URI}/
  ${GLITCHTIP_TOKEN} через env-подстановку (.mcp.json env expansion, подтв. в доках).
  Матрица: forgejo+obsidian+context7 eager везде; pg-gendesign eager у backend/reviewer,
  deferred у analyst; UI (playwright/a11y/lighthouse/shadcn) только frontend/qa; fetch+
  glitchtip у backend; glitchtip у qa.
- start-bot.ps1: извлекает MCP-секреты из ~/.claude.json (единый источник) → export →
  запускает `claude --strict-mcp-config --mcp-config .claude/mcp/<role>.json`.

Main/интерактивное окно (без start-bot.ps1) по-прежнему видит полный .mcp.json+user.
lekss361 merged commit 0f5bcb76a1 into main 2026-05-30 08:09:59 +00:00
lekss361 deleted branch chore/per-window-mcp 2026-05-30 08:09:59 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No project
No assignees
1 participant
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: lekss361/gendesign#700
No description provided.