mcp-figma
The mcp-figma server provides a Model Context Protocol interface to integrate with the Figma API for managing design resources.
Key capabilities:
API key management: Set, store, and verify Figma personal access tokens
File operations: Retrieve Figma files, specific nodes, and generate images from files
Comment management: Get, post, and delete comments on Figma files
Team and project access: Fetch projects for teams and files within projects
Component and style operations: Access components, component sets, and styles at team or file level
Image resources: Get URLs for images used as fills in Figma files
Provides comprehensive access to Figma's API, enabling file operations, comments management, team/project management, component and style access, and image extraction from Figma designs.
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., "@mcp-figmaget the file with key abc123"
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.
mcp-figma
A Model Context Protocol (MCP) server for Figma API integration, designed to be used with Claude and other MCP-compatible AI assistants.
Features
This MCP server provides access to Figma API functionality:
File operations (get file, get nodes, get images)
Comments management
Team/project management
Components and styles access
Persistent API key storage
Related MCP server: Figma MCP Server
Installation
NPM Installation
# Install globally
npm install -g mcp-figma
# Or install locally in a project
npm install mcp-figma
# Update to latest version
npm update -g mcp-figmaUsage with Claude
Add mcp-figma to your Claude configuration:
"mcp-figma": {
"command": "npx",
"args": [
"-y",
"mcp-figma"
]
}When using Claude, the first time you'll need to set your Figma API key:
Please use mcp-figma to set my Figma API key: figd_xxxxxxxxxxxxxxxxxxxxxxxYour API key will be stored in ~/.mcp-figma/config.json and will be automatically loaded in future sessions.
You can verify your API key is configured:
Please use mcp-figma to check my API key statusThen use any of the available Figma API functions:
Please use mcp-figma to get the file with key abc123Available Tools
The server provides the following tools:
set_api_key: Set your Figma API personal access token (saved to config)check_api_key: Check if an API key is already configuredget_file: Get a Figma file by keyget_file_nodes: Get specific nodes from a Figma fileget_image: Get images for nodes in a Figma fileget_image_fills: Get URLs for images used in a Figma fileget_comments: Get comments on a Figma filepost_comment: Post a comment on a Figma filedelete_comment: Delete a comment from a Figma fileget_team_projects: Get projects for a teamget_project_files: Get files for a projectget_team_components: Get components for a teamget_file_components: Get components from a fileget_component: Get a component by keyget_team_component_sets: Get component sets for a teamget_team_styles: Get styles for a teamget_file_styles: Get styles from a fileget_style: Get a style by key
For detailed usage examples, see USAGE.md.
License
MIT
Available Tools
18 toolscheck_api_keyA
Check if a Figma API key is already configured
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
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 indicates a read-only check operation, but does not specify details like authentication needs, rate limits, or what the output returns (e.g., boolean status, error messages). It provides basic context but lacks rich behavioral traits.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, with every part contributing essential information.
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's simplicity (0 parameters, no output schema, no annotations), the description is adequate but has gaps. It explains the purpose clearly but does not cover behavioral aspects like return values or error handling, which are important for a check operation. It meets minimum viability but lacks completeness for full contextual understanding.
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 tool has 0 parameters with 100% schema description coverage, so the schema fully documents the inputs. The description does not add parameter details beyond the schema, but this is acceptable given no parameters exist. Baseline is 4 for zero parameters, as no compensation is needed.
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 specific action ('Check') and resource ('Figma API key'), with the qualifier 'already configured' distinguishing it from sibling tools like 'set_api_key'. It precisely communicates what the tool does without being vague or tautological.
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 implies usage context (e.g., verifying API key configuration status), but does not explicitly state when to use this tool versus alternatives like 'set_api_key' or provide exclusions. It offers clear context but lacks explicit guidance on alternatives or when-not scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
delete_commentC
Delete a comment from a Figma file
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | The key of the file to delete a comment from | |
| comment_id | Yes | ID of the comment to delete |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Delete' implies a destructive mutation, the description doesn't address critical aspects like whether deletion is permanent/reversible, what permissions are needed, error conditions, or response format. This leaves significant gaps for a destructive operation.
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 states exactly what the tool does with zero wasted words. It's appropriately sized for a simple destructive operation and gets straight to the point without unnecessary elaboration.
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 destructive mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't address the behavioral implications of deletion, error handling, permission requirements, or what happens after successful execution. Given the complexity and risk profile of a delete operation, more contextual information is needed.
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%, with both parameters clearly documented in the schema itself. The description adds no additional parameter information beyond what's already in the structured schema, so it meets the baseline expectation but provides no extra value for parameter understanding.
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 ('Delete') and target resource ('a comment from a Figma file'), making the purpose immediately understandable. However, it doesn't differentiate this tool from sibling tools like 'post_comment' beyond the obvious verb difference, missing an opportunity to clarify its specific role in the comment management workflow.
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 or what prerequisites might be required. With sibling tools like 'get_comments' and 'post_comment' available, there's no indication of workflow sequencing (e.g., 'use get_comments first to identify comment_id') or permission considerations for deletion operations.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commentsC
Get comments on a Figma file
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | The key of the file to get comments from |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden but only states the basic action without behavioral details. It lacks information on permissions, rate limits, pagination, return format, or error handling, which are critical for a read operation in an API 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, direct sentence with zero wasted words, making it easy to parse and front-loaded. It efficiently communicates the core purpose without unnecessary elaboration.
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 lack of annotations and output schema, the description is insufficient for a tool that likely returns structured data. It doesn't explain what 'comments' entail (e.g., text, metadata), how results are formatted, or any limitations, leaving gaps in understanding the tool's full behavior.
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 input schema fully documents the 'fileKey' parameter. The description adds no additional meaning beyond implying the parameter is required, meeting the baseline for high schema coverage without extra value.
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 verb ('Get') and resource ('comments on a Figma file'), making the tool's purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'post_comment' or 'delete_comment' beyond the basic action, missing explicit distinction about scope or limitations.
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 provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid fileKey), exclusions, or comparisons to siblings like 'get_file' or 'post_comment', leaving the agent to infer usage context independently.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_componentC
Get a component by key
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | The component key |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Get' implies a read operation, but it doesn't specify authentication requirements, rate limits, error conditions, or what happens if the key doesn't exist. The description provides minimal behavioral context beyond the basic operation.
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 extremely concise with just four words, front-loading the essential information without any wasted words. It efficiently communicates the core function in minimal space.
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 tool with no annotations, no output schema, and multiple similar sibling tools, the description is inadequate. It doesn't explain what a 'component' is, how it differs from other resource types, what format the response takes, or when to choose this over similar tools. The minimal description leaves significant contextual gaps.
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%, with the single parameter 'key' fully documented in the schema. The description adds no additional parameter information beyond what the schema provides, which is acceptable given the high schema coverage but doesn't enhance understanding.
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 'Get a component by key' states the basic action (get) and resource (component), but is vague about what a 'component' represents in this context and doesn't distinguish it from similar sibling tools like 'get_file_components' or 'get_team_components'. It provides minimal but functional purpose information.
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 provided about when to use this tool versus alternatives like 'get_file_components' or 'get_team_components'. The description doesn't mention prerequisites, context, or exclusions, leaving the agent with no usage differentiation from sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_fileC
Get a Figma file by key
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | The key of the file to get | |
| version | No | Optional. A specific version ID to get | |
| depth | No | Optional. Depth of nodes to return (1-4) | |
| branch_data | No | Optional. Include branch data if true |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure but only states the basic action without details on permissions, rate limits, error handling, or response format. It doesn't mention if this is a read-only operation or what happens with invalid keys, which is insufficient for a tool with no 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, efficient sentence with zero wasted words, front-loading the core purpose. It's appropriately sized for a simple retrieval tool, making it easy to parse quickly.
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 no annotations and no output schema, the description is incomplete for a tool with four parameters and potential complexity (e.g., versioning, depth limits). It doesn't explain return values, error cases, or behavioral constraints, leaving significant gaps in understanding how to use it effectively.
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 description coverage is 100%, so the schema already documents all four parameters thoroughly. The description adds no additional meaning beyond implying 'fileKey' is required, which is already clear from the schema. This meets the baseline for high 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 verb ('Get') and resource ('a Figma file by key'), making the purpose immediately understandable. However, it doesn't differentiate from sibling tools like 'get_file_nodes' or 'get_file_components' that also retrieve file-related data, which prevents a perfect score.
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 such as 'get_file_nodes' for node-level data or 'get_project_files' for listing files. It lacks explicit when/when-not instructions or prerequisite context, leaving usage unclear relative to siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_componentsC
Get components from a file
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | The key of the file to get components from |
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 states a read operation ('Get'), implying it's likely safe, but doesn't cover aspects like authentication needs, rate limits, error handling, or what 'components' entail (e.g., structure, format). This leaves significant gaps for a tool with no 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, efficient sentence with zero waste. It's front-loaded and appropriately sized for its purpose, making it easy to parse quickly without unnecessary details.
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 no annotations, no output schema, and a single parameter with full schema coverage, the description is incomplete. It doesn't explain what 'components' are, how they're returned, or any behavioral traits, leaving the agent with insufficient context for effective use beyond basic parameter passing.
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 has 100% description coverage, with fileKey documented as 'The key of the file to get components from'. The description doesn't add any meaning beyond this, such as explaining what a fileKey is or its format. Baseline 3 is appropriate since the schema does the heavy lifting.
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 'Get components from a file' clearly states the action (get) and resource (components from a file), but it's vague about what 'components' are and doesn't distinguish from siblings like get_component (singular) or get_team_components. It provides a basic purpose without specificity.
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 provided on when to use this tool versus alternatives. It doesn't mention siblings like get_component (for a single component) or get_team_components (for team-level access), nor does it specify prerequisites such as needing a valid fileKey. Usage context is implied but not explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_nodesC
Get specific nodes from a Figma file
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | The key of the file to get nodes from | |
| node_ids | Yes | Array of node IDs to get | |
| depth | No | Optional. Depth of nodes to return (1-4) | |
| version | No | Optional. A specific version ID to get |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden for behavioral disclosure. While 'Get' implies a read operation, the description doesn't address authentication requirements, rate limits, error conditions, or what format the returned nodes will have. For a tool with no annotation coverage, this leaves significant behavioral gaps.
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, efficient sentence that communicates the core purpose without unnecessary words. It's appropriately sized for a straightforward retrieval tool and gets directly to the point.
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 tool with 4 parameters, no annotations, and no output schema, the description is insufficient. It doesn't explain what 'nodes' represent in Figma context, what the response format will be, or any behavioral constraints. The agent would need to guess about important operational aspects.
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?
With 100% schema description coverage, the input schema already documents all four parameters thoroughly. The description adds no additional parameter context beyond what's in the schema, so it meets the baseline expectation but doesn't provide extra value.
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 resource ('specific nodes from a Figma file'), making the tool's purpose immediately understandable. However, it doesn't distinguish this tool from similar siblings like 'get_file' or 'get_component', which also retrieve Figma file elements, so it doesn't reach the highest clarity level.
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. With siblings like 'get_file' (for entire files) and 'get_component' (for specific components), the agent has no indication whether this tool is for general node retrieval, filtered queries, or other specific use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_file_stylesC
Get styles from a file
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | The key of the file to get styles from |
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 states 'Get styles' but doesn't disclose behavioral traits such as whether this is a read-only operation, what permissions are needed, if it returns a list or object, or any rate limits. This leaves significant gaps for a tool with no 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, efficient sentence with no wasted words. It's front-loaded and to the point, though it could be slightly more informative without losing conciseness.
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 complexity (a read operation with no annotations and no output schema), the description is incomplete. It doesn't explain what 'styles' are, the return format, or any error conditions. For a tool with no structured output, more context is needed to be fully helpful.
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 has 100% description coverage, with 'fileKey' clearly documented. The description doesn't add any meaning beyond the schema, such as explaining what a 'fileKey' is or providing examples. Baseline 3 is appropriate since the schema does the heavy lifting.
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 'Get styles from a file' clearly states the action (get) and target (styles from a file), but it's vague about what 'styles' means in this context (e.g., design styles, formatting styles). It doesn't distinguish from siblings like 'get_style' (singular) or 'get_team_styles', leaving ambiguity in scope.
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 provided on when to use this tool versus alternatives. For example, it doesn't clarify if this is for file-specific styles versus team-wide styles (like 'get_team_styles'), or when to use 'get_style' instead. The description lacks any context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_imageC
Get images for nodes in a Figma file
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | The key of the file to get images from | |
| ids | Yes | Array of node IDs to render | |
| scale | No | Optional. Scale factor to render at (0.01-4) | |
| format | No | Optional. Image format | |
| svg_include_id | No | Optional. Include IDs in SVG output | |
| svg_simplify_stroke | No | Optional. Simplify strokes in SVG output | |
| use_absolute_bounds | No | Optional. Use absolute bounds |
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 states what the tool does but lacks critical details: it doesn't mention whether this is a read-only operation, potential rate limits, authentication needs, or what the output looks like (e.g., image data format). For a tool with 7 parameters and no annotations, this is insufficient.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It's appropriately sized and front-loaded, with zero waste, making it easy for an agent to parse quickly.
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 complexity (7 parameters, no annotations, no output schema), the description is incomplete. It doesn't address behavioral aspects like safety, output format, or error handling, which are crucial for an agent to use this tool effectively. The high parameter count and lack of structured output information exacerbate this gap.
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%, meaning all parameters are documented in the schema itself. The description adds no additional parameter semantics beyond the schema, such as explaining relationships between parameters (e.g., how 'format' interacts with 'svg_include_id'). Baseline 3 is appropriate when the schema does the heavy lifting.
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 verb ('Get') and resource ('images for nodes in a Figma file'), making the purpose understandable. However, it doesn't explicitly differentiate from sibling tools like 'get_file' or 'get_file_nodes', which might also retrieve file-related data, so it's not a perfect 5.
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. With siblings like 'get_file' and 'get_file_nodes' that might overlap in retrieving file content, the lack of explicit usage context or exclusions leaves the agent without clear direction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_image_fillsC
Get URLs for images used in a Figma file
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | The key of the file to get image fills from |
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 mentions retrieving URLs but does not specify whether this is a read-only operation, requires authentication, involves rate limits, or what happens on errors. For a tool with no annotation coverage, this is a significant gap in transparency.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It is front-loaded and appropriately sized, making it easy for an agent to parse quickly.
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 lack of annotations and output schema, the description is incomplete. It does not explain what the URLs represent (e.g., temporary vs. permanent), the format of the response, or any error conditions. For a tool that retrieves data, more context is needed to guide effective 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 description coverage is 100%, with the parameter 'fileKey' well-documented in the schema. The description adds no additional meaning beyond implying the tool operates on a Figma file, which is already clear from the schema. Baseline 3 is appropriate as the schema handles parameter documentation adequately.
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 URLs') and resource ('images used in a Figma file'), providing a specific purpose. However, it does not distinguish this tool from sibling tools like 'get_image' or 'get_file_nodes', which might also retrieve image-related data, leaving some ambiguity about its unique role.
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 offers no guidance on when to use this tool versus alternatives, such as 'get_image' or 'get_file_nodes'. It lacks context about prerequisites (e.g., needing a valid file key) or exclusions, leaving the agent 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_project_filesC
Get files for a project
| Name | Required | Description | Default |
|---|---|---|---|
| project_id | Yes | The project ID | |
| page_size | No | Optional. Number of items per page | |
| cursor | No | Optional. Cursor for pagination | |
| branch_data | No | Optional. Include branch data if true |
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 but offers minimal insight. It implies a read operation ('Get'), but does not specify if it's paginated (though parameters suggest it), what the output format is, or any constraints like rate limits or authentication needs. This leaves key behavioral traits undocumented.
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 extremely concise with a single sentence 'Get files for a project', which is front-loaded and wastes no words. It efficiently communicates the core purpose without unnecessary elaboration, making it easy to parse quickly.
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 complexity of a tool with 4 parameters, no annotations, and no output schema, the description is incomplete. It fails to explain what 'files' entail, how pagination works with 'page_size' and 'cursor', the effect of 'branch_data', or the return structure. This leaves significant gaps for an agent to understand and use the tool effectively.
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%, with all parameters well-documented in the schema (e.g., 'project_id' as required, 'page_size' for pagination). The description adds no additional meaning beyond the schema, such as explaining how 'branch_data' affects results or typical use cases for parameters. Baseline score of 3 is appropriate as the schema handles parameter documentation adequately.
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 'Get files for a project' clearly states the verb ('Get') and resource ('files for a project'), making the purpose understandable. However, it lacks specificity about what 'files' means in this context (e.g., metadata, content, types) and does not differentiate from siblings like 'get_file' or 'get_file_components', which could lead to confusion about scope.
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. It does not mention prerequisites (e.g., needing a valid project_id), exclusions, or comparisons to siblings such as 'get_file' (for individual files) or 'get_file_components' (for components within files), leaving the agent to infer usage from context alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_styleC
Get a style by key
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | The style key |
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 states 'Get' which implies a read operation, but doesn't disclose any behavioral traits such as authentication needs, rate limits, error handling, or what happens if the key doesn't exist. This leaves significant gaps for a tool with no 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 extremely concise with a single sentence 'Get a style by key', which is front-loaded and wastes no words. Every part of the sentence contributes to the purpose, making it efficient and well-structured for its 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?
Given no annotations, no output schema, and a simple input schema, the description is incomplete. It doesn't explain what a 'style' is, how keys are formatted, what the return value includes, or any error conditions. For a tool with minimal structured data, more context is needed to be fully helpful.
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%, with the parameter 'key' documented as 'The style key'. The description adds no additional meaning beyond this, as it merely restates 'by key'. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, though no extra value is added.
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 'Get a style by key' clearly states the action (get) and resource (style), but it's vague about what a 'style' entails in this context and doesn't distinguish from sibling tools like 'get_file_styles' or 'get_team_styles'. It provides basic purpose but lacks specificity.
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 provided on when to use this tool versus alternatives such as 'get_file_styles' or 'get_team_styles'. The description implies usage by key but doesn't mention prerequisites, context, or exclusions, leaving the agent to infer usage from tool names alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_team_componentsC
Get components for a team
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team ID | |
| page_size | No | Optional. Number of items per page | |
| cursor | No | Optional. Cursor for pagination |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden but adds minimal behavioral context. It doesn't disclose if this is a read-only operation, requires permissions, supports pagination (implied by cursor parameter but not stated), rate limits, or return format. The description is too basic for a tool with parameters.
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, efficient sentence with zero waste. It's front-loaded and appropriately sized for the tool's complexity, though it could benefit from more detail. Every word earns its place in conveying the core 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 no annotations, no output schema, and 3 parameters, the description is incomplete. It doesn't explain what 'components' are, the return format, pagination behavior, or error handling. For a tool that likely returns a list of items, more context is needed to guide effective use.
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 fully documents parameters (team_id, page_size, cursor). The description adds no meaning beyond this, as it doesn't explain what 'components' are or how parameters interact. Baseline 3 is appropriate since the schema handles parameter documentation.
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 'Get components for a team' clearly states the action (get) and resource (components for a team), but it's vague about what 'components' are and doesn't differentiate from siblings like get_component, get_file_components, or get_team_component_sets. It provides a basic purpose but lacks specificity.
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 provided on when to use this tool versus alternatives. It doesn't mention prerequisites like authentication, compare to get_component (single component) or get_file_components (components in a file), or specify contexts like team management. Usage is implied only by the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_team_component_setsC
Get component sets for a team
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team ID | |
| page_size | No | Optional. Number of items per page | |
| cursor | No | Optional. Cursor for pagination |
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 but only states the action without details on permissions, rate limits, pagination behavior, or response format. It mentions 'component sets' but doesn't clarify what that entails operationally, leaving significant gaps in understanding how the tool behaves.
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, efficient sentence that directly states the tool's purpose without unnecessary words. It is appropriately sized and front-loaded, making it easy to parse quickly.
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 complexity of a read operation with pagination parameters and no output schema or annotations, the description is insufficient. It doesn't explain what 'component sets' are, how results are returned, or any behavioral traits, leaving the agent with incomplete context for effective use.
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 has 100% description coverage, documenting all parameters clearly. The description adds no additional meaning beyond what the schema provides, such as explaining the relationship between 'team_id' and 'component sets' or usage tips for pagination. This meets the baseline for high 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 verb ('Get') and resource ('component sets for a team'), making the purpose understandable. However, it doesn't distinguish this tool from potential sibling tools like 'get_team_components' or 'get_file_components', which might retrieve similar resources, leaving some ambiguity about scope.
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, such as 'get_team_components' or 'get_file_components'. It lacks context about prerequisites, exclusions, or specific scenarios, offering minimal usage direction beyond the basic purpose.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_team_projectsC
Get projects for a team
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team ID | |
| page_size | No | Optional. Number of items per page | |
| cursor | No | Optional. Cursor for pagination |
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 states the action ('Get') but doesn't add context beyond that—missing details like whether it's read-only (implied but not explicit), pagination behavior (hinted by parameters but not explained), rate limits, authentication needs, or error handling. The description is minimal and fails to compensate for the lack of annotations.
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, efficient sentence with zero waste—'Get projects for a team' is front-loaded and appropriately sized for its purpose. It avoids unnecessary words and gets straight to the point, making it easy to parse quickly.
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 complexity (a read operation with pagination parameters), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'projects' entail, the return format, or how to handle pagination, leaving gaps that could hinder an AI agent's ability to use the tool effectively. It should provide more context to compensate for missing structured data.
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%, with clear descriptions for team_id, page_size, and cursor. The description doesn't add any meaning beyond the schema, such as explaining how pagination works or what format the team_id should be in. Since the schema does the heavy lifting, the baseline score of 3 is appropriate, but no extra value is provided.
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 'Get projects for a team' states the basic action (get) and resource (projects for a team), but it's vague about scope (e.g., all projects, active projects, or filtered ones) and doesn't distinguish it from sibling tools like 'get_project_files' or 'get_team_components'. It avoids tautology by not restating the name exactly, but lacks specificity.
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 provided on when to use this tool versus alternatives. It doesn't mention prerequisites (e.g., needing a valid team_id), exclusions, or how it differs from similar tools in the sibling list, such as 'get_project_files' which might handle files within projects. Usage is implied only by the name and description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_team_stylesC
Get styles for a team
| Name | Required | Description | Default |
|---|---|---|---|
| team_id | Yes | The team ID | |
| page_size | No | Optional. Number of items per page | |
| cursor | No | Optional. Cursor for pagination |
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 states a read operation ('Get'), implying it's likely non-destructive, but doesn't cover critical aspects like authentication requirements, rate limits, pagination behavior (implied by parameters but not explained), error handling, or response format. This leaves significant gaps for safe and effective tool invocation.
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 extremely concise with just four words ('Get styles for a team'), making it front-loaded and efficient. There is no wasted language or redundancy, though this brevity comes at the cost of detail, which is reflected in lower scores for other dimensions.
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 complexity of a tool with 3 parameters (including pagination), no annotations, and no output schema, the description is incomplete. It fails to explain what 'styles' entails, how results are structured, or behavioral traits like pagination and authentication. This minimal description is inadequate for guiding an agent in a context with multiple sibling tools and no structured support.
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 has 100% description coverage, with clear documentation for 'team_id', 'page_size', and 'cursor'. The description adds no additional parameter semantics beyond what's in the schema, such as explaining what 'styles' includes or how pagination works. Given the high schema coverage, a baseline score of 3 is appropriate as the schema handles the heavy lifting.
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 'Get styles for a team' clearly states the verb ('Get') and resource ('styles for a team'), making the basic purpose understandable. However, it lacks specificity about what 'styles' means in this context (e.g., design styles, formatting styles) and doesn't distinguish it from sibling tools like 'get_file_styles' or 'get_style', leaving room for ambiguity about scope.
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. It doesn't mention prerequisites (e.g., needing a team ID), exclusions, or comparisons to similar tools like 'get_file_styles' or 'get_style', leaving the agent to infer usage from the name alone without explicit context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
post_commentC
Post a comment on a Figma file
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | The key of the file to comment on | |
| message | Yes | Comment message text | |
| client_meta | No | Optional. Position of the comment | |
| comment_id | No | Optional. ID of comment to reply to |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden for behavioral disclosure. 'Post a comment' implies a write/mutation operation, but the description doesn't mention authentication requirements, rate limits, whether comments are public/private, notification behavior, or what happens on success/failure. It provides minimal behavioral context beyond the basic 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, efficient sentence that states the core purpose without any wasted words. It's appropriately sized for a simple tool and front-loads the essential information immediately.
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 mutation tool with no annotations and no output schema, the description is insufficiently complete. It doesn't explain what the tool returns, error conditions, authentication needs, or how it fits within the broader Figma commenting system. The 100% schema coverage helps with parameters, but other critical contextual information is missing.
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 4 parameters thoroughly. The description adds no additional parameter semantics beyond what's in the schema. The baseline score of 3 reflects adequate coverage through the schema alone, with no value added by the description.
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 ('Post a comment') and target resource ('on a Figma file'), providing a specific verb+resource combination. However, it doesn't distinguish this tool from its sibling 'delete_comment' beyond the obvious action difference, nor does it mention what distinguishes it from 'get_comments' beyond the write vs. read operation.
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. It doesn't mention prerequisites (like authentication via 'set_api_key'), when to use 'post_comment' versus 'get_comments' or 'delete_comment', or any contextual constraints for posting comments in Figma workflows.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
set_api_keyA
Set your Figma API personal access token (will be saved to ~/.mcp-figma/config.json)
| Name | Required | Description | Default |
|---|---|---|---|
| api_key | Yes | Your Figma API personal access token |
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 reveals that this is a write operation ('Set') that persists data to a local config file, which is useful context. However, it lacks details on permissions needed, error handling, or whether this overwrites existing tokens.
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, efficient sentence that front-loads the key action and resource, with no wasted words. Every part of the sentence adds value by specifying the token type and storage location.
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's complexity (a write operation with no annotations and no output schema), the description is minimally adequate. It covers the basic purpose and storage behavior but lacks details on success/failure responses, side effects, or integration with other tools like 'check_api_key'.
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 fully documents the single parameter. The description does not add any additional meaning or context beyond what the schema provides, such as format requirements or examples, meeting the baseline for high 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 specific action ('Set') and resource ('Figma API personal access token'), with additional detail about where it will be saved. It distinguishes itself from sibling tools like 'check_api_key' by being a write operation rather than a read operation.
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 implies usage context by specifying that the token will be saved to a config file, which suggests this is for initial setup or configuration changes. However, it does not explicitly state when to use this tool versus alternatives or provide any exclusions or prerequisites.
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.
18 tool updates
v1.0.0- Added
check_api_key - Added
delete_comment - Added
get_comments - Added
get_component - Added
get_file - Added
get_file_components - Added
get_file_nodes - Added
get_file_styles - Added
get_image - Added
get_image_fills - Added
get_project_files - Added
get_style - Added
get_team_component_sets - Added
get_team_components - Added
get_team_projects - Added
get_team_styles - Added
post_comment - Added
set_api_key
TDQS
Most tools have distinct purposes targeting specific Figma resources like files, comments, components, styles, and images. However, get_file_nodes and get_image_fills could potentially overlap in purpose since both deal with retrieving node-related data, though their descriptions clarify different focuses (nodes vs. image fills).
All tool names follow a consistent verb_noun pattern using snake_case, with clear actions like get, post, delete, set, and check. This uniformity makes the toolset predictable and easy for an agent to navigate without confusion.
With 18 tools, the count is slightly high but reasonable for a Figma API server that needs to cover multiple resource types (files, comments, components, styles, images, projects, teams). It avoids being overwhelming while providing comprehensive functionality, though it could be trimmed slightly for tighter scoping.
The toolset offers complete coverage for core Figma operations, including CRUD for comments (get, post, delete), retrieval for files, components, styles, images, projects, and teams, and configuration for API keys. There are no obvious gaps, and agents can perform typical workflows without dead ends.
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.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
A Model Context Protocol server for Wix AI tools
The Telnyx MCP server is an official implementation of the Model Context Protocol that enables AI clients (like Claude Desktop, Cursor, and OpenAI Agents) to interact with Telnyx's telephony, messaging, and AI assistant APIs. It provides comprehensive capabilities including making and managing phone calls, sending SMS/MMS messages, purchasing and configuring phone numbers, creating AI assistants with custom instructions, managing cloud storage buckets, scraping and embedding website content, and handling integration secrets. The server exists as both a local implementation and a remotely hosted version, allowing developers to integrate real-world communication infrastructure directly into AI applications.
Related MCP Servers
- FlicenseBqualityDmaintenanceEnables AI assistants to interact with Figma files through the ModelContextProtocol, allowing viewing, commenting, and analyzing Figma designs directly in chat interfaces.52,160213-
- FlicenseBqualityDmaintenanceA Model Context Protocol server that integrates with Figma's API, allowing interaction with Figma files, comments, components, projects, and webhook management.52,160-
- AlicenseNot gradedqualityFmaintenanceA Model Context Protocol server that integrates Figma design files with AI coding tools like Cursor, Windsurf, and Cline, allowing AI tools to access and understand Figma design data for generating more accurate code.47430MIT
- AlicenseAqualityDmaintenanceA Model Context Protocol server for interacting with the Figma API that handles large Figma files efficiently through memory-aware chunking and pagination capabilities.7135MIT
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/clavia-labs/mcp-figma'
If you have feedback or need assistance with the MCP directory API, please join our Discord server