Skip to content

Add Figma MCP skill#80

Draft
neubig wants to merge 7 commits intomainfrom
add-figma-skill
Draft

Add Figma MCP skill#80
neubig wants to merge 7 commits intomainfrom
add-figma-skill

Conversation

@neubig
Copy link
Contributor

@neubig neubig commented Feb 27, 2026

Summary

Adds a Figma MCP skill plus companion README documentation for installing the remote Figma MCP server and using it from OpenHands.

Fixes #81

Details

  • Keeps SKILL.md short and decision-oriented for progressive disclosure
  • Expands README.md with concrete installation, usage, and troubleshooting guidance
  • Registers the skill in marketplaces/default.json
  • Clarifies that the MCP server reads Figma data, while OpenHands uses that data to generate code or answer design questions

Testing

Documentation/skill change - no automated tests were added.

Validation completed:

  • Claude Code Compatibility GitHub Action: ✅ passed
  • Tests GitHub Action: ✅ passed

Evidence

Verification link: View conversation

Cannot be tested in current environment:

  • What I tried: reviewed the skill/README changes, fixed the PR comments, and verified the repository validation/CI checks pass.
  • Resource needed: Figma account with OAuth access plus a browser session that can complete the MCP OAuth flow.
  • Reason: installation requires browser-based Figma OAuth that is not available in this environment.
  • Manual verification steps:
    1. Run openhands mcp add figma --transport http https://mcp.figma.com/mcp
    2. Start a fresh OpenHands session so the new MCP server is loaded
    3. Prompt OpenHands with a Figma URL such as Generate a React component from this Figma frame: https://www.figma.com/file/ABC123/MyDesign?node-id=1-2
    4. Complete the OAuth flow when the first Figma MCP tool call opens your browser
    5. Verify the agent can read the referenced frame data and respond using the retrieved design context

Checklist

  • CI passing
  • README and SKILL.md are compact and aligned
  • Review threads addressed
  • Live Figma/OAuth evidence gathered
  • Ready for human review (awaiting manual OAuth-backed verification)

neubig and others added 2 commits February 27, 2026 13:31
Add a new skill for installing and managing the Figma MCP server,
which provides tools to interact with Figma designs directly from
OpenHands using OAuth authentication.

Co-authored-by: openhands <openhands@all-hands.dev>
The URL was incorrectly pointing to https://figma.com/mcp/sse but the
official Figma documentation specifies https://mcp.figma.com/mcp

Reference: https://developers.figma.com/docs/figma-mcp-server/remote-server-installation/

Co-authored-by: openhands <openhands@all-hands.dev>
@neubig neubig marked this pull request as ready for review March 1, 2026 13:19
Copy link

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Needs improvement: Critical inconsistency between installation commands and architectural issues with skill structure. See inline comments for details.

@neubig neubig marked this pull request as draft March 1, 2026 13:28
Co-authored-by: openhands <openhands@all-hands.dev>
@neubig neubig marked this pull request as ready for review March 2, 2026 04:47
Copy link

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Needs improvement: Installation commands contradict each other and will break for users. The previous "fix" did not resolve this.

@neubig neubig marked this pull request as draft March 2, 2026 12:21
- Fix URL inconsistency: use official https://mcp.figma.com/mcp URL in both files
- Update description to clarify read-only access
- Apply progressive disclosure: slim SKILL.md to ~15 lines, move details to README.md
- Remove content duplication between files
- Add Usage and Troubleshooting sections to README.md

Co-authored-by: openhands <openhands@all-hands.dev>
@neubig neubig marked this pull request as ready for review March 2, 2026 12:30
Copy link

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔴 Needs improvement: Same data consistency issue persists - installation commands don't match across the PR.

@neubig neubig marked this pull request as draft March 2, 2026 12:33
- Updated PR description to use correct installation command
- Clarified in README.md that OAuth is handled automatically by the
  server at runtime, not via an installation flag
- All installation commands now consistent across PR description,
  SKILL.md, and README.md

Co-authored-by: openhands <openhands@all-hands.dev>
@neubig neubig marked this pull request as ready for review March 2, 2026 12:58
Copy link

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Acceptable - Structure is clean and follows conventions. Core functionality looks solid, but documentation could be more precise about what actually happens when using this skill.

@neubig neubig marked this pull request as draft March 2, 2026 13:01
@neubig neubig marked this pull request as ready for review March 2, 2026 13:01
Copy link

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Acceptable - Structure is clean and follows conventions. Core functionality looks solid, but documentation could be more precise about what actually happens when using this skill.

@neubig
Copy link
Contributor Author

neubig commented Mar 2, 2026

This should not be marked ready yet because it requires testing with oauth, which a human needs to do.

@neubig neubig marked this pull request as draft March 2, 2026 16:02
@neubig neubig marked this pull request as ready for review March 2, 2026 18:17
Copy link

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Acceptable - Clean structure, follows conventions. Two minor clarifications would improve user experience.

@neubig neubig marked this pull request as draft March 2, 2026 18:22
- Clarify why restart is required (MCP servers initialized at session startup)
- Fix OAuth troubleshooting guidance (browser session, not re-running mcp add)

Co-authored-by: openhands <openhands@all-hands.dev>
@neubig neubig marked this pull request as ready for review March 3, 2026 12:40
Copy link

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Acceptable - Functional skill that follows repository conventions, but documentation has clarity gaps that will cause user confusion. The installation works, but users will struggle to understand the actual workflow.

@neubig neubig marked this pull request as draft March 7, 2026 19:24
@neubig neubig marked this pull request as ready for review March 7, 2026 20:41
Copy link

@all-hands-bot all-hands-bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Acceptable - Clean structure that solves a real problem. Documentation over-emphasizes code generation when the tool has broader capabilities. See inline comments for specific improvements.

The MCP server is link-based. To use it:

1. In Figma, copy the link to a frame or layer (for example `https://www.figma.com/file/ABC123/MyDesign?node-id=1-2`)
2. In OpenHands, prompt: `Generate a React component from this Figma frame: https://www.figma.com/file/ABC123/MyDesign?node-id=1-2`

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Suggestion - Scope Mismatch: Your Usage section shows ONE use case (code generation: "Generate a React component"), but your capabilities list claims FOUR use cases (generate code, extract context, retrieve tokens, inspect properties).

Line 60 says "You can use the same pattern for other tasks" but this is hand-waving - show, don't tell. Users will assume this skill is ONLY for code generation unless you show them otherwise.

Suggestion: Add 2-3 concrete example prompts:

## Example Prompts

**Code generation:**
`Generate a React component from this Figma frame: https://www.figma.com/file/ABC123/MyDesign?node-id=1-2`

**Extract design tokens:**
`What colors and typography are defined in this Figma file: https://www.figma.com/file/ABC123/MyDesign`

**Inspect component structure:**
`Show me the component tree and layer hierarchy for this frame: https://www.figma.com/file/ABC123/MyDesign?node-id=1-2`

If the skill actually can't do these things reliably, narrow your capabilities list to match what actually works.


This adds the Figma MCP server to your OpenHands configuration. The first time OpenHands calls a Figma MCP tool, the server will open your browser and prompt you to authorize access with Figma OAuth.

**Note:** Restart your OpenHands session after installation to load the new MCP server. This is required because MCP servers are initialized at session startup - the server configuration is loaded once when OpenHands starts, so changes to `mcp.json` require a restart to take effect.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Nit - Verbosity: You say the same thing twice:

  • "MCP servers are initialized at session startup"
  • "the server configuration is loaded once when OpenHands starts"

These mean the same thing. The second clause adds no new information.

Simpler: "This is required because MCP servers are initialized at session startup."

(But honestly, explaining WHY helps users who wonder if they can skip the restart, so the verbosity is somewhat justified. Low priority.)

openhands mcp add figma --transport http https://mcp.figma.com/mcp
```

You'll be prompted to authorize via Figma OAuth when first used. Restart your OpenHands session after installation.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Suggestion - Vague Timing: "when first used" - by whom? when exactly?

Your README is more precise: "The first time OpenHands calls a Figma MCP tool, the server will open your browser..."

Even in the brief SKILL.md, precision costs almost nothing:

Suggested change
You'll be prompted to authorize via Figma OAuth when first used. Restart your OpenHands session after installation.
You'll be prompted to authorize via Figma OAuth the first time OpenHands calls a Figma tool. Restart your OpenHands session after installation.

Comment on lines +11 to +14
- **Generate implementation prompts from frames**: Ask OpenHands to read a Figma frame through MCP and generate React, HTML, or other code from the retrieved design data
- **Extract design context**: Pull in variables, components, and layout data
- **Retrieve design tokens**: Access colors, typography, and spacing values
- **Inspect layer properties**: Get detailed information about supported Figma nodes such as frames, components, instances, text, and shapes

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Minor - Inconsistent Specificity: Your capability bullets mix concrete and vague language:

  • Line 11: VERY specific - names frameworks (React, HTML)
  • Line 12: Vague - what is "design context"? which "variables"?
  • Line 13: Medium - mentions specific token types
  • Line 14: Specific - lists node types

Pick a consistent level. Either:

  • All high-level: "Generate code", "Extract design data", "Retrieve style tokens", "Inspect element properties"
  • All concrete with examples

Mixing specificity is jarring. Not critical, but hurts polish.

@neubig neubig marked this pull request as draft March 7, 2026 21:33
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.

Create Figma MCP skill

4 participants