feat(studio): Heady Studio MCP host + headymcp.com gateway (skeleton)#225
Open
HeadyMe wants to merge 2 commits into
Open
feat(studio): Heady Studio MCP host + headymcp.com gateway (skeleton)#225HeadyMe wants to merge 2 commits into
HeadyMe wants to merge 2 commits into
Conversation
Add a Claude-Code-style MCP host (apps/heady-studio) that fronts Heady services as MCP servers, plus the single multiplexed gateway it talks to (apps/heady-mcp-gateway → headymcp.com/mcp). All capability lives behind MCP servers; the UI is a registry-driven renderer over the official @modelcontextprotocol/sdk, so new options drop in without UI changes. - packages/studio-registry: source-of-truth catalog (models, modes, effort, execution modes, skills, workflows, Heady services, external MCP presets) + zod-validated manifest, phi-scaled billing meter, recommendation engine. - apps/heady-mcp-gateway: Express + MCP server on Cloud Run. Firebase-authed (fail-closed), structured logging, /health + /metrics, tools for recommend, governance, and persistent-memory search (honest bound:false when Neon pgvector is unbound — zero fabricated data). - apps/heady-studio: Vite + vanilla Web Components SPA. Login + persistent memory, repo connectors, model switcher, Services panel (Heady + external MCP toggles that adjust billing), skills/workflows pickers, effort selector, modes (understanding/recommendation/deep-research), auto/testing-review/ sandbox execution toggle, auto-growing composer (6 lines then scroll) with Send + Attach, and a live recommendation strip. Verified: studio-registry 6/6, gateway 4/4, SPA Vite build green, all modules parse, AGENTS hard-rules clean (no localhost/require/TODO/console.log). Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E59siYZobUyLBWjKFRNyVQ
Dependency layers L0→L8 (Mermaid), beachhead ship-order with per-phase Definition of Done, cross-cutting components built in from Phase 0, and the branch strategy. Maps this PR to beachheads 2+4 plus the billing-meter half of 6. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01E59siYZobUyLBWjKFRNyVQ
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What & why
A functional, extensible skeleton for Heady Studio — a Claude-Code-style app that fronts Heady's MCP services. Built on the architectural decision (confirmed with the owner) that Heady Studio is a thin MCP host: all capability lives behind MCP servers, Heady's own ride a single multiplexed gateway at
headymcp.com/mcp, and external servers connect by their Streamable-HTTP/mcpendpoint. The UI is a registry-driven renderer over the official@modelcontextprotocol/sdk, so new options drop in with zero UI changes.This collapses several requirements into one abstraction: "toggle a Heady feature" and "connect an external MCP server" become the same operation on one registry → one toggle UI, one billing meter.
Components
packages/studio-registryapps/heady-mcp-gatewayheadymcp.com/mcp— Express + MCP server on Cloud Run. Firebase-authed (fail-closed), structured logging,/health+/metrics. Tools:heady_recommend,heady_governance_check,heady_memory_search(honestbound:falsewhen Neon pgvector is unbound — zero fabricated data).apps/heady-studioFeatures wired (v1 skeleton)
heady_memory_search)heady_recommendreconcile)Verification
@heady/studio-registryunit tests: 6/6 pass@heady-ai/heady-mcp-gatewayHTTP smoke tests: 4/4 pass (health open, metrics, MCP fail-closed without bearer, manifest auth-gated)node --checklocalhost/require()/TODO/console.logHow to extend
@heady/studio-registry; topbar, Services panel, and billing meter pick it up automatically.registerTool(...)in the gateway.🤖 Generated with Claude Code
https://claude.ai/code/session_01E59siYZobUyLBWjKFRNyVQ
Generated by Claude Code