Skip to content

Fix Figma MCP authorize 403 and hosted catalog auth - #83

Merged
sambitcreate merged 4 commits into
mainfrom
cursor/figma-mcp-oauth-dcr-4830
Sep 4, 2026
Merged

Fix Figma MCP authorize 403 and hosted catalog auth#83
sambitcreate merged 4 commits into
mainfrom
cursor/figma-mcp-oauth-dcr-4830

Conversation

@sambitcreate

@sambitcreate sambitcreate commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Problem

Authorizing the built-in Figma MCP preset (https://mcp.figma.com/mcp) failed with:

HTTP 403: Invalid OAuth error response … "Forbidden" is not valid JSON

Figma’s dynamic client registration endpoint allowlists MCP catalog client_name values (Codex, Claude Code, Cursor, VS Code, …) and returns a plaintext 403 Forbidden for Aiden Agent. The MCP SDK then treats that body as a broken OAuth JSON error.

Changes

  • Figma OAuth DCR now registers with the Codex catalog client name that Figma allowlists, while MCP initialize still identifies the client as aiden-agent.
  • OAuth client metadata is shared and includes application_type: native for the loopback PKCE client.
  • Settings gets a readable explanation if a host still rejects DCR with a plaintext 403.
  • GitHub’s hosted MCP is now a connectable API-key preset (Authorization: Bearer PAT) per current GitHub docs, instead of a dead OAuth Set Up.
  • Official docs URLs updated for Figma, Canva, Vercel, Cloudflare, monday.com, Datadog, Airtable, and GitHub.

Tests

  • Added mcp-oauth-client-metadata coverage for native metadata, Figma-style 403 rewriting, and Bearer header prefixing.
  • Extended catalog/preset tests for Figma clientName, GitHub origin/PAT auth, and connectable counts (21 connectable, 6 auth-unsupported).

Could not run the full npm test suite here: npm install against the registry was interrupted by TLS ECONNRESET. Focused catalog/preset/metadata tests passed under Node type-stripping. CI should run the registered scripts.

Open in Web Open in Cursor 

Release preparation follow-up

Fixed the ES2020 TypeScript incompatibility without widening the app target: OAuth errors retain a typed, non-enumerable cause through defineProperty. Added a cause-enumerability regression. Type checking, 15 focused metadata/preset/catalog tests, and focused lint passed. Integrated current main (#90 and #84), preserving all test registrations. Fresh combined CI and Pullfrog review are running before merge.

Coverage follow-up: preserve --experimental-test-coverage before positional test files, with a registered policy regression and verified real coverage output. The same MCP delta was reviewed in release PR #92; its sole coverage-registration finding is addressed. The original #83 review attempt stalled at checkout and was superseded by the latest-head review.

cursoragent and others added 3 commits September 2, 2026 02:06
Figma's DCR endpoint allowlists catalog client names and returns a plaintext
403 for "Aiden Agent", which the SDK surfaces as invalid JSON. Register the
Figma preset as Codex, mark OAuth clients as native PKCE apps, and connect
GitHub over a Bearer PAT. Clarify remaining DCR 403s in Settings.

Co-authored-by: Sambit Biswas <sambitcreate@users.noreply.github.com>
@sambitcreate
sambitcreate marked this pull request as ready for review September 4, 2026 22:36
@pullfrog

pullfrog Bot commented Sep 4, 2026

Copy link
Copy Markdown
  • Checkout PR Fix Figma MCP authorize 403 and hosted catalog auth #83 and read full diff
  • Read PR summary snapshot + learnings
  • Triage: orient on PR context (Figma MCP auth)
  • Investigate changed code paths and tests
  • Dispatch specialists if needed
  • Draft and submit review
  • Update pullfrog summary file

Pullfrog  | View workflow run | via Pullfrog | Using DeepSeek Flash𝕏

@sambitcreate
sambitcreate merged commit df9cc4d into main Sep 4, 2026
5 of 6 checks passed
@sambitcreate
sambitcreate deleted the cursor/figma-mcp-oauth-dcr-4830 branch September 5, 2026 01:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants