{"_id":"easyeda-copilot-mcp","_rev":"14-77d7d83fe76686e72b44fbe717ece8f4","name":"easyeda-copilot-mcp","dist-tags":{"latest":"1.3.0"},"versions":{"1.0.0":{"name":"easyeda-copilot-mcp","version":"1.0.0","_id":"easyeda-copilot-mcp@1.0.0","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"ce6f9dd9925898aeb4142650e3ca769170e16d8a","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.0.0.tgz","fileCount":4,"integrity":"sha512-BKo0Fq3P1ji5XuvhtHliVZrLh4ezusDPgf6vryxKFwkdf47FwVD2HCjLiIKU4C6+QIbIvJ1FDTyxZuKqtys6tg==","signatures":[{"sig":"MEUCIEMQuEWPyGRsIm6Q6vzdYKSs4AF3E/c+ORBWHR6R/w5LAiEAqY6zBFW8GuAHRfby6gpgywTMYJF+9gXcRcoPUJ66HcM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":711139},"type":"module","engines":{"node":">=20"},"gitHead":"357f9464408dec593688cebb53e99274508edf27","scripts":{"build":"tsup","clean":"rimraf dist","start":"node dist/index.js","prepack":"npm run build"},"_npmUser":{"name":"biosshot","email":"kirillkosenko3@gmail.com"},"repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@copilot/shared":"file:../packages/shared"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.0.0_1779893502674_0.18616622198034638","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"easyeda-copilot-mcp","version":"1.0.1","_id":"easyeda-copilot-mcp@1.0.1","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"8dc65ff16f6db796148ac55b8a792de557618c57","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.0.1.tgz","fileCount":4,"integrity":"sha512-E3dOBnNBAEL3q7DERcX6N8oe5s4MPRFbqQmUeoONgX0ngiAY3YC+jsKcZXkXRKgzdQcWvusSkFgM4YjSPxK+bg==","signatures":[{"sig":"MEQCID7XSYYqCIUea9K0wtj2WtFmcfrnp3awTgl+faX0a2EOAiBBTfk4ayYpu9H0LEd3FNF3/I5yeUwxNDy+lshRkmMUng==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":711159},"type":"module","engines":{"node":">=20"},"gitHead":"357f9464408dec593688cebb53e99274508edf27","scripts":{"build":"tsup","clean":"rimraf dist","start":"node dist/index.js","prepack":"npm run build"},"_npmUser":{"name":"biosshot","email":"kirillkosenko3@gmail.com"},"repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@copilot/shared":"file:../packages/shared"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.0.1_1779894515804_0.12174440975582179","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"easyeda-copilot-mcp","version":"1.0.2","_id":"easyeda-copilot-mcp@1.0.2","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"aa695289d83b26547294a7cd8e78132b8ef6197c","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.0.2.tgz","fileCount":4,"integrity":"sha512-INRXIJysQggzYu6SpCMZmd2tKm2Jhg6kjPz2MAHt3nCiJYdhUNYTfAUtqPvJ9bNiKxSV77Ib9VbJ+q8JIsFeBw==","signatures":[{"sig":"MEUCIQCJfF5SAxnWmxUDK1Ih9K4S7eewLd2SMju9h8kVI2HqKwIgdJb5STkvpitD1s+/Zyfp8TGO5Exdz4GxNF8cOhIzje4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":711589},"type":"module","engines":{"node":">=20"},"gitHead":"357f9464408dec593688cebb53e99274508edf27","scripts":{"build":"tsup","clean":"rimraf dist","start":"node dist/index.js","prepack":"npm run build"},"_npmUser":{"name":"biosshot","email":"kirillkosenko3@gmail.com"},"repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@copilot/shared":"file:../packages/shared"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.0.2_1779895221937_0.37434962289217455","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"easyeda-copilot-mcp","version":"1.0.3","license":"MIT","_id":"easyeda-copilot-mcp@1.0.3","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"f118d5a0bda7342fe8cd1220c4df3adb5157a86d","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.0.3.tgz","fileCount":4,"integrity":"sha512-MDDvXLMd1BHyazdeGd0aKiT6w3PD+MFPD10HF263NCJp+RU3FFZG9UCd4au3f1DSy/Cn1R3jFO3Rh8O2S2SDCw==","signatures":[{"sig":"MEYCIQCgj9Y1SrAHSww8vfdYyTFFf6mVyCXNPBKF4FZWBkbsBAIhALZrrKDrF4s8rQk9BSG9RhrVcLr+maEDrvJOjURBAPje","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":712471},"type":"module","engines":{"node":">=20"},"gitHead":"e893ca0dbd00cfa4ad2817eba05a5c55925a6a48","scripts":{"build":"tsup","clean":"rimraf dist","start":"node dist/index.js","prepack":"npm run build"},"_npmUser":{"name":"biosshot","email":"kirillkosenko3@gmail.com"},"repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@copilot/shared":"file:../packages/shared"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.0.3_1779965923028_0.46532006251677105","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"easyeda-copilot-mcp","version":"1.0.4","license":"MIT","_id":"easyeda-copilot-mcp@1.0.4","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"457733acb4b3bc983df609b89873a573c7896f1d","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.0.4.tgz","fileCount":21,"integrity":"sha512-C6yrRgFW9gFuM1DArxl8ZxZZId9uInVFz0hwa4zEz8Gidd3E2uPmjXgqC12em4dywhATuD0Vu/hs9JLvh5wN9Q==","signatures":[{"sig":"MEQCIEfEiDtKD1uD0281Pl853wTPPVvhlH+6W60+85xac7UUAiAjc6URsc6X9RIbmO+swI53Gam+UcICGxddROtlgLR7+w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1057470},"type":"module","engines":{"node":">=20"},"gitHead":"db84d8b20ea3c80bdb1a7b60ce7f5bf62ae35c12","scripts":{"build":"tsup","clean":"rimraf dist","start":"node dist/index.js","prepack":"npm run build"},"_npmUser":{"name":"biosshot","email":"kirillkosenko3@gmail.com"},"repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","sharp":"^0.35.0","find-up":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@types/sharp":"^0.31.1","@copilot/shared":"file:../packages/shared"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.0.4_1783699598414_0.2480514874200186","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"easyeda-copilot-mcp","version":"1.0.5","license":"MIT","_id":"easyeda-copilot-mcp@1.0.5","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"7fe400eefcceb31f108b2ed07f4453ee99195168","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.0.5.tgz","fileCount":21,"integrity":"sha512-+BAHFi6G3K7IFuZVQ3JhEE6Y4hOSBgvF5X/ObLCaYZ6v6tcsa7Scvt0LN1XOEAQHSz1WzaZsRp2UYevYO+BsSg==","signatures":[{"sig":"MEYCIQDcT6Gr/w3S5tHOkwBDOh9sI+r7IGM/DRS1t50jU5UOwwIhANScTtTCba9PGF970a0Sp24+aVtr1nS9oB8/+WziLbCK","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1057453},"type":"module","engines":{"node":">=20"},"gitHead":"7af5b8f204d312f3f1cb688a3cd205d281f69fd5","scripts":{"build":"tsup","clean":"rimraf dist","start":"node dist/index.js","prepack":"npm run build"},"_npmUser":{"name":"biosshot","email":"kirillkosenko3@gmail.com"},"repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","sharp":"^0.35.0","find-up":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@types/sharp":"^0.31.1","@copilot/shared":"file:../packages/shared"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.0.5_1783702616492_0.07753966688604086","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"easyeda-copilot-mcp","version":"1.0.6","license":"MIT","_id":"easyeda-copilot-mcp@1.0.6","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"e11e473b382031e033c69f3cbc4144ff1458cb49","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.0.6.tgz","fileCount":23,"integrity":"sha512-e6SqGyAlGNiY3ofz4wHmGwdIPPYUoVzCkzso3s7DFyjLroddJEHdz5IbYGjPnv3VzCmCLJH5CqT9N6EeYZb1UQ==","signatures":[{"sig":"MEUCIF8igfwI3nfyM+/vh5tO6Cn33kS0ORko/CQRxWNx9PqIAiEAm14wb112RjH1Ht7v0GCYCE+ijkSL0W3SMRYp/iS23i0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2534010},"type":"module","engines":{"node":">=20"},"gitHead":"7af5b8f204d312f3f1cb688a3cd205d281f69fd5","scripts":{"build":"tsup","clean":"rimraf dist","start":"node dist/index.js","prepack":"npm run build"},"_npmUser":{"name":"biosshot","email":"kirillkosenko3@gmail.com"},"repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","sharp":"^0.35.0","find-up":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@types/sharp":"^0.31.1","@copilot/shared":"file:../packages/shared"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.0.6_1783702853000_0.6738833519744203","host":"s3://npm-registry-packages-npm-production"}},"1.1.5":{"name":"easyeda-copilot-mcp","version":"1.1.5","license":"MIT","_id":"easyeda-copilot-mcp@1.1.5","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"b59de4cd352e537c8c536ac2ea3f168a228e0b84","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.1.5.tgz","fileCount":23,"integrity":"sha512-EOeH4ng5Iabm/LdQVqnBsrNDGMTfN4JA7Rr4uv+jM8TeH2C70sObloEoKYqfGKzsM4TxVa9+JCHtuJBdXSawmg==","signatures":[{"sig":"MEUCIDebwi6x5pParLwssVDsVrT7KexXewH6ZUe5ZfPOZoLUAiEAyMeZ2UWr8FWrw9902ItgBQJtvlqNBgMJEofFIWz1wtU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2543679},"type":"module","engines":{"node":">=20"},"gitHead":"dff60a190283ae36108997dcabfef5b18b7a2108","scripts":{"build":"tsup","clean":"rimraf dist","start":"node dist/index.js","prepack":"npm run build"},"_npmUser":{"name":"biosshot","email":"kirillkosenko3@gmail.com"},"repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.6.1","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.11.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","sharp":"^0.35.0","find-up":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@types/sharp":"^0.31.1","@copilot/shared":"file:../packages/shared"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.1.5_1784455512743_0.9186436307019383","host":"s3://npm-registry-packages-npm-production"}},"1.1.6":{"name":"easyeda-copilot-mcp","version":"1.1.6","license":"MIT","_id":"easyeda-copilot-mcp@1.1.6","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"51fdfae9a732edafd0bb83b79a91079447244b18","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.1.6.tgz","fileCount":25,"integrity":"sha512-YA+yVh2+2Z/513F936FwQowvyXKpY27h3v7bLtNFh98JODV4vbmDmKAj4dZLQJ3HF8Usv+TOZ2+VsMkg+E/u3A==","signatures":[{"sig":"MEQCIGYqS9tUXCevCqD/lVd8OSAAfTM2BXoxFRDd3LTdkUHtAiAHL8cRv0KCx0+BcJbw/JIaKMopaVNlTB9yDyqO7JDK/g==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/easyeda-copilot-mcp@1.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2543007},"type":"module","engines":{"node":">=20"},"gitHead":"2a4e3b14e4cf8c67d8701c0f11592aaf8aaa255d","mcpName":"io.github.biosshot/easyeda-copilot","scripts":{"build":"tsup","check":"npm run typecheck && npm run build","clean":"rimraf dist","start":"node dist/index.js","inspect":"npm run build && npx @modelcontextprotocol/inspector node dist/index.js","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e1681f40-53e5-46f9-adf1-d552eee0b482"}},"repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","sharp":"^0.35.0","find-up":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@types/sharp":"^0.31.1","@copilot/shared":"file:../packages/shared"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.1.6_1785852661927_0.7818632143121858","host":"s3://npm-registry-packages-npm-production"}},"1.1.7":{"name":"easyeda-copilot-mcp","version":"1.1.7","license":"MIT","_id":"easyeda-copilot-mcp@1.1.7","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"a609d00254f4f75b385fa69c92862fd9abdcd689","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.1.7.tgz","fileCount":25,"integrity":"sha512-/lKYcAnZdul4MqzTgAacs8QAojlDuu1/F2J2AiBlpSLaMeIGvBDi7Pi5F8dKxGuQt1VA8nruIje8yZbR3af/QQ==","signatures":[{"sig":"MEQCIEVl9j7vP2yHc7ipdKiCQghmEAwypIoW7Q1w+iH11DANAiAU2FS8KUNML0IrYY7+O7FegWDbx95ShdcWK7V4U46/sg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/easyeda-copilot-mcp@1.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":2548592},"type":"module","engines":{"node":">=20"},"gitHead":"730861d66562ea9a191d16e2086075ccaa0f19f0","mcpName":"io.github.biosshot/easyeda-copilot","scripts":{"build":"tsup","check":"npm run typecheck && npm run build","clean":"rimraf dist","start":"node dist/index.js","inspect":"npm run build && npx @modelcontextprotocol/inspector node dist/index.js","prepack":"npm run build","typecheck":"tsc --noEmit"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e1681f40-53e5-46f9-adf1-d552eee0b482"}},"repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.16.0","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.18.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","sharp":"^0.35.0","find-up":"^5.0.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@types/sharp":"^0.31.1","@copilot/shared":"file:../packages/shared"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.1.7_1786270028122_0.7909608638076482","host":"s3://npm-registry-packages-npm-production"}},"1.1.8":{"name":"easyeda-copilot-mcp","version":"1.1.8","license":"MIT","_id":"easyeda-copilot-mcp@1.1.8","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"8508de44a4bdccbd975bc1be675b749ef0fd8497","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.1.8.tgz","fileCount":36,"integrity":"sha512-FZkatOiywdyMkyA4HWyDuXxJD29AXeZNOQtMHo/urHHHB8EJEnkEHE+4ndbd/IfaJmujtFQD8YXbTQlyJeJZbw==","signatures":[{"sig":"MEUCICyTgZ5efhY09Q6klC9h+PjNFPDJIf5A5W38qsxeqjA4AiEA8e3w78j+A7uT9xW9/Ml4tvS7QxtkQ+VP78nRYtRa/zM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/easyeda-copilot-mcp@1.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":996686},"type":"module","engines":{"node":">=20"},"gitHead":"2b4b6326fcd005b449aa42520be2ced012161a02","mcpName":"io.github.biosshot/easyeda-copilot","scripts":{"build":"tsup","check":"npm run typecheck && npm run build && node scripts/check-routing-adapter.mjs && node scripts/check-operation-manager.mjs && node scripts/check-project-tools.mjs","clean":"rimraf dist","start":"node dist/index.js","inspect":"npm run build && npx @modelcontextprotocol/inspector node dist/index.js","prepack":"npm run build","typecheck":"tsc --noEmit","test:projects":"npm run build && node scripts/check-project-tools.mjs","test:operations":"npm run build && node scripts/check-operation-manager.mjs","test:routing-adapter":"npm run build && node scripts/check-routing-adapter.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e1681f40-53e5-46f9-adf1-d552eee0b482"}},"repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.17.0","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.19.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","sharp":"^0.35.0","find-up":"^5.0.0","eda-copilot-router":"0.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@types/sharp":"^0.31.1","@copilot/shared":"file:../packages/shared"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.1.8_1788277387437_0.09284391064631414","host":"s3://npm-registry-packages-npm-production"}},"1.1.9":{"name":"easyeda-copilot-mcp","version":"1.1.9","license":"MIT","_id":"easyeda-copilot-mcp@1.1.9","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"dd0281d4cccc39d118ed60d558ea1a56eb87f79a","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.1.9.tgz","fileCount":36,"integrity":"sha512-IEdbCOhuFtdS0nH2g69zxNF9mDMi75uSgPvu8KlJ3dn+fIVCI72uMIaHRJVUnPhkicatGxs0J/VmyiOX24IzDA==","signatures":[{"sig":"MEUCIA/mWuRjNg43oMOmUxYfXKWurBr0kAx3Rr7+3IROOhCyAiEAgQuNqyyUOgB5W9FkynMNVHhMohzkFi4rkZ5e4xqBuII=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/easyeda-copilot-mcp@1.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":996761},"type":"module","engines":{"node":">=20"},"gitHead":"3045ee5c93653bfd89a0d26fc60a6a14b22f4d6b","mcpName":"io.github.biosshot/easyeda-copilot","scripts":{"build":"tsup","check":"npm run typecheck && npm run build && node scripts/check-routing-adapter.mjs && node scripts/check-operation-manager.mjs && node scripts/check-project-tools.mjs","clean":"rimraf dist","start":"node dist/index.js","inspect":"npm run build && npx @modelcontextprotocol/inspector node dist/index.js","prepack":"npm run build","typecheck":"tsc --noEmit","test:projects":"npm run build && node scripts/check-project-tools.mjs","test:operations":"npm run build && node scripts/check-operation-manager.mjs","test:routing-adapter":"npm run build && node scripts/check-routing-adapter.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e1681f40-53e5-46f9-adf1-d552eee0b482"}},"repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","sharp":"^0.35.0","find-up":"^5.0.0","eda-copilot-router":"0.3.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@types/sharp":"^0.31.1","@copilot/shared":"file:../packages/shared"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.1.9_1788878327206_0.2252170112255294","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"easyeda-copilot-mcp","version":"1.2.0","license":"MIT","_id":"easyeda-copilot-mcp@1.2.0","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"homepage":"https://github.com/biosshot/easyeda-copilot#readme","bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"bin":{"easyeda-copilot-mcp":"dist/index.js"},"dist":{"shasum":"f5de11ad3e04536c92d87da074daddc8450060e5","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.2.0.tgz","fileCount":506,"integrity":"sha512-ADBN4GYLKuBfIYvwotUEXZxQCaoQ/t7VwJfAhgCMrFyx0NCukLT1fsixvDh/Y4m6Nq1rRDFyupEWKlWb7syKOg==","signatures":[{"sig":"MEUCIQC0R/l+htegsEGuFH97VKdOIL6KoKuR4V+Pj2KWaIdFwAIgG5sAyOGOznWgOcxa3/asqAVYe09XJGgM8dtMlG1geHk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBPA4epr2dahe68bJeQg9RkUEcZj2/MEr0f7VyZw8ssEAiBO37XvhldJl6PGITc1SY2B2uNCxMnerU7lykH0LbIaYA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/easyeda-copilot-mcp@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4630295},"type":"module","_from":"file:/home/runner/work/easyeda-copilot/easyeda-copilot/artifacts/easyeda-copilot-mcp-1.2.0.tgz","engines":{"node":">=20.19"},"mcpName":"io.github.biosshot/easyeda-copilot","scripts":{"build":"tsup && node scripts/build-sdk.mjs","check":"npm run build && npm run typecheck && npm run test:docs && npm run test:checkpoints && npm run test:spice && npm run test:datasheets && npm run test:tool-results && npm run test:api-docs && node scripts/check-routing-adapter.mjs && node scripts/check-operation-manager.mjs && node scripts/check-project-tools.mjs && node scripts/check-local-backend.mjs && node scripts/check-execute-js.mjs && node scripts/check-sdk.mjs && node scripts/check-sdk-broker.mjs && node scripts/check-sdk-geometry.mjs && node scripts/check-pcb-inspection.mjs && node scripts/check-pcb-refill-example.mjs && node scripts/check-pcb-preview.mjs","clean":"rimraf dist","start":"node dist/index.js","inspect":"npm run build && npx @modelcontextprotocol/inspector node dist/index.js","prepack":"node ../scripts/check-release.mjs && npm run build","prebuild":"node ../scripts/build-local-dependencies.mjs","test:sdk":"node scripts/check-sdk.mjs && node scripts/check-sdk-broker.mjs && node scripts/check-sdk-geometry.mjs","test:docs":"node scripts/check-docs.mjs","typecheck":"tsc --noEmit","test:spice":"node --test tests/spice.test.mjs","router:info":"node scripts/router-info.mjs","test:package":"node scripts/check-package.mjs","test:api-docs":"node --test tests/api-docs.test.mjs","test:projects":"npm run build && node scripts/check-project-tools.mjs","docs:update-api":"node scripts/update-easyeda-api.mjs","test:datasheets":"node --test tests/datasheets.test.mjs","test:execute-js":"npm run build && node scripts/check-execute-js.mjs","test:operations":"npm run build && node scripts/check-operation-manager.mjs","test:checkpoints":"node scripts/check-checkpoint-tools.mjs","test:pcb-preview":"node scripts/check-pcb-preview.mjs","test:tool-results":"node --test tests/tool-result.test.mjs","test:pcb-inspection":"node scripts/check-pcb-inspection.mjs","test:routing-adapter":"npm run build && node scripts/check-routing-adapter.mjs","test:pcb-refill-example":"node scripts/check-pcb-refill-example.mjs"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e1681f40-53e5-46f9-adf1-d552eee0b482"}},"_resolved":"/home/runner/work/easyeda-copilot/easyeda-copilot/artifacts/easyeda-copilot-mcp-1.2.0.tgz","_integrity":"sha512-ADBN4GYLKuBfIYvwotUEXZxQCaoQ/t7VwJfAhgCMrFyx0NCukLT1fsixvDh/Y4m6Nq1rRDFyupEWKlWb7syKOg==","repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for EasyEDA Copilot","directories":{},"_nodeVersion":"24.20.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","sharp":"^0.35.0","find-up":"^5.0.0","eda-copilot-router":"0.3.2","eda-copilot-backend":"0.2.0","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsup":"^8.5.1","rimraf":"^6.1.2","esbuild":"^0.24.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@types/sharp":"^0.31.1","@copilot/shared":"1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/easyeda-copilot-mcp_1.2.0_1789849873809_0.7700639453864986","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"_id":"easyeda-copilot-mcp@1.3.0","bin":{"easyeda-copilot-cli":"dist/cli.js","easyeda-copilot-mcp":"dist/index.js"},"bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"dist":{"shasum":"3b92391902bed1f0aedcc68396f832e3290225a9","tarball":"https://registry.npmjs.org/easyeda-copilot-mcp/-/easyeda-copilot-mcp-1.3.0.tgz","fileCount":511,"integrity":"sha512-jIfWt+ZlQLiusjIQQwtE384xhKf5CBNipL2OMewA93WVbhAHxuwhNgHOLKMoPDJD0x+3LdnzgFhTmf4dcO53gw==","signatures":[{"sig":"MEYCIQCeddihGfLflLd+Y7A8XZNqD6J2g58iYJ8ZhjprxIOgwwIhAO7Tw3m2hJCsLZxaQoP65XtGXS2xvBxSWc8LF93Denbn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIHss9FNCsle0ATL9vyovczSYVJcdIp94QGgbpdlwNiZUAiAGLFwrGB6IJ2SqUeaJt/Hy7ntffewIMH0niQGSevg2Gg=="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/easyeda-copilot-mcp@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":4744833},"name":"easyeda-copilot-mcp","type":"module","_from":"file:/home/runner/work/easyeda-copilot/easyeda-copilot/artifacts/easyeda-copilot-mcp-1.3.0.tgz","engines":{"node":">=20.19"},"license":"MIT","mcpName":"io.github.biosshot/easyeda-copilot","scripts":{"build":"tsup && node scripts/build-sdk.mjs","check":"npm run build && npm run typecheck && npm run test:docs && npm run test:checkpoints && npm run test:spice && npm run test:datasheets && npm run test:tool-results && npm run test:tool-handler && npm run test:api-docs && npm run test:component-preview && npm run test:other-page-signals && node scripts/check-routing-adapter.mjs && node scripts/check-operation-manager.mjs && npm run test:cancellation && node scripts/check-project-tools.mjs && npm run test:cli && node scripts/check-local-backend.mjs && node scripts/check-execute-js.mjs && node scripts/check-sdk.mjs && node scripts/check-sdk-broker.mjs && node scripts/check-sdk-geometry.mjs && node scripts/check-pcb-inspection.mjs && node scripts/check-pcb-refill-example.mjs && node scripts/check-pcb-preview.mjs","clean":"rimraf dist","start":"node dist/index.js","inspect":"npm run build && npx @modelcontextprotocol/inspector node dist/index.js","prepack":"node ../scripts/check-release.mjs && npm run build","prebuild":"node ../scripts/build-local-dependencies.mjs","test:cli":"node scripts/check-cli.mjs","test:sdk":"node scripts/check-sdk.mjs && node scripts/check-sdk-broker.mjs && node scripts/check-sdk-geometry.mjs","test:docs":"node scripts/check-docs.mjs","typecheck":"tsc --noEmit","pack:skill":"node scripts/build-skill.mjs","test:spice":"node --test tests/spice.test.mjs","build:skill":"npm run build && npm run pack:skill","router:info":"node scripts/router-info.mjs","test:package":"node scripts/check-package.mjs","test:api-docs":"node --test tests/api-docs.test.mjs","test:projects":"npm run build && node scripts/check-project-tools.mjs","docs:update-api":"node scripts/update-easyeda-api.mjs","test:datasheets":"node --test tests/datasheets.test.mjs","test:execute-js":"npm run build && node scripts/check-execute-js.mjs","test:operations":"npm run build && node scripts/check-operation-manager.mjs","test:checkpoints":"node scripts/check-checkpoint-tools.mjs","test:pcb-preview":"node scripts/check-pcb-preview.mjs","test:cancellation":"node scripts/check-cancellation.mjs","test:tool-handler":"node --import tsx --test tests/tool-handler.test.ts","test:tool-results":"node --test tests/tool-result.test.mjs","test:pcb-inspection":"node scripts/check-pcb-inspection.mjs","test:routing-adapter":"npm run build && node scripts/check-routing-adapter.mjs","test:component-preview":"node --import tsx --test tests/component-preview.test.ts","test:other-page-signals":"node --import tsx --test tests/other-page-signals.test.ts","test:pcb-refill-example":"node scripts/check-pcb-refill-example.mjs"},"version":"1.3.0","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:e1681f40-53e5-46f9-adf1-d552eee0b482"}},"homepage":"https://github.com/biosshot/easyeda-copilot#readme","_resolved":"/home/runner/work/easyeda-copilot/easyeda-copilot/artifacts/easyeda-copilot-mcp-1.3.0.tgz","_integrity":"sha512-jIfWt+ZlQLiusjIQQwtE384xhKf5CBNipL2OMewA93WVbhAHxuwhNgHOLKMoPDJD0x+3LdnzgFhTmf4dcO53gw==","repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"_npmVersion":"11.19.0","description":"MCP server for EasyEDA Copilot","directories":{},"maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"_nodeVersion":"24.21.0","dependencies":{"ws":"^8.20.1","zod":"^4.4.3","sharp":"^0.35.0","find-up":"^5.0.0","eda-copilot-router":"0.3.2","eda-copilot-backend":"0.3.5","@modelcontextprotocol/sdk":"^1.29.0"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.23.13","tsup":"^8.5.1","rimraf":"^6.1.2","esbuild":"^0.24.2","@types/ws":"^8.18.1","typescript":"^5.9.3","@types/node":"^25.9.1","@types/sharp":"^0.31.1","@copilot/shared":"1.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/easyeda-copilot-mcp_1.3.0_1790441203432_0.35672113257136195"}}},"time":{"created":"2026-05-27T14:51:42.463Z","modified":"2026-09-26T16:46:43.860Z","1.0.0":"2026-05-27T14:51:42.867Z","1.0.1":"2026-05-27T15:08:35.949Z","1.0.2":"2026-05-27T15:20:22.094Z","1.0.3":"2026-05-28T10:58:43.186Z","1.0.4":"2026-07-10T16:06:38.632Z","1.0.5":"2026-07-10T16:56:56.675Z","1.0.6":"2026-07-10T17:00:53.158Z","1.1.5":"2026-07-19T10:05:12.906Z","1.1.6":"2026-08-04T14:11:02.094Z","1.1.7":"2026-08-09T10:07:08.280Z","1.1.8":"2026-09-01T15:43:07.575Z","1.1.9":"2026-09-08T14:38:47.365Z","1.2.0":"2026-09-19T20:31:13.904Z","1.3.0":"2026-09-26T16:46:43.569Z"},"bugs":{"url":"https://github.com/biosshot/easyeda-copilot/issues"},"license":"MIT","homepage":"https://github.com/biosshot/easyeda-copilot#readme","repository":{"url":"git+https://github.com/biosshot/easyeda-copilot.git","type":"git"},"description":"MCP server for EasyEDA Copilot","maintainers":[{"name":"biosshot","email":"kirillkosenko3@gmail.com"}],"readme":"English | [简体中文](README.zh-CN.md) | [Русский](README.ru.md)\n# easyeda-copilot-mcp\n\n## CLI and portable skill\n\nThe existing MCP installation below is unchanged. You can also use `easyeda-copilot-cli`: run `start`, retain its four-character ID, then `<id> tools list`, `<id> tools help <tool>`, and `<id> call <tool> [--input file.json]`. Omitted input is `{}`. Use `<id> status` / `<id> stop` to manage your background runtime; no system service is installed.\n\nFor lightweight and optional bundled local builds, see [install-guide.md](docs/install-guide.md). `npm run build:skill` derives the ignored root `skill/` from the current MCP runtime and `mcp/docs`; packaging code also lives under `mcp/`. See [CLI commands and build details](docs/cli.md).\n\nMCP server for EasyEDA Copilot.\n\nIt connects MCP clients such as Codex or Claude Code to EasyEDA Desktop through the EasyEDA Copilot extension. It supports schematic work, component search, PCB placement, assembly, routing, inspection, and DRC.\n\nMCP is the recommended and actively developed EasyEDA Copilot interface. The built-in Interface remains available as a legacy workflow with fewer capabilities and limited maintenance.\n\n## Requirements\n\n- EasyEDA Desktop V3.2.149.\n- EasyEDA Copilot extension with `External Interactions` enabled.\n- An MCP-capable client such as Codex or Claude Code.\n- Node.js >=20.19 and npm. Release targets: Windows x64, Linux x64 with glibc >=2.35, and macOS x64/arm64. Rust and C/C++ tools are not needed for npm installations. Routing downloads prebuilt KRT and, when needed, a private Python runtime and Python dependencies on first use; allow access to GitHub and PyPI. Linux ARM64, Windows ARM64 and Alpine/musl are not currently supported by the complete stack.\n\n## Usage\n\n1. Add this MCP server to your MCP client.\n2. Start the MCP client with this server enabled.\n3. Open EasyEDA Desktop.\n4. Open the target schematic or PCB document.\n5. EasyEDA Copilot connects automatically. Use `Copilot -> MCP` only to pause or resume scanning.\n\n## PCB Workflow\n\nPCB features are available through MCP clients, not through the built-in Copilot chat.\n\nThe MCP integration can:\n\n- list the team/folder/project tree, create projects, and open a selected project;\n- generate board outline and component placement from a schematic;\n- preserve the opened PCB outline and selected existing component positions during incremental placement;\n- create mechanical and final placement previews before import;\n- assemble approved placement into the opened EasyEDA PCB document;\n- run `eda-copilot-router` DSL programs through the managed Hybrid backend;\n- create requested planes and stitching vias from the same routing DSL;\n- replace selected existing copper only when the DSL explicitly calls `clearRouting(...)`;\n- preview and inspect PCB objects, nets, and components;\n- run EasyEDA PCB DRC and manage the copper-layer count.\n\nTypical workflow: synchronize schematic changes, stop while the user confirms the EasyEDA import dialog, open the target PCB, review mechanical and final placement previews, assemble the approved placement, then run `run_pcb_router_dsl` and review native DRC. Existing placement can be retained with the placement DSL `preserve(...)`; existing copper is preserved by default and is replaced only when the routing DSL explicitly calls `clearRouting(...)`. Continue long placement and routing work with `wait_operation`.\n\n## Build\n\nThe MCP distribution includes a local Node.js/Python SDK in `dist/lib`. It connects as a client to the existing broker and exposes calls such as `await eda.pcb_PrimitiveComponent.getAll()`. No additional npm/pip package or extension update is needed. See [SDK setup, types, binary values and examples](docs/execution/local-sdk.md).\n\n```bash\ngit clone https://github.com/biosshot/eda-copilot-backend\ngit clone https://github.com/biosshot/eda-copilot-router copilot-router\ngit clone https://github.com/biosshot/easyeda-copilot\ncd easyeda-copilot\nnpm ci\nnpm --prefix ../eda-copilot-backend ci\nnpm --prefix ../eda-copilot-backend run native:build\nnpm --prefix ../copilot-router ci\nnpm run deps:local\nnpm run build --workspace=easyeda-copilot-mcp\n```\n\nBackend and router are separate npm packages. For local development, keep sibling `eda-copilot-backend` and `copilot-router` repositories and use `npm run deps:local`. The MCP build rebuilds local dependencies; backend owns its runtime dependencies and native binaries. Use `npm run deps:release` to restore the published versions in `scripts/dependency-config.json`, then `npm run check:release`. No backend code is bundled into MCP. See [local development and release checks](../docs/local-development.md).\n\n## MCP Config With npx\n\nCodex:\n\n```bash\ncodex mcp add easyeda-copilot -- npx -y easyeda-copilot-mcp\n```\n\nClaude Code:\n\n```bash\nclaude mcp add easyeda-copilot -- npx -y easyeda-copilot-mcp\n```\n\nGeneric MCP config:\n\n```json\n{\n  \"mcpServers\": {\n    \"easyeda-copilot\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"easyeda-copilot-mcp\"]\n    }\n  }\n}\n```\n\n## MCP Config With node\n\n```json\n{\n  \"mcpServers\": {\n    \"easyeda-copilot\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/easyeda-copilot/mcp/dist/index.js\"]\n    }\n  }\n}\n```\n\n### Cancellation\n\nMCP request cancellation is forwarded through the bridge to EasyEDA. Waiting commands are removed from the queue; active commands stop cooperatively. Already-started native actions or JavaScript may still finish, so cancellation does not authorize an automatic retry. Timeout watchdogs remain in place if cancellation cannot be delivered.\n\nManaged placement and routing operations have independent lifetimes. Cancelling their initial request or `wait_operation` stops only that wait. Use `cancel_operation` to stop the operation. Routing application has its own bridge timeout; it does not use the remaining time of a wait request.\n\nAll tools expose explicit MCP effect annotations. Managed document mutations wait initially up to 50 seconds and return an operation ID; `list_operations` discovers retained work after a lost initial response. See [operation contracts](docs/operations.md) for exceptions and cancellation semantics.\n","readmeFilename":"README.md"}