{"_id":"mcp-workbench","_rev":"27-73fbf4ce79a5344f31e19e5b4eb5e335","name":"mcp-workbench","dist-tags":{"latest":"0.14.0"},"versions":{"0.0.2":{"name":"mcp-workbench","version":"0.0.2","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.0.2","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"354213300f29d2a2b521b8c57be0f01cd163ffa4","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.0.2.tgz","fileCount":31,"integrity":"sha512-Vi6XCRjqR2VFdmCb4gRG3RvZk/xSVkjRjf1TltTbj0TbRZXjXg9xck/On5hqO6gLdDdTXyhxJVbgNURE4gTjQw==","signatures":[{"sig":"MEYCIQC77W52KZnTCNgFNkELiIlqG4iqsff/CddCe1Xa1LtVJQIhAKbVqfU2f2SBpYnSNTjgYUSxWAL3DYp2Fq5YlehOgn8v","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":109762},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"4716ab924ccfc808de6c1112d8f07d23fb4569ae","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.2.3","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"20.10.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.0.2_1761307233180_0.7237613426098439","host":"s3://npm-registry-packages-npm-production"}},"0.1.0":{"name":"mcp-workbench","version":"0.1.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.1.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"f479eb51e908e797c9bc903c7ef7fba27fb8d7db","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.1.0.tgz","fileCount":31,"integrity":"sha512-cdd6ATeo/rWAlNbbmsnylZub4X7UkiXWn/Y5P8vQBAlvvuCt8ZZyawnLXbSaSpdtDu7r9RBEv+lCi1mhBTdjBw==","signatures":[{"sig":"MEUCIQCe3W4/NEDH+Ay+THtQPVxgcK+tLPCGOHliScNTi1Dm4wIgcKuQgvwytodDoE5jcENz3IctDvKYL4Pcs9K01SPRscM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":113720},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"06895080e8c9e11b258e500909600cb577276857","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.2.3","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"20.10.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.1.0_1761313218444_0.17443509564905346","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"name":"mcp-workbench","version":"0.2.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.2.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"ae01d98b444113adb37004e405102550d50e7234","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.2.0.tgz","fileCount":31,"integrity":"sha512-QSjWcZOSCEUVyYsppiD2jPEpCn8x1UU6LdECJ+8oomd+gQeTK3yyub+H3KkVUnHNBzhok/rKDwWD0ZhDIWcR4w==","signatures":[{"sig":"MEQCIFtjLzaP0NSGHCgaxBkawH/E+adFnM5o6vvs+hUfQFwqAiAUXkRbcPO7PfoY6U90WAWxMbaB8CMQtasMiQs5z3D54Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":112639},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"bf82429b58dab7b7d844fe1e7ad528e0a7685598","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.2.3","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"20.10.0","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.2.0_1761316014858_0.1866876791310379","host":"s3://npm-registry-packages-npm-production"}},"0.2.1":{"name":"mcp-workbench","version":"0.2.1","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.2.1","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"9ed3a2c0596a8612026b052e3d43e7c7d8914c37","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.2.1.tgz","fileCount":34,"integrity":"sha512-Em5mGTyFo+RZPFr1LcNdyUQe058zFLmJD6CsI3KVfpDLQgQB02j6I5SQ6zeFMWDCcQRK2b9NFheqMxmQSqvTNA==","signatures":[{"sig":"MEUCIQDfQGXwb9LSzd+1797OO2HiDrPiZtJ5BUnUh4zdoqukagIgeYMhHmpxOvJFcsK2QN0P9YnUioz5kZftxU+AUofq2OI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213222},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"aabcfaccc9d4b092c15cc18fb11069f8bc6134da","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.2.1_1761317922233_0.8264122271764744","host":"s3://npm-registry-packages-npm-production"}},"0.2.2":{"name":"mcp-workbench","version":"0.2.2","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.2.2","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"5e375037894d2093ffbd9ac33f569a14134c8f1c","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.2.2.tgz","fileCount":34,"integrity":"sha512-oQObprU2rtjS+TG0p6ecG5NyuF/8mTklWS4Jtn1iUL4sI1E6BId7jdO8PrgCp0fabxOaEFBhBPP809fPmvePFw==","signatures":[{"sig":"MEUCIQCQ540gaSHf9b1x+9cMTxUSsTG5PRqAnrQElVAGOURTxAIgaf0UAtk5F/fH1n7ZUOABjI+S4/B5ycL6Qg6osOQy0Lc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":213611},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"2cf3e88fb374aa85b8b09e0e410fabcda7486d9f","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.2.2_1761319804336_0.34323463232277707","host":"s3://npm-registry-packages-npm-production"}},"0.2.3":{"name":"mcp-workbench","version":"0.2.3","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.2.3","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"ad4b26acd78b39087d9d80e116e7dbcc968d4c6b","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.2.3.tgz","fileCount":34,"integrity":"sha512-wXIUnoXxiI5/oUK0j4ikEKdU7sq/DzNlWIm5rmuR0y93APCuq9Fayq+XDCPCMMLlNKBg7GdeVQ2LJLYzsIuULw==","signatures":[{"sig":"MEYCIQCBp4BzzKmTGv5Kcd1V/dHEgEM4MC1zvh+tbh2U/Qh5egIhAIDYWucDyKp+w4pfN/rRDIaNxFyV0zityyUiS9mL8Aoe","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":211741},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"87c2ca3900d052c43dd24756df533b8e0be5246c","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.2.3_1761320460238_0.7572811627417948","host":"s3://npm-registry-packages-npm-production"}},"0.2.4":{"name":"mcp-workbench","version":"0.2.4","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.2.4","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"44712d93da6e51b828228381d8c14be4c04c4002","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.2.4.tgz","fileCount":35,"integrity":"sha512-OH/LmLyhyM6y5hmdPi4IY34HascOClbZtHuUBh8OdFxrDDqfIVvQ8Z4JeC+/NFDWGaYMLK8toI1jz9tViirQJw==","signatures":[{"sig":"MEUCIQCH2eFaa9TNqFhnpFJBUqhtzhExoIIlS+0qpXbEjWNQ1AIgB0TC387mBKiSgFLgD+D8eDt3l2anOgoNgCkIGjTcJ5Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":226033},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"4d9db5f7dca94a6513084fbe2741c31c9dc48bd5","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.2.4_1761321589520_0.4436479107460165","host":"s3://npm-registry-packages-npm-production"}},"0.3.0":{"name":"mcp-workbench","version":"0.3.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.3.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"ed621641d33023e96a5c0865b727aeed5608503e","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.3.0.tgz","fileCount":35,"integrity":"sha512-U3TU8C6fY0y9SLnCYLg7Qlw3wS+d+yf51ZASEkMBjfCC45uwP6q0VDnAjZLiQp9yY4bJhZ9rUxIc5gxbrBA00Q==","signatures":[{"sig":"MEUCIQDF6NmjKtBOEJvz4xudO1aqM1SgiZVIo5C7TsDsxAFPYwIgFd/8fW0GECY32xe3bX9uLRSv7UIYsXMmywqGfpN3Um0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":233350},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"68bee4572a6b15099be95d3d43484e1cfcc9ed9d","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.3.0_1761322408303_0.5691117179397962","host":"s3://npm-registry-packages-npm-production"}},"0.3.1":{"name":"mcp-workbench","version":"0.3.1","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.3.1","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"7b4c14e0f7ccae12558bf75d31b6fbd65bff0213","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.3.1.tgz","fileCount":35,"integrity":"sha512-ZcCCQYNqNTHu+qkF/S9WA8hBUp3SNbDz8NL2vFRjZvlxeSWcUy+H7UR5s+PDKk7pRrZcpq4FJ1pgaU1jfgkTjg==","signatures":[{"sig":"MEUCID3APXvl1swp6g+BFVru89J0IeolDVxY95mUXaEeaDr+AiEAubZeTAWfDUwv9J/JXv1p1PmkJVcmH1RfJeoe1WVyr48=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":235498},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"a315a5b8ced971aeab3d5972e33062dce5a6617e","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.3.1_1761323155037_0.8374091645050246","host":"s3://npm-registry-packages-npm-production"}},"0.3.2":{"name":"mcp-workbench","version":"0.3.2","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.3.2","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"073e4ea05abab67fffaa913d2b9be2ca72504b5d","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.3.2.tgz","fileCount":35,"integrity":"sha512-Bq41CrqN14sVdVBz9VH3IhCPHQMRWnmKE9qv3u3/w7CxmpMDN6hyoDFM3GJtEcmL4hjFA/QxVGxYG6XJ8YY9aw==","signatures":[{"sig":"MEQCIFw4jdao2gIDqakV0T0sT4fD17tqSG/L8lxyl8MdH9jkAiBh8rZ3350+hSS9HPCuatSA24hH5IRzNGkA06vWSy0gAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":240235},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"4bb1a8a6747350f94292d54f036e8965a2890c81","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.3.2_1761323990900_0.3837823010434962","host":"s3://npm-registry-packages-npm-production"}},"0.3.3":{"name":"mcp-workbench","version":"0.3.3","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.3.3","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"5d5ed111eb7bd1a5abe4ab63039c2c7c3420b610","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.3.3.tgz","fileCount":35,"integrity":"sha512-FxAtNCrOPOYMrjvJY8w6qxJAqXaPkiDFfRXmnNiF0vzElJcpFKCL+ckLlvuFwdeRW+xdbPwIEMCXgd8GCGXl5g==","signatures":[{"sig":"MEUCIQCgkowftkta1pUabSKMMO+rB7vZ+jiHyWpZKfNQ8B48/wIgPXzi/5rv5lun/onBG4YbPdb11ecRa2BrzdPIk0GiZV8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":241216},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"594dc9bc9c16d7e4aafad10c468e0b5810a4dd76","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.3.3_1761324696871_0.33801913820061147","host":"s3://npm-registry-packages-npm-production"}},"0.4.0":{"name":"mcp-workbench","version":"0.4.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.4.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"f905fc96ff41e36475fc3a62fd78b47e0489a209","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.4.0.tgz","fileCount":57,"integrity":"sha512-grOHHjoLROFv6ur4FzViIVmzhxc4QMWx5XFBGQYmjVvrdvSPyik5MQFARU6DLg1ACsyoTxmUcUHYT51Pgq2kxA==","signatures":[{"sig":"MEYCIQDQaGiy7J7ER2dMSUC8bHcQS2PfiyAtnVdDSWbLSKuuhgIhALdR/PGGiExaqZ9dP6m6MTFSGCXX2gOFSh3W+AsRl2vn","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":446729},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"b754958187ff7188a1c8c13186f8cf7adb4676e9","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.4.0_1761577523680_0.93951190248782","host":"s3://npm-registry-packages-npm-production"}},"0.5.0":{"name":"mcp-workbench","version":"0.5.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.5.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"044598d7c5e581095c0afc122d2008e897d7ed27","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.5.0.tgz","fileCount":66,"integrity":"sha512-LIfX+xAEOsBzgXY6d5vLAQpDjRikEb8ksoW7BuUBcmTbvHRlEZrFbXCvoT2chNqIzRK6g+URV82aDEkxQ7cZ5g==","signatures":[{"sig":"MEUCIQDgVCvAOuyGrmbXedS5SoKPJCJU+9QIfgnWJCPqR7rfUQIgbbeGaoz7SGEsdqgp/5KLAGk4voZ8WF4b7IMb8VYNfIo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":542224},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"f4513b6a07f4a8c7368d0c4eccfaafaf169e3490","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.5.0_1761581373801_0.5061872279831108","host":"s3://npm-registry-packages-npm-production"}},"0.6.0":{"name":"mcp-workbench","version":"0.6.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.6.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"204a0ffa397db820ab4ea0a03285bb797493371c","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.6.0.tgz","fileCount":66,"integrity":"sha512-GFB+qJniT742u8LGh87QNRlhlXkYzxLK/K/oJ19PfkG1j6/D/ck59ie3DBJyHAyFmWPFYpGHA+3ViuZX9pyjyA==","signatures":[{"sig":"MEYCIQCNaeLz7q5WG+Y5Wygjg1KM8C6T1Tu357uUhH7st5bAuQIhANB3cwH/2PZ8frMEDCpX2zbRbxuRftxTszLETgi2m7du","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":545797},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"8d3122a7d51895fd2d9abc5dd0b5886e751b743d","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.6.0_1761584298823_0.743162419842089","host":"s3://npm-registry-packages-npm-production"}},"0.7.0":{"name":"mcp-workbench","version":"0.7.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.7.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"8a6bde3275903470c08354870ecec54dae81621f","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.7.0.tgz","fileCount":88,"integrity":"sha512-0WueAJe9gqhQrvtyAsr+WcDineTr58EJGkL7NZiSMoc7z+m4o0VUEAao0KoG1JH7G1qoosAEH4zY4SuUO0s90Q==","signatures":[{"sig":"MEYCIQC0DVkYP45kybWRLm5/lDI8Duv01yt4Binxm+Lf9PRTQQIhAPdGkHPohlrHAFXhmjGmLA4fFsQwE1QHSvKvwyc1CN1t","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":717223},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"b03dd9682718d87de65ed6232a38667a9fd5d4c2","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.7.0_1761601121289_0.2223035406614553","host":"s3://npm-registry-packages-npm-production"}},"0.7.1":{"name":"mcp-workbench","version":"0.7.1","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.7.1","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"7b00cdc3cbe5a8b4990f9003ef1aa6707621886c","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.7.1.tgz","fileCount":88,"integrity":"sha512-DzsgMAF4Snv8Fq60p4vQ33DAvwlYkDOe6aqTBCE2jEVKks6xpz8k2mTx4GzMV0Efy8RNUxCfMzfmKfgVnzuUrw==","signatures":[{"sig":"MEUCIGHT1+lI2ueAk6O8Wg8F+CTg0dR5QDyLewFVgUvRNjPvAiEA21pHdoQYviFrp7tiIwcA1pxfIuS3W4X22V62Foy8lf8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":719976},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"d17356f546bb6efaf0e3e3dd5c4e500567bcb601","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.7.1_1761602987940_0.48224167341196034","host":"s3://npm-registry-packages-npm-production"}},"0.7.2":{"name":"mcp-workbench","version":"0.7.2","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.7.2","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"a204738032922a2eaa38f3e0c448fb93fb541fdc","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.7.2.tgz","fileCount":88,"integrity":"sha512-ANYpmF2iKpVFo9CmKN1d8+il/Jl1IUVZgtN7DaZ92CUOgle94O2xd3H9mtdNdFMF3CwRXA5NmJ/YMVIxV9zaag==","signatures":[{"sig":"MEQCIC9rzgKzMm9XDKweISmLKebWmuYCGMwMVZDNz/JMrtZyAiBDEmgFNF9XeT5iTPksGhzno27tk0ZyYfX2k4jrYYG8NQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":719372},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"ae70fa6f206302a15e5e0d659d7180e31b858b45","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.7.2_1761643760838_0.7171275231280267","host":"s3://npm-registry-packages-npm-production"}},"0.7.3":{"name":"mcp-workbench","version":"0.7.3","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.7.3","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"5a6a7c0821cc13bceb9d01d776a8a318f37b27d6","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.7.3.tgz","fileCount":88,"integrity":"sha512-iBXSO3yhCMPrtEufnSqgEzWkiKzbjTkG/6NqcORTc1HQOo4r4sUwQead9xjnTPchMU6XV7+8yEHznbvI0JflcQ==","signatures":[{"sig":"MEYCIQCKlJ2np+FQHcmGkGXi5ytmjw/GPLnM6QTv7lG94sZj9wIhAL57aYlAuizj4MjoOJumy42LMVLwXCaAotJkpiuMovYy","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":720036},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"e73efb997994dfe91831deb41ebf3be6a0f09dcd","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.7.3_1761645229211_0.655531601965178","host":"s3://npm-registry-packages-npm-production"}},"0.8.0":{"name":"mcp-workbench","version":"0.8.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.8.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"2d1d24e9ebad33a0d0fbe023e7a44b2fdab1b453","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.8.0.tgz","fileCount":96,"integrity":"sha512-uQudydqmJ/t/C4qUTVxlYnxD4ovwyY68s+UYrOz+zu3sbhiY5G9RT5gFd+yeRuyYuv5Z3gL+uD/GsO/YgJwe8Q==","signatures":[{"sig":"MEUCIEH+dAZQqNX9j/fmP60GqiNZBgH2bBPuKKgi9IAQs5LuAiEApKCUPkC6DiPocWrvP2elLostYZZN8q99/JnrY7/k9Rg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":770594},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"7e6b1ef2e2833988c0ad67891aa5b9fda945a614","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.8.0_1761649166233_0.21666679950601075","host":"s3://npm-registry-packages-npm-production"}},"0.9.0":{"name":"mcp-workbench","version":"0.9.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.9.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"1c68f6cc1a7502265e8045701010d8fd70283c88","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.9.0.tgz","fileCount":106,"integrity":"sha512-pwO4pidmoDiCLRDUo7eBvJnypesGTKwqwshaUkkmuEoIfTInpbrGRtiBRaMRXhfuBim/7KFzyCAOR4YRfDiiIA==","signatures":[{"sig":"MEQCIEItTI77yT9ED54bkek/ISOPJdRc32lBNLsv/mULVJRlAiBeKT0pk/8U9kWCvp9ocxjl3GclTyigTWpmtnuhn7K9Ow==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":840493},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"edc8a539335b0a4b049308ad6e82d05bfe171766","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.9.0_1761655048381_0.42594432471265975","host":"s3://npm-registry-packages-npm-production"}},"0.10.0":{"name":"mcp-workbench","version":"0.10.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.10.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"1edce5f51134a3c3f4f0d8e2a48ec5ea73d8c833","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.10.0.tgz","fileCount":115,"integrity":"sha512-Hbq70IvaK9hOMwiNGnhpIFhf0GvdhhQt/uvwxV48EKDfg68XZzrIjFLMO8Ha58idVXQ2LolIzBpr5AgUgZj/Ng==","signatures":[{"sig":"MEUCIEAve9ecv21RZgw+a+8Zb0grxkr7pAYpMV1OwBbEL2PuAiEAx/2HboWq3d4mf6RCJtVWdVk0c4PwKvAcKmdVj4QI5FY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":907455},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"793ea58b1c4f4afef88ec6a07750d6262a25677f","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.10.0_1761659275152_0.015246604550650078","host":"s3://npm-registry-packages-npm-production"}},"0.11.0":{"name":"mcp-workbench","version":"0.11.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.11.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"01adfd61a291e7d2ed7731b4dc903e1a96db526f","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.11.0.tgz","fileCount":124,"integrity":"sha512-5WJU/GIyxJ1gM7JUYCf67uEAl9V7mHjUVT8eft1K0MlfThRnqeV6BmCHe2IaOENLLkRNaEFepfee7dNkAK61oA==","signatures":[{"sig":"MEUCIQCVdDP/IQF/AS+9zGo7GlsmAHdjcKoLwbK8o7oJke0mgwIgdI2/9BXqpl/megPP/WRnQeJUEJsz/EijIf3eK7KjcNs=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":997964},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"e3e921468f708f8003063f245b8b4b37fa7889d3","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.11.0_1761669429642_0.6055969391105633","host":"s3://npm-registry-packages-npm-production"}},"0.11.1":{"name":"mcp-workbench","version":"0.11.1","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.11.1","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"78a797c9c80eb1f7d7463598f83855442e8c4bba","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.11.1.tgz","fileCount":124,"integrity":"sha512-0z+Sy4oEQKR+nI0X913rc9o8DA9lchRJHnW+F3dNOcVTaFp71m2SczCz5nEO5xvPt17XscOYIjvZ6KAhb0cnfw==","signatures":[{"sig":"MEQCICDwowikD9VwnXwq6HWFsclFPJ/Im5BAo4v0E1UF501LAiAFEhakMt0jmPKGEGA4gy/puhh8s7pBVXwKlePzbYV50w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":998873},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"1d64dd5691e4641690bad00c23681bdd3311c672","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.11.1_1761669628818_0.43705109264723574","host":"s3://npm-registry-packages-npm-production"}},"0.11.2":{"name":"mcp-workbench","version":"0.11.2","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.11.2","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"829ef643c7b30b4c08ec1aa24d95a15425ad991b","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.11.2.tgz","fileCount":124,"integrity":"sha512-FKmd1hommcQRepR2xP5ASgZNJIP1jKuX+bz97UDEWAxR3CAl+DQZsrxwdYzzJDwGfzPU0CcFF0Bk1bZ7d2+3EQ==","signatures":[{"sig":"MEQCIEq734nxuwzcRJpmJPRoMmkN5suwEC9xIvEAEgrfCbuMAiB+ycE5E+QDTqAsCsZpjUgvo0VjvKN0z+b2C1CEAD2IcQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":999702},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"c7eccdc86a882aef38ccf3fdef15a5a67b81a7d8","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.11.2_1761669895792_0.7096852156916869","host":"s3://npm-registry-packages-npm-production"}},"0.12.0":{"name":"mcp-workbench","version":"0.12.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.12.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"27313bb9690a81d2ec2a1152f511f9a5209d6c02","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.12.0.tgz","fileCount":132,"integrity":"sha512-u9tR/smY3zAnhjkaZajwSl9p8ztkINtwqyaZe9y20LdrjEMim8e3LWxEqWJkbDdp0tI7DCKg31I98qYBn179Sg==","signatures":[{"sig":"MEUCIQCgqsJL4QfrtyyiQKZ5XCofxv0ABw68mZRflGgcLSaacAIgWTrmrFdg4UegDlVvHCQcGZfsHjsByYOdAozrvRPfoO4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1062597},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"fc326341804c6600a3f043f288c7de74cb677039","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.12.0_1761678214913_0.7836745540503913","host":"s3://npm-registry-packages-npm-production"}},"0.13.0":{"name":"mcp-workbench","version":"0.13.0","keywords":["mcp","mcp-server","toolbox","aggregator"],"author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.13.0","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"bin":{"mcp-workbench":"dist/index.js"},"dist":{"shasum":"e59ff093d716f4f61bec2f23d0d3312d2ef5d6aa","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.13.0.tgz","fileCount":139,"integrity":"sha512-1TIBv8h/ATuQNx5eHlLTNCAO+XME6OiSq1qG9PY2p99M3C4rthm83HDC3p8UAmetQkf8tFh6MSDcZmJBczMotA==","signatures":[{"sig":"MEUCIQCIywxXLr9QXBG4QdeOpeG93AwOfIAF4sta+OCBUq44EQIgRr+maBPT7O6S7w+SARjgSpUPQtVhu/Tg0bPRhM+pYt4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1107345},"main":"dist/index.js","type":"module","types":"./dist/index.d.ts","engines":{"node":">=18"},"gitHead":"9cfb9eb1e3cd927cd6b5de4f365dc500659939b9","scripts":{"dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","start":"node dist/index.js"},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"repository":{"url":"git+https://github.com/hlibkoval/mcp-workbench.git","type":"git"},"_npmVersion":"10.8.2","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","directories":{},"_nodeVersion":"18.20.8","dependencies":{"zod":"^3.23.8","@modelcontextprotocol/sdk":"^1.6.1"},"_hasShrinkwrap":false,"devDependencies":{"tsx":"^4.19.2","typescript":"^5.7.2","@types/node":"^22.10.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-workbench_0.13.0_1761734483634_0.11496754318670499","host":"s3://npm-registry-packages-npm-production"}},"0.14.0":{"name":"mcp-workbench","version":"0.14.0","description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","type":"module","main":"dist/index.js","bin":{"mcp-workbench":"dist/index.js"},"scripts":{"start":"node dist/index.js","dev":"tsx watch src/index.ts","build":"tsc","clean":"rm -rf dist","test:e2e":"vitest run --config vitest.config.e2e.ts","test:e2e:watch":"vitest watch --config vitest.config.e2e.ts"},"engines":{"node":">=18"},"dependencies":{"@modelcontextprotocol/sdk":"^1.6.1","zod":"^3.23.8"},"devDependencies":{"@modelcontextprotocol/server-filesystem":"^2025.8.21","@modelcontextprotocol/server-memory":"^2025.9.25","@types/node":"^22.10.0","tsx":"^4.19.2","typescript":"^5.7.2","vitest":"^2.1.8"},"keywords":["mcp","mcp-server","toolbox","aggregator"],"repository":{"type":"git","url":"git+https://github.com/hlibkoval/mcp-workbench.git"},"bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"homepage":"https://github.com/hlibkoval/mcp-workbench#readme","author":{"name":"Hlib Koval"},"license":"MIT","_id":"mcp-workbench@0.14.0","gitHead":"0f56482efb7b0b32aa5c7657f8143e5d24a8ec96","types":"./dist/index.d.ts","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-DhhH7FbMfkHiQ1JMUgEQ2bypIyIvWFLU4PqH1i0I4Txn9DUVw84Zn4fNG3L9/6FVtRt4mECSOCbgOQitKTr2ug==","shasum":"7505ee08db9042a152a7bd9e26686d6d654c3078","tarball":"https://registry.npmjs.org/mcp-workbench/-/mcp-workbench-0.14.0.tgz","fileCount":162,"unpackedSize":1332818,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC/s55cttumGwwGykfg/HUD0p6W7Nwbodt1iwIKZmS3HQIhAO7DSIueOeYVLYblQgmVMrAr7H6hfTd/NtJkrwi/d1hy"}]},"_npmUser":{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"},"directories":{},"maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-workbench_0.14.0_1761762349845_0.33034333443681474"},"_hasShrinkwrap":false}},"time":{"created":"2025-10-24T12:00:33.179Z","modified":"2025-10-29T18:25:50.300Z","0.0.2":"2025-10-24T12:00:33.363Z","0.1.0":"2025-10-24T13:40:18.639Z","0.2.0":"2025-10-24T14:26:55.069Z","0.2.1":"2025-10-24T14:58:42.428Z","0.2.2":"2025-10-24T15:30:04.618Z","0.2.3":"2025-10-24T15:41:00.447Z","0.2.4":"2025-10-24T15:59:49.731Z","0.3.0":"2025-10-24T16:13:28.514Z","0.3.1":"2025-10-24T16:25:55.245Z","0.3.2":"2025-10-24T16:39:51.144Z","0.3.3":"2025-10-24T16:51:37.059Z","0.4.0":"2025-10-27T15:05:23.881Z","0.5.0":"2025-10-27T16:09:34.010Z","0.6.0":"2025-10-27T16:58:19.041Z","0.7.0":"2025-10-27T21:38:41.558Z","0.7.1":"2025-10-27T22:09:48.185Z","0.7.2":"2025-10-28T09:29:21.073Z","0.7.3":"2025-10-28T09:53:49.453Z","0.8.0":"2025-10-28T10:59:26.449Z","0.9.0":"2025-10-28T12:37:28.615Z","0.10.0":"2025-10-28T13:47:55.363Z","0.11.0":"2025-10-28T16:37:09.885Z","0.11.1":"2025-10-28T16:40:29.049Z","0.11.2":"2025-10-28T16:44:56.031Z","0.12.0":"2025-10-28T19:03:35.151Z","0.13.0":"2025-10-29T10:41:23.893Z","0.14.0":"2025-10-29T18:25:50.120Z"},"bugs":{"url":"https://github.com/hlibkoval/mcp-workbench/issues"},"author":{"name":"Hlib Koval"},"license":"MIT","homepage":"https://github.com/hlibkoval/mcp-workbench#readme","keywords":["mcp","mcp-server","toolbox","aggregator"],"repository":{"type":"git","url":"git+https://github.com/hlibkoval/mcp-workbench.git"},"description":"MCP server that aggregates other MCP tools and provides dynamic discovery through toolboxes","maintainers":[{"name":"hlibkoval","email":"gleb.koval.dev@gmail.com"}],"readme":"# MCP Workbench\n\n> **⚠️ INCUBATION STAGE**: This project is in active development (pre-1.0.0). Breaking changes may occur in any release. Not recommended for production use until 1.0.0. See [Versioning Policy](#versioning-policy) below.\n\n**MCP Workbench** is a meta-MCP server that aggregates tools from other MCP servers and organizes them into \"toolboxes\" for efficient discovery and invocation.\n\n## Overview\n\nInstead of managing connections to multiple MCP servers manually, MCP Workbench allows you to:\n\n1. **Organize tools by domain** - Group related MCP servers into named toolboxes (e.g., \"incident-analysis\", \"gitlab-workflow\")\n2. **Dynamic discovery** - Open a toolbox to discover all available tools from its servers\n3. **Structured invocation** - Call tools using explicit `{ toolbox, server, name }` identifiers via the `use_tool` meta-tool\n4. **Automatic resource management** - Toolboxes remain open until server shutdown, with automatic cleanup of all connections\n\n### Tool Identification\n\nTools are identified using structured objects with three components:\n\n```typescript\n{\n  toolbox: \"toolbox-name\",    // Which toolbox contains this tool\n  server: \"server-name\",      // Which MCP server provides this tool\n  name: \"tool-name\"           // The tool's original name\n}\n```\n\n**Examples:**\n- Toolbox \"dev\", server \"filesystem\", name \"read_file\"\n- Toolbox \"prod\", server \"clickhouse\", name \"query\"\n\nThis structured approach allows multiple toolboxes to use the same MCP server without conflicts, and eliminates ambiguity with special characters in tool names.\n\n## Installation\n\n### Option 1: No Installation Required (Use with npx)\n\nYou can use `npx` to run mcp-workbench directly without any installation:\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-workbench\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-workbench\"],\n      \"env\": {\n        \"WORKBENCH_CONFIG\": \"/absolute/path/to/workbench-config.json\"\n      }\n    }\n  }\n}\n```\n\nThe `-y` flag tells npx to automatically install without prompting. The first run will download and cache the package, subsequent runs will use the cached version.\n\n### Option 2: Install Globally from npm\n\n```bash\nnpm install -g mcp-workbench\n```\n\nThen use in your MCP client config:\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-workbench\": {\n      \"command\": \"mcp-workbench\",\n      \"env\": {\n        \"WORKBENCH_CONFIG\": \"/absolute/path/to/workbench-config.json\"\n      }\n    }\n  }\n}\n```\n\n### Option 3: Clone and Build Locally\n\n```bash\ngit clone https://github.com/hlibkoval/mcp-workbench.git\ncd mcp-workbench\nnpm install\nnpm run build\n```\n\nThen use in your MCP client config:\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-workbench\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/mcp-workbench/dist/index.js\"],\n      \"env\": {\n        \"WORKBENCH_CONFIG\": \"/absolute/path/to/workbench-config.json\"\n      }\n    }\n  }\n}\n```\n\n## Configuration\n\nCreate a `workbench-config.json` file:\n\n```json\n{\n  \"toolboxes\": {\n    \"my-toolbox\": {\n      \"description\": \"Description of what this toolbox is for\",\n      \"mcpServers\": {\n        \"server-name\": {\n          \"command\": \"node\",\n          \"args\": [\"path/to/server.js\"],\n          \"env\": {\n            \"API_KEY\": \"${API_KEY}\",\n            \"DATABASE_URL\": \"${DATABASE_URL}\"\n          },\n          \"toolFilters\": [\"*\"],\n          \"transport\": \"stdio\"\n        }\n      }\n    }\n  }\n}\n```\n\n### Configuration Options\n\n- **toolboxes**: Object mapping toolbox names to configurations\n  - **description**: Human-readable purpose of the toolbox\n  - **mcpServers**: Object mapping server names to MCP server configurations (uses standard MCP schema)\n    - **command**: Command to execute the MCP server (required)\n    - **args**: Arguments to pass to the command (optional)\n    - **env**: Environment variables for the server process (optional)\n    - **toolFilters**: Array of tool names to include, or `[\"*\"]` for all tools (optional, workbench extension)\n    - **transport**: Transport type - currently only `\"stdio\"` is supported (optional, defaults to `\"stdio\"`, workbench extension)\n\n### Environment Variable Expansion\n\nMCP Workbench supports environment variable expansion in configuration files using `${VAR}` and `${VAR:-default}` syntax. This allows you to:\n\n- **Externalize credentials** - Keep API keys and passwords out of configuration files\n- **Share configurations** - Use the same config file across different machines and environments\n- **Support multiple environments** - Switch between dev/staging/prod using environment variables\n\n#### Syntax\n\n**Required variables** (no default):\n```json\n{\n  \"env\": {\n    \"API_KEY\": \"${API_KEY}\",\n    \"DATABASE_PASSWORD\": \"${DATABASE_PASSWORD}\"\n  }\n}\n```\n\n**Optional variables** (with defaults):\n```json\n{\n  \"env\": {\n    \"LOG_LEVEL\": \"${LOG_LEVEL:-info}\",\n    \"PORT\": \"${PORT:-3000}\",\n    \"DEBUG_MODE\": \"${DEBUG_MODE:-false}\"\n  }\n}\n```\n\n#### Where It Works\n\nEnvironment variable expansion is supported in all configuration fields:\n- **command**: `\"${HOME}/tools/npx\"`\n- **args**: `[\"-y\", \"server\", \"${DATABASE_PASSWORD}\"]`\n- **env**: `{\"API_KEY\": \"${API_KEY}\"}`\n\n#### Example: Secure Credentials\n\n**Configuration file** (`workbench-config.json`):\n```json\n{\n  \"toolboxes\": {\n    \"production\": {\n      \"description\": \"Production environment tools\",\n      \"mcpServers\": {\n        \"database\": {\n          \"command\": \"npx\",\n          \"args\": [\"-y\", \"@modelcontextprotocol/server-database\"],\n          \"env\": {\n            \"DATABASE_URL\": \"${DATABASE_URL}\",\n            \"API_KEY\": \"${API_KEY}\",\n            \"LOG_LEVEL\": \"${LOG_LEVEL:-info}\"\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n**Environment variables**:\n```bash\nexport API_KEY=\"your-secret-api-key\"\nexport DATABASE_URL=\"postgresql://user:pass@localhost/db\"\n# LOG_LEVEL will use default \"info\" if not set\n\nexport WORKBENCH_CONFIG=./workbench-config.json\nnpx -y mcp-workbench\n```\n\n#### Example: Cross-Platform Paths\n\n**Configuration file**:\n```json\n{\n  \"toolboxes\": {\n    \"local-dev\": {\n      \"description\": \"Local development tools\",\n      \"mcpServers\": {\n        \"filesystem\": {\n          \"command\": \"${HOME}/tools/npx\",\n          \"args\": [\"-y\", \"@modelcontextprotocol/server-filesystem\", \"${PROJECT_ROOT}/data\"]\n        }\n      }\n    }\n  }\n}\n```\n\n**Environment variables**:\n```bash\nexport HOME=\"/Users/yourname\"  # macOS\n# or\nexport HOME=\"/home/yourname\"   # Linux\n\nexport PROJECT_ROOT=\"$(pwd)\"\nexport WORKBENCH_CONFIG=./workbench-config.json\nnpx -y mcp-workbench\n```\n\n#### Example: Multi-Environment Support\n\n**Single configuration file** works for dev, staging, and production:\n\n```json\n{\n  \"toolboxes\": {\n    \"api-tools\": {\n      \"description\": \"API interaction tools\",\n      \"mcpServers\": {\n        \"api-client\": {\n          \"command\": \"npx\",\n          \"args\": [\"-y\", \"mcp-api-client\"],\n          \"env\": {\n            \"API_ENDPOINT\": \"${API_ENDPOINT}\",\n            \"AUTH_TOKEN\": \"${AUTH_TOKEN}\",\n            \"ENVIRONMENT\": \"${ENVIRONMENT}\"\n          }\n        }\n      }\n    }\n  }\n}\n```\n\n**Development environment**:\n```bash\nexport API_ENDPOINT=\"http://localhost:3000/api\"\nexport AUTH_TOKEN=\"dev_token_123\"\nexport ENVIRONMENT=\"development\"\n```\n\n**Production environment**:\n```bash\nexport API_ENDPOINT=\"https://api.production.com\"\nexport AUTH_TOKEN=\"prod_token_secure\"\nexport ENVIRONMENT=\"production\"\n```\n\n#### Error Handling\n\nIf a required variable is missing, you'll get a clear error message:\n\n```\nFailed to load configuration from ./workbench-config.json:\nEnvironment variable expansion failed\n  Variable: API_KEY\n  Location: config.toolboxes.production.mcpServers.database.env.API_KEY\n  Reason: Variable is not set\n\nSet the environment variable before starting server:\n  export API_KEY=value\n```\n\n#### Important Notes\n\n- **Empty strings are valid**: `export VAR=\"\"` uses empty string, `unset VAR` triggers error for required variables\n- **POSIX variable names**: Must be uppercase letters, digits, and underscores (e.g., `API_KEY`, `DATABASE_URL`)\n- **No nested expansion**: Default values are literal strings, no `${...}` in defaults\n- **Backward compatible**: Configurations without `${...}` patterns work unchanged\n\n#### Security Best Practices\n\n- **Never commit credentials** to version control\n- **Use environment variables** for all sensitive data (API keys, passwords, tokens)\n- **Share configuration files safely** - they contain no secrets when using `${VAR}` syntax\n- **Use different variables** for different environments (dev/staging/prod)\n- **Document required variables** in your project's README\n\n## Usage\n\n### Start the Server\n\n```bash\n# Set config path (or use default ./workbench-config.json)\nexport WORKBENCH_CONFIG=/path/to/workbench-config.json\n\n# Run the server\nnpm start\n```\n\n### Use with Claude Desktop or Claude Code\n\nAdd to your configuration file:\n- **Claude Desktop (macOS)**: `~/Library/Application Support/Claude/claude_desktop_config.json`\n- **Claude Desktop (Windows)**: `%APPDATA%\\Claude\\claude_desktop_config.json`\n- **Claude Desktop (Linux)**: `~/.config/Claude/claude_desktop_config.json`\n- **Claude Code**: `~/.claude.json`\n\n**Using npx (recommended - no manual installation):**\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-workbench\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"mcp-workbench\"],\n      \"env\": {\n        \"WORKBENCH_CONFIG\": \"/Users/yourname/.config/mcp-workbench/workbench-config.json\"\n      }\n    }\n  }\n}\n```\n\n**Or if installed globally:**\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-workbench\": {\n      \"command\": \"mcp-workbench\",\n      \"env\": {\n        \"WORKBENCH_CONFIG\": \"/Users/yourname/.config/mcp-workbench/workbench-config.json\"\n      }\n    }\n  }\n}\n```\n\n**Or if using local clone:**\n\n```json\n{\n  \"mcpServers\": {\n    \"mcp-workbench\": {\n      \"command\": \"node\",\n      \"args\": [\"/absolute/path/to/mcp-workbench/dist/index.js\"],\n      \"env\": {\n        \"WORKBENCH_CONFIG\": \"/Users/yourname/.config/mcp-workbench/workbench-config.json\"\n      }\n    }\n  }\n}\n```\n\n**Important**:\n- Use absolute paths for `WORKBENCH_CONFIG`, not relative paths\n- Replace `/Users/yourname/` with your actual home directory\n- Make sure you've created your `workbench-config.json` file first (see Configuration section)\n- After updating the configuration, restart Claude Desktop or Claude Code\n\n### Available Tools\n\nThe workbench provides 2 meta-tools for toolbox management and tool invocation:\n\n#### Toolbox Discovery via Initialization\n\nWhen an MCP client connects to the workbench, the initialization response includes an `instructions` field with a listing of all configured toolboxes:\n\n```\nAvailable Toolboxes:\n\nincident-analysis (2 servers)\n  Description: Tools for analyzing incidents\n\ndata-processing (3 servers)\n  Description: Tools for data transformation\n\nTo access tools from a toolbox, use open_toolbox with the toolbox name.\n```\n\nThis allows clients to discover available toolboxes without making additional tool calls.\n\n#### 1. `open_toolbox`\n\nOpen a toolbox and discover its tools.\n\n```typescript\n// Input:\n{\n  \"toolbox\": \"incident-analysis\"\n}\n\n// Output: (returns full tool list with schemas)\n{\n  \"toolbox\": \"incident-analysis\",\n  \"description\": \"Tools for analyzing incidents\",\n  \"servers_connected\": 2,\n  \"tools\": [\n    {\n      \"name\": \"list_databases\",               // Original tool name\n      \"server\": \"clickhouse\",                 // MCP server providing this tool\n      \"toolbox\": \"incident-analysis\",         // Toolbox containing this tool\n      \"description\": \"List available databases\",\n      \"inputSchema\": {...},\n      \"annotations\": {...}\n    },\n    // ... more tools\n  ]\n}\n```\n\n#### 2. `use_tool`\n\nExecute a tool from an opened toolbox using structured tool identifiers.\n\n```typescript\n// Input: (using structured tool identifier)\n{\n  \"tool\": {\n    \"toolbox\": \"incident-analysis\",\n    \"server\": \"clickhouse\",\n    \"name\": \"list_databases\"\n  },\n  \"arguments\": {\n    // tool-specific arguments\n  }\n}\n\n// Output: (tool's direct response)\n```\n\n## Workflow Example\n\n```typescript\n// 1. Read initialization instructions to see available toolboxes\n// (automatically provided during MCP initialization)\n\n// 2. Open the toolbox you need\nopen_toolbox({ toolbox: \"data-analysis\" })\n// Returns tool list with separate toolbox, server, name fields\n\n// 3. Use tools from the toolbox via use_tool with structured identifiers\nuse_tool({\n  tool: {\n    toolbox: \"data-analysis\",\n    server: \"postgres\",\n    name: \"query_database\"\n  },\n  arguments: { query: \"SELECT * FROM users LIMIT 10\" }\n})\n\n// Toolboxes remain open until server shutdown - no manual close needed\n// All connections are automatically cleaned up when the server terminates\n```\n\n## Use Cases\n\n### Skill-Specific Tool Sets\n\nCreate toolboxes for specific Claude skills or sub-agents:\n\n```json\n{\n  \"toolboxes\": {\n    \"incident-response\": {\n      \"description\": \"Tools for incident analysis and response\",\n      \"mcpServers\": {\n        \"clickhouse-logs\": {...},\n        \"prometheus-metrics\": {...},\n        \"pagerduty\": {...}\n      }\n    },\n    \"code-review\": {\n      \"description\": \"Tools for code review workflows\",\n      \"mcpServers\": {\n        \"gitlab\": {...},\n        \"sonarqube\": {...}\n      }\n    }\n  }\n}\n```\n\n### Environment-Specific Tools\n\nOrganize tools by environment:\n\n```json\n{\n  \"toolboxes\": {\n    \"production\": {\n      \"description\": \"Production environment monitoring\",\n      \"mcpServers\": {\n        \"prod-db\": {...},\n        \"prod-metrics\": {...}\n      }\n    },\n    \"staging\": {\n      \"description\": \"Staging environment tools\",\n      \"mcpServers\": {\n        \"staging-db\": {...},\n        \"staging-metrics\": {...}\n      }\n    }\n  }\n}\n```\n\n## Architecture\n\n```\n┌─────────────────────────────────────┐\n│      MCP Client (Claude, etc.)      │\n└────────────┬────────────────────────┘\n             │\n             │ stdio/MCP protocol\n             │\n┌────────────▼────────────────────────┐\n│        MCP Workbench Server         │\n│  ┌──────────────────────────────┐   │\n│  │  Meta-Tools (2 tools):       │   │\n│  │  - open_toolbox              │   │\n│  │  - use_tool                  │   │\n│  │                              │   │\n│  │  Tool Invocation:            │   │\n│  │  Structured identifiers      │   │\n│  │  { toolbox, server, name }   │   │\n│  └──────────────────────────────┘   │\n│  ┌──────────────────────────────┐   │\n│  │  Client Manager              │   │\n│  │  - Connection pooling        │   │\n│  │  - Tool discovery            │   │\n│  │  - Request proxying          │   │\n│  │  - Automatic cleanup on      │   │\n│  │    server shutdown           │   │\n│  └──────────────────────────────┘   │\n└────────┬────────────┬───────────────┘\n         │            │\n         │ MCP client connections\n         │            │\n    ┌────▼───┐   ┌───▼────┐\n    │ MCP    │   │ MCP    │\n    │Server 1│   │Server 2│\n    └────────┘   └────────┘\n```\n\n## Development\n\n```bash\n# Install dependencies\nnpm install\n\n# Development mode with auto-reload\nnpm run dev\n\n# Build for production\nnpm run build\n\n# Clean build artifacts\nnpm run clean\n```\n\n### End-to-End Testing\n\nThe project includes comprehensive E2E tests that validate the complete workbench workflow from configuration loading through tool execution and cleanup.\n\n**Running E2E Tests:**\n\n```bash\n# Run all E2E tests\nnpm run test:e2e\n\n# Run E2E tests in watch mode\nnpm run test:e2e:watch\n```\n\n**What's Tested:**\n- **Workflow Validation (US1)**: Complete workflow from initialization → open toolbox → execute tools → cleanup\n- **Configuration Validation (US2)**: Environment variables, tool filters, multiple toolboxes, invalid configs\n- **Error Handling (US3)**: Invalid tool names, bad arguments, downstream failures, config reference errors\n- **CI Integration (US4)**: GitHub Actions workflow, automated testing on Node.js 18/20/22\n\n**Test Architecture:**\n- Uses Vitest as the test runner\n- Tests spawn workbench server via stdio transport\n- Uses real downstream MCP servers (@modelcontextprotocol/server-memory)\n- 37 tests across 4 test files\n- All tests complete in under 5 minutes (typically ~3 seconds)\n- Pass/fail output only (no performance metrics)\n- Runs automatically on pull requests and pushes to main/develop\n\n## Troubleshooting\n\n### \"Failed to connect to MCP server\"\n\n- Verify the command and args are correct\n- Check that required environment variables are set\n- Ensure the MCP server is installed and accessible\n\n### \"Toolbox not found\"\n\n- Check that the toolbox name matches the configuration\n- Review initialization instructions to see available toolboxes\n\n### \"Tool not found in toolbox\"\n\n- Verify the toolbox is opened with `open_toolbox`\n- Check the tool name from the open toolbox response\n- Ensure `toolFilters` includes the tool (or use `[\"*\"]`)\n\n## Versioning Policy\n\nThis project uses **relaxed semantic versioning** while in incubation (versions < 1.0.0):\n\n- **Breaking changes may occur in any release** (major, minor, or patch)\n- **No migration guides provided** during incubation\n- **No backward compatibility guarantees** between releases\n- **Fast iteration prioritized** over stability\n\n**What this means for users:**\n- Pin to exact versions in your dependencies: `\"mcp-workbench\": \"0.11.1\"` (not `^0.11.1`)\n- Review release notes carefully before updating\n- Test thoroughly after updates\n- Expect API changes, configuration changes, and behavior changes\n\n**After 1.0.0:**\n- Strict semantic versioning will be followed\n- Breaking changes only in major versions\n- Migration guides provided for all breaking changes\n- Backward compatibility maintained within major version series\n\n## License\n\nMIT\n\n## Contributing\n\nContributions welcome! This is a meta-MCP pattern that can be extended with:\n\n- Additional transport types (HTTP, SSE)\n- Tool name conflict resolution strategies\n- Caching and performance optimizations\n- Tool usage analytics\n- Dynamic toolbox reconfiguration\n","readmeFilename":"README.md"}