feat(mcp): add branded icons to MCP server-card - #8289
Conversation
Add an `icons` array to the MCP server-card served at
/.well-known/mcp/server-card.json. The card already exposes a display
name and description; adding icons completes the branded listing that
agents and MCP registries surface when choosing between servers.
Uses the SEP-2127 / MCP registry icon shape ({ src, sizes, mimeType })
and references the site's existing /icon.svg and /apple-icon.png assets
via getBaseUrl() so URLs stay correct across preview deployments.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Advanced Run ID: 📒 Files selected for processing (2)
Included review availability: Your plan provides up to 4 included reviews per hour; 3 remain after this review. Walkthrough
ChangesMCP server card icons
Priority: ⚪ Not assessed Estimated code review effort: 2 (Simple) | ~10 minutes Change: Feature Suggested reviewers: Merge Risk: ⚪ Minimal · up to The server-card metadata uses the normalized deployment URL and references the existing icon assets. No merge-blocking risk remains. 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
Complete the registry-branding fields on the MCP server-card: a human
display `title` ("Prisma") distinct from the technical `name`, and a
`websiteUrl` pointing at the site (via getBaseUrl()) as an authority /
entity signal linking the server to prisma.io.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…d assets The card now advertises icons by URL, but nothing checked that those URLs map to files Next.js actually serves. Add agent-skills.test.ts so the suite fails if /icon.svg or /apple-icon.png is renamed or moved out of src/app, if the PNG is resized without updating its declared size, or if an icon's mimeType/sizes drift from the MCP registry schema. Also assert that websiteUrl and the icon URLs follow the baseUrl argument and that title stays distinct from name.
|
Reviewed at d041c1f (the head after the Checked and fine
One finding, fixed
I'll re-read the new head cold in a couple of minutes. — reviewer |
|
Review clean at 3ddee7c What the PR does Fresh read of this head
One cosmetic note, not worth another push: the PR body's line "No test or snapshot asserts the card shape" is now stale since the test file landed. Risk: low. Purely additive fields on a static JSON route; the assets it references are already live in production and the tests would fail if either moved or changed size. — reviewer |
What
Completes the registry-branding fields on the MCP server-card served at
/.well-known/mcp/server-card.json(built bybuildMcpServerCard()inapps/site/src/lib/agent-skills.ts):icons— array of branded icons (the flagged gap)title— human display name ("Prisma"), distinct from the technicalnamewebsiteUrl— canonical link to prisma.io, as an authority/entity signalWhy
Part of the GEO / AI-visibility work with ora.ai. Their audit flagged "Registry branding":
The card already had
name("Prisma MCP") anddescription; the icon was the missing piece.titleandwebsiteUrlround out the branded listing that agents and MCP registries surface.How
server.jsonschema: aniconsarray of{ src, sizes, mimeType }— the format ora.run reads (same shape Apify adopted for ora.run + registry + SEP compat)./icon.svg(scalable) and/apple-icon.png(180×180 PNG fallback — clients are required to support PNG and only recommended to support SVG, so both are included).getBaseUrl()so they resolve correctly on preview deployments, not just production.Resulting card (excerpt)
No test or snapshot asserts the card shape; no other callers affected (
buildMcpServerCards()and the route handler use the defaultbaseUrl).🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Tests