{"_id":"@dankinsoid/claude-talk-to-figma-mcp","_rev":"15-8f124da887c4658d1df842e78fad8549","name":"@dankinsoid/claude-talk-to-figma-mcp","dist-tags":{"latest":"0.3.20"},"versions":{"0.3.6":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.6","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.6","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"ae4f144b5afc10dcc0c4aef0939c2f7708ed2834","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.6.tgz","fileCount":9,"integrity":"sha512-K9DDWQPkQ5ZiNz/SlWJVGkkJeQ+zg0C19H/2bTdN9ObKgcm67C3helzhCQ10uoSBaHXeI41dshMVWguhhBj1SQ==","signatures":[{"sig":"MEQCIBe/4Zyu6gAcnG6rvkdnMyKUgMSUtoFrqgBF0D2ps3spAiAE/XgledXJpwIcHtbOJSFDfAhZxf0nQJDLUql475w7/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":557231},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"fbd03bf3d8504a3b9ba9ecc074ae3509cd56b0ac","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.6_1781028224324_0.805963420680835","host":"s3://npm-registry-packages-npm-production"}},"0.3.7":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.7","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.7","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"3f7d41b0c7b22b46d8c5ad77b360c36e5df3564b","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.7.tgz","fileCount":9,"integrity":"sha512-03cTlFiPQuc5TUP08wjwW3VkvuDx+S8kmvxKv3C0pSYpWYSfGe6IeR/EUgT3p40cwqB9H6zqbDw0g1JFNzad0A==","signatures":[{"sig":"MEUCIQDyPU9BBJQ4lGE6zVblcqMqqv3RBsLlI0rRv/Y6cslJegIgXYB+9SEyLtvr2mq734c+IRlYKSugPCqQquXOEI6AWBI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":568110},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"24cc55653061e150eb73500fa301c848747fc5f9","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.7_1781029357263_0.12890334034756412","host":"s3://npm-registry-packages-npm-production"}},"0.3.8":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.8","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.8","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"bb3f5f700445f0bf5da2d51e3fadf0e5971b685d","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.8.tgz","fileCount":9,"integrity":"sha512-DxpQ1ni9CXlXncXij3gKDyajDak3EHXoLgiUaSL43sVD4jd1c27waDlvmFbAu6YnuVx2JFrd079vrKSh2QxPWg==","signatures":[{"sig":"MEUCIQCyrWMeykwf3i1xvfUMh8cEYiT0W8fZJ8o8wvvlNsgm4wIgeLoFuGMNwpjXc+0zcAJdn63wvO8ylwgDosFVS0p69Y8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":695367},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"77189ad3e1267fe0af8e33792146ed4f080b9852","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket.ts","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","ts-morph":"^28.0.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0","@figma/plugin-typings":"^1.128.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.8_1781032543211_0.886742746308018","host":"s3://npm-registry-packages-npm-production"}},"0.3.9":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.9","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.9","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"3d540fe62b42ecac92892660b4194b889caa44f3","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.9.tgz","fileCount":9,"integrity":"sha512-oaNcSjwbIIKtS0y47khww2Ae0X+ur4Ndli9DTz1fJFkrJq3yn8e3QINrPiz7shC6FdwxOFWgpam117FFcTkB7A==","signatures":[{"sig":"MEQCICj9QNEjOcs/Q0HcLMfsjJNOsXefRnhoHyRLvqZCT8DBAiBLbBOpbNqiyVz9gZL1xy1lkEzQfyLqUS6bhFae6t2DQA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":915220},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"224865f57c48f36ccc97548c92b69447a553ef48","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket.ts","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","ts-morph":"^28.0.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0","@figma/plugin-typings":"^1.128.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.9_1781040706534_0.7703110112290552","host":"s3://npm-registry-packages-npm-production"}},"0.3.10":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.10","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.10","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"f499fafb993de6ad957fcbcb82df23e957167859","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.10.tgz","fileCount":9,"integrity":"sha512-tAHUHwriozYx/Wvvr0PtBWd9AcWO2M1M/y/xoq3iWJnpx+bslfUQFJoZJcKreZmhgOPhGWzScuOqni2st9Akkg==","signatures":[{"sig":"MEYCIQCPabqIMtzLW0o6o39tQzuhDX1xd0285hVZdEXTqkiVJgIhAKplCwUjv5PsYmZjVM9mdstwy5ROCO87s9Mj6HicISYF","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":924433},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"7296ac4b0286dd119275f6047b153d4116636d15","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket.ts","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","ts-morph":"^28.0.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0","@figma/plugin-typings":"^1.128.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.10_1781042515224_0.20891131966835963","host":"s3://npm-registry-packages-npm-production"}},"0.3.11":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.11","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.11","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"4ade28003e917c6026c42834c6b76ed2c94cb51e","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.11.tgz","fileCount":9,"integrity":"sha512-Bbja42ZyHcS07Zs+PDlAUbjyTzPMm8Fc7dRElliUYxrgtIyA+0JPEuAVfXobP3O9mHqOHHw23aU1yA5Zrsfeew==","signatures":[{"sig":"MEUCIQC1DZ7JnCuuZbxcz/iNPyH0OmMiV+xYemwL8Y/Pmw/04gIgbeN03a3i6WBCFlmnewP2Z4XO5L2iXbCzhWcBCM8m3dw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":927447},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"2a37477369228040472966034217d9d67b18bef2","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket.ts","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","ts-morph":"^28.0.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0","@figma/plugin-typings":"^1.128.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.11_1781046459417_0.84729982967118","host":"s3://npm-registry-packages-npm-production"}},"0.3.12":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.12","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.12","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"62a80f8e27058c01090ce754c43972f8b8139fe9","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.12.tgz","fileCount":9,"integrity":"sha512-cmyqA7ZYKtnNlEIUAR8vdISPol5UnSf4JdaKo/CSMnwtocDdvVtbNSckhKWGUSgGljf9Ge7+ywclIDXVJukt/g==","signatures":[{"sig":"MEQCID4+u7NYbsNPxJo7HxXlwB3HnbfgYmgh6Tzhwu/OCXbJAiBuI8H0nXpCP/YCUOl15MbwTEuyzv5VzNkw847C2fn7Gw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":934233},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"c783c4b23ec74fb0d1136661be69334edb2116a6","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket.ts","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","ts-morph":"^28.0.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0","@figma/plugin-typings":"^1.128.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.12_1781089781711_0.04970755573005747","host":"s3://npm-registry-packages-npm-production"}},"0.3.13":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.13","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.13","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"d4d77a1ff440ab473c87d124f32e8d92f1208d33","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.13.tgz","fileCount":9,"integrity":"sha512-L3GpRjYbJW1PBSx95DxA3HcLE25tV63il18pcBEUwPDr2gSA9lTFbrk5KDVle637hg0lef0EhFZ1kPtsVZZoIQ==","signatures":[{"sig":"MEUCIQDUD3MHU28SC22OLw5yQoyGoo1jvqt5t0zociqtaaPsQAIgTAmBMIMiXJ4KUqcyjXlhKVjeqYI/wookbItZrNAvLXY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":934233},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"1163a429bb0049971a4f3fe45d1e5dd18cea0e5c","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket.ts","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","ts-morph":"^28.0.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0","@figma/plugin-typings":"^1.128.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.13_1781090614088_0.5929855753180635","host":"s3://npm-registry-packages-npm-production"}},"0.3.14":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.14","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.14","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"0f496b4e4580027d6585df12ccd3d67fea148804","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.14.tgz","fileCount":9,"integrity":"sha512-QuOVRoa90q/tFlCUZoe2k38W7JCGWIB9poPvukdm+PLMq9bUIT21ZLaWTDrtUMQl5ZPsAd2a5ILmRklD6gBQfA==","signatures":[{"sig":"MEUCID1MbME4h95j7jVdNVugK7lHgIkYwRYTIG006XcFdQGwAiEAs8U1yc5JvFLVjK3ABs/eglOhx9ziLuAe5pfm/gpwex8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":943291},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"176c42241c22cfb150f35b059d5ccb3db24f42d9","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket.ts","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","ts-morph":"^28.0.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0","@figma/plugin-typings":"^1.128.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.14_1781091278965_0.03606794632959098","host":"s3://npm-registry-packages-npm-production"}},"0.3.15":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.15","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.15","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"9df92dfbdcc592f4963d43c075c422c6b08762b5","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.15.tgz","fileCount":9,"integrity":"sha512-mppCPswby86FF7baH54shSK19F1MDtispUx9fahI2QfgFXZdKploHV3RJyeVKnLbMJahC+P6NiBWNv8Tb1qlJg==","signatures":[{"sig":"MEQCIGRuyLQ5OUcrpFOG5Vtoo+D8hc2Eo1OJYbz2ouexcMh5AiArE5Hcq43TRIeVp6AGWpYGkxQ6XqMNTBOhSMo1pFcDMw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":946858},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"826a2cc08663c91695620a8f144e2f6dc0d8c99e","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket.ts","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","ts-morph":"^28.0.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0","@figma/plugin-typings":"^1.128.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.15_1781092236532_0.7115572857639898","host":"s3://npm-registry-packages-npm-production"}},"0.3.16":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.16","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.16","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"9c8dca147e4fb3ea0193a593743fae9c7ebfd55d","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.16.tgz","fileCount":9,"integrity":"sha512-ICU+hja6bn70XPPj6D9ziFWfQBngESbfls9681QGT0q9ExxafXCRsnDUDK8ntqEnluXhJ/SFWeU6W9RMnecftw==","signatures":[{"sig":"MEQCIGyhruXvQ8ylZD7G7BxbEnaCYmdp/nvY2WWmgr+xPOyOAiA3uBxCXZXbIrkgSnoCQlcg2mdF2/118EteH6AD0wKFgA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":967297},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"e3b733b2f9616d5c2af105401938665f41ab7b13","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket.ts","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","ts-morph":"^28.0.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0","@figma/plugin-typings":"^1.128.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.16_1781110294022_0.9786655441416232","host":"s3://npm-registry-packages-npm-production"}},"0.3.17":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.17","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.17","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"469dfa0b8561a9a6a37f6f109fbbb2b6b7c4f32d","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.17.tgz","fileCount":9,"integrity":"sha512-N1Iw/vg4dbPyY8cdamBKWKHE0VBc8OE1xCxZNMfmuBB9qtFhb/gdTHXhrRXzgy6Fi/D3V5aoDTffSaNr9OOWRw==","signatures":[{"sig":"MEUCIE0cd8HuOOaavZu34/PVLM7YVVIKftmEsCoqXtLKlqgmAiEAjEz0POfFFok6Pwnohv804woILHvveZV9MxPxLqZtI3Q=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1021183},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"2b0fb1a02766daf23aba87ddf8fe379283a7b76f","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket-cli.ts","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","ts-morph":"^28.0.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0","@figma/plugin-typings":"^1.128.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.17_1781692794027_0.03693239297688922","host":"s3://npm-registry-packages-npm-production"}},"0.3.18":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.18","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.18","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"4a8055d6672c20d15555d1ab0a17a5776f8042cb","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.18.tgz","fileCount":9,"integrity":"sha512-J85oP4qEyGk6gtQNTkFoZRLO6HcKjApfMg445PC8acmULdMGENotO43sP9TURvR53NSXwyl3XbstqpD5yFl9rg==","signatures":[{"sig":"MEQCIDBG+lRFmoLR1a8v9MZ70BSq/w0/05D5xdEG8sGuboRbAiAHSpaWmvD+TMERsXMFW3/aTOmxqa+86uTqpTFK/uwCZA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1028397},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"b197e26afa8f715893b8dd0eb8f52e2bc343e4fb","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket-cli.ts","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","ts-morph":"^28.0.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0","@figma/plugin-typings":"^1.128.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.18_1781697197546_0.0695886018583689","host":"s3://npm-registry-packages-npm-production"}},"0.3.19":{"name":"@dankinsoid/claude-talk-to-figma-mcp","version":"0.3.19","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.19","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"dist":{"shasum":"9e7c8bd126604760fa1401122dc6ed65a1f81280","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.19.tgz","fileCount":9,"integrity":"sha512-6P8jLZYiWLEbx7otloglUilc+XNVHhL7us7GcJfE+IjOBgW78eb4Lhe4yPJwjD2ScN05JTifHJ456xumheSnIg==","signatures":[{"sig":"MEUCIHjSRo0mmuILK+UzdQDUhdPhoey6/VLdPVq5ER8ZmAqfAiEAmGtnQVH3AsM5WJ8yAw3PtazMZHYB7Bqu1zxbyCmLSoI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1044491},"main":"dist/server.js","type":"module","types":"./dist/server.d.ts","module":"dist/server.js","gitHead":"abc18e9261140febfac0aea560def376b07aa5d0","scripts":{"dev":"bun run build:watch","build":"tsup","setup":"./scripts/setup.sh","start":"bun run dist/server.js","socket":"bun run src/socket-cli.ts","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","pub:release":"npm publish","prepublishOnly":"bun run build"},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"_npmVersion":"11.12.1","description":"Claude Talk to Figma MCP","directories":{},"_nodeVersion":"25.9.0","dependencies":{"ws":"latest","zod":"3.22.4","uuid":"latest","@modelcontextprotocol/sdk":"1.13.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.4.0","ts-morph":"^28.0.0","bun-types":"^1.2.5","@types/bun":"latest","typescript":"^5.0.0","@figma/plugin-typings":"^1.128.0"},"_npmOperationalInternal":{"tmp":"tmp/claude-talk-to-figma-mcp_0.3.19_1781706748343_0.41326182602164563","host":"s3://npm-registry-packages-npm-production"}},"0.3.20":{"name":"@dankinsoid/claude-talk-to-figma-mcp","description":"Claude Talk to Figma MCP","version":"0.3.20","publishConfig":{"access":"public"},"module":"dist/server.js","main":"dist/server.js","bin":{"claude-talk-to-figma-mcp":"dist/server.js"},"type":"module","scripts":{"start":"bun run dist/server.js","socket":"bun run src/socket-cli.ts","setup":"./scripts/setup.sh","build":"tsup","gen:schema":"bun run scripts/gen-write-schema.ts","build:watch":"tsup --watch","dev":"bun run build:watch","prepublishOnly":"bun run build","pub:release":"npm publish"},"devDependencies":{"@figma/plugin-typings":"^1.128.0","@types/bun":"latest","bun-types":"^1.2.5","ts-morph":"^28.0.0","tsup":"^8.4.0","typescript":"^5.0.0"},"dependencies":{"@modelcontextprotocol/sdk":"1.13.1","uuid":"latest","ws":"latest","zod":"3.22.4"},"gitHead":"463c47f32252ae7ce01acd95f140b58b4c509dc7","types":"./dist/server.d.ts","_id":"@dankinsoid/claude-talk-to-figma-mcp@0.3.20","_nodeVersion":"25.9.0","_npmVersion":"11.12.1","dist":{"integrity":"sha512-arcBvkkIxmeY2Dtwo7Ma+453aAv96Z6miSgb/MmaHVQ3DS9UJp7RUKyBftN19uZ1pW6CeK6TI7f0Pkn+7FvU/A==","shasum":"1472ade3aa4511deb3158afea69307f2261e4901","tarball":"https://registry.npmjs.org/@dankinsoid/claude-talk-to-figma-mcp/-/claude-talk-to-figma-mcp-0.3.20.tgz","fileCount":9,"unpackedSize":1047607,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIGVgikCRwRHjmFlujxKNwZjpfXCyLt5kVpDSu7YAK51gAiAfNzKlvRQxXlV0bM6tCRfH8FyTfjC0FKPopVp4PW64LQ=="}]},"_npmUser":{"name":"dankinsoid","email":"voidilov@gmail.com"},"directories":{},"maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/claude-talk-to-figma-mcp_0.3.20_1781772291459_0.699842174779157"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-09T18:03:44.179Z","modified":"2026-06-18T08:44:51.757Z","0.3.6":"2026-06-09T18:03:44.502Z","0.3.7":"2026-06-09T18:22:37.473Z","0.3.8":"2026-06-09T19:15:43.435Z","0.3.9":"2026-06-09T21:31:46.741Z","0.3.10":"2026-06-09T22:01:55.439Z","0.3.11":"2026-06-09T23:07:39.612Z","0.3.12":"2026-06-10T11:09:41.920Z","0.3.13":"2026-06-10T11:23:34.292Z","0.3.14":"2026-06-10T11:34:39.172Z","0.3.15":"2026-06-10T11:50:36.742Z","0.3.16":"2026-06-10T16:51:34.196Z","0.3.17":"2026-06-17T10:39:54.189Z","0.3.18":"2026-06-17T11:53:17.742Z","0.3.19":"2026-06-17T14:32:28.551Z","0.3.20":"2026-06-18T08:44:51.650Z"},"description":"Claude Talk to Figma MCP","maintainers":[{"name":"dankinsoid","email":"voidilov@gmail.com"}],"readme":"# Talk to Figma MCP\n\nA Model Context Protocol (MCP) integration between an AI agent (Claude Code and other MCP clients) and Figma, letting the agent read and modify designs programmatically.\n\nhttps://github.com/user-attachments/assets/129a14d2-ed73-470f-9a4c-2240b2a4885c\n\n## Based on `grab/cursor-talk-to-figma-mcp`\n\nThis is a fork of [grab/cursor-talk-to-figma-mcp](https://github.com/grab/cursor-talk-to-figma-mcp) (itself based on the original by [sonnylazuardi](https://github.com/sonnylazuardi/cursor-talk-to-figma-mcp)). It has diverged substantially. The upstream worked, but in practice it was slow, expensive, and limited:\n\n- it fed the model **near-complete node JSON** for every read — thousands of tokens per node, with full geometry, paints and styles the agent rarely needed;\n- **search was rigid** — a couple of fixed scans (by type, by text node) that returned heavy results; anything beyond them meant dumping a whole subtree and scanning it by eye;\n- **editing was limited** to a handful of single-purpose setters.\n\nThis fork reworks the agent's interface around how an AI agent already works with a **codebase** — locate cheaply, read narrowly, edit surgically.\n\n**What's different:**\n\n- **Compact, zoomable hierarchy.** Reads return a minimal field set per node (id, name, type, color, box/auto-layout, text) instead of raw JSON, with a depth cap, drill-in stubs, and collapsing of icons and repeated component instances. A screen that was tens of thousands of tokens is now around ~5k.\n- **Powerful, flexible search, code-agent style.** In place of the old fixed scans, three composable tools: `glob_nodes` (the `ls -R`/glob, filter by type and name pattern), `grep_nodes` (regex over text content, the `grep`), and `query_nodes` (arbitrary predicates over node fields — fontSize, fills color, bound variables, key presence). They return flat, line-oriented `id:\"name\".TYPE` hits — addresses you feed straight into read/edit, without ever dumping the tree.\n- **A `Read` → `Edit` → `Write` model.** `read_node`, `edit_nodes` (one path-addressed property writer that replaced ~10 single-purpose setters), and `write_nodes` (create whole subtrees from JSON) mirror the file tools the agent is already trained on.\n- **Short node ids.** Long nested instance paths (`I8782:344721;3063:34762;…`) are replaced with short counters (`n0`, `n1`, …) in all compact output, resolved back server-side. Cuts tokens and keeps the tree readable; every tool accepts short or canonical ids.\n- **Bug fixes.** Notably, the original could corrupt text colors: the reaction-highlight animation didn't always restore the original fill. Fixed.\n- **Small UX touches.** The plugin's channel window collapses to a compact widget so it stays out of the way, and the agent can discover the active channel automatically (`get_active_channel`) instead of you pasting it.\n\n## Project Structure\n\n- `src/talk_to_figma_mcp/` - TypeScript MCP server for Figma integration\n- `src/claude_mcp_plugin/` - Figma plugin for communicating with the agent\n- `src/socket.ts` - WebSocket server that relays messages between the MCP server and the Figma plugin\n\n## How to use\n\n1. Install Bun if you haven't already:\n\n```bash\ncurl -fsSL https://bun.sh/install | bash\n```\n\n2. Run setup — this also installs the MCP config in your active project (`.cursor/mcp.json` and `.mcp.json`):\n\n```bash\nbun setup\n```\n\n3. Install the Figma plugin — see [Figma Plugin](#figma-plugin) below. (Install locally: this fork ships a modified plugin, so the upstream community listing won't include the changes above.)\n\n4. Run the plugin in Figma and press **Connect** — that's it. The WebSocket relay is hosted by the MCP server automatically when your agent starts it, so there's no terminal command to run.\n\n> Running the relay manually with `bun socket` is still supported (e.g. to share one relay across machines), but it's optional — the embedded relay binds port 3055 on first use and any extra agent or `bun socket` instance just connects to it.\n\n## Manual Setup and Installation\n\n### MCP Server\n\nAdd the server to your MCP config (`~/.cursor/mcp.json` for Cursor, `.mcp.json` for Claude Code):\n\n```json\n{\n  \"mcpServers\": {\n    \"TalkToFigma\": {\n      \"command\": \"bunx\",\n      \"args\": [\"@dankinsoid/claude-talk-to-figma-mcp@latest\"]\n    }\n  }\n}\n```\n\nOr via the Claude Code CLI:\n\n```bash\nclaude mcp add TalkToFigma -- bunx @dankinsoid/claude-talk-to-figma-mcp@latest\n```\n\n### WebSocket Server (optional)\n\nThe MCP server hosts the relay in-process, so you normally don't need this. Run it standalone only if you want a relay that outlives any single agent (e.g. shared across machines):\n\n```bash\nbun socket\n```\n\n### Figma Plugin\n\n1. In Figma, go to Plugins > Development > New Plugin\n2. Choose \"Link existing plugin\"\n3. Select `src/claude_mcp_plugin/manifest.json`\n4. The plugin is now available under your Figma development plugins\n\n## Windows + WSL Guide\n\n1. Install bun via PowerShell:\n\n```bash\npowershell -c \"irm bun.sh/install.ps1|iex\"\n```\n\n2. Uncomment the hostname `0.0.0.0` in `src/socket.ts`:\n\n```typescript\n// uncomment this to allow connections in windows wsl\nhostname: \"0.0.0.0\",\n```\n\n3. Start the websocket:\n\n```bash\nbun socket\n```\n\n## MCP Tools\n\nThe agent's workflow mirrors editing a codebase: **search** to locate nodes cheaply, **read** only what you need, then **edit/write**. Node ids are short counters (`n0`, `n1`, …) that flow between every tool; canonical Figma ids are accepted too.\n\n### Read\n\n- `read_node` — the `Read` tool for the canvas. Pass `nodeIds` (one or many), or omit to read the current selection. Returns the compact, low-token subtree of each node; `depth` controls how far children expand and deeper nodes become drill-in stubs. `raw:true` returns the full unfiltered JSON of a single node (all props, children stripped).\n\n### Search (locate before reading)\n\n- `glob_nodes` — flat type/name-glob index of a subtree, one node per line as `id:\"name\".TYPE @parent [x,y wxh]` (the `ls -R`/glob analog). Filter by `type` and a shell-style `name` glob; scope with `root`/`depth`/`within`.\n- `grep_nodes` — regex search over the text content of a subtree, line-oriented (the `grep` analog): `id:\"name\".TEXT @parent L<n>: <line>`. `mode` switches between content / nodes / count.\n- `query_nodes` — structural search by field predicates (`{path, op, value}`, AND-combined). Match any node-model field (fontSize, fills color, bound variables, …), including key presence via `exists`/`absent` — e.g. find fills *not* bound to a variable for a design-system audit.\n\n### Edit & Create\n\n- `edit_nodes` — the `Edit` tool for the node model. Pass `edits: [{nodeId, path, old?, new}]`. `path` addresses one field (`name`, `characters`, `x`, `fills[0].color`, `cornerRadius`, `layoutMode`, `paddingTop`, `itemSpacing`, …); `new` is the value (`#RRGGBB` → Figma rgb; objects/arrays allowed); optional `old` is a guard that rejects only a stale edit. Edits are independent and one call can touch many nodes — this is also how you bulk-replace text (one `{path:\"characters\"}` per node). Replaced the former single-purpose setters (`move_node`, `resize_node`, `set_text_content`, `set_padding`, `set_layout_mode`, …).\n- `write_nodes` — the `Write` tool. Create new nodes from `{type, ...props, children?}` specs; `children` builds a whole subtree in one call. Placement via `parentId`/`index`. `INSTANCE` needs `componentId`/`componentKey`.\n- `get_write_schema` — the write-side schema for a node type: the fields `write_nodes` accepts when creating it (with no `type`, lists the creatable types). Call it before building a node.\n- `delete_nodes` — delete one or more nodes (chunked with progress for large batches).\n- `clone_node` — copy an existing node with an optional position offset.\n\n### Selection & Channel\n\n- `get_selection` - the current selection\n- `set_selections` / `set_focus` - select nodes (and scroll the viewport to them)\n- `get_active_channel` - the channel the plugin currently has open (so the agent can join without you pasting it)\n- `join_channel` - join a channel to communicate with the plugin\n\n### Components & Styles\n\n- `get_styles` - local styles\n- `get_local_components` - local components\n- `get_instance_overrides` / `set_instance_overrides` - extract overrides from one instance and apply them to others\n\n### Annotations\n\n- `get_annotations` - all annotations in the document or a node\n- `set_annotations` - create/update one or more native annotations (markdown, batched)\n\n### Prototyping & Connections\n\n- `get_reactions` - prototype reactions from nodes\n- `set_default_connector` - set a copied FigJam connector as the default style (required before creating connections)\n- `create_connections` - FigJam connector lines between nodes\n\n### Export\n\n- `export_node_as_image` - export a node (PNG, JPG, SVG, PDF)\n\n### MCP Prompts\n\nHelper prompts that guide the agent through common tasks:\n\n- `read_design_strategy` - the explore→modify ladder (glob/grep/query → read_node → edit_nodes)\n- `design_strategy` - best practices for creating designs\n- `text_replacement_strategy` - locating and bulk-replacing text, with chunked visual verification\n- `annotation_conversion_strategy` - converting manual annotations to native Figma annotations\n- `swap_overrides_instances` - transferring overrides between component instances\n- `reaction_to_connector_strategy` - turning prototype reactions into connector lines\n\n## Best Practices\n\n1. Join a channel before sending commands (`get_active_channel` → `join_channel`).\n2. **Locate before reading.** Start with `glob_nodes` (e.g. `{type:[\"SECTION\",\"FRAME\"]}` for a screen map), `grep_nodes`, or `query_nodes` to get ids — don't dump a whole subtree to find something.\n3. **Read narrowly.** `read_node` only the ids you'll act on; raise `depth` or re-request a stub id to zoom. Width of search is cheap (ids only); depth of detail is not.\n4. **Edit surgically.** Use `edit_nodes` with `old` as a guard against stale reads; batch many nodes in one call. Create subtrees with `write_nodes`.\n5. For large designs: narrow with `root`/`depth`/`within` and cap with `maxMatches` on the search tools; verify changes with targeted `export_node_as_image`.\n6. Prefer component instances for consistency; all commands can throw, so handle errors.\n\n## Development\n\n```bash\nbun install        # install dependencies\nbun run build      # build the MCP server (tsup → dist/)\nbun run dev        # build in watch mode\n```\n\nTo run the server from your local checkout, point the MCP config at it:\n\n```json\n{\n  \"mcpServers\": {\n    \"TalkToFigma\": {\n      \"command\": \"bun\",\n      \"args\": [\"/path-to-repo/src/talk_to_figma_mcp/server.ts\"]\n    }\n  }\n}\n```\n\nThe Figma plugin is **not** bundled — edit `src/claude_mcp_plugin/code.js` and `ui.html` directly.\n\n## Credits\n\n- Upstream: [grab/cursor-talk-to-figma-mcp](https://github.com/grab/cursor-talk-to-figma-mcp); original by [sonnylazuardi](https://github.com/sonnylazuardi/cursor-talk-to-figma-mcp).\n- Bulk text replacement and instance-override propagation features by [@dusskapark](https://github.com/dusskapark) ([text demo](https://www.youtube.com/watch?v=j05gGT3xfCs), [overrides demo](https://youtu.be/uvuT8LByroI)).\n\n## License\n\nMIT\n","readmeFilename":"README.md"}