Skip to content

feat: dedicated MCP page (content negotiation at /mcp) - #324

Merged
guillaumegay13 merged 8 commits into
mainfrom
feat/advertise-mcp
Aug 21, 2026
Merged

feat: dedicated MCP page (content negotiation at /mcp)#324
guillaumegay13 merged 8 commits into
mainfrom
feat/advertise-mcp

Conversation

@guillaumegay13

@guillaumegay13 guillaumegay13 commented Aug 21, 2026

Copy link
Copy Markdown
Collaborator

What changed

  • Dedicated MCP page at /mcp, served via content negotiation: MCP clients get the protocol, browsers get the docs page. One canonical URL.
  • Page shows per-client install commands behind a picker (Claude Code, Codex, OpenCode, Claude Desktop/Cursor/Windsurf/Zed) with copy buttons, and each tool's input schema + example output.
  • Header nav + mobile menu "MCP" link, footer "MCP server" link, homepage hero mention + CTA — all pointing to /mcp.
  • API page's MCP section is now a one-line pointer to /mcp.
  • Endpoint stays at /mcp (reverted the earlier move to /api/mcp).

Why

The MCP server was buried in the API page. This gives it its own page, matching how hosted MCP servers advertise, while keeping the conventional /mcp endpoint URL.

Implementation note

The page is self-contained (inline CSS/JS, no ejs/fs) so the Vercel function that serves /mcp can return it for browser GETs without touching the static build's filesystem.

Add an MCP link to the header nav and footer, an anchor on the API
page's MCP section, and a hero mention + CTA on the homepage.
@vercel

vercel Bot commented Aug 21, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
modelparams.dev Ready Ready Preview Aug 21, 2026 12:42pm

Request Review

Give the MCP server its own page. The endpoint stays at /mcp; a browser
GET now gets the docs page (clients still get the protocol), so one URL
serves both. The page shows per-client install commands behind a picker,
and each tool's input schema and example output. Served self-contained so
the Vercel function needs no filesystem access.
@guillaumegay13 guillaumegay13 changed the title feat: advertise the MCP server across the site feat: dedicated MCP page (content negotiation at /mcp) Aug 21, 2026
Rebuild the MCP page to reuse the site's compiled stylesheet, fonts,
header, footer, and dark-mode toggle instead of bespoke inline CSS, so
it looks like every other page. Scans src/build for tailwind classes.
Embed the Claude Code, Codex, OpenCode, Cursor, and Windsurf marks
(from the lobe-icons dependency already in the repo) and split the
client picker so each shows its logo. Claude Desktop/Zed fall under a
generic 'other' entry.
Add a minimal JSON highlighter (keys sky, strings emerald, numbers
violet, booleans amber, null rose) and apply it to the MCP tool input
schemas and example outputs, and to the API page's validate response.
Code blocks are now consistently dark for readable colour contrast.
Replace raw <pre> blocks with a reusable jsonBlock component: header bar
with a label and Copy button, syntax-highlighted body, and line wrapping
so long strings wrap instead of overflowing. Applied to MCP tool schemas
and the API validate response; input schema descriptions shortened.
Keep the MCP protocol endpoint at /mcp (GET returns the JSON usage
object, like other hosted MCP servers). Move the docs to /mcp-server as
a normal static page with the full site chrome — header with provider
menu, footer, breadcrumbs — instead of a self-contained function-served
page. Relabel the catch-all client as 'Other'.
@guillaumegay13
guillaumegay13 merged commit 673c089 into main Aug 21, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

site Website code or tooling

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant