@atomixstudio/mcp 1.0.30 → 1.0.31
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/README.md +4 -4
- package/dist/{chunk-BXWOCXYT.js → chunk-CE6J5MJX.js} +5 -1
- package/dist/chunk-CE6J5MJX.js.map +1 -0
- package/dist/figma-bridge-protocol.d.ts +1 -1
- package/dist/figma-bridge-protocol.js +1 -1
- package/dist/index.js +411 -108
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/dist/chunk-BXWOCXYT.js.map +0 -1
package/README.md
CHANGED
|
@@ -6,10 +6,10 @@ MCP (Model Context Protocol) server and CLI for Atomix Design System. Query and
|
|
|
6
6
|
|
|
7
7
|
## Getting Your Credentials
|
|
8
8
|
|
|
9
|
-
1. Go to [Atomix Studio](https://
|
|
9
|
+
1. Go to [Atomix Studio](https://atomix.studio)
|
|
10
10
|
2. Sign in and create/access your design system
|
|
11
11
|
3. Click **Publish** to make your DS available via API
|
|
12
|
-
4. Your **ds-id** is in the URL: `
|
|
12
|
+
4. Your **ds-id** is in the URL: `atomix.studio/ds/[ds-id]`
|
|
13
13
|
5. Your **access token**: Export modal or Settings → Regenerate Atomix access token (required for MCP)
|
|
14
14
|
|
|
15
15
|
## MCP Server Setup
|
|
@@ -233,7 +233,7 @@ Creates:
|
|
|
233
233
|
|--------|-------------|
|
|
234
234
|
| `--ds-id` | Design system ID (or set in .atomixrc) |
|
|
235
235
|
| `--atomix-token` | Access token (required for MCP; from Export modal or Settings → Regenerate) |
|
|
236
|
-
| `--api-base` | API base URL (default: https://
|
|
236
|
+
| `--api-base` | API base URL (default: https://atomix.studio). Use only for self-hosted instances. |
|
|
237
237
|
| `--api-key` | API key for private design systems |
|
|
238
238
|
| `--output, -o` | Output file path [./tokens.css] |
|
|
239
239
|
| `--format` | Output format (see below) |
|
|
@@ -285,7 +285,7 @@ npx heyatomix sync
|
|
|
285
285
|
|
|
286
286
|
## Links
|
|
287
287
|
|
|
288
|
-
- [Atomix Studio](https://
|
|
288
|
+
- [Atomix Studio](https://atomix.studio)
|
|
289
289
|
- [MCP Protocol](https://modelcontextprotocol.io)
|
|
290
290
|
|
|
291
291
|
## License
|
|
@@ -19,6 +19,10 @@ var BRIDGE_METHODS = [
|
|
|
19
19
|
"design_set_auto_layout",
|
|
20
20
|
"design_set_layout_constraints",
|
|
21
21
|
"design_append_child",
|
|
22
|
+
"design_resize_node",
|
|
23
|
+
"design_set_effects",
|
|
24
|
+
"design_set_strokes",
|
|
25
|
+
"design_set_layout_sizing",
|
|
22
26
|
"get_design_screenshot",
|
|
23
27
|
"finalize_design_frame"
|
|
24
28
|
];
|
|
@@ -42,4 +46,4 @@ export {
|
|
|
42
46
|
normalizeBridgeMethod,
|
|
43
47
|
isAllowedMethod
|
|
44
48
|
};
|
|
45
|
-
//# sourceMappingURL=chunk-
|
|
49
|
+
//# sourceMappingURL=chunk-CE6J5MJX.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/figma-bridge-protocol.ts"],"sourcesContent":["/**\n * Bridge wire protocol (merged from figma-bridge).\n * All messages are JSON. Only whitelisted methods are allowed.\n * Used by the in-process Figma bridge (WebSocket server in mcp-user).\n */\n\nexport const BRIDGE_METHODS = [\n \"get_document_info\",\n \"get_selection\",\n \"get_node_info\",\n \"get_figma_variables_and_styles\",\n \"create_color_variables\",\n \"create_paint_styles\",\n \"create_text_styles\",\n \"create_number_variables\",\n \"create_effect_styles\",\n \"apply_fill_to_selection\",\n \"create_design_placeholder\",\n \"design_create_frame\",\n \"design_create_text\",\n \"design_create_rectangle\",\n \"design_set_auto_layout\",\n \"design_set_layout_constraints\",\n \"design_append_child\",\n \"design_resize_node\",\n \"design_set_effects\",\n \"design_set_strokes\",\n \"design_set_layout_sizing\",\n \"get_design_screenshot\",\n \"finalize_design_frame\",\n] as const;\n\nexport type BridgeMethod = (typeof BRIDGE_METHODS)[number];\n\nexport interface BridgeRequest {\n id: string;\n method: string;\n params?: Record<string, unknown>;\n}\n\nexport interface BridgeSuccessResponse {\n id: string;\n result: unknown;\n}\n\nexport interface BridgeErrorResponse {\n id: string;\n error: string;\n}\n\nexport type BridgeResponse = BridgeSuccessResponse | BridgeErrorResponse;\n\nexport function isBridgeRequest(msg: unknown): msg is BridgeRequest {\n if (!msg || typeof msg !== \"object\") return false;\n const m = msg as Record<string, unknown>;\n return (\n typeof m.id === \"string\" &&\n m.id.length > 0 &&\n typeof m.method === \"string\" &&\n m.method.length > 0\n );\n}\n\n/** Convert camelCase to snake_case for bridge (e.g. getFigmaVariablesAndStyles -> get_figma_variables_and_styles). */\nexport function normalizeBridgeMethod(method: string): string {\n if (typeof method !== \"string\" || !method) return method;\n return method.replace(/[A-Z]/g, (c) => `_${c.toLowerCase()}`);\n}\n\nexport function isAllowedMethod(method: string): method is BridgeMethod {\n const normalized = normalizeBridgeMethod(method);\n return (BRIDGE_METHODS as readonly string[]).includes(normalized);\n}\n"],"mappings":";;;AAMO,IAAM,iBAAiB;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAsBO,SAAS,gBAAgB,KAAoC;AAClE,MAAI,CAAC,OAAO,OAAO,QAAQ,SAAU,QAAO;AAC5C,QAAM,IAAI;AACV,SACE,OAAO,EAAE,OAAO,YAChB,EAAE,GAAG,SAAS,KACd,OAAO,EAAE,WAAW,YACpB,EAAE,OAAO,SAAS;AAEtB;AAGO,SAAS,sBAAsB,QAAwB;AAC5D,MAAI,OAAO,WAAW,YAAY,CAAC,OAAQ,QAAO;AAClD,SAAO,OAAO,QAAQ,UAAU,CAAC,MAAM,IAAI,EAAE,YAAY,CAAC,EAAE;AAC9D;AAEO,SAAS,gBAAgB,QAAwC;AACtE,QAAM,aAAa,sBAAsB,MAAM;AAC/C,SAAQ,eAAqC,SAAS,UAAU;AAClE;","names":[]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* All messages are JSON. Only whitelisted methods are allowed.
|
|
4
4
|
* Used by the in-process Figma bridge (WebSocket server in mcp-user).
|
|
5
5
|
*/
|
|
6
|
-
declare const BRIDGE_METHODS: readonly ["get_document_info", "get_selection", "get_node_info", "get_figma_variables_and_styles", "create_color_variables", "create_paint_styles", "create_text_styles", "create_number_variables", "create_effect_styles", "apply_fill_to_selection", "create_design_placeholder", "design_create_frame", "design_create_text", "design_create_rectangle", "design_set_auto_layout", "design_set_layout_constraints", "design_append_child", "get_design_screenshot", "finalize_design_frame"];
|
|
6
|
+
declare const BRIDGE_METHODS: readonly ["get_document_info", "get_selection", "get_node_info", "get_figma_variables_and_styles", "create_color_variables", "create_paint_styles", "create_text_styles", "create_number_variables", "create_effect_styles", "apply_fill_to_selection", "create_design_placeholder", "design_create_frame", "design_create_text", "design_create_rectangle", "design_set_auto_layout", "design_set_layout_constraints", "design_append_child", "design_resize_node", "design_set_effects", "design_set_strokes", "design_set_layout_sizing", "get_design_screenshot", "finalize_design_frame"];
|
|
7
7
|
type BridgeMethod = (typeof BRIDGE_METHODS)[number];
|
|
8
8
|
interface BridgeRequest {
|
|
9
9
|
id: string;
|