Soma Nexus MCP
Click on "Deploy 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., "@Soma Nexus MCPfetch the file tree from my Figma project"
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.
Soma Nexus MCP
MCP server em TypeScript para VS Code, focado em leitura de dados do Figma e contexto para design-to-code.
O que faz
Busca árvore de arquivo do Figma
Busca nós específicos por ID
Resolve URL completa do Figma (
fileKey+node-id)Busca nó direto a partir de URL
Retorna saída normalizada para design-to-code
Busca imagens exportadas
Busca components, styles e variables
Valida contrato federado de mapeamento Figma -> Design System
Related MCP server: Figma MCP
Arquitetura (simples e prática)
Aplicamos SOLID + Clean Architecture sem excesso de abstração:
src/index.ts: composition rootsrc/presentation/register-tools.ts: camada de entrada (tools MCP)src/infrastructure/figma-api-client.ts: integração com API Figmasrc/domain/figma-url.ts: regras de URL e IDssrc/application/node-normalizer.ts: normalização para design-to-codesrc/core/errors.tsesrc/core/responses.ts: erros e contrato de resposta
Regras usadas:
Responsabilidade única por módulo
Dependências apontando para dentro (presentation -> application/domain/infrastructure)
Infra isolada (troca de API client sem mexer em tools)
Erro e resposta padronizados para todas as tools
Requisitos
Node.js 18+
FIGMA_TOKENdefinido no ambiente do cliente MCPOpcional:
FIGMA_NODES_CACHE_TTL_MS(default:90000)
Desenvolvimento local
npm install
npm run build
npm run dev
npm testTools disponíveis
get_figma_file: payload bruto do arquivo inteiro (debug pesado)parse_figma_url: extraifileKeyenodeIdde URLget_figma_nodes: busca nós por IDsget_figma_node_from_url: busca nó direto com URL completaget_figma_node_normalized: metadata + estilos/tokens/assets normalizadosget_figma_images: URLs de renderização de nósget_figma_components: componentes publicadosget_figma_styles: estilos publicadosget_figma_variables: variáveis locaisvalidate_figma_to_code_index: valida índice global e docs por componentepreview_figma_component_mapping: mostra melhor match de componente DS para um node Figmagenerate_flutter_component_from_figma: gera snippet Flutter mínimo via mapping federadogenerate_flutter_page_from_figma: gera estrutura Flutter de página inteira com DS quando houver match
Economia de tokens (recomendado)
Use estes parâmetros em tools de leitura/mapping/geração:
responseMode:compact|standarddebugTelemetry:true|false
Sugestão para uso normal:
responseMode: "compact"debugTelemetry: false
Quando quiser medir custo real de payload:
debugTelemetry: trueretornameta.payloadSizeBytesemeta.responseSizeBytes.
Observações:
Tools com
depthusam default conservador1quando não informado.Preview de matching limita candidatos por padrão para reduzir resposta (
compact: 3,standard: 10).
Modelo federado Figma -> Code
Cada componente do Design System deve manter seu próprio arquivo:
{component}/docs/figma-to-code.md
E todos os componentes devem ser registrados em:
docs/figma-to-code-index.yaml
Documentação de suporte:
docs/specs/figma-to-code-component-doc-spec.mddocs/figma-to-code-authoring-guide.mddocs/templates/component-figma-to-code.template.md
Configuração no VS Code
No workspace, use .vscode/mcp.json:
{
"inputs": [
{
"id": "figma-token",
"type": "promptString",
"description": "FIGMA_TOKEN for Soma Nexus MCP",
"password": true
}
],
"servers": {
"soma-nexus-figma-mcp": {
"type": "stdio",
"command": "npm",
"args": ["run", "dev"],
"env": {
"FIGMA_TOKEN": "${input:figma-token}"
}
}
}
}Na primeira vez, VS Code pergunta token e guarda valor localmente.
Fluxo recomendado (design-to-code)
validate_figma_to_code_indexparse_figma_urlpreview_figma_component_mappinggenerate_flutter_component_from_figma(quando URL aponta para componente)generate_flutter_page_from_figma(quando URL aponta para frame/página)get_figma_node_normalized(debug/inspeção)get_figma_images(se precisar assets)
Esse fluxo evita payload gigante e melhora estabilidade da geração de código.
Contrato de resposta
Sucesso:
{
"ok": true,
"data": {}
}Erro:
{
"ok": false,
"error": {
"code": "FIGMA_UNAUTHORIZED",
"message": "Figma token unauthorized.",
"details": {}
}
}Available Tools
13 toolsgenerate_flutter_component_from_figmaBRead-only
Generate a minimal Flutter widget snippet from a Figma node using federated docs mapping.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| version | No | ||
| figmaUrl | Yes | ||
| responseMode | No | ||
| debugTelemetry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotation readOnlyHint=true already informs the agent this is a safe read operation. The description adds context about 'minimal' output and 'federated docs mapping', but does not clarify what that mapping entails or any limitations. It does not contradict 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, front-loaded sentence with no waste. However, it is efficient at the cost of omitting important details, so it earns a 4 rather than 5.
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?
With 5 parameters, no output schema, and no parameter descriptions, the description is too minimal. It fails to explain the output format, the behavior of optional parameters, or the 'federated docs mapping' concept, leaving significant gaps for an agent to safely invoke the tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 0% parameter description coverage, so the description must compensate. It only indirectly refers to figmaUrl via 'Figma node' but leaves depth, version, responseMode, and debugTelemetry completely unexplained, leaving agents without meaning for these parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's verb ('Generate'), resource ('Flutter widget snippet'), source ('Figma node'), and method ('federated docs mapping'). It distinguishes itself from sibling tools like generate_flutter_page_from_figma by targeting components vs pages.
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 the tool is for generating small widget snippets from Figma nodes, but it does not explicitly state when to use this instead of other tools such as get_figma_nodes or generate_flutter_page_from_figma. No prerequisites or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
generate_flutter_page_from_figmaBRead-only
Generate Flutter page scaffold from a Figma page/frame URL, using DS components when matched.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| version | No | ||
| figmaUrl | Yes | ||
| maxNodes | No | ||
| responseMode | No | ||
| debugTelemetry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations provide readOnlyHint=true, so the tool's safe read-only nature is known. The description adds one behavioral detail: 'using DS components when matched,' indicating a matching behavior. However, it does not disclose what happens on no match, whether it writes to disk, or the nature of the output (code scaffold details), leaving significant behavioral aspects unexplained.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence that front-loads the core purpose without unnecessary padding. It is appropriately sized for stating the main function, though could benefit from an additional sentence on parameters or output without becoming verbose. It earns a high score for efficiency.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 6 parameters, no output schema, and no parameter documentation in the schema. The description only provides the high-level purpose and a hint about DS component matching. It does not explain what the generated scaffold contains, what constraints apply, or how the various parameters influence behavior, making it inadequate for an agent to 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 0%, and the description only alludes to the 'Figma page/frame URL' parameter via the main purpose. The other five parameters (depth, version, maxNodes, responseMode, debugTelemetry) are entirely undocumented in both the description and the schema descriptions. The description fails to compensate for the lack of schema-level 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 clearly states the verb ('Generate'), the resource ('Flutter page scaffold'), and the source ('Figma page/frame URL'). It also distinguishes from sibling tools like generate_flutter_component_from_figma by focusing on page-level generation and mentions the use of DS components, making the purpose specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for generating Flutter page scaffolds from Figma URLs, which provides clear context. However, it does not explicitly state when to use this tool over alternatives (e.g., generate_flutter_component_from_figma) or provide exclusion criteria. There is no direct mention of alternatives or when-not-to-use scenarios.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_figma_componentsARead-only
Fetch published components found in a Figma file.
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | ||
| responseMode | No | ||
| debugTelemetry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds a scoping constraint by specifying 'published' components, indicating that unpublished components are excluded. This is behaviorally relevant and goes beyond the readOnlyHint annotation, which already signals a safe read operation. However, it does not disclose response format or pagination behavior, though the annotation lowers the bar for such details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence of six words, directly stating the core action. Every word contributes meaning, with no redundant or filler content. It is optimally concise for the stated 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?
For a tool with three parameters and no output schema, the description covers only the basic action without explaining key behavioral options like responseMode. It also omits any context about what the returned components look like or how the tool fits into the broader component generation workflow. The description is minimally viable but leaves clear 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?
With 0% schema description coverage, the description only vaguely maps to the 'fileKey' parameter through the phrase 'Figma file'. It provides no meaning for 'responseMode' (standard vs compact) or 'debugTelemetry', leaving two of three parameters undocumented in prose. This is a significant gap given the low 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 uses a specific verb ('Fetch') and resource ('published components') within a 'Figma file', clearly identifying what the tool returns. It differentiates from sibling tools like get_figma_styles and get_figma_images by naming 'components' as the target. This is a clear and specific purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when one needs published components from a Figma file, but it does not explicitly state when to use this tool over alternatives such as get_figma_styles or get_figma_nodes. No exclusions or alternative tool references are given, leaving usage guidance implicit rather than explicit.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_figma_fileBRead-only
Fetch a Figma file. Prefer compact mode to avoid large payloads.
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | ||
| version | No | ||
| responseMode | No | ||
| debugTelemetry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already indicate a safe read-only operation. The description adds a behavioral warning about large payloads and suggests compact mode to mitigate this, which is useful context beyond the annotations. However, it does not disclose other behaviors like return format or versioning semantics.
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 two concise sentences that front-load the action and purpose. Every word contributes, with no redundancy or filler, achieving maximum clarity 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?
With no output schema, the description does not explain the return structure or contents beyond 'a Figma file.' Given the tool has 4 parameters and a warning about payload size, more context is needed about what the response includes, version handling, and parameter semantics.
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 0%, yet the description only minimally references 'compact mode' related to the responseMode enum. It does not explain fileKey, version, or debugTelemetry, leaving the agent to infer from parameter names alone. This insufficiently compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool fetches a Figma file, using a specific verb and resource. It distinguishes from siblings like get_figma_nodes or get_figma_images by targeting the whole file, though it does not explicitly mention scope beyond 'a Figma file'.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives like get_figma_nodes or get_figma_images. The advice to prefer compact mode is about parameter selection, not tool selection, and no exclusions or alternative tools are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_figma_imagesBRead-only
Render Figma nodes to image URLs for assets and previews.
| Name | Required | Description | Default |
|---|---|---|---|
| scale | No | ||
| format | No | ||
| fileKey | Yes | ||
| nodeIds | Yes | ||
| version | No | ||
| responseMode | No | ||
| debugTelemetry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description adds that the output is image URLs, which is not covered by the readOnlyHint and openWorldHint annotations. It does not disclose rate limits, authentication needs, or error behaviors, but annotations already establish it as a safe read 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, concise sentence that conveys the essential function without unnecessary detail. It is well-structured and easy to parse.
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 absence of an output schema and the presence of seven parameters, the description is far too brief. It does not explain the return value format, the relationship between nodeIds and rendering, or any edge cases, making it incomplete for a tool of this complexity.
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 0% schema description coverage, the description provides no meaningful explanation of parameters such as fileKey, nodeIds, scale, format, or responseMode. It only generically mentions 'nodes' and 'image URLs', leaving the agent to guess the purpose and constraints of each parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool renders Figma nodes to image URLs, specifying its purpose and distinguishing it from sibling tools like get_figma_nodes or generate_flutter_component_from_figma. It covers the core function without ambiguity.
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?
Usage is implied: when image URLs for Figma nodes are needed for assets or previews. However, there is no explicit mention of when not to use this tool or comparison with alternatives, leaving the decision to the agent's inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_figma_node_from_urlARead-only
Fetch a specific Figma node directly from a full Figma URL.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| version | No | ||
| figmaUrl | Yes | ||
| geometry | No | ||
| responseMode | No | ||
| debugTelemetry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is known. The description adds minimal behavioral context beyond the input format; it doesn't disclose error handling, return structure, or rate limits. This is acceptable but not enriched beyond 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, front-loaded sentence with no redundant words. It efficiently conveys the core action and input requirement.
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?
With six parameters, no output schema, and no parameter descriptions, the description is minimal. It covers the primary use case but lacks detail on optional parameters, expected return values, and potential errors, making it incomplete for complex 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?
Schema description coverage is 0%, so the description must compensate for parameter meaning, but it only clarifies figmaUrl. The other five parameters (depth, version, geometry, responseMode, debugTelemetry) remain undocumented in both schema and description, leaving a significant gap.
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 a specific verb ('Fetch'), a specific resource ('a specific Figma node'), and the source ('directly from a full Figma URL'). This distinguishes it from sibling tools like get_figma_nodes (which likely takes separate file/key and node IDs) and parse_figma_url (which parses URLs), making the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the use case: when you have a full Figma URL and need to extract a specific node. It doesn't explicitly mention alternatives or exclusions, but the context of sibling tools (e.g., get_figma_nodes, parse_figma_url) plus the phrase 'directly from a full Figma URL' gives strong contextual guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_figma_node_normalizedARead-only
Fetch a Figma node from URL and return normalized metadata, tokens, styles, and asset refs.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| version | No | ||
| figmaUrl | Yes | ||
| responseMode | No | ||
| debugTelemetry | No | ||
| includeRawNode | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already provide readOnlyHint=true, so the read-only safety is covered. The description adds output composition and normalization, but it does not disclose behaviors like URL parsing, failure modes, or what 'normalized' entails beyond the listed categories.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that is front-loaded with the verb and object. Every word earns its place, with no filler or repetition.
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?
With six parameters, no output schema, and 0% schema description coverage, the description must explain invocation details. It only vaguely lists output categories, leaving the agent to guess about depth, responseMode, includeRawNode, and other parameter semantics. This is inadequate for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0% and the description provides no explanation of the six parameters (figmaUrl, depth, version, responseMode, debugTelemetry, includeRawNode). The schema gives names/types/enums, but the description adds no meaning, making it insufficient for understanding parameter effects.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and resource ('Figma node from URL') and enumerates the output items (metadata, tokens, styles, asset refs). The word 'normalized' distinguishes this from sibling tools like get_figma_node_from_url or get_figma_nodes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit when-to-use or alternative tools are mentioned. The term 'normalized' implies a particular use case (processed data vs raw), but there is no exclusions or comparative guidance against siblings like get_figma_node_from_url, get_figma_nodes, or parse_figma_url.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_figma_nodesBRead-only
Fetch specific Figma nodes, their subtrees, and optional geometry.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| fileKey | Yes | ||
| nodeIds | Yes | ||
| version | No | ||
| geometry | No | ||
| responseMode | No | ||
| debugTelemetry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, covering the safety profile. The description adds some context about retrieving subtrees and optional geometry, but it does not disclose other behavioral aspects like response format, size limits, or pagination.
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, tightly-worded sentence with no filler. It is front-loaded with the main purpose and every word contributes meaning.
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?
With 7 parameters, no output schema, and no parameter descriptions, the one-sentence description is insufficient. It does not explain return values, parameter semantics, or when to invoke this tool, making it inadequate for reliable agent selection and invocation.
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 0%, so the description must compensate by explaining parameters. It vaguely references 'specific Figma nodes' (nodeIds) and 'optional geometry' (geometry), but it does not mention fileKey (required), depth, version, responseMode, or debugTelemetry, leaving most parameters unexplained.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and resource ('specific Figma nodes') with scope ('subtrees', 'optional geometry'). It is clear but does not explicitly differentiate from sibling tools like get_figma_node_from_url or get_figma_file.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives such as get_figma_file or get_figma_node_normalized. It lacks any context about prerequisites, use cases, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_figma_stylesCRead-only
Fetch published styles found in a Figma file.
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | ||
| responseMode | No | ||
| debugTelemetry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already signals this is a safe read operation. The description adds no additional behavioral context such as pagination, response format, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence with no fluff. However, it is so sparse that it sacrifices valuable context for 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?
With no output schema and minimal parameter information, the description is inadequate. It does not disclose return values or clarify the impact of optional parameters, making it incomplete for a tool with three parameters.
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 0%, so the description carries full responsibility. It does not explain the purpose of responseMode (standard/compact) or debugTelemetry, leaving the agent without meaningful parameter semantics.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Fetch' and identifies the resource as 'published styles' in a Figma file, clearly distinguishing it from sibling tools like get_figma_components and get_figma_variables.
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 does not mention exclusions or scenarios where another sibling tool would be more appropriate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_figma_variablesBRead-only
Fetch local variables and collections from a Figma file.
| Name | Required | Description | Default |
|---|---|---|---|
| fileKey | Yes | ||
| responseMode | No | ||
| debugTelemetry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation is consistent with the description, and the description adds that it fetches both variables and collections. However, it does not disclose any additional behavioral traits like response format, pagination, or constraints. With annotations covering the read-only nature, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single concise sentence, front-loaded with the verb and resource, with zero redundant words. It earns its place despite being minimal.
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 there is no output schema and three parameters including an enum, the description should at least hint at return values or parameter behavior. It only states the core fetch operation, leaving important details like responseMode semantics undefined, making the tool underspecified 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?
Schema description coverage is 0%, so the description needed to compensate by explaining fileKey, responseMode, and debugTelemetry. It mentions none of these parameters, leaving the agent with no semantic meaning beyond the raw schema fields and enum values.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the specific verb 'Fetch' and identifies the resource as 'local variables and collections' from a Figma file, clearly distinguishing it from siblings like get_figma_styles or get_figma_components. This makes the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given about when to use this tool versus alternatives such as get_figma_styles or get_figma_components. The description simply states what it does without any context, prerequisites, or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
parse_figma_urlARead-only
Parse a Figma URL and extract fileKey and nodeId.
| Name | Required | Description | Default |
|---|---|---|---|
| figmaUrl | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The readOnlyHint annotation already declares this as a safe read operation, and the description adds that it extracts fileKey and nodeId. However, it does not disclose behavior for malformed URLs or URLs without a nodeId, which is useful context beyond the 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, direct sentence that immediately states the purpose and outputs. Every word earns its place; there is no waste or unnecessary detail.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, read-only parsing tool with one parameter, the description covers the essential return values (fileKey and nodeId). While no output schema exists, the mention of these two outputs provides adequate context. A minor gap is not explaining whether nodeId is optional or always present.
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 0%, so the description must compensate. The phrase 'Figma URL' adds little beyond the schema's 'figmaUrl' name and 'uri' format. It does not specify accepted URL patterns (e.g., /file/ vs /design/) or how to handle missing nodeId.
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 explicitly states the action ('Parse a Figma URL') and the specific outputs ('extract fileKey and nodeId'). This clearly distinguishes it from sibling tools that fetch entities or perform other operations.
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 like get_figma_node_from_url or get_figma_file. The description does not mention any prerequisites, exclusions, or typical use cases.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
preview_figma_component_mappingBRead-only
Preview how a Figma node matches a Design System component via federated docs.
| Name | Required | Description | Default |
|---|---|---|---|
| depth | No | ||
| version | No | ||
| figmaUrl | Yes | ||
| responseMode | No | ||
| maxCandidates | No | ||
| debugTelemetry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=false, so the safety profile is covered. The description adds the behavioral detail that matching occurs 'via federated docs,' but it does not disclose output format, error behavior, or what 'preview' returns. No contradiction with 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, compact sentence with the verb and object front-loaded. There is no filler or repetition, so it earns top marks for 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?
With 6 parameters, no output schema, and only a readOnlyHint annotation, the description is too thin to be complete. It does not explain what the preview returns (e.g., match candidates, confidence scores) or how the parameters affect behavior, making it insufficient for confident invocation.
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 0%, so the description must compensate for parameter meaning. It only hints at figmaUrl via 'Figma node' and says nothing about depth, version, responseMode, maxCandidates, or debugTelemetry. This leaves the agent without critical parameter guidance.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Preview') and identifies the resource ('how a Figma node matches a Design System component via federated docs'). This distinguishes it from sibling get/generate tools, though 'federated docs' is somewhat jargon-y.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no explicit guidance on when to use this tool versus alternatives like get_figma_components or generate_flutter_component_from_figma. The description implies a use case but provides no conditional context, exclusions, or alternatives.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
validate_figma_to_code_indexARead-only
Validate the global figma-to-code index and all per-component docs before generation.
| Name | Required | Description | Default |
|---|---|---|---|
| responseMode | No | ||
| debugTelemetry | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, so the non-destructive nature is known. The description adds context about the scope (global index and per-component docs) and timing, but does not disclose what validation checks are performed, what the return format is, or failure behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, focused sentence that is front-loaded and contains no filler. It communicates the essential operation, scope, and timing efficiently.
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?
With no output schema, the description should at least hint at what the validation returns or how to interpret results. It also does not clarify success/failure behavior or prerequisites. The timing context ('before generation') is helpful, but the tool's behavior beyond 'validate' is under-specified.
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 0% and the description provides no information about the two parameters. The parameter names and enum values are somewhat self-explanatory, but the distinction between 'standard' and 'compact' response modes and the effect of debugTelemetry is not explained, leaving a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('validate') and clearly identifies the resource ('global figma-to-code index and all per-component docs') and timing ('before generation'). This clearly distinguishes it from sibling tools that fetch, parse, or generate.
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 explicitly states when to use this tool: 'before generation.' This provides clear contextual guidance, though it does not name specific alternative tools or explicitly state when not to use it.
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.
13 tool updates
v0.1.0- First observed
generate_flutter_component_from_figma - First observed
generate_flutter_page_from_figma - First observed
get_figma_components - First observed
get_figma_file - First observed
get_figma_images - First observed
get_figma_node_from_url - First observed
get_figma_node_normalized - First observed
get_figma_nodes - First observed
get_figma_styles - First observed
get_figma_variables - First observed
parse_figma_url - First observed
preview_figma_component_mapping - First observed
validate_figma_to_code_index
TDQS
Scored across 13 tools
Multiple tools have overlapping boundaries, especially the node-fetching trio: get_figma_nodes, get_figma_node_from_url, and get_figma_node_normalized all retrieve node data with subtle differences. get_figma_node_from_url and get_figma_node_normalized are particularly confusing since both take a URL and return node information, with the latter adding normalization. This overlap makes it difficult for an agent to reliably select the right tool.
Most tools follow a verb_noun pattern (get_figma_file, generate_flutter_component_from_figma), but there are inconsistencies in granularity and style. For example, get_figma_nodes (plural) coexists with get_figma_node_from_url and get_figma_node_normalized (singular), and the latter two are not parallel to each other. The mix of 'from_url' and 'normalized' suffixes adds unpredictability, so while the convention is readable, it is not consistently applied.
With 13 tools, the server is well-scoped for a Figma-to-Flutter generation workflow. Each tool addresses a distinct step in the pipeline (fetching, parsing, mapping, validating, generating) without unnecessary bloat. The count fits comfortably within the ideal 3-15 range and each tool appears to serve a concrete purpose.
The tool set covers the core lifecycle of Figma-to-Flutter generation: fetching files/nodes/styles/variables, parsing URLs, validating index, previewing component mappings, and generating both component and page code. Minor gaps exist, such as no explicit tool to manage or update the component index or design system docs, but agents can work around these with the existing validation and mapping tools.
Maintenance
Related MCP Connectors
- SupabaseOAuthcom.supabase
MCP server for interacting with the Supabase platform
A Model Context Protocol (MCP) server for Selise Blocks Cloud integration
MCP server for Statsig API - interact with Statsig's feature flags, experiments, and analytics
MCP server for Appcircle mobile CI/CD platform.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceRead-only Figma MCP server that enables design-to-code workflows by talking to the Figma REST API with a personal access token, for use with Claude Code and GitHub Copilot.1,330 npmMIT
- FlicenseNot gradedqualityDmaintenanceMCP server for the Figma API. Lets AI agents fetch designs, nodes, and rendered images from Figma.1,330 npm-
- FlicenseNot gradedqualityCmaintenanceRead-only MCP server that wraps the Figma REST API, providing tools like get file metadata, list frames, and export node image URLs for AI SDLC agents.-
- AlicenseBqualityBmaintenanceLocal MCP server connecting AI clients to the Figma desktop app for inspecting and editing Figma documents via the Plugin API.16253 npm1MIT