{"_id":"@ahkohd/mcpstead","_rev":"13-5e092e4455a7ea49d50c2c78e9def03f","name":"@ahkohd/mcpstead","dist-tags":{"latest":"0.1.13"},"versions":{"0.1.1":{"name":"@ahkohd/mcpstead","version":"0.1.1","license":"MIT","_id":"@ahkohd/mcpstead@0.1.1","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"homepage":"https://github.com/ahkohd/mcpstead#readme","bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"bin":{"mcpstead":"bin/mcpstead.js"},"dist":{"shasum":"d2859a09ca255b369f5f4ff2f452ff7401911204","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.1.tgz","fileCount":5,"integrity":"sha512-crYldJYbB+7sfVuACWRhT1AZxnF3iDh4AZ1xZhwlfjEbvls3oEsnj/3xeoNwjgrPE9xmosVxa7cYrJwFnNsNDA==","signatures":[{"sig":"MEQCIHz21Whg2mYsSU9ZCEZG0fCD4A4YdtcimPzpQYewxZJLAiAFc1ROhKjQbsOXqW5rQZqgTyyvgXEYKvCeMAFcsPXfYQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10349},"type":"commonjs","engines":{"node":">=18"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"repository":{"url":"git+https://github.com/ahkohd/mcpstead.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP gateway","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"optionalDependencies":{"@ahkohd/mcpstead-darwin-x64":"0.1.1","@ahkohd/mcpstead-darwin-arm64":"0.1.1","@ahkohd/mcpstead-linux-x64-gnu":"0.1.1","@ahkohd/mcpstead-win32-x64-msvc":"0.1.1"},"_npmOperationalInternal":{"tmp":"tmp/mcpstead_0.1.1_1777091802248_0.8529589066890726","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@ahkohd/mcpstead","version":"0.1.2","license":"MIT","_id":"@ahkohd/mcpstead@0.1.2","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"homepage":"https://github.com/ahkohd/mcpstead#readme","bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"bin":{"mcpstead":"bin/mcpstead.js"},"dist":{"shasum":"90174f79f710c8ae622afb58efc5fc0d2f2ba12f","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.2.tgz","fileCount":5,"integrity":"sha512-s7x3L3BQD7tkffC2OEVsND8VjAkUAaQp5aj7/1QcvvruxyOGTvjzDzkUBDpJ4m0Uzvtw3dDIyR9RhaU6Ogmgtg==","signatures":[{"sig":"MEYCIQD9Hf7Rn9efhJQWTdP48XHeaqXqcTjdW4ZhlklZ5EY9+QIhALaqf84U9VBDpsYnFHNgt8aBGC1NBU0R7Ev0vVOcXFfT","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10349},"type":"commonjs","engines":{"node":">=18"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"repository":{"url":"git+https://github.com/ahkohd/mcpstead.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP gateway","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"optionalDependencies":{"@ahkohd/mcpstead-darwin-x64":"0.1.2","@ahkohd/mcpstead-darwin-arm64":"0.1.2","@ahkohd/mcpstead-linux-x64-gnu":"0.1.2","@ahkohd/mcpstead-win32-x64-msvc":"0.1.2"},"_npmOperationalInternal":{"tmp":"tmp/mcpstead_0.1.2_1777092168380_0.5712562832451031","host":"s3://npm-registry-packages-npm-production"}},"0.1.3":{"name":"@ahkohd/mcpstead","version":"0.1.3","license":"MIT","_id":"@ahkohd/mcpstead@0.1.3","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"homepage":"https://github.com/ahkohd/mcpstead#readme","bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"bin":{"mcpstead":"bin/mcpstead.js"},"dist":{"shasum":"466b590164f05797b7e1c14f8426cec8598a7966","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.3.tgz","fileCount":5,"integrity":"sha512-eVUwH+ksBOpr+8bMJGD2RdTTV+MZoUBebAbPjhv6RMN80lP5DhBArwrk0Hpd0cU346/ChHhbRin8jFq5al4hqQ==","signatures":[{"sig":"MEUCIQDmRJfSaHRkPje3eR4Rle0QbZMBTSURp87XHkmjO4nBmwIgTgdnl2CC851PB+ix0cdBJ8klNQq9Eo6jYpiCH/lSmOg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":10349},"type":"commonjs","engines":{"node":">=18"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"repository":{"url":"git+https://github.com/ahkohd/mcpstead.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP gateway","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"optionalDependencies":{"@ahkohd/mcpstead-darwin-x64":"0.1.3","@ahkohd/mcpstead-darwin-arm64":"0.1.3","@ahkohd/mcpstead-linux-x64-gnu":"0.1.3","@ahkohd/mcpstead-win32-x64-msvc":"0.1.3"},"_npmOperationalInternal":{"tmp":"tmp/mcpstead_0.1.3_1777092524629_0.044704198407906626","host":"s3://npm-registry-packages-npm-production"}},"0.1.4":{"name":"@ahkohd/mcpstead","version":"0.1.4","license":"MIT","_id":"@ahkohd/mcpstead@0.1.4","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"homepage":"https://github.com/ahkohd/mcpstead#readme","bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"bin":{"mcpstead":"bin/mcpstead.js"},"dist":{"shasum":"e10d493e1f23d05786e3884a474fa3a1bdee94ba","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.4.tgz","fileCount":5,"integrity":"sha512-AiWmaq1Z36NrCG0y+qo5mvhimbYTJH9x/FmJHB5+en4I6Yeud8x7KSxiEWqKkV5J8rQcm5FXDC1iY8KYCCm92g==","signatures":[{"sig":"MEQCIG7B/7NzLSZ7oaAyTniB9YgepPeXY0sBbt9jkvQv0gVqAiAbQpdA1ZxeZr0sVfI1du5g2Tr2Vj2a/cnJ66Hj3ni2gA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12347},"type":"commonjs","engines":{"node":">=18"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"repository":{"url":"git+https://github.com/ahkohd/mcpstead.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP gateway","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"optionalDependencies":{"@ahkohd/mcpstead-darwin-x64":"0.1.4","@ahkohd/mcpstead-darwin-arm64":"0.1.4","@ahkohd/mcpstead-linux-x64-gnu":"0.1.4","@ahkohd/mcpstead-win32-x64-msvc":"0.1.4"},"_npmOperationalInternal":{"tmp":"tmp/mcpstead_0.1.4_1777097870314_0.1381259126755341","host":"s3://npm-registry-packages-npm-production"}},"0.1.5":{"name":"@ahkohd/mcpstead","version":"0.1.5","license":"MIT","_id":"@ahkohd/mcpstead@0.1.5","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"homepage":"https://github.com/ahkohd/mcpstead#readme","bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"bin":{"mcpstead":"bin/mcpstead.js"},"dist":{"shasum":"c7bb6dddb8240b1dc5245b588dd7d696e2505778","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.5.tgz","fileCount":5,"integrity":"sha512-IJATERAUI7cuHjt05rJFawe1gu4zJMNujKK5fYqWpCTdIVb4djuxK6PjqWfiQzH0fEbYOpq8e1NlaXky/3PT1A==","signatures":[{"sig":"MEUCIQCN/E/DjP4XUkDpxWZKWQxm4gLHM456vKwip4zH7IH+iQIgRva+YVbjYstH28AGc6BY7p/cu9KVnvfHdLEbbcvHaI0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12347},"type":"commonjs","engines":{"node":">=18"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"repository":{"url":"git+https://github.com/ahkohd/mcpstead.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP gateway","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"optionalDependencies":{"@ahkohd/mcpstead-darwin-x64":"0.1.5","@ahkohd/mcpstead-darwin-arm64":"0.1.5","@ahkohd/mcpstead-linux-x64-gnu":"0.1.5","@ahkohd/mcpstead-win32-x64-msvc":"0.1.5"},"_npmOperationalInternal":{"tmp":"tmp/mcpstead_0.1.5_1777099929694_0.1433590275726675","host":"s3://npm-registry-packages-npm-production"}},"0.1.6":{"name":"@ahkohd/mcpstead","version":"0.1.6","license":"MIT","_id":"@ahkohd/mcpstead@0.1.6","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"homepage":"https://github.com/ahkohd/mcpstead#readme","bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"bin":{"mcpstead":"bin/mcpstead.js"},"dist":{"shasum":"597a3bc09fa02270a2f947c06422c2fb9a68651d","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.6.tgz","fileCount":5,"integrity":"sha512-Xq5MMEVS6aMzvASzbywUZWwers7Oze7kaQWuQIivrkzYZeV7i7/OzGLSQtbCUSJ6fFjpQpbf5nEZbxgd5pUOLw==","signatures":[{"sig":"MEYCIQD3TpZtiUuCsLxJjPjJiTdT+vM9vyaxaL5j3jUCT1cePgIhAPpT5Ga/N+wNlnET3fm/LYIsBTLFBBi+PnaDzuEkzAZq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12347},"type":"commonjs","engines":{"node":">=18"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"repository":{"url":"git+https://github.com/ahkohd/mcpstead.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP gateway","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"optionalDependencies":{"@ahkohd/mcpstead-darwin-x64":"0.1.6","@ahkohd/mcpstead-darwin-arm64":"0.1.6","@ahkohd/mcpstead-linux-x64-gnu":"0.1.6","@ahkohd/mcpstead-win32-x64-msvc":"0.1.6"},"_npmOperationalInternal":{"tmp":"tmp/mcpstead_0.1.6_1777100826083_0.19733724342390913","host":"s3://npm-registry-packages-npm-production"}},"0.1.7":{"name":"@ahkohd/mcpstead","version":"0.1.7","license":"MIT","_id":"@ahkohd/mcpstead@0.1.7","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"homepage":"https://github.com/ahkohd/mcpstead#readme","bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"bin":{"mcpstead":"bin/mcpstead.js"},"dist":{"shasum":"137e2f623b4f34b326069027423fb03067983c9a","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.7.tgz","fileCount":5,"integrity":"sha512-PmKW87HpMoC/6ImEprGwvfElJ1fvrbQgvEHVW6ogp05ZEkEK2bKEzMfM5aikvgoxTNdM5WNDiWtj1yA+8h5ukA==","signatures":[{"sig":"MEYCIQCWbXOPVKfmndBSwemUAUGK20l+HBrXiLt9JxHY0pF54QIhAMmo6+Iavcz2H3VpqNV26KaXaTolRTopmliE6vtMWNaI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12444},"type":"commonjs","engines":{"node":">=18"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"repository":{"url":"git+https://github.com/ahkohd/mcpstead.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP gateway","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"optionalDependencies":{"@ahkohd/mcpstead-darwin-x64":"0.1.7","@ahkohd/mcpstead-darwin-arm64":"0.1.7","@ahkohd/mcpstead-linux-x64-gnu":"0.1.7","@ahkohd/mcpstead-win32-x64-msvc":"0.1.7"},"_npmOperationalInternal":{"tmp":"tmp/mcpstead_0.1.7_1777102224539_0.7476759807719113","host":"s3://npm-registry-packages-npm-production"}},"0.1.8":{"name":"@ahkohd/mcpstead","version":"0.1.8","license":"MIT","_id":"@ahkohd/mcpstead@0.1.8","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"homepage":"https://github.com/ahkohd/mcpstead#readme","bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"bin":{"mcpstead":"bin/mcpstead.js"},"dist":{"shasum":"5818f53e5318f73d49f9fe07da0429e5a38dac6a","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.8.tgz","fileCount":5,"integrity":"sha512-+F33wIL6i/iTv0d6Z7isOtfSSWodJEXrlmjehTvj2skB/WHC1mZ/mrthX7TgCPcnjW1A9l0CjAvAeyJxdWjqtg==","signatures":[{"sig":"MEUCIBXkQYGuThyql2+dJ8BmvjzUTNQsDR/Fa9gAcgZFhcR3AiEArPq5lPQGP95+Llrdu+lkCF1f1KINg7zUq3PcnNUd8iw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":12444},"type":"commonjs","engines":{"node":">=18"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"repository":{"url":"git+https://github.com/ahkohd/mcpstead.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP gateway","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"optionalDependencies":{"@ahkohd/mcpstead-darwin-x64":"0.1.8","@ahkohd/mcpstead-darwin-arm64":"0.1.8","@ahkohd/mcpstead-linux-x64-gnu":"0.1.8","@ahkohd/mcpstead-win32-x64-msvc":"0.1.8"},"_npmOperationalInternal":{"tmp":"tmp/mcpstead_0.1.8_1777102620453_0.05817612353664847","host":"s3://npm-registry-packages-npm-production"}},"0.1.9":{"name":"@ahkohd/mcpstead","version":"0.1.9","license":"MIT","_id":"@ahkohd/mcpstead@0.1.9","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"homepage":"https://github.com/ahkohd/mcpstead#readme","bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"bin":{"mcpstead":"bin/mcpstead.js"},"dist":{"shasum":"dc94646198e48191470235d49427dedcdb1ab986","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.9.tgz","fileCount":5,"integrity":"sha512-mbffQ1yWN0GUS+Ltn0LNgOiA/xe1B+3q/HFTCpbYzIXMidDRwKdfr2Jp+ZLwotLqaq10EW3JbDKvreMAYZGxeQ==","signatures":[{"sig":"MEUCIQCnZzFka04Hg+QChEQ6hpKUVXIx1k0t8+g8tHGhqAYdcgIgGXLU+OLDE3OqHvbrXTZphUn5j7NQYBgPCOVXZIYUQNM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13239},"type":"commonjs","engines":{"node":">=18"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"repository":{"url":"git+https://github.com/ahkohd/mcpstead.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP gateway","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"optionalDependencies":{"@ahkohd/mcpstead-darwin-x64":"0.1.9","@ahkohd/mcpstead-darwin-arm64":"0.1.9","@ahkohd/mcpstead-linux-x64-gnu":"0.1.9","@ahkohd/mcpstead-win32-x64-msvc":"0.1.9"},"_npmOperationalInternal":{"tmp":"tmp/mcpstead_0.1.9_1777104212383_0.48100511354688735","host":"s3://npm-registry-packages-npm-production"}},"0.1.10":{"name":"@ahkohd/mcpstead","version":"0.1.10","license":"MIT","_id":"@ahkohd/mcpstead@0.1.10","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"homepage":"https://github.com/ahkohd/mcpstead#readme","bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"bin":{"mcpstead":"bin/mcpstead.js"},"dist":{"shasum":"3d960aea3a62c2681d59c4b031430fac135d03bf","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.10.tgz","fileCount":5,"integrity":"sha512-aRf8yLpIFubQZXik6r3Y97d1PlKxTWKE91bvSkSpuBlp0azYsDyX0nU6U7ym41fuu8RjlqRPFRuM1HNCGL43pQ==","signatures":[{"sig":"MEYCIQChJfbFHfgUOSb/LNWO33EJClO0TSfls+yRLaehFfWWlQIhAM1EExxY5tbT6FcZ2brtHPgYMANwYZJQEelA4NcqjoWB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13186},"type":"commonjs","engines":{"node":">=18"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"repository":{"url":"git+https://github.com/ahkohd/mcpstead.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP gateway","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"optionalDependencies":{"@ahkohd/mcpstead-darwin-x64":"0.1.10","@ahkohd/mcpstead-darwin-arm64":"0.1.10","@ahkohd/mcpstead-linux-x64-gnu":"0.1.10","@ahkohd/mcpstead-win32-x64-msvc":"0.1.10"},"_npmOperationalInternal":{"tmp":"tmp/mcpstead_0.1.10_1777107809071_0.5598851191593766","host":"s3://npm-registry-packages-npm-production"}},"0.1.11":{"name":"@ahkohd/mcpstead","version":"0.1.11","license":"MIT","_id":"@ahkohd/mcpstead@0.1.11","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"homepage":"https://github.com/ahkohd/mcpstead#readme","bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"bin":{"mcpstead":"bin/mcpstead.js"},"dist":{"shasum":"c1df6331fd541f0aad26de5b55bb13718d23b801","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.11.tgz","fileCount":5,"integrity":"sha512-Z7T9BdBCibNqFIxw74GwObkxg+BMsVNOsyLqaVVv8Hjqv9axkxu4ibnJ1fLGtrJxgC+85085W2Zox5upgpYsRA==","signatures":[{"sig":"MEUCIEqokLXjhm8+7nePwAyFw/F2hxlbN51TVsbWYOLEQFtyAiEArE6zZnV8M2uv+vlPMAlQOt/2sawtWHoHqwLuZDuavZo=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13191},"type":"commonjs","engines":{"node":">=18"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"repository":{"url":"git+https://github.com/ahkohd/mcpstead.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP gateway","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"optionalDependencies":{"@ahkohd/mcpstead-darwin-x64":"0.1.11","@ahkohd/mcpstead-darwin-arm64":"0.1.11","@ahkohd/mcpstead-linux-x64-gnu":"0.1.11","@ahkohd/mcpstead-win32-x64-msvc":"0.1.11"},"_npmOperationalInternal":{"tmp":"tmp/mcpstead_0.1.11_1777335123594_0.9530040377045914","host":"s3://npm-registry-packages-npm-production"}},"0.1.12":{"name":"@ahkohd/mcpstead","version":"0.1.12","license":"MIT","_id":"@ahkohd/mcpstead@0.1.12","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"homepage":"https://github.com/ahkohd/mcpstead#readme","bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"bin":{"mcpstead":"bin/mcpstead.js"},"dist":{"shasum":"5d01a7678ba9c9d895dc2657a25c35c92ea79cb5","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.12.tgz","fileCount":5,"integrity":"sha512-GTyOgftRhhMSbBReVEJRDiaI4TpnIcg+hbeeslsnhCjAIqqGbjL7cX1jtlQDo1UbhTpq3jdl9pLj9FCWpzXlAw==","signatures":[{"sig":"MEYCIQCeuYQUrBVUt1MX7kIeBDtBcoa0JBTAVmBpvE6vR/BruAIhAPl+mS99SRLUZhoLFql3f5XJm+QqGrUENYwBCA8CQCdv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":13191},"type":"commonjs","engines":{"node":">=18"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"repository":{"url":"git+https://github.com/ahkohd/mcpstead.git","type":"git"},"_npmVersion":"11.11.0","description":"MCP gateway","directories":{},"_nodeVersion":"24.14.1","publishConfig":{"access":"public","provenance":true},"_hasShrinkwrap":false,"optionalDependencies":{"@ahkohd/mcpstead-darwin-x64":"0.1.12","@ahkohd/mcpstead-darwin-arm64":"0.1.12","@ahkohd/mcpstead-linux-x64-gnu":"0.1.12","@ahkohd/mcpstead-win32-x64-msvc":"0.1.12"},"_npmOperationalInternal":{"tmp":"tmp/mcpstead_0.1.12_1777336476283_0.7889502805264947","host":"s3://npm-registry-packages-npm-production"}},"0.1.13":{"name":"@ahkohd/mcpstead","version":"0.1.13","description":"MCP gateway","license":"MIT","repository":{"type":"git","url":"git+https://github.com/ahkohd/mcpstead.git"},"bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"homepage":"https://github.com/ahkohd/mcpstead#readme","type":"commonjs","bin":{"mcpstead":"bin/mcpstead.js"},"engines":{"node":">=18"},"optionalDependencies":{"@ahkohd/mcpstead-darwin-arm64":"0.1.13","@ahkohd/mcpstead-darwin-x64":"0.1.13","@ahkohd/mcpstead-linux-x64-gnu":"0.1.13","@ahkohd/mcpstead-win32-x64-msvc":"0.1.13"},"scripts":{"pack:dry":"npm pack --dry-run","version:sync":"node scripts/sync-npm-version.cjs"},"publishConfig":{"access":"public","provenance":true},"_id":"@ahkohd/mcpstead@0.1.13","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-JnP09VG04WkEUDQAnUdsFXyKkebOhF9+mgMPvoEHibhVUxJbur9FQUhHbAq974voQ41FyRTz5z39angvf6yFxQ==","shasum":"eeb50132ed9866111f0ff7d31cd0d6de1f9d12ac","tarball":"https://registry.npmjs.org/@ahkohd/mcpstead/-/mcpstead-0.1.13.tgz","fileCount":5,"unpackedSize":13191,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@ahkohd%2fmcpstead@0.1.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDeNBBr3autFz/RgO+CKNbN29T0CP1D0sXGINwGammHrAIgONuSvVAc5p2Awt3usw7FutWrbCkZXLrqzKLPS18EZUk="}]},"_npmUser":{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"},"directories":{},"maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcpstead_0.1.13_1777339252451_0.30118754843780815"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-25T04:36:42.130Z","modified":"2026-04-28T01:20:52.985Z","0.1.1":"2026-04-25T04:36:42.383Z","0.1.2":"2026-04-25T04:42:48.521Z","0.1.3":"2026-04-25T04:48:44.780Z","0.1.4":"2026-04-25T06:17:50.565Z","0.1.5":"2026-04-25T06:52:09.827Z","0.1.6":"2026-04-25T07:07:06.219Z","0.1.7":"2026-04-25T07:30:24.685Z","0.1.8":"2026-04-25T07:37:00.598Z","0.1.9":"2026-04-25T08:03:32.524Z","0.1.10":"2026-04-25T09:03:29.214Z","0.1.11":"2026-04-28T00:12:03.776Z","0.1.12":"2026-04-28T00:34:36.427Z","0.1.13":"2026-04-28T01:20:52.605Z"},"bugs":{"url":"https://github.com/ahkohd/mcpstead/issues"},"license":"MIT","homepage":"https://github.com/ahkohd/mcpstead#readme","repository":{"type":"git","url":"git+https://github.com/ahkohd/mcpstead.git"},"description":"MCP gateway","maintainers":[{"name":"ahkohd","email":"victor.olorunbunmi@gmail.com"}],"readme":"# mcpstead\n\n[![CI](https://github.com/ahkohd/mcpstead/actions/workflows/ci.yml/badge.svg)](https://github.com/ahkohd/mcpstead/actions/workflows/ci.yml) [![npm version](https://img.shields.io/npm/v/@ahkohd/mcpstead.svg)](https://www.npmjs.com/package/@ahkohd/mcpstead) [![Crates.io](https://img.shields.io/crates/v/mcpstead.svg)](https://crates.io/crates/mcpstead) [![License](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n\nMCP Gateway\n\nOne downstream `/mcp` endpoint that fronts many upstream MCP servers. Persistent upstream connections with reconnect, tool registry with qualified names, JSON or SSE responses based on client `Accept`, per-upstream auth, Prometheus metrics.\n\n## Install\n\n```bash\n# npm (macOS, Linux, WSL)\nnpm i -g @ahkohd/mcpstead\n\n# homebrew (macOS, Linux)\nbrew install ahkohd/mcpstead/mcpstead\n\n# cargo\ncargo install mcpstead --locked --force\n\n# verify\nmcpstead --version\n```\n\n## Quick start\n\n```bash\n# 1. write a config\nmkdir -p ~/.config/mcpstead\ncat > ~/.config/mcpstead/config.yaml <<'EOF'\nhost: 0.0.0.0\nport: 8766\n\nmcp:\n  auth:\n    mode: none\n\nservers:\n  - name: example\n    url: http://127.0.0.1:3000/mcp\n    protocol: streamable\n    auth: none\nEOF\n\n# 2. run\nmcpstead --config ~/.config/mcpstead/config.yaml\n```\n\nThen point any MCP client at `http://127.0.0.1:8766/mcp`.\n\n## Docker\n\n```bash\ndocker build -t mcpstead .\ndocker run --rm \\\n  -p 8766:8766 \\\n  -v \"$PWD/config:/etc/mcpstead:ro\" \\\n  mcpstead\n```\n\nThe Dockerfile installs from crates.io.\n\n## HTTP API\n\n| Method | Path | Purpose |\n|---|---|---|\n| `POST` | `/mcp` | MCP over HTTP JSON-RPC |\n| `GET` | `/mcp` | returns 405 |\n| `DELETE` | `/mcp` | terminate downstream session |\n| `GET` | `/health` | upstream status, tool counts, last-seen, reconnects |\n| `GET` | `/metrics` | Prometheus text format |\n| `POST` | `/-/reload` | reload config without restart |\n\n## MCP client setup\n\nLocal, no-auth:\n\n```yaml\nmcpstead:\n  url: http://127.0.0.1:8766/mcp\n  tools:\n    resources: false\n    prompts: false\n```\n\nBearer auth:\n\n```yaml\nmcpstead:\n  url: http://127.0.0.1:8766/mcp\n  headers:\n    Authorization: Bearer ${MCPSTEAD_BEARER_TOKEN}\n  tools:\n    resources: false\n    prompts: false\n```\n\nTools appear with qualified names - `<server>__<tool>` - so multiple upstreams can ship overlapping tool names without collision.\n\n## Auth\n\n### Downstream (clients to mcpstead)\n\nDefault is no auth:\n\n```yaml\nmcp:\n  auth:\n    mode: none\n```\n\nBearer auth:\n\n```yaml\nmcp:\n  auth:\n    mode: bearer\n```\n\nToken comes from env:\n\n```bash\nexport MCPSTEAD_BEARER_TOKEN='replace-with-strong-secret'\nmcpstead --config ~/.config/mcpstead/config.yaml\n```\n\nClients send `Authorization: Bearer <token>`. Missing or wrong token returns 401. `mcp.auth.bearer_token` in config is rejected at startup.\n\n`/health` and `/metrics` stay open regardless of auth mode - for monitoring without exposing the token.\n\n### Upstream (mcpstead to MCP servers)\n\nPer-server in the `servers` list. Three modes:\n\n```yaml\nservers:\n  - name: local\n    url: http://127.0.0.1:3000/mcp\n    auth: none\n\n  - name: workflow\n    url: https://workflow.example/mcp-server/http\n    auth:\n      type: bearer\n      token_env: WORKFLOW_TOKEN\n\n  - name: custom\n    url: https://api.example/mcp\n    headers:\n      X-API-Key: '${EXAMPLE_KEY}'\n```\n\n`token_env` resolves the named env var at startup and on config reload.\n\n## Config\n\nSet the config path with `--config <path>` or the `MCPSTEAD_CONFIG` env var.\n\n```yaml\nhost: 0.0.0.0\nport: 8766\n\nmcp:\n  auth:\n    mode: none           # none | bearer\n  session:\n    idle_ttl_seconds: 3600\n    gc_interval_seconds: 60\n    shutdown_grace_seconds: 5\n\nservers:\n  - name: local\n    url: http://127.0.0.1:3000/mcp\n    protocol: streamable # streamable | sse | auto\n    required: false      # if true, gateway won't start without this upstream\n    auth: none\n    reconnect:\n      max_attempts: 0    # 0 = infinite\n      backoff_base_ms: 1000\n      backoff_max_ms: 30000\n    tools:\n      ttl_seconds: 300\n    tls_skip_verify: false\n    quirks:\n      normalize_sse_events: true\n      inject_accept_header: 'application/json, text/event-stream'\n\nmetrics:\n  enabled: true\n\nlogging:\n  level: info\n```\n\n### Hot reload\n\nmcpstead reloads its config without restart on:\n\n- SIGHUP (`systemctl reload mcpstead` or `kill -HUP <pid>`)\n- `POST /-/reload` (gated by bearer auth in bearer mode)\n\nHot-reloadable:\n\n- upstream list\n- per-upstream auth, headers, quirks, reconnect, tools, URL, protocol, and TLS settings\n- `mcp.auth.mode` and `MCPSTEAD_BEARER_TOKEN`\n- `metrics.enabled`\n\nRestart required:\n\n- `host`\n- `port`\n- `logging.level`\n- `mcp.session.*`\n\nReload is best-effort. Bad config is rejected and ignored; the running config stays in place. Check logs and `mcpstead_config_reloads_total{result=\"error\"}` for failures.\n\n### MCP session config keys\n\n- `mcp.session.idle_ttl_seconds` - evict inactive sessions after this many seconds (default `3600`)\n- `mcp.session.gc_interval_seconds` - idle-session GC wake interval (default `60`)\n- `mcp.session.shutdown_grace_seconds` - max shutdown accounting sweep time (default `5`)\n\n### Per-upstream config keys\n\n- `name` - required, used as tool prefix\n- `url` - required, MCP endpoint\n- `protocol` - `streamable | sse | auto` (default `auto`)\n- `required` - block startup if upstream fails to initialize (default `false`)\n- `auth` - `none`, `bearer` (with `token_env`), or `headers` map\n- `reconnect.max_attempts` - `0` = infinite (default)\n- `reconnect.backoff_base_ms` / `backoff_max_ms` - exponential backoff bounds\n- `tools.ttl_seconds` - refresh cached `tools/list` after this interval\n- `tls_skip_verify` - disable TLS cert checks for this upstream (default `false`, use only for trusted local nets)\n- `quirks.normalize_sse_events` - strip `event:` lines from upstream SSE responses\n- `quirks.inject_accept_header` - override the Accept header sent upstream\n\n## Observability\n\n### Metrics\n\n`/metrics` exposes Prometheus-format counters, gauges, and histograms. Label cardinality assumes a small bounded set of upstreams and tools; tool-call series are keyed by `(server, tool)`.\n\n```\nmcpstead_build_info{version=\"...\",rust_version=\"...\",git_sha=\"...\"}\nmcpstead_start_time_seconds\nmcpstead_uptime_seconds\nmcpstead_process_resident_memory_bytes\nmcpstead_process_virtual_memory_bytes\nmcpstead_process_cpu_seconds_total\nmcpstead_process_open_fds\nmcpstead_process_max_fds\nmcpstead_process_threads\nmcpstead_upstream_connected{server=\"...\"}\nmcpstead_upstream_tools_count{server=\"...\"}\nmcpstead_upstream_reconnects_total{server=\"...\"}\nmcpstead_upstream_last_seen_seconds{server=\"...\"}\nmcpstead_upstream_initialize_total{server=\"...\",result=\"success|error\"}\nmcpstead_upstream_initialize_duration_seconds_bucket{server=\"...\",le=\"...\"}\nmcpstead_upstream_health_checks_total{server=\"...\",result=\"success|failure\"}\nmcpstead_upstream_reconnect_attempts_total{server=\"...\",result=\"success|error\"}\nmcpstead_upstream_backoff_seconds_total{server=\"...\"}\nmcpstead_upstream_in_backoff{server=\"...\"}\nmcpstead_upstream_current_backoff_seconds{server=\"...\"}\nmcpstead_upstream_session_resets_total{server=\"...\",reason=\"unknown_session|expired|terminated\"}\nmcpstead_upstream_tools_refresh_total{server=\"...\",result=\"success|error\"}\nmcpstead_upstream_tools_refresh_duration_seconds_bucket{server=\"...\",le=\"...\"}\nmcpstead_upstream_tools_last_refresh_timestamp_seconds{server=\"...\"}\nmcpstead_upstream_bytes_total{server=\"...\",direction=\"sent|received\"}\nmcpstead_downstream_sessions_active\nmcpstead_downstream_sessions_total\nmcpstead_downstream_session_duration_seconds_bucket{le=\"...\"}\nmcpstead_downstream_session_terminations_total{reason=\"...\"}\nmcpstead_mcp_requests_total{method=\"...\",result=\"success|error\"}\nmcpstead_mcp_request_duration_seconds_bucket{method=\"...\",le=\"...\"}\nmcpstead_mcp_auth_attempts_total{result=\"success|failure\"}\nmcpstead_mcp_auth_failures_total{reason=\"...\"}\nmcpstead_config_reloads_total{result=\"success|error\"}\nmcpstead_config_last_reload_timestamp_seconds\nmcpstead_tool_calls_total{server=\"...\",tool=\"...\"}\nmcpstead_tool_call_errors_total{server=\"...\",tool=\"...\",reason=\"...\"}\nmcpstead_tool_call_duration_seconds_bucket{server=\"...\",tool=\"...\",le=\"...\"}\n```\n\n### Scrape config\n\n```yaml\n- job_name: mcpstead\n  metrics_path: /metrics\n  static_configs:\n    - targets: ['mcpstead:8766']\n```\n\n### Health check\n\n```bash\ncurl http://127.0.0.1:8766/health\n```\n\nReturns JSON: per-upstream connection state, tool counts, last successful contact, reconnect counts, last error.\n\n## Troubleshooting\n\n- **All tools list empty** - at least one upstream failed to `initialize`. Check `/health` for per-server status; check upstream URL, auth, and reachability.\n- **Sporadic `SSE parse failed`** - upstream sends an SSE dialect mcpstead doesn't recognize. Try `quirks.normalize_sse_events: true` for that server, or set `quirks.inject_accept_header: 'application/json'` to force JSON.\n- **`tools/call` returns auth error** - upstream rejected the bearer token. Confirm `token_env` resolves to the right value at startup; check upstream's expected header name.\n- **TLS handshake errors against a self-signed upstream** - set `tls_skip_verify: true` on that server. Only safe on trusted local networks.\n- **401 from `/mcp` with mode bearer** - client missing or sending wrong `Authorization: Bearer <token>`. Verify `MCPSTEAD_BEARER_TOKEN` matches what the client sends.\n- **Upstream goes red in `/health` repeatedly** - check `mcpstead_upstream_reconnects_total` and `mcpstead_upstream_last_seen_seconds`. Tune `reconnect.backoff_max_ms` if the upstream needs longer recovery.\n","readmeFilename":"README.md"}