figma-custom-mcp
Server Quality Checklist
Latest release: v0.1.0
- Disambiguation4/5
Each tool targets a distinct action (delete, reorder, export, status, design/create, read, patch). The only potential overlap is between figma_design and figma_patch_node, but design is for initial creation/sync while patch is for targeted updates, so the boundary is clear.
Naming Consistency4/5All tools use the prefix 'figma_' followed by a descriptive verb_noun pattern (e.g. figma_delete_node, figma_reorder_node). The only minor inconsistency is the verb choice: 'screenshot' is less typical than 'export', and 'status' is a noun rather than an action, but overall the pattern is clear and predictable.
Tool Count5/57 tools is well-scoped for a Figma design tool MCP server. Each tool covers a core operation (CRUD, reorder, export, status) without being too many to navigate or too few to be useful.
Completeness4/5The server covers essential operations: create (via figma_design), read (figma_node), update (figma_patch_node, figma_reorder_node), delete (figma_delete_node), and export (figma_screenshot). A minor gap is the lack of a dedicated tool for listing node children or searching nodes, but the read tool with nodeId omission provides a reasonable workaround.
Average 3.6/5 across 7 of 7 tools scored. Lowest: 2.4/5.
See the Tool Scores section below for per-tool breakdowns.
- No community issues in the last 6 months
- 2 commits in the last 12 weeks
- No stable releases found
- No critical vulnerability alerts
- No high-severity vulnerability alerts
- No code scanning findings
- CI status not available
Add a LICENSE file by following GitHub's guide. Once GitHub recognizes the license, the system will automatically detect it within a few hours.
If the license does not appear after some time, you can manually trigger a new scan using the MCP server admin interface.
MCP servers without a LICENSE cannot be installed.
This repository includes a README.md file.
No tool usage detected in the last 30 days. Usage tracking helps demonstrate server value.
Tip: use the "Try in Browser" feature on the server page to seed initial usage.
Add a glama.json file to provide metadata about your server.
If you are the author, simply .
If the server belongs to an organization, first add
glama.jsonto the root of your repository:{ "$schema": "https://glama.ai/mcp/schemas/server.json", "maintainers": [ "your-github-username" ] }Then . Browse examples.
Add related servers to improve discoverability.
How to sync the server with GitHub?
Servers are automatically synced at least once per day, but you can also sync manually at any time to instantly update the server profile.
To manually sync the server, click the "Sync Server" button in the MCP server admin interface.
How is the quality score calculated?
The overall quality score combines two components: Tool Definition Quality (70%) and Server Coherence (30%).
Tool Definition Quality measures how well each tool describes itself to AI agents. Every tool is scored 1–5 across six dimensions: Purpose Clarity (25%), Usage Guidelines (20%), Behavioral Transparency (20%), Parameter Semantics (15%), Conciseness & Structure (10%), and Contextual Completeness (10%). The server-level definition quality score is calculated as 60% mean TDQS + 40% minimum TDQS, so a single poorly described tool pulls the score down.
Server Coherence evaluates how well the tools work together as a set, scoring four dimensions equally: Disambiguation (can agents tell tools apart?), Naming Consistency, Tool Count Appropriateness, and Completeness (are there gaps in the tool surface?).
Tiers are derived from the overall score: A (≥3.5), B (≥3.0), C (≥2.0), D (≥1.0), F (<1.0). B and above is considered passing.
Tool Scores
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the full burden. It only states deletion but does not disclose side effects (e.g., cascade to children, irreversibility, permission requirements, rate limits). This is insufficient for an agent to understand the tool's behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness3/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is brief (5 words) but lacks structure. It front-loads the verb, which is good, but is too minimal to be considered well-structured. A bit more detail without added length would improve it.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple tool (1 param, no output schema, no annotations, siblings exist), the description is incomplete. It does not explain return values, error conditions, or any constraints. The agent would need external documentation to use this tool safely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters1/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the description adds no meaning beyond 'by id'. The sole parameter 'nodeId' is not explained (e.g., format, source, or example). The agent cannot infer where to obtain the ID or how to use it correctly.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action (delete) and resource (existing node by id), which distinguishes it from siblings like figma_patch_node (update) and figma_reorder_node (reorder). However, it lacks specificity about what type of node is being deleted or the scope of the operation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives. It does not mention prerequisites (e.g., node must exist) or when to avoid deletion. With siblings like figma_patch_node and figma_reorder_node, explicit usage context is missing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior2/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It does not disclose whether the tool is read-only, what format the status returns, whether it requires authentication, or any side effects. The description only names the resource without detailing behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single short sentence that immediately conveys the core resource. However, it includes a parenthetical about Plumb that could be moved to usage context, slightly reducing conciseness. Overall, it is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description is the sole provider of functional details. It fails to explain what the status output looks like (e.g., a boolean, string, or object) or how to interpret it. For a simple no-argument tool, more completeness is expected to avoid ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the input schema provides full coverage. According to guidelines, the baseline is 4. The description does not add parameter information (as none exist), but it does give context about the operation's nature.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose4/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states it returns 'Bridge/pairing status' for a custom Figma MCP, which indicates the tool's purpose. It distinguishes itself from a related tool (Plumb) but does not explicitly differentiate from sibling tools like figma_node or figma_design, though their functions are intuitively different.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines2/5Does 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. The mention of Plumb offers some context but does not help an agent decide between figma_status and its siblings, nor does it specify prerequisites or use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
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 mentions 'without touching siblings or re-stating the whole subtree' as a behavioral trait, but it does not disclose authorization needs, failure modes, rate limits, or the response format. For a mutation tool with zero annotations, this is a moderate disclosure.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness4/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that efficiently conveys the action, resource, and key behavioral traits. However, the inaccuracy regarding listed properties (some not in schema) detracts from its value, though conciseness itself is acceptable.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness2/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 8 parameters, 0% schema coverage, no output schema, and no annotations, the description is incomplete. It fails to describe the return value, error handling, or constraints like node existence. The misleading property list further reduces completeness. The sibling tools provide some context, but the description alone leaves significant gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% description coverage, leaving the description to compensate. However, the description lists properties like 'fill, stroke, radius, effects, blendMode, clip' that are not present in the schema (which has additionalProperties: false). This is misleading and adds confusion rather than clarity. It does not explain the meaning of the schema-defined parameters beyond their names.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action 'Patch' and the resource 'EXISTING node', listing specific properties that can be modified. It distinguishes itself from sibling tools like figma_delete_node, figma_reorder_node, etc., by emphasizing it does not affect siblings or require re-stating the whole subtree.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies when to use this tool: for updating specific properties of an existing node without touching siblings or re-stating the subtree. It does not explicitly state when not to use it or list alternatives, but the context of sibling tools and the property list provides sufficient guidance for an AI agent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so the description carries the burden of behavioral disclosure. It reveals that the tool mutates node order and explains the index values. However, it omits side effects (e.g., children behavior), error handling (out-of-bounds index), permissions, and success confirmation. It adds some value but not enough for full transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences and immediately states the action and the key parameter. Every sentence is essential; there is no redundancy or filler. It is highly efficient and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (2 params, no output schema), the description covers the core operation but leaves gaps: return value not mentioned (e.g., success confirmation, error structure), persistence implications not addressed, and the meaning of 'among its siblings' could be clearer. Adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate. It explains the `to` parameter well ('0-based child index, or "front"/"back"'), adding meaning beyond the schema type constraints. However, `nodeId` is left entirely uncommented, assuming domain knowledge. Partially compensates for coverage gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Change an existing node's z-order among its siblings without a full re-build.' The verb 'change' and resource 'z-order' are specific. It implicitly distinguishes from siblings like figma_delete_node (deletion) and figma_screenshot (capture), leaving no ambiguity.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines3/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'without a full re-build' hints at an efficiency advantage, implying an alternative that does require a rebuild. However, no explicit guidance is given on when to choose this tool over siblings, nor are exclusion criteria or prerequisites provided. 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.
- Behavior3/5
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 discloses that scale is configurable (not hardcoded) and references a gap analysis, which adds context about behavior depth. However, it does not clarify if the export is synchronous, what happens on failure, or any rate limits. A score of 3 is appropriate as it adds some value beyond the schema but leaves notable gaps for a tool with zero annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that front-loads the core action and key differentiator (configurable scale). Every word earns its place, and the parenthetical reference to a gap analysis provides additional context without bloating. No waste.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness3/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 3 parameters, 0 required, no output schema, and no annotations, the description is relatively lean. It covers the essential export purpose and a key differentiator, but does not explain what the output looks like (e.g., does it return a URL or raw data?), nor does it address the `nodeId` parameter or any prerequisites. Given the absence of output schema and annotations, there is room for more completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters2/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate fully. It mentions scale and format (scale is configurable, format implied by 'PNG or SVG'), but does not explain the meaning or constraints of `nodeId`, nor does it clarify that `scale` has a maximum of 4 (as per schema) or that `format` has an enum. The description adds minimal semantic value beyond what the schema already defines via type/enum, and for a 0% coverage tool this is insufficient.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Export') and resource ('a node'), and explicitly mentions the output formats (PNG, SVG) and the configurable scale. It effectively distinguishes from a sibling tool by referencing 'Plumb's bulk-export path', clarifying that this tool offers dynamic scaling unlike that alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context on when to use this tool (to export a node with adjustable scale) and explicitly contrasts it with another tool (Plumb's bulk-export path) to guide selection. It does not, however, specify when not to use it or list any prerequisites (e.g., required design access).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior3/5
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 correctly identifies the operation as a read (non-destructive). However, it does not disclose that the depth parameter controls hierarchical traversal, nor does it mention potential performance implications or that the depth parameter limits the output. This is a notable gap for a parameter that can limit the result size.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences, no wasted words. The first sentence defines the purpose and scope, the second provides usage instructions. It is front-loaded and efficient.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read tool with two parameters and no output schema, the description covers the main use case (verification) and targeting (nodeId). However, it omits the depth parameter's role, which is critical for controlling the amount of data returned. The lack of output schema means the description should perhaps hint at the structure, but it lists the included properties, which is sufficient.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters3/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It explains nodeId ('Pass nodeId, or omit for the whole current page'), but the depth parameter (integer min 1 max 20) is not mentioned at all. The description adds value for one parameter but leaves the other unexplained, making it partially helpful.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'read back' and the resource 'node's full structure', listing specific properties (position, size, fills, etc.). It distinguishes itself from sibling tools like figma_delete_node or figma_patch_node by being a read-only verification tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explains when to use (for verification) and how to use it ('Pass nodeId, or omit for the whole current page'). It implies this is the read tool among siblings, but does not explicitly state when not to use or mention alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
- Behavior4/5
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full disclosure burden. It reveals rejection of unknown/misspelled fields (no silent failures) and the dryRun:true option for validation without mutation. It implies design creation/sync is a write operation. Missing: no mention of authentication, idempotency, response behavior, or whether it overwrites existing designs. Still, the dry-run detail and strict validation policy provide good transparency.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Conciseness5/5Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences with no filler. The first sentence states primary purpose, the second adds key differentiators, and the third covers validation/rejection behavior. Information is front-loaded and every sentence serves a distinct role.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Completeness4/5Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, the description omits return value/response format. It also doesn't explain whether the tool syncs to an existing design or always creates new, nor does it mention async behavior. However, the external documentation references and dry-run option provide enough completeness for a design creation tool with 2 parameters.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Parameters4/5Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 50% (doc has vague description, dryRun has none). The description adds meaning: dryRun's behavior ('validate + compile without touching Figma') and doc's constraints ('strict JSON', 'overlapping/absolute-positioned nodes', 'local image assets'). It compensates for the schema's gaps but still relies on external documentation for full understanding of the doc structure.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Purpose5/5Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (Build or sync), resource (design into Figma), and input format (strict JSON design document). It distinguishes itself from sibling tools by specifying unique capabilities (overlapping nodes, local assets) not offered by others, and references external documentation for schema details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Usage Guidelines4/5Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context for use (creating/syncing designs from JSON) and highlights key differentiators (overlapping nodes, local assets) vs. a non-sibling tool (Plumb). However, it does not explicitly state when NOT to use it among the listed sibling tools (e.g., 'use figma_delete_node instead for node deletion'). The reference to external gap analysis aids decision-making but lacks direct sibling comparisons.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
GitHub Badge
Glama performs regular codebase and documentation scans to:
- Confirm that the MCP server is working as expected.
- Confirm that there are no obvious security issues.
- Evaluate tool definition quality.
Our badge communicates server capabilities, safety, and installation instructions.
Card Badge
Copy to your README.md:
Score Badge
Copy to your README.md:
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/Rachit0-glitch/FIGMA-CUSTOM-MCP'
If you have feedback or need assistance with the MCP directory API, please join our Discord server