fc8ebff6d8
The desktop app carried its own hardcoded list of 17 vendor MCP endpoints (apps/desktop/src/lib/mcp-directory.ts) powering the composer suggestion pills — a second PR-reviewed vendor list, overlapping and drifting from the Nous-approved MCP catalog (optional-mcps/). This makes the catalog the single source of truth: - manifest schema: optional `suggest:` block (keywords + hosts), parsed, validated, and normalized in mcp_catalog.py - 15 new URL-only hosted-remote catalog entries (atlassian, sentry, datadog, notion, stripe, vercel, supabase, netlify, hugging_face, asana, intercom, airtable, webflow, paypal, square); figma + linear manifests gain suggest blocks - GET /api/mcp/catalog now serves the suggest metadata - desktop suggestion provider builds its match index from the catalog; the static directory remains only as a compatibility rung for older backends without suggest metadata - setup card source line prefers the catalog entry's transport URL GitHub stays out of the catalog on purpose: its hosted MCP rejects generic DCR and the bundled github/* skills (gh CLI) are the stronger integration. New desktop `github` suggestion provider offers the github-auth skill instead — gated on a new cached GET /api/git/gh-auth probe so already- authenticated users never see the pill.
49 lines
1.7 KiB
YAML
49 lines
1.7 KiB
YAML
# Nous-approved MCP catalog entry.
|
|
# Presence in this directory = approval. Merged via PR review.
|
|
manifest_version: 1
|
|
|
|
name: figma
|
|
description: >-
|
|
Official Figma remote MCP — design context, Code Connect, and
|
|
write-to-canvas via https://mcp.figma.com/mcp (OAuth).
|
|
source: https://developers.figma.com/docs/figma-mcp-server/remote-server-installation/
|
|
|
|
# Figma's hosted endpoint requires OAuth 2.1 + DCR. Their registration
|
|
# endpoint allowlists *exact* client_name strings (not arbitrary clients):
|
|
# "Claude Code" and "Codex" succeed; "Hermes Agent" 403s. Hermes's MCP
|
|
# OAuth layer auto-sets client_name to "Claude Code" for this host (see
|
|
# tools/mcp_oauth.apply_oauth_provider_defaults) so the browser flow can
|
|
# start. Users can override via oauth.client_name if they want Codex
|
|
# instead. Scope defaults to mcp:connect.
|
|
transport:
|
|
type: http
|
|
url: https://mcp.figma.com/mcp
|
|
|
|
auth:
|
|
type: oauth
|
|
|
|
# Composer-suggestion triggers (desktop brand pills).
|
|
suggest:
|
|
keywords:
|
|
- figma
|
|
- mockup
|
|
- wireframe
|
|
hosts:
|
|
- figma.com
|
|
|
|
post_install: |
|
|
On first connection Hermes opens a browser to authorize with Figma
|
|
(or run `hermes mcp login figma`). Approve access, then restart the
|
|
session so tools load.
|
|
|
|
Figma walks OAuth DCR by exact client_name. Hermes registers as
|
|
"Claude Code" automatically so registration is not 403'd — you do not
|
|
need to paste a client_id.
|
|
|
|
Prompt with a frame/file link:
|
|
implement this design: https://www.figma.com/design/<fileKey>/...
|
|
|
|
Desktop alternative (no OAuth, local only): enable Dev Mode MCP in the
|
|
Figma desktop app (Shift+D → Inspect → Enable desktop MCP server) and
|
|
point url at http://127.0.0.1:3845/mcp instead.
|