A side-by-side look at the Primitiv and Figma MCP Rust MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose Primitiv for finance & fintech work as a local process; choose Figma MCP Rust for finance & fintech as a local process. You can also run both side by side in one mcpServers block.
get_design_context, get_token, get_component.get_document, get_pages, get_metadata.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Finance & Fintech | Finance & Fintech |
| Quality signal | 65/100 · Great | 65/100 · Great |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | No auth required | Not declared |
| Pricing | Free | Not declared |
| Required env vars | None listed | None listed |
| Verified owner | Community listing | Community listing |
| GitHub stars | 21 | 68 |
| Directory activity | 4 views 0 installs 0 upvotes | 3 views 0 installs 0 upvotes |
| Tools | 6 | 73 |
| Full listing | View Primitiv | View Figma MCP Rust |
get_design_contextGet tokens, components, conflicts, inferred rules, and violation count. Default (no category) returns a summary with counts. Pass `category: "all" \get_tokenLook up a specific token by name. Pass `category` to narrow search (e.g. `"colors"`, `"spacing"`, `"borderRadius"`); aliases like `"radius"` / `"z-index"` are normalized.get_componentLook up a specific component by name. Returns props, variants, source provenance, and `kind` — `component`, `screen`, `provider`, `icon`, or `other`, so agents reuse real UI and skip screens/providers/icons.get_conflictsGet conflicts between sources. Pass `type: "all" \get_inferred_rulesGet the design rules Primitiv has extracted from your codebase patterns. Pass `category` to filter.get_violationsList token-misuse violations — hardcoded literals in source that bypass the contract, with a suggested token when one fits. Pass `category: "all" \get_documentGet the full node tree of the current page (not the whole file — only the active page). Returns all nodes recursively and can be very large. Prefer get_design_context for exploration or when token efficiency matters.get_pagesList all pages in the document with their IDs and names. Lightweight alternative to get_document.get_metadataGet metadata about the current Figma document: file name, pages, current page.get_selectionGet the nodes currently selected in Figma. Returns an empty array if nothing is selected. Use get_design_context or get_node to retrieve deeper detail about a specific node by ID.get_nodeGet a single node by ID with full detail. Use get_nodes_info to fetch multiple nodes in one round-trip instead of calling this repeatedly. Node ID must be colon format e.g. '4029:12345', never hyphens.get_nodes_infoGet full details for multiple nodes by ID in one round-trip. Prefer this over calling get_node repeatedly when you need several nodes.get_design_contextGet a depth-limited, token-efficient tree of the current selection or page. Use this instead of get_document when exploring large files. Supports detail levels (minimal/compact/full) and dedupe_components for pages heavy with repeated component instances.search_nodesSearch for nodes by name substring and/or type within a subtree. Use this when you know (part of) the node name. Use scan_nodes_by_types when you want all nodes of a type regardless of name.scan_text_nodesScan all TEXT nodes in a subtree and return their content. Shorthand for scan_nodes_by_types with ['TEXT'] — use when you only need text copy from a component or frame.scan_nodes_by_typesFind all nodes of specific types in a subtree, regardless of name. Use search_nodes instead when you need to filter by name.get_reactionsGet the prototype reactions defined on a node. Returns an array of reaction objects — each has a trigger (e.g. ON_CLICK, ON_HOVER, AFTER_TIMEOUT) and an actions array (navigate to node, open URL, go back, etc.). Use set_reactions to add or replace reactions, remove_reactions to delete them.get_viewportGet the current Figma viewport: scroll center, zoom level, and visible bounds.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"ai-by-design-primitiv": {
"command": "npx",
"args": [
"-y",
"@ai-by-design/primitiv"
]
}
}
}
{
"mcpServers": {
"figma-mcp-rust": {
"command": "npx",
"args": [
"-y",
"@alvinindra/figma-mcp-rust@latest"
]
}
}
}