#!/usr/bin/env node /** * Graph MCP shim — adopts upstream `mcp-neo4j-cypher` per brand. * * Claude Code spawns this file as the `graph` MCP server; it * starts the upstream Python server under `uvx` and proxies the JSON-RPC * stdio stream byte-for-byte. While proxying, it: * 1. Resolves `NEO4J_URI/USERNAME/PASSWORD` from the brand's own env * (falls back to `${PLATFORM_ROOT}/config/.neo4j-password`, matching * plugins/memory/mcp/src/lib/neo4j.ts:10-21). * 2. Installs the Maxy stderr tee so upstream stderr lands in the * per-conversation stream log alongside every other plugin. The raw * per-server sink is the mcp-spawn-tee shim's, not this module's. * 3. Locks the upstream server into read-only mode (`NEO4J_READ_ONLY=true`) * and a stable Maxy namespace (`NEO4J_NAMESPACE=maxy-graph`). * 4. Parses JSON-RPC lines on the request path to record the cypher and * start time per `id`, and on the response path to emit one * `[graph-query] op=... brand=... port=... cypher="..." rows=... ms=...` * line per tool call. Forwarding is byte-accurate — the parser * observes, never mutates. * * Isolation model per MAXY-PRD.md:627 and create-maxy src/index.ts:504-824: * each brand already owns its own Neo4j instance on its own port with its * own password. This shim trusts that — no query-layer tenant filtering. */ export {}; //# sourceMappingURL=index.d.ts.map