feat(config,compose): t3code-mcp as dispatcher hands on mac and dell

This commit is contained in:
hh
2026-08-29 20:36:23 +02:00
parent 4415e890c9
commit 96a7820026
4 changed files with 49 additions and 7 deletions
+13 -1
View File
@@ -169,6 +169,16 @@ komodo_mcps = (
)
komodo_exposed = (ExposedMcp(name="komodo"),) if KOMODO else ()
# §5: t3code-mcp - сосед по compose (профиль t3), машины и allowlist проектов
# в его t3code.toml; токены t3 живут в его env, gateway их не видит.
T3CODE_MCP = os.environ.get("T3CODE_MCP", "http://t3code-mcp:8000/mcp")
t3code_mcps = (
[McpServer.http(name="t3code", url=T3CODE_MCP)]
if "t3" in os.environ.get("COMPOSE_PROFILES", "").split(",")
else []
)
t3code_exposed = (ExposedMcp(name="t3code"),) if t3code_mcps else ()
# Секреты MCP - только через env подпроцесса (mcp stdio даёт ему белый список
# + это), никогда argv: процесс модели видит `ps` всего контейнера.
mcps: list[McpServerT] = [
@@ -189,6 +199,7 @@ mcps: list[McpServerT] = [
McpServer.http(name="telegram", url=os.environ["BEAVERGRAM_MCP"]),
*calendar_mcps,
*komodo_mcps,
*t3code_mcps,
]
# Руки глубокого (§4.4): firefly без delete_*, obsidian-fs не даётся - свои
@@ -216,7 +227,8 @@ def dispatcher(name: str, model: str, effort: str | None = None) -> ClaudeAgent:
gateway_tools=("read_conversation", "spawn", "say", "schedule"),
options=ClaudeOptions(effort=effort, disallowed_tools=DISPATCHER_DISALLOWED),
policy=VAULT_POLICY,
expose_mcps=CLAUDE_MCPS,
# §4.4: t3code - рука диспетчера (мастер, ветки), глубоким не даётся.
expose_mcps=(*CLAUDE_MCPS, *t3code_exposed),
)