figma-mcp-server
Allows extraction and manipulation of Figma design information, including reading file data, styles, assets, variables, and creating or updating designs via a Figma plugin.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@figma-mcp-serverget the color styles from this Figma link: https://figma.com/file/abc"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Figma MCP Server
A Model Context Protocol (MCP) server for interacting with Figma designs. This server allows Claude AI to extract design information from Figma files and create or update designs using the Figma plugin.
Features
Readonly Mode: Extract design information from Figma files using a URL link
Write Mode: Create or update designs by establishing a connection with the Figma plugin
Comprehensive API: Access to a wide range of Figma features through a unified API
Unit Testing: Includes tests to verify server functionality
Integration Testing: Tests the flow from creating designs to reading them
Related MCP server: Claude Talk to Figma MCP
Modes
Readonly Mode
In readonly mode, the server can extract design information from a Figma file using a URL link. This includes:
File information
Node details
Styles (colors, text, effects)
Assets (images)
Variables
Component identification
Variant detection
Responsive design detection
Write Mode
In write mode, the server can create or update designs by establishing a connection with the Figma plugin. This includes:
Creating frames, shapes, text, and components
Creating component instances
Updating node properties
Setting fills, strokes, and effects
Deleting nodes
Smart element creation
Prerequisites
Node.js 18 or higher
A Figma account and access token
The Figma MCP plugin installed in the Figma desktop app (for write mode)
Installation
Clone the repository:
git clone https://github.com/your-username/figma-server.git
cd figma-serverInstall dependencies:
npm installBuild the server:
npm run buildConfiguration
The server requires a Figma access token to be set in the environment:
export FIGMA_ACCESS_TOKEN=your_figma_access_tokenUsage
Starting the Server
npm startDevelopment Mode
npm run devRunning Tests
# Run unit tests
npm test
# Run integration tests (TypeScript)
npm run test:integration
# Run integration tests (JavaScript)
npm run test:integration-js
# Run all tests
npm run test:all
# Test plugin connection
npm run test:plugin-connection-jsThe plugin connection test is a simple WebSocket server that listens for connections from the Figma plugin. It's useful for verifying that the plugin is running and can connect to the server.
The JavaScript versions of the tests are provided as alternatives that don't require TypeScript compilation, which can be more reliable in some environments.
Project Structure
figma-server/
├── src/ # Source code
│ ├── core/ # Core functionality
│ │ ├── config.ts # Configuration management
│ │ ├── logger.ts # Logging utilities
│ │ ├── types.ts # Common type definitions
│ │ └── utils.ts # Utility functions
│ ├── readonly/ # Readonly mode implementation
│ │ ├── api-client.ts # Figma REST API client
│ │ ├── design-manager.ts # Design information extraction
│ │ └── style-extractor.ts # Style extraction utilities
│ ├── write/ # Write mode implementation
│ │ ├── plugin-bridge.ts # WebSocket server for plugin communication
│ │ ├── design-creator.ts # Design creation utilities
│ │ └── component-utils.ts # Component utilities
│ ├── mcp/ # MCP server implementation
│ │ ├── server.ts # Main MCP server
│ │ ├── tools.ts # Tool definitions
│ │ └── handlers.ts # Tool handlers
│ ├── index.ts # Entry point
│ └── mode-manager.ts # Mode management (readonly/write)
├── tests/ # Test files
│ ├── unit/ # Unit tests
│ │ └── server.test.ts # Server tests
│ └── integration/ # Integration tests
│ └── design-flow.test.ts # Design flow tests
├── plugin/ # Figma plugin
│ ├── code.js # Plugin code
│ ├── manifest.json # Plugin manifest
│ └── ui.html # Plugin UI
└── docs/ # Documentation
└── usage.md # Usage instructions for Claude AIDocumentation
For detailed usage instructions, see the usage documentation.
License
ISC
Available Tools
9 toolsdetect_responsiveC
Detect responsive variations of components
| Name | Required | Description | Default |
|---|---|---|---|
| figmaUrl | Yes | Figma file URL (any format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full responsibility for behavioral disclosure. The one-line description gives no information about side effects, return values, or limitations. 'Detect' implies a read-only operation, but this is not explicitly stated, and there is no mention of what the tool does with the input or what the output looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, short sentence that is front-loaded with the key action and object. It is concise and without unnecessary words, though it could potentially add more useful context without sacrificing brevity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has only one parameter and no output schema, so the description is the only source of context about what the tool does and returns. The description is minimal and doesn't explain what 'detect responsive variations' means in practice, what the output format is, or how it relates to other tools. This is inadequate for an agent to understand the tool's full capabilities and limitations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already provides 100% coverage with a description for 'figmaUrl' ('Figma file URL (any format)'), so the schema handles parameter semantics. The tool description adds no additional meaning about the parameter beyond the schema, warranting the baseline score of 3.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Detect') and resource ('responsive variations of components'), clearly stating the tool's core function. However, it doesn't differentiate from sibling tool detect_variants, which might cause confusion about when each should be used.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like detect_variants or identify_components. The description doesn't mention any prerequisites, use cases, or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
detect_variantsC
Detect component variants and group them
| Name | Required | Description | Default |
|---|---|---|---|
| figmaUrl | Yes | Figma file URL (any format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden for behavioral disclosure. It implies a read-only detection operation but does not state whether it has side effects, what the output looks like, or any auth requirements. This is a significant gap for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no wasted words. It avoids repetition and is appropriately sized for a tool with one parameter and a straightforward purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool lacks an output schema and annotations, and the description omits what 'group them' means or what the return structure is. Even for a simple tool, the agent is left without essential context about the result format and behavioral expectations.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema fully documents the single parameter 'figmaUrl' with a clear description ('Figma file URL (any format)'), so the description does not need to add parameter details. Baseline of 3 applies since schema coverage is 100% and the description offers no extra parameter information.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Detect') and the target ('component variants'), plus the additional grouping behavior. It distinguishes itself from siblings like identify_components by focusing specifically on variants and grouping, though it could be more explicit about operating on a Figma file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus siblings like identify_components or get_node_details. The description only states what it does, offering no contextual hints or alternative recommendations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
extract_stylesB
Extract color, text, and effect styles from a Figma file
| Name | Required | Description | Default |
|---|---|---|---|
| figmaUrl | Yes | Figma file URL (any format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must disclose behavioral traits. It only states 'extract' which implies read-only, but it doesn't mention permissions, API limitations, output format, or any potential side effects. The description is essentially a restatement of the tool's name.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that delivers the core purpose without extraneous words. It earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description should provide richer context such as what the extracted styles look like, whether all styles are returned, or any operational constraints. The current description is too vague to fully enable correct usage.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage for the single parameter 'figmaUrl' with a description of 'Figma file URL (any format)'. The tool description adds nothing beyond the schema, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: extracting color, text, and effect styles from a Figma file. This distinguishes it from sibling tools like get_variables (extracts variables) and identify_components (identifies components), making its purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like get_variables or get_file_info. There are no explicit exclusions or preferred scenarios, leaving the AI to infer usage from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_assetsB
Get image URLs for nodes in a Figma file
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | Image scale (default: 1) | |
| format | No | Image format (default: png) | |
| nodeId | No | Node ID (optional if URL contains node-id) | |
| figmaUrl | Yes | Figma file URL (any format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of disclosing behavior. It only says 'Get image URLs' which implies a read-only operation, but it does not disclose authentication requirements, rate limits, error behavior, or what happens when a node is not found. The description adds minimal behavioral context beyond the literal action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence with no redundant information. It front-loads the action and resource, making it easy to scan. Every word contributes to understanding the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no annotations and no output schema, the description is minimal but covers the core purpose. However, it does not describe the return format or any edge cases (e.g., missing nodeId, invalid URL). The parameter schema fills in some gaps, but the description alone is not fully complete for a tool with 4 parameters and potential format/scale nuances.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with each parameter having a description (e.g., 'scale (default: 1)', 'format (enum: jpg/png/svg/pdf)'). The description itself adds no parameter semantics, but per the baseline rule, since schema coverage is high, a score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Get image URLs for nodes in a Figma file.' It uses a specific verb ('get'), a clear resource ('image URLs for nodes'), and the context ('Figma file') which distinguishes it from sibling tools like get_node_details or extract_styles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to use this tool versus the sibling tools. The description implies it is for obtaining image URLs, but there is no explicit when/when-not guidance or mention of alternatives. With eight related tools available, this lack of differentiation could lead to incorrect tool selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_infoB
Get basic metadata about a Figma file
| Name | Required | Description | Default |
|---|---|---|---|
| figmaUrl | Yes | Figma file URL (any format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. It only says 'basic metadata' without disclosing what metadata fields are returned, whether authentication is required, or any limits. As a read operation, the 'get' verb implies safety but provides no additional behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single clear sentence with no wasted words. It is efficiently front-loaded with the action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is minimally adequate but lacks usage guidance and behavioral detail. Given the sibling context, it could do more to clarify its role in the larger workflow.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema fully documents the single parameter figmaUrl at 100% coverage, so the baseline is 3. The description adds no additional parameter semantics beyond what the schema already provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets basic metadata about a Figma file, with a specific verb and resource. It distinguishes somewhat from siblings like get_node_details or extract_styles by using the qualifier 'basic', though it doesn't enumerate what metadata is included.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or when-not-to-use guidance is provided. The usage is only implied by the tool name and sibling context, but the description itself gives no direction on when to choose this over more specific tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_node_detailsB
Get detailed information about a specific node (component, frame, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | No | Node ID (optional if URL contains node-id) | |
| figmaUrl | Yes | Figma file URL (any format) | |
| properties | No | Optional array of property paths to include (e.g., ["id", "name", "children.id"]) | |
| detailLevel | No | Level of detail to include (default: basic) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'Get detailed information' without specifying what 'detailed' entails, whether it returns raw node data, any permission requirements, or how it handles invalid/unspecified node IDs. This lack of behavioral detail is a significant gap for a tool with zero annotation coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no superfluous words. It uses a clear verb and object and is appropriately concise for the tool's purpose. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has four parameters, no output schema, and no annotations. The description gives only a high-level statement and fails to convey what kind of 'detailed information' is returned, how detailLevel affects output, or any edge cases (e.g., when nodeId is required). This leaves an agent with insufficient context to invoke the tool correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all four parameters. The description adds minimal semantic value beyond confirming the tool operates on a 'specific node'. It does not explain the meaning of properties or detailLevel beyond what the schema provides, so baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get') and resource ('detailed information about a specific node'), and clarifies node types ('component, frame, etc.'). It clearly distinguishes itself from siblings like get_file_info or extract_styles, which target different resources. This is a precise, action-oriented statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides minimal context about when to use this tool (for a specific node) but offers no explicit guidance on when not to use it or which alternatives to prefer. Sibling tools exist for different resources (validate_token, get_assets, etc.), but no direct exclusions or alternatives are mentioned. This falls short of clear usage guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_variablesB
Get variables and variable collections from a Figma file (new Figma Variables API)
| Name | Required | Description | Default |
|---|---|---|---|
| figmaUrl | Yes | Figma file URL (any format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of disclosing behavior. It simply says 'Get variables' without mentioning that it is a read-only operation, whether authentication is needed, what the API returns (e.g., variable modes, resolved values), or any rate/error behavior. This is a significant gap for a tool that interacts with an external API.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that leads with the main action and resource, and adds the API version context in parentheses. It is concise, front-loaded, and has zero filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has a single simple parameter and no output schema, so the description is minimally adequate for basic use. However, it lacks explanation of the return payload, pagination limits, or whether both local and published variables are fetched, so it is not fully self-sufficient for an agent to anticipate tool output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents figmaUrl as 'Figma file URL (any format)' with 100% coverage. The description adds 'from a Figma file' and 'new Figma Variables API', but this does not materially deepen understanding of the parameter beyond what the schema states. Baseline 3 is appropriate given the schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Get') and the resource ('variables and variable collections') from a Figma file, using the new Figma Variables API. This is distinct from sibling tools like extract_styles or get_assets, leaving no ambiguity about what the tool retrieves.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives, no prerequisites (e.g., whether a token is required), and no exclusions. It merely describes the function without specifying context, so the agent gets no help in deciding between this and sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
identify_componentsA
Identify UI components in a Figma design (charts, tables, forms, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| nodeId | No | Node ID (optional if URL contains node-id) | |
| figmaUrl | Yes | Figma file URL (any format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden of behavioral disclosure. It lacks any mention of whether the tool is read-only, what the output format looks like, authentication requirements, or side effects. The purpose is stated but not the operational behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence with no filler words. Every word contributes to the meaning, making it highly efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with only 2 parameters and no output schema, so the description need not be elaborate. However, it lacks behavioral context (e.g., whether it's risk-free) and does not differentiate from closely related sibling tools, making it minimally complete but not rich.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% (both parameters have descriptions), so the baseline is 3. The tool description itself adds no parameter-level detail beyond what the schema already provides, so it neither improves nor degrades semantic clarity.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific action ('Identify') with a clear resource ('UI components in a Figma design') and provides examples ('charts, tables, forms, etc.'), which effectively distinguishes it from sibling tools like get_node_details or extract_styles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies the tool's use case: when you need to identify UI component types in a Figma design. It doesn't explicitly mention alternatives or exclusions, but the context is clear enough for an agent to select it appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_tokenA
Test if the configured token has access to a Figma file
| Name | Required | Description | Default |
|---|---|---|---|
| figmaUrl | Yes | Figma file URL (any format) |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description bears the full burden of behavioral disclosure. It only states 'test if access,' without mentioning whether it makes a network request, what happens on invalid token, or any potential side effects. This is a minimal disclosure for a tool with no annotation support.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that directly conveys the tool's purpose without superfluous detail. It is appropriately sized for a simple validation tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a low-complexity tool with one parameter and no output schema, the description is minimally adequate. However, it does not mention what the tool returns (e.g., a boolean or success message), which would be expected from a 'test' operation. It leaves the exact outcome ambiguous.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already provides 100% coverage for the single parameter (figmaUrl) with a clear description ('Figma file URL (any format)'). The tool description adds no additional parameter semantics, so the baseline of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('test') and clearly identifies the resource ('configured token has access to a Figma file'). It distinguishes from sibling tools, which all fetch file information or extract design assets, whereas this tool validates access.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The purpose implies usage as a preliminary check before other Figma operations, but there is no explicit guidance on when or when not to use it, nor any mention of alternatives. The intended context is inferable but not stated.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
9 tool updates
v1.0.0- First observed
detect_responsive - First observed
detect_variants - First observed
extract_styles - First observed
get_assets - First observed
get_file_info - First observed
get_node_details - First observed
get_variables - First observed
identify_components - First observed
validate_token
TDQS
Each tool targets a distinct aspect of Figma data: token validation, file metadata, node details, styles, assets, variables, and three specific component analyses (identification, variants, responsive). The overlapping-sounding component tools are clearly differentiated by their descriptions.
All tool names follow a consistent verb_noun pattern using clear verbs (validate, get, extract, identify, detect) and specific nouns. The convention is uniform across the entire set.
Nine tools is well within the ideal range for a specialized server, covering a cohesive set of read-only Figma operations without redundancy or bloat. Each tool earns its place.
The server covers the core read-only surface for Figma: file access, node introspection, styles, assets, variables, and component analysis. No create/update operations are included, but the server's apparent purpose is analysis; minor gaps like commenting or file search are not critical.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
The Figma MCP server brings Figma design context directly into your AI workflow.
- platform7nOAuthtech.p7n
Connect Claude to your Platform7n workspaces — chat, links, and tasks. One-click OAuth.
Connect Claude to Fathom meeting recordings, transcripts, and summaries
Give Claude only the Google Drive files you choose. Every action logged.
Related MCP Servers
- AlicenseCqualityDmaintenanceEnables Claude Desktop and other AI tools to interact directly with Figma, allowing for powerful AI-assisted design capabilities through natural language commands.92299653MIT
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants like Claude Desktop to interact directly with Figma, allowing natural language commands to create, modify, and analyze designs including shapes, text, components, and layouts in real-time.MIT
- AlicenseNot gradedqualityAmaintenanceEnables Claude to read and manipulate Figma documents in real-time through 62 operations including creating shapes, modifying styles, managing components, and exporting assets via a WebSocket bridge to a Figma plugin.7671MIT
- AlicenseNot gradedqualityDmaintenanceEnables Claude to interact directly with Figma Desktop for creating UI components, managing design tokens, and auditing files through natural language. It establishes a live connection between the AI and the Figma API via a local server and companion plugin.8,318MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/karthiks3000/figma-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server