Zero-dependency MCP compatibility proxy for Google Stitch. Normalizes JSON Schema patterns that break Moonshot Kimi and other strict Draft 7 clients.
Google Stitch MCP emits tool schemas with $ref plus sibling keywords:
{ "$ref": "#/$defs/VariantOptions", "description": "..." }This is valid in modern JSON Schema, but Kimi/Moonshot rejects it. This proxy rewrites it to:
{ "allOf": [{ "$ref": "#/$defs/VariantOptions" }], "description": "..." }npm install -g stitch-proxy-ld9Or use without installing:
npx -y stitch-proxy-ld9Add to ~/.config/opencode/opencode.json:
{
"mcp": {
"stitch-proxy-ld9": {
"type": "local",
"command": ["stitch-proxy-ld9"],
"environment": {
"STITCH_API_KEY": "your-api-key-here"
}
}
}
}Or using an environment variable (recommended for shared machines):
{
"mcp": {
"stitch-proxy-ld9": {
"type": "local",
"command": ["stitch-proxy-ld9"],
"environment": {
"STITCH_API_KEY": "{env:STITCH_API_KEY}"
}
}
}
}Then export in your shell profile (.bashrc, .zshrc):
export STITCH_API_KEY="your-api-key-here"Open OpenCode and verify the MCP is connected:
/mcp
Then prompt:
usa stitch-proxy-ld9 para listar mis proyectos de Stitch
usa stitch-proxy-ld9 para listar las pantallas del proyecto X
usa stitch-proxy-ld9 para obtener el código HTML de la pantalla Y
export STITCH_API_KEY="your-api-key"export STITCH_ACCESS_TOKEN="your-access-token"
export STITCH_PROJECT_ID="your-google-cloud-project-id"export STITCH_HOST="https://stitch.googleapis.com/mcp"| Symptom | Cause | Fix |
|---|---|---|
Missing Stitch credentials |
No API key set | Set STITCH_API_KEY in config or shell |
Connection closed in /mcp |
OpenCode can't see the key | Verify key is in ~/.config/opencode/opencode.json or exported in shell |
tools.function.parameters is not a valid moonshot flavored json schema |
Using upstream Stitch directly | Use stitch-proxy-ld9, not stitch |
structured content error |
Old version | npm install -g stitch-proxy-ld9@latest |
command not found: stitch-proxy-ld9 |
Not installed globally | npm install -g stitch-proxy-ld9 |
# Check binary exists
which stitch-proxy-ld9
# Run tests (from repo clone)
npm test
npm run typecheckOpenCode + Kimi
→ stitch-proxy-ld9 (local stdio MCP)
→ normalizes $ref + siblings → allOf pattern
→ Google Stitch MCP (remote)
- Intercepts
tools/listand normalizes everyinputSchema - Forwards
tools/callunchanged - Handles
structuredContentfor tools withoutputSchema - Uses env-only auth, no secrets logged
Independent compatibility proxy. Not affiliated with Google.
Google Stitch APIs are experimental. Expect changes.
MIT