@mcp-consultant-tools/figma 1.0.0
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.
- package/build/FigmaService.d.ts +47 -0
- package/build/FigmaService.d.ts.map +1 -0
- package/build/FigmaService.js +108 -0
- package/build/FigmaService.js.map +1 -0
- package/build/figma/extractors/built-in.d.ts +57 -0
- package/build/figma/extractors/built-in.d.ts.map +1 -0
- package/build/figma/extractors/built-in.js +206 -0
- package/build/figma/extractors/built-in.js.map +1 -0
- package/build/figma/extractors/design-extractor.d.ts +7 -0
- package/build/figma/extractors/design-extractor.d.ts.map +1 -0
- package/build/figma/extractors/design-extractor.js +66 -0
- package/build/figma/extractors/design-extractor.js.map +1 -0
- package/build/figma/extractors/index.d.ts +5 -0
- package/build/figma/extractors/index.d.ts.map +1 -0
- package/build/figma/extractors/index.js +11 -0
- package/build/figma/extractors/index.js.map +1 -0
- package/build/figma/extractors/node-walker.d.ts +16 -0
- package/build/figma/extractors/node-walker.d.ts.map +1 -0
- package/build/figma/extractors/node-walker.js +93 -0
- package/build/figma/extractors/node-walker.js.map +1 -0
- package/build/figma/extractors/types.d.ts +73 -0
- package/build/figma/extractors/types.d.ts.map +1 -0
- package/build/figma/extractors/types.js +2 -0
- package/build/figma/extractors/types.js.map +1 -0
- package/build/figma/transformers/component.d.ts +27 -0
- package/build/figma/transformers/component.d.ts.map +1 -0
- package/build/figma/transformers/component.js +29 -0
- package/build/figma/transformers/component.js.map +1 -0
- package/build/figma/transformers/effects.d.ts +9 -0
- package/build/figma/transformers/effects.d.ts.map +1 -0
- package/build/figma/transformers/effects.js +50 -0
- package/build/figma/transformers/effects.js.map +1 -0
- package/build/figma/transformers/layout.d.ts +27 -0
- package/build/figma/transformers/layout.d.ts.map +1 -0
- package/build/figma/transformers/layout.js +203 -0
- package/build/figma/transformers/layout.js.map +1 -0
- package/build/figma/transformers/style.d.ts +120 -0
- package/build/figma/transformers/style.d.ts.map +1 -0
- package/build/figma/transformers/style.js +539 -0
- package/build/figma/transformers/style.js.map +1 -0
- package/build/figma/transformers/text.d.ts +31 -0
- package/build/figma/transformers/text.d.ts.map +1 -0
- package/build/figma/transformers/text.js +34 -0
- package/build/figma/transformers/text.js.map +1 -0
- package/build/figma/utils/common.d.ts +70 -0
- package/build/figma/utils/common.d.ts.map +1 -0
- package/build/figma/utils/common.js +167 -0
- package/build/figma/utils/common.js.map +1 -0
- package/build/figma/utils/fetch-with-retry.d.ts +13 -0
- package/build/figma/utils/fetch-with-retry.d.ts.map +1 -0
- package/build/figma/utils/fetch-with-retry.js +70 -0
- package/build/figma/utils/fetch-with-retry.js.map +1 -0
- package/build/figma/utils/identity.d.ts +23 -0
- package/build/figma/utils/identity.d.ts.map +1 -0
- package/build/figma/utils/identity.js +71 -0
- package/build/figma/utils/identity.js.map +1 -0
- package/build/index.d.ts +20 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +88 -0
- package/build/index.js.map +1 -0
- package/package.json +54 -0
package/build/index.js
ADDED
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* @mcp-consultant-tools/figma
|
|
4
|
+
*
|
|
5
|
+
* MCP server for Figma integration.
|
|
6
|
+
* Provides design data extraction and transformation capabilities.
|
|
7
|
+
*/
|
|
8
|
+
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import { createMcpServer, createEnvLoader, createErrorResponse, createSuccessResponse } from "@mcp-consultant-tools/core";
|
|
11
|
+
import { FigmaService } from "./FigmaService.js";
|
|
12
|
+
/**
|
|
13
|
+
* Register Figma tools and prompts to an MCP server
|
|
14
|
+
* @param server - The MCP server instance
|
|
15
|
+
* @param figmaService - Optional pre-configured FigmaService (for testing or custom configs)
|
|
16
|
+
*/
|
|
17
|
+
export function registerFigmaTools(server, figmaService) {
|
|
18
|
+
let service = figmaService || null;
|
|
19
|
+
function getFigmaService() {
|
|
20
|
+
if (!service) {
|
|
21
|
+
const missingConfig = [];
|
|
22
|
+
if (!process.env.FIGMA_API_KEY && !process.env.FIGMA_OAUTH_TOKEN) {
|
|
23
|
+
missingConfig.push("FIGMA_API_KEY or FIGMA_OAUTH_TOKEN");
|
|
24
|
+
}
|
|
25
|
+
if (missingConfig.length > 0) {
|
|
26
|
+
throw new Error(`Missing required Figma configuration: ${missingConfig.join(", ")}. ` +
|
|
27
|
+
`Set FIGMA_API_KEY or FIGMA_OAUTH_TOKEN environment variable.`);
|
|
28
|
+
}
|
|
29
|
+
const config = {
|
|
30
|
+
apiKey: process.env.FIGMA_API_KEY,
|
|
31
|
+
oauthToken: process.env.FIGMA_OAUTH_TOKEN,
|
|
32
|
+
useOAuth: process.env.FIGMA_USE_OAUTH === "true",
|
|
33
|
+
};
|
|
34
|
+
service = new FigmaService(config);
|
|
35
|
+
console.error("Figma service initialized");
|
|
36
|
+
}
|
|
37
|
+
return service;
|
|
38
|
+
}
|
|
39
|
+
// Tool: get-figma-data
|
|
40
|
+
server.tool("get-figma-data", "Get comprehensive Figma design data including layout, text, styles, and components. Fetches from Figma API and transforms into simplified, AI-friendly format. Can fetch entire files or specific nodes. Automatically deduplicates styles.", {
|
|
41
|
+
fileKey: z.string().describe("Figma file key (alphanumeric string from URL). Example: From 'https://figma.com/file/ABC123/MyFile', use 'ABC123'"),
|
|
42
|
+
nodeId: z.string().optional().describe("Optional specific node ID(s) to fetch. Format: '1234:5678' or multiple '1:10;2:20'. If omitted, fetches entire file."),
|
|
43
|
+
depth: z.number().optional().describe("Optional tree traversal depth limit. Useful for large files. Example: depth=3 stops after 3 levels of children."),
|
|
44
|
+
}, async ({ fileKey, nodeId, depth }) => {
|
|
45
|
+
try {
|
|
46
|
+
const figmaService = getFigmaService();
|
|
47
|
+
const result = await figmaService.getFigmaData(fileKey, nodeId, depth);
|
|
48
|
+
return createSuccessResponse(result);
|
|
49
|
+
}
|
|
50
|
+
catch (error) {
|
|
51
|
+
return createErrorResponse(error, "get-figma-data");
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
// Tool: download-figma-images (placeholder for v2)
|
|
55
|
+
server.tool("download-figma-images", "Download and process images from Figma designs (Coming in v2)", {
|
|
56
|
+
fileKey: z.string().describe("Figma file key"),
|
|
57
|
+
localPath: z.string().describe("Local path to save images"),
|
|
58
|
+
}, async ({ fileKey, localPath }) => {
|
|
59
|
+
return createErrorResponse(new Error("Image download functionality is coming in v2. Use get-figma-data for design metadata."), "download-figma-images");
|
|
60
|
+
});
|
|
61
|
+
console.error("Figma tools registered: 2 tools");
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Export service class for direct usage
|
|
65
|
+
*/
|
|
66
|
+
export { FigmaService } from "./FigmaService.js";
|
|
67
|
+
/**
|
|
68
|
+
* Standalone CLI server (when run directly)
|
|
69
|
+
*/
|
|
70
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
71
|
+
const loadEnv = createEnvLoader();
|
|
72
|
+
loadEnv();
|
|
73
|
+
const server = createMcpServer({
|
|
74
|
+
name: "@mcp-consultant-tools/figma",
|
|
75
|
+
version: "1.0.0",
|
|
76
|
+
capabilities: {
|
|
77
|
+
tools: {},
|
|
78
|
+
},
|
|
79
|
+
});
|
|
80
|
+
registerFigmaTools(server);
|
|
81
|
+
const transport = new StdioServerTransport();
|
|
82
|
+
server.connect(transport).catch((error) => {
|
|
83
|
+
console.error("Failed to start Figma MCP server:", error);
|
|
84
|
+
process.exit(1);
|
|
85
|
+
});
|
|
86
|
+
console.error("@mcp-consultant-tools/figma server running on stdio");
|
|
87
|
+
}
|
|
88
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
ADDED
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@mcp-consultant-tools/figma",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "MCP server for Figma integration - design data extraction and transformation",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./build/index.js",
|
|
7
|
+
"types": "./build/index.d.ts",
|
|
8
|
+
"bin": {
|
|
9
|
+
"mcp-figma": "./build/index.js"
|
|
10
|
+
},
|
|
11
|
+
"exports": {
|
|
12
|
+
".": {
|
|
13
|
+
"import": "./build/index.js",
|
|
14
|
+
"types": "./build/index.d.ts"
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
"files": [
|
|
18
|
+
"build",
|
|
19
|
+
"README.md"
|
|
20
|
+
],
|
|
21
|
+
"scripts": {
|
|
22
|
+
"build": "tsc",
|
|
23
|
+
"clean": "rm -rf build *.tsbuildinfo",
|
|
24
|
+
"prepublishOnly": "npm run build"
|
|
25
|
+
},
|
|
26
|
+
"keywords": [
|
|
27
|
+
"mcp",
|
|
28
|
+
"model-context-protocol",
|
|
29
|
+
"figma",
|
|
30
|
+
"design",
|
|
31
|
+
"design-tokens",
|
|
32
|
+
"figma-api"
|
|
33
|
+
],
|
|
34
|
+
"author": "Michal Sobieraj",
|
|
35
|
+
"license": "MIT",
|
|
36
|
+
"repository": {
|
|
37
|
+
"type": "git",
|
|
38
|
+
"url": "git+https://github.com/klemensms/mcp-consultant-tools.git",
|
|
39
|
+
"directory": "packages/figma"
|
|
40
|
+
},
|
|
41
|
+
"engines": {
|
|
42
|
+
"node": ">=16.0.0"
|
|
43
|
+
},
|
|
44
|
+
"dependencies": {
|
|
45
|
+
"@figma/rest-api-spec": "^0.33.0",
|
|
46
|
+
"@mcp-consultant-tools/core": "^1.0.0",
|
|
47
|
+
"@modelcontextprotocol/sdk": "^1.0.4",
|
|
48
|
+
"zod": "^3.24.1"
|
|
49
|
+
},
|
|
50
|
+
"devDependencies": {
|
|
51
|
+
"@types/node": "^22.10.5",
|
|
52
|
+
"typescript": "^5.8.2"
|
|
53
|
+
}
|
|
54
|
+
}
|