figma-console-mcp 1.40.2 → 1.40.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2049,7 +2049,9 @@ export function registerFigmaAPITools(server, getFigmaAPI, getCurrentUrl, variab
2049
2049
  try {
2050
2050
  logger.info({ nodeId }, "Attempting to get component via Desktop Bridge plugin UI");
2051
2051
  const connector = await getDesktopConnector();
2052
- const desktopResult = await connector.getComponentFromPluginUI(nodeId);
2052
+ // fileKey: node ids are file-local — without it the ACTIVE file answers,
2053
+ // and may return a different component that shares this id.
2054
+ const desktopResult = await connector.getComponentFromPluginUI(nodeId, fileKey);
2053
2055
  if (desktopResult.success && desktopResult.component) {
2054
2056
  logger.info({
2055
2057
  componentName: desktopResult.component.name,
@@ -2739,7 +2741,7 @@ export function registerFigmaAPITools(server, getFigmaAPI, getCurrentUrl, variab
2739
2741
  try {
2740
2742
  const connector = await getDesktopConnector();
2741
2743
  // Fetch annotations with child traversal (depth matches REST traversal)
2742
- const annotResult = await connector.getAnnotations(nodeId, true, 4);
2744
+ const annotResult = await connector.getAnnotations(nodeId, true, 4, fileKey);
2743
2745
  if (annotResult?.success !== false && annotResult?.data) {
2744
2746
  const data = annotResult.data;
2745
2747
  annotations = data.annotations || [];
@@ -2765,7 +2767,7 @@ export function registerFigmaAPITools(server, getFigmaAPI, getCurrentUrl, variab
2765
2767
  }
2766
2768
  // Also fetch description from bridge if REST returned empty
2767
2769
  if (!componentData.description && !componentData.descriptionMarkdown) {
2768
- const bridgeResult = await connector.getComponentFromPluginUI(nodeId);
2770
+ const bridgeResult = await connector.getComponentFromPluginUI(nodeId, fileKey);
2769
2771
  if (bridgeResult?.success && bridgeResult.component) {
2770
2772
  if (bridgeResult.component.descriptionMarkdown) {
2771
2773
  componentData.descriptionMarkdown = bridgeResult.component.descriptionMarkdown;
@@ -58,6 +58,53 @@ function tagToolResponse(result) {
58
58
  });
59
59
  return { ...r, content: newContent };
60
60
  }
61
+ /**
62
+ * Largest tool result this server will hand to the client, in bytes of content.
63
+ *
64
+ * MCP clients read one JSON-RPC message at a time and defend themselves against
65
+ * runaway output: Claude Code disconnects the server outright once a single
66
+ * message passes 16 MB ("wrote >16MB to stdout without a JSON-RPC message
67
+ * boundary … Disconnecting"). The user sees only "Connection closed" and loses
68
+ * every tool for the rest of the session. 8 MB leaves room for JSON-RPC string
69
+ * escaping, which inflates nested JSON noticeably.
70
+ */
71
+ export const MAX_TOOL_RESPONSE_BYTES = 8 * 1024 * 1024;
72
+ /**
73
+ * Replace an oversized tool result with an actionable error. Returning it would
74
+ * not deliver the data anyway — it would kill the connection.
75
+ */
76
+ export function capToolResponse(result, maxBytes = MAX_TOOL_RESPONSE_BYTES) {
77
+ if (!result ||
78
+ typeof result !== "object" ||
79
+ !Array.isArray(result.content)) {
80
+ return result;
81
+ }
82
+ let bytes = 0;
83
+ for (const item of result.content) {
84
+ if (typeof item?.text === "string")
85
+ bytes += Buffer.byteLength(item.text, "utf8");
86
+ if (typeof item?.data === "string")
87
+ bytes += item.data.length; // base64 image/audio
88
+ }
89
+ if (bytes <= maxBytes)
90
+ return result;
91
+ const mb = (n) => (n / (1024 * 1024)).toFixed(1);
92
+ return {
93
+ content: [
94
+ {
95
+ type: "text",
96
+ text: JSON.stringify({
97
+ _mcp: MCP_NAME,
98
+ error: `${ERROR_PREFIX} This call produced a ${mb(bytes)} MB result, above the ${mb(maxBytes)} MB this server will return. It was withheld because MCP clients disconnect on oversized messages (Claude Code closes the connection above 16 MB), which would have ended this session instead of delivering the data.`,
99
+ resultBytes: bytes,
100
+ note: "Only the RESPONSE was withheld. If this call made changes in Figma, those changes still happened.",
101
+ hint: "Ask for less in one call: return counts or a summary instead of full node data, target fewer nodes, use a smaller depth, or page through the data across several calls.",
102
+ }),
103
+ },
104
+ ],
105
+ isError: true,
106
+ };
107
+ }
61
108
  /**
62
109
  * Monkey-patch an MCP server instance so every tool registered on it gets
63
110
  * identity tagging applied to its responses and an identity prefix on any
@@ -82,7 +129,7 @@ export function wrapServerForIdentity(server) {
82
129
  const wrappedHandler = async (...handlerArgs) => {
83
130
  try {
84
131
  const result = await handler(...handlerArgs);
85
- return tagToolResponse(result);
132
+ return capToolResponse(tagToolResponse(result));
86
133
  }
87
134
  catch (err) {
88
135
  if (err instanceof Error && !err.message.startsWith(ERROR_PREFIX)) {
@@ -35,7 +35,7 @@ const logger = createChildLogger({ component: "tokens-tools" });
35
35
  * on every exported token document. Kept in sync with package.json by
36
36
  * scripts/release.sh — see step 3 of the release flow.
37
37
  */
38
- const MCP_VERSION = "1.40.2";
38
+ const MCP_VERSION = "1.40.4";
39
39
  const EXPORT_TOOL_DESCRIPTION = `Export Figma variables to design token files in your codebase. Bidirectional with figma_import_tokens — together they replace Style Dictionary and Tokens Studio's export pipeline for the popular styling methods.
40
40
 
41
41
  FULLY-IMPLEMENTED OUTPUT FORMATS:
@@ -168,8 +168,8 @@ export class WebSocketConnector {
168
168
  // ============================================================================
169
169
  // Component operations
170
170
  // ============================================================================
171
- async getComponentFromPluginUI(nodeId) {
172
- return this.wsServer.sendCommand('GET_COMPONENT', { nodeId }, 10000);
171
+ async getComponentFromPluginUI(nodeId, fileKey) {
172
+ return this.wsServer.sendCommand('GET_COMPONENT', { nodeId }, 10000, fileKey);
173
173
  }
174
174
  async getLocalComponents() {
175
175
  return this.wsServer.sendCommand('GET_LOCAL_COMPONENTS', {}, 300000);
@@ -180,8 +180,8 @@ export class WebSocketConnector {
180
180
  // ============================================================================
181
181
  // Annotation operations
182
182
  // ============================================================================
183
- async getAnnotations(nodeId, includeChildren, depth) {
184
- return this.wsServer.sendCommand('GET_ANNOTATIONS', { nodeId, includeChildren, depth }, 10000);
183
+ async getAnnotations(nodeId, includeChildren, depth, fileKey) {
184
+ return this.wsServer.sendCommand('GET_ANNOTATIONS', { nodeId, includeChildren, depth }, 10000, fileKey);
185
185
  }
186
186
  async setAnnotations(nodeId, annotations, mode) {
187
187
  return this.wsServer.sendCommand('SET_ANNOTATIONS', { nodeId, annotations, mode: mode || 'replace' });
@@ -75,7 +75,7 @@ export class FigmaConsoleMCPv3 extends McpAgent {
75
75
  this.server = (() => {
76
76
  const s = new McpServer({
77
77
  name: "Figma Console MCP",
78
- version: "1.40.2",
78
+ version: "1.40.4",
79
79
  });
80
80
  // Identity wrap — every tool's response and thrown error gets stamped
81
81
  // with our MCP name so cross-MCP attribution is unambiguous.
@@ -1085,7 +1085,7 @@ export default {
1085
1085
  });
1086
1086
  const statelessServer = new McpServer({
1087
1087
  name: "Figma Console MCP",
1088
- version: "1.40.2",
1088
+ version: "1.40.4",
1089
1089
  });
1090
1090
  wrapServerForIdentity(statelessServer);
1091
1091
  // ================================================================
@@ -1723,7 +1723,7 @@ export default {
1723
1723
  return new Response(JSON.stringify({
1724
1724
  status: "healthy",
1725
1725
  service: "Figma Console MCP",
1726
- version: "1.40.2",
1726
+ version: "1.40.4",
1727
1727
  endpoints: {
1728
1728
  mcp: ["/sse", "/mcp"],
1729
1729
  oauth_mcp_spec: ["/.well-known/oauth-authorization-server", "/authorize", "/token", "/oauth/register"],
@@ -6,7 +6,7 @@
6
6
  import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
7
7
  import type { FigmaAPI } from "./figma-api.js";
8
8
  import type { EnrichedComponent } from "./types/enriched.js";
9
- import type { CompanyDocsContentEntry } from "./types/design-code.js";
9
+ import type { CodeDocInfo, CompanyDocsContentEntry } from "./types/design-code.js";
10
10
  export { figmaRGBAToHex, normalizeColor, numericClose } from "./diff/property-compare.js";
11
11
  /** Calculate parity score from discrepancy counts */
12
12
  export declare function calculateParityScore(critical: number, major: number, minor: number, info: number): number;
@@ -19,6 +19,14 @@ export declare function chunkMarkdownByHeaders(markdown: string): Array<{
19
19
  * Clean a raw Figma variant name like "Type=Image, Size=12" into "Image / 12".
20
20
  * Extracts just the values from "Key=Value" pairs, joined by " / ".
21
21
  */
22
+ /**
23
+ * How many levels of a component's tree the doc tool fetches and walks. The REST
24
+ * fetch counts from the requested node, so for a COMPONENT_SET one level is
25
+ * spent on the variants themselves. Anything deeper is cut off by the API — and
26
+ * REST returns a cut-off container as `children: []`, indistinguishable from an
27
+ * empty frame, so the walkers report when they reach this limit.
28
+ */
29
+ export declare const DOC_TREE_DEPTH = 8;
22
30
  export declare function cleanVariantName(rawName: string): string;
23
31
  /** Structured content extracted from a Figma component description */
24
32
  interface ParsedDescription {
@@ -51,6 +59,8 @@ interface VariantColorEntry {
51
59
  variableName?: string;
52
60
  /** For icon artwork: layer name of the icon instance this color belongs to */
53
61
  iconLabel?: string;
62
+ /** The layer (or an ancestor) has `visible: false` — real design intent, but not painted */
63
+ hidden?: boolean;
54
64
  }
55
65
  /** Color data collected from a specific variant */
56
66
  interface VariantColorData {
@@ -69,6 +79,8 @@ interface VariantColorData {
69
79
  iconColors: VariantColorEntry[];
70
80
  strokes: VariantColorEntry[];
71
81
  textColors: VariantColorEntry[];
82
+ /** Shadows, blurs and layer opacity — `hex` holds the description */
83
+ effects: VariantColorEntry[];
72
84
  icons: Array<{
73
85
  /** Main component name when resolvable, else the cleaned layer name */
74
86
  name: string;
@@ -76,6 +88,8 @@ interface VariantColorData {
76
88
  layerName?: string;
77
89
  /** INSTANCE_SWAP property driving this instance — the icon is a default, not fixed */
78
90
  swapProperty?: string;
91
+ /** The icon layer is hidden in this variant (typically toggled by a boolean property) */
92
+ hidden?: boolean;
79
93
  }>;
80
94
  }
81
95
  /**
@@ -102,7 +116,18 @@ interface TextStyleData {
102
116
  lineHeight: number;
103
117
  letterSpacing: number;
104
118
  variableBindings?: Record<string, string>;
119
+ /** The text layer (or an ancestor) is hidden */
120
+ hidden?: boolean;
121
+ /** The layer mixes styles (e.g. a bolded word) — the values shown are its base style only */
122
+ mixed?: boolean;
105
123
  }
124
+ /**
125
+ * id → token name. Two collections can each hold a variable with the SAME name
126
+ * ("Primitive/2x" in both Spacing and Radius), which is ambiguous to paste into
127
+ * code — those, and only those, are qualified with their collection. Every other
128
+ * token keeps the plain name people already map to code.
129
+ */
130
+ export declare function buildVariableNameMap(variables: any[], collections?: any[]): Map<string, string>;
106
131
  /**
107
132
  * Human-readable name of the main component behind an instance/component id.
108
133
  * Variants resolve to "Set name (Value / Value)" since a bare "Size=16" is useless.
@@ -116,14 +141,47 @@ export declare function collectAllVariantData(node: any, varNameMap: Map<string,
116
141
  /**
117
142
  * Collect typography data from all text nodes in a component tree.
118
143
  */
119
- export declare function collectTypographyData(node: any, depth?: number, maxDepth?: number): TextStyleData[];
144
+ export declare function collectTypographyData(node: any, depth?: number, maxDepth?: number, ancestorHidden?: boolean): TextStyleData[];
145
+ /** One row of the typography table: a text element in one style, and where it applies */
146
+ export interface TypographyRow {
147
+ style: TextStyleData;
148
+ /** Empty when every variant uses this style; otherwise which variants do */
149
+ scope: string;
150
+ }
151
+ /**
152
+ * Typography for EVERY variant of a set. Per text element: one row when all
153
+ * variants agree, otherwise one row per distinct style, scoped by the variant
154
+ * property that drives it ("Is Selected=True") or, failing that, by variant name.
155
+ */
156
+ export declare function collectTypographyAcrossVariants(setNode: any): TypographyRow[];
120
157
  /**
121
158
  * Build an anatomy tree representation from a Figma node structure.
122
159
  * Returns a formatted string showing the component's nested structure.
123
160
  */
124
161
  export declare function buildAnatomyTree(node: any, depth?: number, maxDepth?: number): string;
162
+ /**
163
+ * The border width that actually RENDERS. With per-side weights (underlines,
164
+ * dividers, accent bars) the scalar `strokeWeight` is a leftover from before the
165
+ * override and appears nowhere in the component — `individualStrokeWeights` wins.
166
+ */
167
+ export declare function describeStrokeWeight(node: any): number | string;
125
168
  /** Parse "Size=lg, State=hover" into ordered [property, value] pairs */
126
169
  export declare function parseVariantProperties(rawName: string): Array<[string, string]>;
170
+ /**
171
+ * Find ONE variant property that fully accounts for how a value differs across
172
+ * variants: grouping by that property leaves a single value per group.
173
+ *
174
+ * The explanation must be non-vacuous — with one variant per group any values
175
+ * at all would "fit" (single-property sets), so that doesn't count.
176
+ * Shared by spacing, typography and anatomy so they explain variation alike.
177
+ */
178
+ export declare function explainByVariantProperty(samples: Array<{
179
+ props: Array<[string, string]>;
180
+ display: string;
181
+ }>): {
182
+ property: string;
183
+ groups: Array<[string, string]>;
184
+ } | null;
127
185
  /** One row of the cross-variant spacing table */
128
186
  export interface VariantSpacingRow {
129
187
  property: string;
@@ -169,10 +227,32 @@ export declare function resolveVisualNode(node: any): any;
169
227
  export declare function isVariantName(name: string): boolean;
170
228
  /** Sanitize a component name for use as a file path */
171
229
  export declare function sanitizeComponentName(name: string): string;
230
+ export declare function generateFrontmatter(componentName: string, description: string, node: any, componentMeta: any, fileUrl: string, codeInfo?: CodeDocInfo, canonicalSource?: "figma" | "code" | "reconciled", level?: string | null,
231
+ /**
232
+ * Newest Figma version that touched this component, when design history was
233
+ * pulled. Emitted as its own `figmaVersion` field rather than folded into
234
+ * `version` — that one is the code-side semver and means something different.
235
+ */
236
+ latestDesignVersion?: {
237
+ version_id: string;
238
+ label: string | null;
239
+ created_at: string;
240
+ } | null): string;
241
+ export declare function generateOverviewSection(componentName: string, description: string, fileUrl: string, parsedDesc: ParsedDescription, codeInfo?: CodeDocInfo): string;
172
242
  export declare function generateStatesAndVariantsSection(node: any, variantData?: VariantColorData[], lookup?: ComponentLookup): string;
173
243
  export declare function generateVisualSpecsSection(node: any, enrichedData: EnrichedComponent | null, variantData?: VariantColorData[], varNameMap?: Map<string, string>,
174
244
  /** The full COMPONENT_SET when `node` is its default variant — enables cross-variant spacing comparison */
175
245
  setNode?: any): string;
246
+ /**
247
+ * Count containers sitting exactly at the fetch-depth limit with no children.
248
+ * REST cuts a tree off by returning `children: []`, which looks identical to an
249
+ * empty frame — so at that level an empty container MAY be hiding real content.
250
+ * `fetchedRoot` is the node the REST call requested (levels count from it).
251
+ */
252
+ export declare function countPossiblyTruncated(fetchedRoot: any, fetchDepth?: number): number;
253
+ export declare function generateAnatomySection(node: any, fetchDepth?: number): string;
254
+ export declare function generateTypographySection(node: any): string;
255
+ export declare function generateParitySection(node: any, codeInfo: CodeDocInfo): string;
176
256
  /** Convert generated markdown into a CompanyDocsMCP-compatible content entry */
177
257
  export declare function toCompanyDocsEntry(markdown: string, componentName: string, figmaUrl: string, systemName?: string): CompanyDocsContentEntry;
178
258
  export declare function registerDesignCodeTools(server: McpServer, getFigmaAPI: () => Promise<FigmaAPI>, getCurrentUrl: () => string | null, variablesCache?: Map<string, {
@@ -1 +1 @@
1
- {"version":3,"file":"design-code-tools.d.ts","sourceRoot":"","sources":["../../src/core/design-code-tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"design-code-tools.d.ts","sourceRoot":"","sources":["../../src/core/design-code-tools.ts"],"names":[],"mappings":"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"}