{"_id":"@vitemcp/server","_rev":"29-553247c8e8bd5ade5f846bcd85373ad0","name":"@vitemcp/server","dist-tags":{"latest":"1.9.1"},"versions":{"1.0.0":{"name":"@vitemcp/server","version":"1.0.0","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.0.0","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/vitemcp","bugs":{"url":"https://github.com/vitemcp/vitemcp/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"1557e31ceab0269c6b8632d1562ff81c51dbf7d6","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.0.0.tgz","fileCount":33,"integrity":"sha512-j5+M3QwlZiFdQJPmsQ/dr1eYEKA+UB2nYXrqMfGpm3BcSeDG+8DlxQ1jACVsnL/txex1z+Afv4SYA+X9Sv/iEw==","signatures":[{"sig":"MEQCIHZb6NRUo+Z1ue7qR2w4qyluz4u8IJOHPICbZk1GHT7oAiBHcyD/lWHyFRAHLQwZTLYGSp8PfAsuGvKozV02D6qwWA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1090323},"main":"dist/ViteMCP.js","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"types":"./dist/ViteMCP.d.ts","import":"./dist/ViteMCP.js","require":"./dist/ViteMCP.cjs"},"./auth":{"types":"./dist/auth/index.d.ts","import":"./dist/auth/index.js","require":"./dist/auth/index.cjs"},"./edge":{"types":"./dist/edge/index.d.ts","import":"./dist/edge/index.js","require":"./dist/edge/index.cjs"}},"gitHead":"700b13c445647ed2f9c97d804e7acee8addcef01","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"punkpeye","email":"frank@glama.ai"},"repository":{"url":"git+https://github.com/vitemcp/vitemcp.git"},"_npmVersion":"11.6.1","description":"A TypeScript framework for building MCP servers.","directories":{},"_nodeVersion":"24.10.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","fuse.js":"^7.1.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","strict-event-emitter-types":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","eventsource-client":"^1.2.0","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.0.0_1785977839700_0.24457257646338015","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@vitemcp/server","version":"1.0.1","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.0.1","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"b4e202692764c6c107a4c9a819a21b9b70a18e78","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.0.1.tgz","fileCount":33,"integrity":"sha512-B1ieOPpasSunOu/198qndn9YynOlH7NReDO69Q7AzWjTbq+g49hkibwNuYF/vl82iqwwvdEOFoe1BN4EZ6rGAg==","signatures":[{"sig":"MEYCIQDxWREg0pQGxNHmbwhD7IDmpkJjGYU27Prv+LrwK9YiRwIhAJcB39H1vZ6yLy07J86TPuoJarx3yUNzA+ZO6u2uDxvW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.0.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1090882},"main":"dist/ViteMCP.js","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}}},"gitHead":"e01bd67a0c97654fdf78963f2bacbfefc26b662c","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","fuse.js":"^7.1.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","strict-event-emitter-types":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","eventsource-client":"^1.2.0","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.0.1_1785978947981_0.22335167593338157","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@vitemcp/server","version":"1.0.2","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.0.2","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"5cbc7e0a2921968f9ce5d487c0bdbd2ca612874c","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.0.2.tgz","fileCount":33,"integrity":"sha512-XD7gOnVjpy4S7eMq0BDLn8oLuNjRdk77VHZxKeC0IYJJCABgOZRhh+sGSQ8EiD8mPLekiXcfa4suukPJI45yUg==","signatures":[{"sig":"MEUCIQDkghuCtb3FzoGf9I0Pe80QemYwzadBJxtCTiXu0KJBCAIgWGEM5tbsarQ83d3R7M4NsnPAcZaUW3KwB+llPmeSytg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.0.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1094585},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"413a73c3dd823f06b69118398564666d2cac19cb","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","fuse.js":"^7.1.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/core":"^2.0.0","@modelcontextprotocol/node":"^2.0.0","strict-event-emitter-types":"^2.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","eventsource-client":"^1.2.0","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","eslint-plugin-prettier":"^5.5.4","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.0.2_1785979573667_0.8622823061383729","host":"s3://npm-registry-packages-npm-production"}},"1.0.3":{"name":"@vitemcp/server","version":"1.0.3","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.0.3","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"eb5e4941d95cb286b8788cfbd535dc7d94902c6d","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.0.3.tgz","fileCount":33,"integrity":"sha512-FNuOpqjgM47dVyzU5gsuexGXOUp6B+Pu+5IT88Pp8SWmE6jcCogruh2XdxPhTnwMG3ubJY75970C4bReT1A5gA==","signatures":[{"sig":"MEYCIQCtFYzaLS+JJ1Ixz/NNGMNHrpBluJKJB4yOjToaarwkJwIhANfKz+oHQ0JLI+7gLocvAgq1EnX/DcgMKZ9JMUjAz8BW","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.0.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1097215},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"1e832aac80f59f6516e12a999b33f0226cee6b8e","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.0.3_1785983213412_0.09780856530604054","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@vitemcp/server","version":"1.0.4","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.0.4","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"e80cd4d05646682cb3194eb67675d3115fb1499a","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.0.4.tgz","fileCount":33,"integrity":"sha512-GR6wbZkoyKZ0XWGqhsR6mGNr7E/qk9uQBhjUqqCAI5OKxX0fTI8NGUMyMG80thw0xAxbgyssUWIzLsY87ZczdQ==","signatures":[{"sig":"MEUCIQCBCuafsgnqHXTA6PcBKJAbkYepSRJx6qd+nKyr3hDhmAIgb7Q0A+OOoZMZiAGfCc3CrsF3zhQ6MfUmtefgYcPuBVc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1097215},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"c0744fc14d9e3901c58ee4aab6aa00a56607ae1d","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.0.4_1785984416978_0.5281158436126239","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@vitemcp/server","version":"1.1.0","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.1.0","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"22870fce95075186984555a673429813fe063694","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.1.0.tgz","fileCount":33,"integrity":"sha512-dWkV9biBYfKiYdnMZvIt4cCYzpy3yFjJdjJOhHy2NHVwXyGq0zaKDXjQBlTv7QXB/ar5lIStu9j3GSFbuvCQ/Q==","signatures":[{"sig":"MEUCIQCJmcBN71HziET5oOhtG/mdkUdd36ir4lwbzdCk4LZIdAIgDgK7PiU4PXZkRvWpFw5o/LOM2bMcpTNeoNn7R9TqQos=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1099422},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"ea5a092dd26e5afce44d93f5eb1a8a1fb462e0f2","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.1.0_1785986498127_0.8420149399726338","host":"s3://npm-registry-packages-npm-production"}},"1.2.0":{"name":"@vitemcp/server","version":"1.2.0","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.2.0","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"cec436c6aab86921867c21038e638adf0cafc1ad","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.2.0.tgz","fileCount":33,"integrity":"sha512-ka76rKw2VCwWaURUXwzvHkaTiBETtsjs4vfLmCoeTJbNlpRsYgiExlpiW7/qxB5QRFrA8DOyFkvpUDN++6pCtg==","signatures":[{"sig":"MEUCIQC6eQgJRCrR1TkbQAyYBVFZXccyXy5dPE/xmIJsQ4B8bAIgS7F6XzYXMisp/7iP507EbnSCPFy56KhrqpbMh6wC3zU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1112621},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"b98b2bd07ccd82b03f4b3263bf2478feae9b8907","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.2.0_1786124212905_0.3368299764920235","host":"s3://npm-registry-packages-npm-production"}},"1.3.0":{"name":"@vitemcp/server","version":"1.3.0","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.3.0","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"1013f5eef1e0fdd8e136e5e57f42b78ad3a302e5","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.3.0.tgz","fileCount":33,"integrity":"sha512-u9VlZhEocZiZ4xW/Dfe4RIFddEJP7rtbl6XWAwvg27XHJlEHNMj32CEoXIQW4ywhYiQRylWzhShfBqMe7ojwpA==","signatures":[{"sig":"MEUCIQDDsx+9wxKmJb4RZxGUtMMe90dX3LzK3DmZQPhN6YnVbgIgYye6SDssysVfEnYBxP+nh3fDefMEsIaRBLfpsduXJpA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.3.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1132246},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"e89d96ed090775eacbaf271e62a9d459ec0a7418","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.3.0_1786131441706_0.24543351614114917","host":"s3://npm-registry-packages-npm-production"}},"1.3.1":{"name":"@vitemcp/server","version":"1.3.1","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.3.1","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"ac1ada75a20317c11559d54a1f59a6d756049cfc","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.3.1.tgz","fileCount":33,"integrity":"sha512-6uMRKizL6Y9oe8Vt8JJVP1BNnz25bncPSVoIDAownIRSIFUCXXkz9FbrGNyN1tMsYA3ZOZTWuOA1rI8M0+wUOA==","signatures":[{"sig":"MEUCIQCTSD9os2A4ctq6l7cgXVEsrNedesxFOadkyVhgMQ5mAAIgAy2NRb3pJAq5zti6SlFb4bwRisJi+zCh7b0QiH3wLrM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.3.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1155722},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"1fd543158be04e937a49b9f90d8e0ac725966321","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.3.1_1786218540703_0.7661756185483832","host":"s3://npm-registry-packages-npm-production"}},"1.4.0":{"name":"@vitemcp/server","version":"1.4.0","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.4.0","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"116317bd0eb213b95bddb4c37c94346206f2f18c","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.4.0.tgz","fileCount":33,"integrity":"sha512-t2RKRo+fJxi7TbrOnfCenkzSxK5g30BY6bkZubi5als4QLWVJlHb+hsIdjhOE8uM1THqsb7qXYGcSk0sag/1Yg==","signatures":[{"sig":"MEYCIQDZfgJNu+iEfK2Wss3vSN5Nah9Ymkvr6RyljAcfWpseGQIhALIXWH6NbY244M94JgUiZGsijAt8gTt3VI76RWnSnvU6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.4.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1170905},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"997d0f44402e62d24ea7cf009065bc6f95a95dd7","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.4.0_1786394259593_0.6480598790473291","host":"s3://npm-registry-packages-npm-production"}},"1.5.0":{"name":"@vitemcp/server","version":"1.5.0","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.5.0","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"24bf13a1597877646c93547c9a640c6e3fd0d86a","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.5.0.tgz","fileCount":33,"integrity":"sha512-T3ifhUyoK5wVM/PsyCWwz/9FaYI/21zbNrbqQ+uFSx5dp7I9Nn7p0hecrnlcRefbOUx/MTg+Lgc/Rb105BVErw==","signatures":[{"sig":"MEYCIQCPpsCuR8K/igFeEJ0H1H1l7ICaiHLu3oQ0RnLTekyDDgIhAL8751Oi53devzJArbDTpgUYLJdpNNWJjJlR07J+yn+i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.5.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1175537},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"70630c37d6be5dedfd74a3629f2adee0e410ddcd","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.16.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.18.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.5.0_1786568988648_0.9030027094289936","host":"s3://npm-registry-packages-npm-production"}},"1.6.0":{"name":"@vitemcp/server","version":"1.6.0","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.6.0","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"70880909eee744fa86be03eb896821f063122234","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.6.0.tgz","fileCount":33,"integrity":"sha512-NFqDdNK38AMy9xaKI87iSql7rVnj1mxHC1g50o5CQR7qyH6Jahl7Uwc/in1ehaTYcUEhrIR2RuZG/D++hDdubw==","signatures":[{"sig":"MEUCIQDQqrGk+JbXz+P2VtYLcNv6SlMYN0IQs/gjOPUx1Q/qZQIgbfepqgNdGzJra/PdmmhW8yYJGIoDS5lpdOpiw6YGdJ0=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.6.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1195154},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"e9562397fdbb971ee24103c71b8d121831e713d5","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.17.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.6.0_1786947147012_0.18704775707309573","host":"s3://npm-registry-packages-npm-production"}},"1.6.1":{"name":"@vitemcp/server","version":"1.6.1","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.6.1","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"1ae1651d4dd88d08733532a31c7ef71eb0a9e6c8","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.6.1.tgz","fileCount":33,"integrity":"sha512-4Cl/GiRc8iFkmzhtLwBMkyy7t+8W8hQXx84wbdMF5IbLXmWn0Ge7NqZBWwmI3dC4mrbQle9mczLYA8L2t9DwQw==","signatures":[{"sig":"MEUCIQCZQuDmAJbiRijysyIVzvv98NzRh2U39ws5lq4F0TkjrAIgHxor2ID6eN707b2WBghe+i15Qj9WEYeiz6oDMBH7tts=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.6.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1198048},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"16073c7cefe8fc586922d1af73423026a921c3fb","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.17.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.6.1_1787099961861_0.7969785409249035","host":"s3://npm-registry-packages-npm-production"}},"1.6.2":{"name":"@vitemcp/server","version":"1.6.2","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.6.2","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"5d409e7cb6d320a9135702946521d1c2bace0658","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.6.2.tgz","fileCount":33,"integrity":"sha512-BowIhPObVXp5xxLxSO8jDj47ov0UsBn6ABwKXpyrpogn4gr7xgEF6IQc0y5M31DQucqmzKockf9VVfOik05n2g==","signatures":[{"sig":"MEUCIQCUFu10LuXmVttGiiKKCPokra1SWetT/xrL/JVRQOwmgAIgNLWqPUG6gQipw8zloAYbxXSRs/+Yn3PO6bjLChJjj6I=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.6.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1207699},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"ff99fbdf1b31572a5611aaca377525bdd328a33a","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.17.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.6.2_1787766223420_0.011293259359424157","host":"s3://npm-registry-packages-npm-production"}},"1.6.3":{"name":"@vitemcp/server","version":"1.6.3","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.6.3","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"358cf4378dd15d2493426dfe1e5e69d6283f09a1","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.6.3.tgz","fileCount":33,"integrity":"sha512-hjEwhylxEet7mvhiHdIm3XllNrrRINaam0tqYngl7PgCpcyuHmF/TBfJ/2O0OAATQyrMydUQJE61ggYHDKr+rA==","signatures":[{"sig":"MEUCIQDZJbcchrW3+lwBuyneaikZkc92uCLwTAExkKsll0yVtAIgMlSRIuWbSe/LYGK3IfU3N1snmkwwSgJn5PE1i+z6NPA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.6.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1224125},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"c0cf4c1c48cd47a70d81a63d01c68594c7e7c388","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.17.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.6.3_1787768359602_0.711463216270046","host":"s3://npm-registry-packages-npm-production"}},"1.6.4":{"name":"@vitemcp/server","version":"1.6.4","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.6.4","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"6e0e43ec89f30be20eaf59adc2f2a4e627d6da38","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.6.4.tgz","fileCount":33,"integrity":"sha512-3c5QWhOFLivMuanLRCgBSzFP1f25reeyLRx4DGmChO2DQlAhoSPv2AwuzHTAHJyA6gC2gXqEQywgLF7fP1pTSQ==","signatures":[{"sig":"MEYCIQD4MRtukubIj9Vt5b/olk6FCfqM12MdSZVT40/aEmEAAAIhAMK1be5eI5C/Uew0gOHRRmO286chaV5tT/DxDSkx9iT8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.6.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1228634},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"c6dee4aa0bd04e27bd36f4fe1c82c3b9338b8bde","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.17.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.6.4_1787852308694_0.18670211091891686","host":"s3://npm-registry-packages-npm-production"}},"1.6.5":{"name":"@vitemcp/server","version":"1.6.5","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.6.5","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"f4bfdff8872388964478d778d60f9eaf232c4b01","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.6.5.tgz","fileCount":33,"integrity":"sha512-kjrI2fGdE9gXykbJ1yF7GG2zJdtTwIfttXt7H9Odz5pl0csTnUlBP6If+atk/Eny4o/S0Jl0q4Mco1EYgz1deA==","signatures":[{"sig":"MEUCIBgqa4SNJMD0GdJ+HNUCcR3gZrfWGAwDkqmsckV3jaBPAiEA/bErn5BSg5FjazrQ2SFk0apoykelFhAaqjgXTZ3Qy74=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.6.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1231860},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"d438700eaa1f4341f6c5655d2665d6807315cf5b","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.17.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.6.5_1788004960071_0.6671228914762333","host":"s3://npm-registry-packages-npm-production"}},"1.7.0":{"name":"@vitemcp/server","version":"1.7.0","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.7.0","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"b44be8eaf9b9e55e48f6f774dc34b8fecb553e38","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.7.0.tgz","fileCount":33,"integrity":"sha512-PtS2fSbOgBPP9rwCuJZe7GqmATUSh574cqRlulZpuez2Qbvd209S5GbKmifhVVuKzPMqQuWpzVGIAhEdpKy+Tw==","signatures":[{"sig":"MEQCIBfr6PcjMJX7XAxDA4loIi/YYUThmJTJ7aYFrX5aD1XDAiA8eigemNBe2ww2JkZWORd0x1BbKUN6wEbwjRiw10uHkA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.7.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1237326},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./package.json":"./package.json"},"gitHead":"7dfd5fce4e15daf085208a220babd89d3ebcb498","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.17.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.7.0_1788157501670_0.18030141592044702","host":"s3://npm-registry-packages-npm-production"}},"1.8.0":{"name":"@vitemcp/server","version":"1.8.0","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.8.0","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"6beec327a06dbf7b964e4102dba0153278383837","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.8.0.tgz","fileCount":43,"integrity":"sha512-Lt5TM7Xh3MHYChjfNyvgpRcTqmNZl0vbXG8ItWux1SIDBwFf4OmMJnp2jq8Nq/MQDA4OoE9ajTHvGpOvxZDlIQ==","signatures":[{"sig":"MEUCIQC37LfEb3N8LA9YHJ4IPGGX8JARE4DI58SG0e/8xgvzZgIgDkhGE4DFK+g0yu5dO8CPh0fY/vxbf8ep8QtDGV71Y40=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.8.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1479042},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts","src/openapi/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./package.json":"./package.json"},"gitHead":"ded1d0860aeb5036a41fa2ee1c3c6401b7740a20","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.17.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","@apidevtools/swagger-parser":"^12.1.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0","@apidevtools/swagger-parser":"^12.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true},"@apidevtools/swagger-parser":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.8.0_1788246307267_0.11205391266012676","host":"s3://npm-registry-packages-npm-production"}},"1.8.1":{"name":"@vitemcp/server","version":"1.8.1","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.8.1","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"b6fd4ca26b70c2e83d4f1369921012578256a918","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.8.1.tgz","fileCount":43,"integrity":"sha512-g8e8gWG6my8fn1Xsl6crQazonycYFxg1T1ZKXn7AcMsvXoXEcYEoc93iPl2BSHQu42ncnkbRNOrjpj/zi1zFWQ==","signatures":[{"sig":"MEQCIH1E6h7ae4y+rr6cmfuuof9w6QoR9PVjQIE0HgZJizJuAiAP2+HRuryi+Vw0FiOiEjSKhINn0NBTsrdWv8Z8y58jAw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.8.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1480428},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts","src/openapi/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./package.json":"./package.json"},"gitHead":"cc2e63e4b6e6e30f432cd20af46e689b8c5cb8f0","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.17.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.19.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","@apidevtools/swagger-parser":"^12.1.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0","@apidevtools/swagger-parser":"^12.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true},"@apidevtools/swagger-parser":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.8.1_1788290279322_0.9472181238828397","host":"s3://npm-registry-packages-npm-production"}},"1.8.2":{"name":"@vitemcp/server","version":"1.8.2","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.8.2","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"2ccaa21f7f14422eaa23a8c62f749132006d56e5","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.8.2.tgz","fileCount":43,"integrity":"sha512-J2e5sbc6kBdYw1hpj6PH/Y9k0hVbSNh0XsyTi7mPnojXsvEbpEX8Wdq39+4LIrJlswT0np+80Hny5mE6eMHn6w==","signatures":[{"sig":"MEYCIQD+tqQLQ82OLt2nCCFAC6zdrhjxLocv3YREcQ8301tnhgIhAKWv8foaAV2514Akg3i9/CcVopyLugwHZxqwosyh/FgP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCzr26cCMSaIoSozjB+zo7LmCw63LTO0xZKDydI2Sqh3AIgbJ6oQ9tiXcq/uhT5x7coqqe845cByJuoMe7U9368FqU=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.8.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1486043},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts","src/openapi/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./package.json":"./package.json"},"gitHead":"af39fd18cbb8731a1605b731f47e6cccefa2767e","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.19.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","@apidevtools/swagger-parser":"^12.1.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0","@apidevtools/swagger-parser":"^12.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true},"@apidevtools/swagger-parser":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.8.2_1788499094311_0.545967872931314","host":"s3://npm-registry-packages-npm-production"}},"1.8.3":{"name":"@vitemcp/server","version":"1.8.3","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.8.3","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"cf779811ac01f1aec0b5e97cf7bd7fe19f6db377","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.8.3.tgz","fileCount":43,"integrity":"sha512-GmXOj+7xJ0GmsZI18cNREXuliJrYIXmx17ABDtAKBmbubYc4OVghBp1kbA+X1v9QDYyBrAex6vlj6aAyigdILQ==","signatures":[{"sig":"MEQCIEaO4yS9RpcxtiBcdQFQUsfxE5Dpk0NLywaE1E7lZgmSAiBnYPMfywO6vRfWLtkrDroRSaQspInfjPQ0ID3IXeA+bA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIARTas12KKnAyIHrPkquITtIr98mxWh1RTRrUnGaXzZPAiAiqBulcaZZo9BbQBD9AfL3+DAsFNHCv1lN8ATcKWyVkw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.8.3","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1491408},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts","src/openapi/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./package.json":"./package.json"},"gitHead":"a700fdc7ca25f266aa9a91d91c300481a2e5a658","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.19.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","@apidevtools/swagger-parser":"^12.1.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0","@apidevtools/swagger-parser":"^12.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true},"@apidevtools/swagger-parser":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.8.3_1788823230309_0.080950477733994","host":"s3://npm-registry-packages-npm-production"}},"1.8.4":{"name":"@vitemcp/server","version":"1.8.4","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.8.4","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"47a11d8d33f49df9528d2499f8382337f9718b8c","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.8.4.tgz","fileCount":43,"integrity":"sha512-i3oPGreCJqZH/0eFpqTGIWImBem44i3G3nL8e6gLPWTGQVIcMItKZtWCERFYeCWaLlCNwoIHlNpDVKd/6hxFEg==","signatures":[{"sig":"MEYCIQCkKQ2WT9uHQQN4prLwriPUm/kvpmmg2xNgVivEf3V6/wIhAOnu3Ebh8ffZVvxTXh0tbcwAP5i2EYsAwaJ+7N/cr38T","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQCWyrJzyzCeHvT9CLGiaEPYCGdyQJCYF/iMNPfR8RvX1QIhAIpMt8K2V2TBW/T9jGzWR1Ne8Yxq/W5xsXZQ9qm0x1Uv","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.8.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1497658},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts","src/openapi/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./package.json":"./package.json"},"gitHead":"cd96abe4171b612a5971b7413a3235abfcd12426","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.19.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","@apidevtools/swagger-parser":"^12.1.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0","@apidevtools/swagger-parser":"^12.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true},"@apidevtools/swagger-parser":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.8.4_1789089493302_0.09854643207442981","host":"s3://npm-registry-packages-npm-production"}},"1.8.5":{"name":"@vitemcp/server","version":"1.8.5","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.8.5","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"2fd29488cfe094ff97a0894343e2ad6f06d0c240","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.8.5.tgz","fileCount":43,"integrity":"sha512-JnPgHIi8y/PJmVe09aCP+JjLgwJT0iet4M+rIe36NxVod1m+o57536ACqb32C0IvT8lDymY+OYa63fgfMgV6dg==","signatures":[{"sig":"MEYCIQC16g68ovQjv6dnDic5sjE/4l+aw/Bzp0CzR4UtktoMTAIhANa+/fz/CM+dpN62Fc5ylUeibz7KJj/ImKnldrbNEpaS","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDnp3AXuRwKC2EjCNhj+uMWy0POUIA9KsJshBh0QJnv7AIhANHaUzhe0/zU7ciCuNVAYOSPzDZh0ofOcrkX44Zmtec8","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.8.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1513962},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts","src/openapi/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./package.json":"./package.json"},"gitHead":"33c7cef0073ce6649364e7046df857d15a6d9821","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.19.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.20.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","@apidevtools/swagger-parser":"^12.1.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0","@apidevtools/swagger-parser":"^12.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true},"@apidevtools/swagger-parser":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.8.5_1789521933484_0.8795553409044845","host":"s3://npm-registry-packages-npm-production"}},"1.8.6":{"name":"@vitemcp/server","version":"1.8.6","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.8.6","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"c71596b6348b67ed31f15f1c31758adf4a7503e7","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.8.6.tgz","fileCount":43,"integrity":"sha512-xzmkdvBi86DQdZdgGdFt3lnEX8BWliQFviOGKrp7wNBUi7LSKakaFXejcCGHRl8xIw6pQ9oIH3AlN4yMtaTplA==","signatures":[{"sig":"MEUCIE8WY7cc8c7Tiy3cdWzZ+f2NhYQ1MmBEjjQVhuCAg4oEAiEA7rBLUNcv37V4VB8rkNeuSywppYH8rPrQ9S0zbSiNRRM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIBId4/SHGR5na+Ym2LuFBrkEr6wDaJU+guqY53NElN0IAiAXTgnciFwvHnwRzHJWkeNq1VDS4AmqDsypMSD3PIFDLQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.8.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1533304},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts","src/openapi/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./package.json":"./package.json"},"gitHead":"190889e1f217b3a5a3b296e6a9f4a971d6737ea3","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.19.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","@apidevtools/swagger-parser":"^12.1.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0","@apidevtools/swagger-parser":"^12.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true},"@apidevtools/swagger-parser":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.8.6_1790272236619_0.056146417378025504","host":"s3://npm-registry-packages-npm-production"}},"1.8.7":{"name":"@vitemcp/server","version":"1.8.7","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.8.7","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"07c853df4e48051e6cbd35b061ddec033c0a79fc","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.8.7.tgz","fileCount":43,"integrity":"sha512-Mc1KPjBrGTQBUgS98xDcubGc0pjsDqNd0llv3qc+lSrVRbRYnxgnermCgjZKVy2NIATZr29h/Qyi3e04HBBcBA==","signatures":[{"sig":"MEYCIQDG9v1PtW7rTCGHWQbaLtrVwrbWiDHmjr/zeZClbxD8rwIhAPpKjwhw205W4QkdHOcbGZcib6hq7iwLU8fkEeezK8EI","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGRgCidh2Qq61THSVqdFPjsdwm6BWR8PRwEe+ROddmzhAiEAwoJsS4+oBbyncoAa9A3uXw34GgZA4iS826w/kG2l1MI=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.8.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1545025},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts","src/openapi/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./package.json":"./package.json"},"gitHead":"126a3e99c7e859d116280ff23385fbc0e7a9a2e0","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.19.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","@apidevtools/swagger-parser":"^12.1.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0","@apidevtools/swagger-parser":"^12.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true},"@apidevtools/swagger-parser":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.8.7_1790342892849_0.5223705491130137","host":"s3://npm-registry-packages-npm-production"}},"1.8.8":{"name":"@vitemcp/server","version":"1.8.8","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.8.8","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"f7b5e253a14e433d24243861d1812b074b9b5d2d","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.8.8.tgz","fileCount":43,"integrity":"sha512-xKWO3Kcl8jLANxl0u3gGGWvdTkcVa8BRfD+WrcKDtyxodv1VmlSwBKgyEilAD1upde5a/B8hyj50KCPTsiMetQ==","signatures":[{"sig":"MEQCIGInHmxZEPpuN7U0kKSqcqJY971YRJSwmy9g6EEvm+CIAiAEB+Gq17vgrn1h2LgMxRUtejyTSru01GmqOisVJuAXwA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIB02K6aEQ7IBPI2I5LQ3GMeQyj3vJrbueNpRNYWVgtPrAiB/E1Hz5Bii1kktH6I7saQ0sVk/LOO4FiJ/uLLtjrv9+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.8.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1553788},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts","src/openapi/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./package.json":"./package.json"},"gitHead":"b280698ce5728a03262fa1153a51a0fa8ef1b808","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.19.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","@apidevtools/swagger-parser":"^12.1.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0","@valibot/to-json-schema":"^1.0.0","@apidevtools/swagger-parser":"^12.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true},"@valibot/to-json-schema":{"optional":true},"@apidevtools/swagger-parser":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.8.8_1790343918118_0.2015089297992645","host":"s3://npm-registry-packages-npm-production"}},"1.9.0":{"name":"@vitemcp/server","version":"1.9.0","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","_id":"@vitemcp/server@1.9.0","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"homepage":"https://github.com/vitemcp/server","bugs":{"url":"https://github.com/vitemcp/server/issues"},"bin":{"vitemcp":"dist/bin/vitemcp.js"},"dist":{"shasum":"a33ef509f3110cbca6322e46ba3102534528652d","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.9.0.tgz","fileCount":43,"integrity":"sha512-mF9Jg8ya+T8nbEnYyAAArRUIldJqOipng9x1/cJoqofFUyWJrINTXK6RpMJfsR/UPxusJE5U8WAFovKzZBqaRA==","signatures":[{"sig":"MEYCIQD2CfS/I6xpnNYQaYztKOotlIV17TbDnHE2plkg48YvVwIhAP8gP4ul009H5JiPkpn6AZJiAR6OaMxXNzuHeHaud5UP","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQDqHwRkUkGkUpoGe5KtYdFk02RfPXYyOY6CxlxkwVhl2wIhAPCQ69iYtrOrGJae+cUq/DR1t9GEw8XWiKqRvXzePsmH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.9.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1577597},"main":"./dist/ViteMCP.cjs","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts","src/openapi/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./package.json":"./package.json"},"gitHead":"ff53ec733c0f66c541f06cd445d6517424e320c8","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.19.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","@apidevtools/swagger-parser":"^12.1.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0","@valibot/to-json-schema":"^1.0.0","@apidevtools/swagger-parser":"^12.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true},"@valibot/to-json-schema":{"optional":true},"@apidevtools/swagger-parser":{"optional":true}},"_npmOperationalInternal":{"tmp":"tmp/server_1.9.0_1790454473440_0.7873987676676191","host":"s3://npm-registry-packages-npm-production"}},"1.9.1":{"_id":"@vitemcp/server@1.9.1","bin":{"vitemcp":"dist/bin/vitemcp.js"},"bugs":{"url":"https://github.com/vitemcp/server/issues"},"dist":{"shasum":"dc02efe0339d7c5bdc2fa2279c00030fa72cab7e","tarball":"https://registry.npmjs.org/@vitemcp/server/-/server-1.9.1.tgz","fileCount":47,"integrity":"sha512-qwqZ7trvde1X3vEdGcwgZKJ3hCEfnhJ40+yUh8iE/dOCxmnJNOYRfuy4UXlVNeAvScVkjO98qxH40ViI7aqEgw==","signatures":[{"sig":"MEQCIBYOBkClXjdz+2Yr6sedoFc5xqqSlQQIdukQ4I1+6U1nAiALQJ0bxiXyiiOOZtE7j6wbc4s3iwJHUWoqjm4G7XDw0w==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCICdo821r7MfdFtcFatSL5mL6R08VRUAHG9lPHzxSYqRuAiEAgjCfOoXTM0niZbFCUwOYSd0oRYEAVY2stlnHaI/JB8c="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@vitemcp%2fserver@1.9.1","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":1630096},"main":"./dist/ViteMCP.cjs","name":"@vitemcp/server","tsup":{"dts":true,"clean":true,"entry":["src/ViteMCP.ts","src/bin/vitemcp.ts","src/auth/index.ts","src/edge/index.ts","src/openapi/index.ts"],"format":["esm","cjs"],"sourcemap":true,"splitting":true},"type":"module","types":"dist/ViteMCP.d.ts","author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"module":"dist/ViteMCP.js","engines":{"node":">=24"},"exports":{".":{"import":{"types":"./dist/ViteMCP.d.ts","default":"./dist/ViteMCP.js"},"require":{"types":"./dist/ViteMCP.d.cts","default":"./dist/ViteMCP.cjs"}},"./auth":{"import":{"types":"./dist/auth/index.d.ts","default":"./dist/auth/index.js"},"require":{"types":"./dist/auth/index.d.cts","default":"./dist/auth/index.cjs"}},"./edge":{"import":{"types":"./dist/edge/index.d.ts","default":"./dist/edge/index.js"},"require":{"types":"./dist/edge/index.d.cts","default":"./dist/edge/index.cjs"}},"./openapi":{"import":{"types":"./dist/openapi/index.d.ts","default":"./dist/openapi/index.js"},"require":{"types":"./dist/openapi/index.d.cts","default":"./dist/openapi/index.cjs"}},"./package.json":"./package.json"},"gitHead":"af4eb4d6bb7fc71f4ea63102943e9c909a8d4482","license":"MIT","release":{"plugins":["@semantic-release/commit-analyzer","@semantic-release/release-notes-generator","@semantic-release/npm","@semantic-release/github","@sebbo2002/semantic-release-jsr"],"branches":["main"]},"scripts":{"lint":"prettier --check . && eslint . && tsc --noEmit && knip && jsr publish --dry-run","test":"vitest run","build":"tsup","format":"prettier --write . && eslint --fix .","test:coverage":"vitest run --coverage"},"version":"1.9.1","_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"ca667a2e-dc9d-4e1c-bda1-8df87ac73b41"}},"homepage":"https://github.com/vitemcp/server","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"_npmVersion":"11.19.0","description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","directories":{},"maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"_nodeVersion":"24.21.0","dependencies":{"zod":"^4.4.3","hono":"^4.11.5","execa":"^9.6.1","yargs":"^18.0.0","undici":"^7.16.0","xsschema":"^0.4.3","file-type":"^21.1.1","uri-templates":"^0.2.0","zod-to-json-schema":"^3.25.0","@standard-schema/spec":"^1.0.0","@modelcontextprotocol/server":"^2.0.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"packageManager":"pnpm@10.19.0","devDependencies":{"ajv":"^8.17.1","jsr":"^0.13.5","jiti":"^2.6.1","knip":"^6.31.0","tsup":"^8.5.1","eslint":"^9.39.1","vitest":"^4.0.15","arktype":"^2.1.28","valibot":"^1.2.0","prettier":"^3.7.4","@eslint/js":"^9.39.1","typescript":"^5.9.3","@types/node":"^24.10.1","ajv-formats":"^3.0.1","@types/yargs":"^17.0.35","@wong2/mcp-cli":"^1.13.0","get-port-please":"^3.2.0","@tsconfig/node24":"^24.0.3","semantic-release":"^25.0.2","typescript-eslint":"^8.48.1","@vitest/coverage-v8":"^4.0.15","@types/uri-templates":"^0.1.34","eslint-config-prettier":"^10.1.8","@valibot/to-json-schema":"^1.4.0","@apidevtools/swagger-parser":"^12.1.0","eslint-plugin-perfectionist":"^4.15.1","@modelcontextprotocol/client":"^2.0.0","@modelcontextprotocol/inspector":"^0.16.8","@sebbo2002/semantic-release-jsr":"^3.1.0"},"peerDependencies":{"ajv":"^8.0.0","jose":"^5.0.0 || ^6.0.0","ajv-formats":"^3.0.0","@valibot/to-json-schema":"^1.0.0","@apidevtools/swagger-parser":"^12.0.0"},"peerDependenciesMeta":{"ajv":{"optional":true},"jose":{"optional":true},"ajv-formats":{"optional":true},"@valibot/to-json-schema":{"optional":true},"@apidevtools/swagger-parser":{"optional":true}},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/server_1.9.1_1790750013116_0.26038886402648753"}}},"time":{"created":"2026-08-06T00:57:19.524Z","modified":"2026-09-30T06:33:33.634Z","1.0.0":"2026-08-06T00:57:19.887Z","1.0.1":"2026-08-06T01:15:48.295Z","1.0.2":"2026-08-06T01:26:13.882Z","1.0.3":"2026-08-06T02:26:53.609Z","1.0.4":"2026-08-06T02:46:57.146Z","1.1.0":"2026-08-06T03:21:38.283Z","1.2.0":"2026-08-07T17:36:53.109Z","1.3.0":"2026-08-07T19:37:21.854Z","1.3.1":"2026-08-08T19:49:00.895Z","1.4.0":"2026-08-10T20:37:39.745Z","1.5.0":"2026-08-12T21:09:48.900Z","1.6.0":"2026-08-17T06:12:27.177Z","1.6.1":"2026-08-19T00:39:22.027Z","1.6.2":"2026-08-26T17:43:43.622Z","1.6.3":"2026-08-26T18:19:19.761Z","1.6.4":"2026-08-27T17:38:28.914Z","1.6.5":"2026-08-29T12:02:40.217Z","1.7.0":"2026-08-31T06:25:01.819Z","1.8.0":"2026-09-01T07:05:07.431Z","1.8.1":"2026-09-01T19:17:59.468Z","1.8.2":"2026-09-04T05:18:14.393Z","1.8.3":"2026-09-07T23:20:30.405Z","1.8.4":"2026-09-11T01:18:13.391Z","1.8.5":"2026-09-16T01:25:33.577Z","1.8.6":"2026-09-24T17:50:36.729Z","1.8.7":"2026-09-25T13:28:12.956Z","1.8.8":"2026-09-25T13:45:18.225Z","1.9.0":"2026-09-26T20:27:53.554Z","1.9.1":"2026-09-30T06:33:33.254Z"},"bugs":{"url":"https://github.com/vitemcp/server/issues"},"author":{"name":"Frank Fiegel","email":"frank@glama.ai"},"license":"MIT","homepage":"https://github.com/vitemcp/server","keywords":["mcp","model-context-protocol","llm","ai","server","typescript"],"repository":{"url":"git+https://github.com/vitemcp/server.git","type":"git"},"description":"A TypeScript framework for building stateless MCP servers — deploy to serverless and edge.","maintainers":[{"name":"punkpeye","email":"frank@glama.ai"}],"readme":"# ViteMCP\n\nA TypeScript framework for building stateless [MCP](https://glama.ai/mcp) servers.\n\n> [!IMPORTANT]\n>\n> ViteMCP targets MCP revision **2026-07-28**, which made the protocol\n> stateless. There is no `initialize` handshake and no `Mcp-Session-Id`: every\n> request is self-contained and carries its own protocol version and client\n> capabilities.\n>\n> If you are coming from a session-based version, see\n> [Migrating from the session-based API](#migrating-from-the-session-based-api).\n\n## Contents\n\n- [Features](#features)\n- [When to use ViteMCP over the official SDK?](#when-to-use-vitemcp-over-the-official-sdk)\n- [Installation](#installation)\n- [Quickstart](#quickstart)\n- [Core Concepts](#core-concepts)\n  - [Tools](#tools)\n  - [Resources](#resources)\n  - [Resource templates](#resource-templates)\n  - [Embedded Resources](#embedded-resources)\n  - [Prompts](#prompts)\n  - [Authentication](#authentication)\n  - [Providing Instructions](#providing-instructions)\n  - [Server metadata and icons](#server-metadata-and-icons)\n  - [Multi round-trip requests](#multi-round-trip-requests)\n  - [Cacheable results](#cacheable-results)\n  - [Client ID Metadata Documents](#client-id-metadata-documents)\n  - [Generating a server from OpenAPI](#generating-a-server-from-openapi)\n  - [Migrating from the session-based API](#migrating-from-the-session-based-api)\n- [Server Features](#server-features)\n  - [Logging](#logging)\n  - [Custom Logger](#custom-logger)\n  - [Errors](#errors)\n  - [Progress](#progress)\n  - [Health-check Endpoint](#health-check-endpoint)\n- [Deployment](#deployment)\n  - [HTTP Streaming](#http-streaming)\n  - [Custom HTTP Routes](#custom-http-routes)\n  - [Edge Runtime Support](#edge-runtime-support)\n- [Testing and Debugging](#testing-and-debugging)\n  - [Unit testing with an in-memory transport](#unit-testing-with-an-in-memory-transport)\n  - [Test with `mcp-cli`](#test-with-mcp-cli)\n  - [Inspect with `MCP Inspector`](#inspect-with-mcp-inspector)\n- [FAQ](#faq)\n  - [How to use with Claude Desktop?](#how-to-use-with-claude-desktop)\n  - [How to run ViteMCP behind a proxy?](#how-to-run-vitemcp-behind-a-proxy)\n- [Showcase](#showcase)\n- [Acknowledgements](#acknowledgements)\n\nAuthentication has a dedicated reference — see the [OAuth guide](docs/oauth.md).\nSo does OpenAPI conversion — see the [OpenAPI guide](docs/openapi.md).\n\n## Features\n\n- Simple Tool, Resource, Prompt definition\n- [Authentication](#authentication)\n- [Per-request auth context](#authentication)\n- [Image content](#return-types)\n- [Audio content](#return-types)\n- [Embedded](#embedded-resources)\n- [Error handling](#errors)\n- [HTTP Streaming](#http-streaming)\n- [HTTPS Support](#https-support) for secure connections\n- [Custom HTTP routes](#custom-http-routes) for REST APIs, webhooks, and admin interfaces\n- [Edge Runtime Support](#edge-runtime-support) for Cloudflare Workers, Deno Deploy, and more\n- Stateless by construction — every request stands alone, so serverless just works\n- CORS (enabled by default)\n- [Progress notifications](#progress)\n- [Multi round-trip requests](#multi-round-trip-requests) for asking the client for more input\n- [Prompt argument auto-completion](#prompt-argument-auto-completion)\n- [Cacheable list results](#cacheable-results) (`ttlMs` / `cacheScope`)\n- [Health-check endpoint](#health-check-endpoint)\n- [Generate a whole server from an OpenAPI document](#generating-a-server-from-openapi)\n- [In-memory transport](#unit-testing-with-an-in-memory-transport) for unit testing without binding a port\n- CLI for [testing](#test-with-mcp-cli) and [debugging](#inspect-with-mcp-inspector)\n\n## When to use ViteMCP over the official SDK?\n\nViteMCP is built on top of the official SDK.\n\nThe official SDK provides foundational blocks for building MCPs, but leaves many implementation details to you — all of which [`src/ViteMCP.ts`](src/ViteMCP.ts) handles on your behalf:\n\n- Initiating and configuring all the server components\n- Handling of connections\n- Handling of tools\n- Handling of responses\n- Handling of resources\n- Adding prompts, resources and resource templates\n- Embedding resource, image and audio content blocks\n\nViteMCP eliminates this complexity by providing an opinionated framework that:\n\n- Handles all the boilerplate automatically\n- Provides simple, intuitive APIs for common tasks\n- Includes built-in best practices and error handling\n- Lets you focus on your MCP's core functionality\n\n**When to choose ViteMCP:** You want to build MCP servers quickly without dealing with low-level implementation details.\n\n**When to use the official SDK:** You need maximum control or have specific architectural requirements. In this case, we encourage referencing ViteMCP's implementation to avoid common pitfalls.\n\n## Installation\n\n```bash\nnpm install @vitemcp/server\n```\n\n## Quickstart\n\n> [!NOTE]\n>\n> There are many real-world examples of using ViteMCP in the wild. See the [Showcase](#showcase) for examples.\n\n```ts\nimport { ViteMCP } from \"@vitemcp/server\";\nimport { z } from \"zod\"; // Or any validation library that supports Standard Schema\n\nconst server = new ViteMCP({\n  name: \"My Server\",\n  version: \"1.0.0\",\n});\n\nserver.addTool({\n  name: \"add\",\n  description: \"Add two numbers\",\n  parameters: z.object({\n    a: z.number(),\n    b: z.number(),\n  }),\n  execute: async (args) => {\n    return String(args.a + args.b);\n  },\n});\n\nserver.start({\n  transportType: \"stdio\",\n});\n```\n\n_That's it!_ You have a working MCP server.\n\nYou can test the server in terminal with:\n\n```bash\ngit clone https://github.com/vitemcp/server.git\ncd server\n\npnpm install\npnpm build\n\n# Test the addition server example using CLI:\nnpx @vitemcp/server dev src/examples/addition.ts\n# Test the addition server example using MCP Inspector:\nnpx @vitemcp/server inspect src/examples/addition.ts\n```\n\nIf you are looking for something to start from, [`src/examples/`](src/examples/) has runnable servers covering tools, authentication, custom routes and edge deployment.\n\n## Core Concepts\n\n### Tools\n\n[Tools](https://modelcontextprotocol.io/docs/concepts/tools) in MCP allow servers to expose executable functions that can be invoked by clients and used by LLMs to perform actions.\n\nViteMCP uses the [Standard Schema](https://standardschema.dev) specification for defining tool parameters. This allows you to use your preferred schema validation library (like Zod, ArkType, or Valibot) as long as it implements the spec.\n\n**Zod Example:**\n\n```typescript\nimport { z } from \"zod\";\n\nserver.addTool({\n  name: \"fetch-zod\",\n  description: \"Fetch the content of a url (using Zod)\",\n  parameters: z.object({\n    url: z.string(),\n  }),\n  execute: async (args) => {\n    return await fetchWebpageContent(args.url);\n  },\n});\n```\n\n**ArkType Example:**\n\n```typescript\nimport { type } from \"arktype\";\n\nserver.addTool({\n  name: \"fetch-arktype\",\n  description: \"Fetch the content of a url (using ArkType)\",\n  parameters: type({\n    url: \"string\",\n  }),\n  execute: async (args) => {\n    return await fetchWebpageContent(args.url);\n  },\n});\n```\n\n**Valibot Example:**\n\nValibot requires the peer dependency @valibot/to-json-schema.\n\n```typescript\nimport * as v from \"valibot\";\n\nserver.addTool({\n  name: \"fetch-valibot\",\n  description: \"Fetch the content of a url (using Valibot)\",\n  parameters: v.object({\n    url: v.string(),\n  }),\n  execute: async (args) => {\n    return await fetchWebpageContent(args.url);\n  },\n});\n```\n\n**Plain JSON Schema Example:**\n\nIf you already have a JSON Schema — from an OpenAPI document, a config file, or\nanother server — `jsonSchemaAdapter` wraps it so it can be used directly, with\nno schema library in between.\n\nIt requires the peer dependency `ajv`, which does the validation, plus\n`ajv-formats` if your schema uses `format` keywords such as `email` or `uri`.\nBoth are imported the first time a tool is called, so servers that don't use\nthis pay nothing for it.\n\n```bash\nnpm install ajv ajv-formats\n```\n\n```typescript\nimport { jsonSchemaAdapter } from \"@vitemcp/server\";\n\nserver.addTool({\n  name: \"fetch-json-schema\",\n  description: \"Fetch the content of a url (using plain JSON Schema)\",\n  parameters: jsonSchemaAdapter({\n    type: \"object\",\n    properties: {\n      url: { type: \"string\", format: \"uri\" },\n    },\n    required: [\"url\"],\n  }),\n  execute: async (args) => {\n    const { url } = args as { url: string };\n    return await fetchWebpageContent(url);\n  },\n});\n```\n\nWorks for `outputSchema` too, and is advertised as written — as are Zod and\nArkType schemas, which emit their own JSON Schema. Anything else (Valibot, for\none) is converted to JSON Schema for `tools/list` only; arguments and results\nare still validated by the library itself, so a `v.transform()` reaches\n`execute` and a `v.check()` is enforced even though JSON Schema can express\nneither. Converted input schemas get `additionalProperties: false` on every\nobject, except where a record or rest schema (`v.record()`,\n`v.objectWithRest()`) describes the extra keys; converted output schemas are\nleft as they are. A tool whose schema cannot be converted at all is left out of\nthe server and reported through the logger.\n\nUnlike the schema libraries above, a plain JSON Schema carries no TypeScript\ntypes, so `execute` receives `unknown` arguments. Cast or narrow them yourself.\n\n#### Tools Without Parameters\n\nWhen creating tools that don't require parameters, you have two options:\n\n1. Omit the parameters property entirely:\n\n   ```typescript\n   server.addTool({\n     name: \"sayHello\",\n     description: \"Say hello\",\n     // No parameters property\n     execute: async () => {\n       return \"Hello, world!\";\n     },\n   });\n   ```\n\n2. Explicitly define empty parameters:\n\n   ```typescript\n   import { z } from \"zod\";\n\n   server.addTool({\n     name: \"sayHello\",\n     description: \"Say hello\",\n     parameters: z.object({}), // Empty object\n     execute: async () => {\n       return \"Hello, world!\";\n     },\n   });\n   ```\n\n> [!NOTE]\n>\n> Both approaches are fully compatible with all MCP clients, including Cursor. ViteMCP automatically generates the proper schema in both cases.\n\n#### Structured Tool Output\n\nTools can declare an `outputSchema` and return structured data. ViteMCP exposes that value as MCP `structuredContent`, while also returning a JSON text fallback for clients that only render text content.\n\n```typescript\nserver.addTool({\n  name: \"get-weather\",\n  description: \"Get weather for a city\",\n  parameters: z.object({\n    city: z.string(),\n  }),\n  outputSchema: z.object({\n    temperature: z.number(),\n    humidity: z.number(),\n  }),\n  execute: async ({ city }) => {\n    const weather = await getWeather(city);\n\n    return {\n      temperature: weather.temperature,\n      humidity: weather.humidity,\n    };\n  },\n});\n```\n\nYou can also return explicit text content and structured content together:\n\n```typescript\nserver.addTool({\n  name: \"get-weather\",\n  description: \"Get weather for a city\",\n  parameters: z.object({\n    city: z.string(),\n  }),\n  outputSchema: z.object({\n    temperature: z.number(),\n    humidity: z.number(),\n  }),\n  execute: async ({ city }) => {\n    const weather = await getWeather(city);\n\n    return {\n      content: [\n        {\n          type: \"text\",\n          text: `${city}: ${weather.temperature}F`,\n        },\n      ],\n      structuredContent: {\n        temperature: weather.temperature,\n        humidity: weather.humidity,\n      },\n    };\n  },\n});\n```\n\nWhen `outputSchema` is provided, ViteMCP validates `structuredContent` before sending the tool result. Invalid structured output is returned to the client as a tool error instead of silently violating the advertised schema.\n\nViteMCP tells a structured payload apart from MCP content blocks by shape, so a payload that looks like one of the other shapes needs saying outright. Return it under `structuredContent` and there is nothing left to infer — the JSON text fallback is still written for you:\n\n```typescript\nserver.addTool({\n  name: \"get-document\",\n  parameters: z.object({ id: z.string() }),\n  outputSchema: z.object({\n    title: z.string(),\n    content: z.array(z.string()),\n  }),\n  execute: async ({ id }) => {\n    const doc = await getDocument(id);\n\n    return {\n      structuredContent: { title: doc.title, content: doc.paragraphs },\n    };\n  },\n});\n```\n\nThree payload shapes need it: an array-valued `content` field (as above), a `resultType` of `\"input_required\"`, and a lone `structuredContent` field of your own. Everything else is inferred correctly — including a payload that has a `structuredContent` field among others. In particular a top-level `type` field is safe — including `type: \"text\"` and the other content-block kinds — because a declared `outputSchema` turns off the single-content-block shorthand.\n\nThe wrapper must stand alone: `{ structuredContent }`, optionally with `isError` or `_meta`. An object carrying anything else is read as a payload in its own right, so keys `execute` meant to keep never reach the client.\n\n#### Restricting who can call a tool\n\nA tool's optional `canAccess` receives the request's auth context and returns whether the caller may use it. Tools it rejects are filtered out of `tools/list` entirely. A caller who may use none of them gets an empty list rather than an error.\n\n```typescript\nserver.addTool({\n  name: \"admin-tool\",\n  description: \"An admin-only tool\",\n  canAccess: (auth) => auth?.role === \"admin\",\n  execute: async () => \"Welcome, admin!\",\n});\n```\n\nBuilt-in helpers — `requireAuth`, `requireScopes`, `requireRole`, `requireAll`, `requireAny` — cover the usual cases; see [Tool Authorization](#tool-authorization).\n\n#### Return types\n\n`execute` may return a plain string, a content object, or an array of content\nblocks. A bare string is shorthand for a single `text` block — these two are\nequivalent:\n\n```js\nexecute: async () => \"Hello, world!\";\nexecute: async () => ({ content: [{ type: \"text\", text: \"Hello, world!\" }] });\n```\n\n| Return value            | Produces                                                |\n| ----------------------- | ------------------------------------------------------- |\n| `\"some string\"`         | one `text` block                                        |\n| `{ content: [...] }`    | any mix of `text`, `image`, `audio` and resource blocks |\n| `imageContent({ ... })` | one `image` block                                       |\n| `audioContent({ ... })` | one `audio` block                                       |\n\n`imageContent` and `audioContent` build a block from a `url`, a `path`, or a\n`buffer` — exactly one of the three. Both accept `timeoutMs` to bound a URL\ndownload (30 seconds by default).\n\n```js\nimport { audioContent, imageContent } from \"@vitemcp/server\";\n\nserver.addTool({\n  name: \"fetch-image\",\n  description: \"Fetch an image\",\n  parameters: z.object({ url: z.string() }),\n  execute: async (args) => imageContent({ url: args.url }),\n  // ...or imageContent({ path: \"/path/to/image.png\" })\n  // ...or imageContent({ buffer: Buffer.from(base64Png, \"base64\") })\n});\n```\n\nEach helper returns a single block, so combine them under `content` to send\nmore than one:\n\n```js\nexecute: async () => ({\n  content: [\n    { type: \"text\", text: \"Here is what I found:\" },\n    await imageContent({ url: \"https://example.com/image.png\" }),\n    await audioContent({ url: \"https://example.com/audio.mp3\" }),\n  ],\n});\n```\n\nRaw blocks work too when you already hold base64 data:\n\n```js\nexecute: async () => ({\n  content: [\n    { type: \"image\", data: base64Png, mimeType: \"image/png\" },\n    { type: \"audio\", data: base64Mp3, mimeType: \"audio/mpeg\" },\n  ],\n});\n```\n\n#### Tool Annotations\n\nTools can include annotations that provide richer context and control by adding metadata about a tool's behavior:\n\n```typescript\nserver.addTool({\n  name: \"fetch-content\",\n  description: \"Fetch content from a URL\",\n  parameters: z.object({\n    url: z.string(),\n  }),\n  annotations: {\n    title: \"Web Content Fetcher\", // Human-readable title for UI display\n    readOnlyHint: true, // Tool doesn't modify its environment\n    openWorldHint: true, // Tool interacts with external entities\n  },\n  execute: async (args) => {\n    return await fetchWebpageContent(args.url);\n  },\n});\n```\n\nThe available annotations are:\n\n| Annotation        | Type    | Default | Description                                                                                                                          |\n| :---------------- | :------ | :------ | :----------------------------------------------------------------------------------------------------------------------------------- |\n| `title`           | string  | -       | A human-readable title for the tool, useful for UI display                                                                           |\n| `readOnlyHint`    | boolean | `false` | If true, indicates the tool does not modify its environment                                                                          |\n| `destructiveHint` | boolean | `true`  | If true, the tool may perform destructive updates (only meaningful when `readOnlyHint` is false)                                     |\n| `idempotentHint`  | boolean | `false` | If true, calling the tool repeatedly with the same arguments has no additional effect (only meaningful when `readOnlyHint` is false) |\n| `openWorldHint`   | boolean | `true`  | If true, the tool may interact with an \"open world\" of external entities                                                             |\n\nThese annotations help clients and LLMs better understand how to use the tools and what to expect when calling them.\n\n### Resources\n\n[Resources](https://modelcontextprotocol.io/docs/concepts/resources) represent any kind of data that an MCP server wants to make available to clients. This can include:\n\n- File contents\n- Screenshots and images\n- Log files\n- And more\n\nEach resource is identified by a unique URI and can contain either text or binary data.\n\n```ts\nserver.addResource({\n  uri: \"file:///logs/app.log\",\n  name: \"Application Logs\",\n  mimeType: \"text/plain\",\n  async load() {\n    return {\n      text: await readLogFile(),\n    };\n  },\n});\n```\n\n> [!NOTE]\n>\n> `load` can return multiple resources. This could be used, for example, to return a list of files inside a directory when the directory is read.\n>\n> ```ts\n> async load() {\n>   return [\n>     {\n>       text: \"First file content\",\n>     },\n>     {\n>       text: \"Second file content\",\n>     },\n>   ];\n> }\n> ```\n\nYou can also return binary contents in `load`:\n\n```ts\nasync load() {\n  return {\n    blob: 'base64-encoded-data'\n  };\n}\n```\n\n`load` receives a `context` object mirroring what `tool.execute` gets — `auth`, `log`, `requestId` and the multi-round-trip helpers. `reportProgress` is not included, since it is tied to a tool call's progress token:\n\n```ts\nserver.addResource({\n  uri: \"file:///logs/app.log\",\n  name: \"Application Logs\",\n  mimeType: \"text/plain\",\n  async load(context) {\n    context.log.info(\"loading application logs\", { requestedBy: auth?.userId });\n\n    return {\n      text: await readLogFile(),\n    };\n  },\n});\n```\n\n### Resource templates\n\nYou can also define resource templates:\n\n```ts\nserver.addResourceTemplate({\n  uriTemplate: \"file:///logs/{name}.log\",\n  name: \"Application Logs\",\n  mimeType: \"text/plain\",\n  arguments: [\n    {\n      name: \"name\",\n      description: \"Name of the log\",\n      required: true,\n    },\n  ],\n  async load({ name }) {\n    return {\n      text: `Example log content for ${name}`,\n    };\n  },\n});\n```\n\nLike plain resources, `load` also receives `auth` and `context` as its second and third arguments (see [Resources](#resources)).\n\n#### Resource template argument auto-completion\n\nProvide `complete` functions for resource template arguments to enable automatic completion:\n\n```ts\nserver.addResourceTemplate({\n  uriTemplate: \"file:///logs/{name}.log\",\n  name: \"Application Logs\",\n  mimeType: \"text/plain\",\n  arguments: [\n    {\n      name: \"name\",\n      description: \"Name of the log\",\n      required: true,\n      complete: async (value) => {\n        if (value === \"Example\") {\n          return {\n            values: [\"Example Log\"],\n          };\n        }\n\n        return {\n          values: [],\n        };\n      },\n    },\n  ],\n  async load({ name }) {\n    return {\n      text: `Example log content for ${name}`,\n    };\n  },\n});\n```\n\n### Embedded Resources\n\nViteMCP provides a convenient `embedded()` method that simplifies including resources in tool responses. This feature reduces code duplication and makes it easier to reference resources from within tools.\n\n#### Basic Usage\n\n```js\nserver.addTool({\n  name: \"get_user_data\",\n  description: \"Retrieve user information\",\n  parameters: z.object({\n    userId: z.string(),\n  }),\n  execute: async (args) => {\n    return {\n      content: [\n        {\n          type: \"resource\",\n          resource: await server.embedded(`user://profile/${args.userId}`),\n        },\n      ],\n    };\n  },\n});\n```\n\n#### Working with Resource Templates\n\nThe `embedded()` method works seamlessly with resource templates:\n\n```js\n// Define a resource template\nserver.addResourceTemplate({\n  uriTemplate: \"docs://project/{section}\",\n  name: \"Project Documentation\",\n  mimeType: \"text/markdown\",\n  arguments: [\n    {\n      name: \"section\",\n      required: true,\n    },\n  ],\n  async load(args) {\n    const docs = {\n      \"getting-started\": \"# Getting Started\\n\\nWelcome to our project!\",\n      \"api-reference\": \"# API Reference\\n\\nAuthentication is required.\",\n    };\n    return {\n      text: docs[args.section] || \"Documentation not found\",\n    };\n  },\n});\n\n// Use embedded resources in a tool\nserver.addTool({\n  name: \"get_documentation\",\n  description: \"Retrieve project documentation\",\n  parameters: z.object({\n    section: z.enum([\"getting-started\", \"api-reference\"]),\n  }),\n  execute: async (args) => {\n    return {\n      content: [\n        {\n          type: \"resource\",\n          resource: await server.embedded(`docs://project/${args.section}`),\n        },\n      ],\n    };\n  },\n});\n```\n\n#### Working with Direct Resources\n\nIt also works with directly defined resources:\n\n```js\n// Define a direct resource\nserver.addResource({\n  uri: \"system://status\",\n  name: \"System Status\",\n  mimeType: \"text/plain\",\n  async load() {\n    return {\n      text: \"System operational\",\n    };\n  },\n});\n\n// Use in a tool\nserver.addTool({\n  name: \"get_system_status\",\n  description: \"Get current system status\",\n  parameters: z.object({}),\n  execute: async () => {\n    return {\n      content: [\n        {\n          type: \"resource\",\n          resource: await server.embedded(\"system://status\"),\n        },\n      ],\n    };\n  },\n});\n```\n\n### Prompts\n\n[Prompts](https://modelcontextprotocol.io/docs/concepts/prompts) enable servers to define reusable prompt templates and workflows that clients can easily surface to users and LLMs. They provide a powerful way to standardize and share common LLM interactions.\n\n```ts\nserver.addPrompt({\n  name: \"git-commit\",\n  description: \"Generate a Git commit message\",\n  arguments: [\n    {\n      name: \"changes\",\n      description: \"Git diff or description of changes\",\n      required: true,\n    },\n  ],\n  load: async (args) => {\n    return `Generate a concise but descriptive commit message for these changes:\\n\\n${args.changes}`;\n  },\n});\n```\n\nLike resources, `load` also receives `auth` and `context` as its second and third arguments (see [Resources](#resources)):\n\n```ts\nserver.addPrompt({\n  name: \"git-commit\",\n  description: \"Generate a Git commit message\",\n  arguments: [\n    {\n      name: \"changes\",\n      description: \"Git diff or description of changes\",\n      required: true,\n    },\n  ],\n  load: async (args, context) => {\n    context.log.debug(\"generating git commit prompt\", { user: auth?.userId });\n\n    return `Generate a concise but descriptive commit message for these changes:\\n\\n${args.changes}`;\n  },\n});\n```\n\n#### Prompt argument auto-completion\n\nPrompts can provide auto-completion for their arguments:\n\n```js\nserver.addPrompt({\n  name: \"countryPoem\",\n  description: \"Writes a poem about a country\",\n  load: async ({ name }) => {\n    return `Hello, ${name}!`;\n  },\n  arguments: [\n    {\n      name: \"name\",\n      description: \"Name of the country\",\n      required: true,\n      complete: async (value) => {\n        if (value === \"Germ\") {\n          return {\n            values: [\"Germany\"],\n          };\n        }\n\n        return {\n          values: [],\n        };\n      },\n    },\n  ],\n});\n```\n\n#### Prompt argument auto-completion using `enum`\n\nIf you provide an `enum` array for an argument, the server will automatically provide completions for the argument.\n\n```js\nserver.addPrompt({\n  name: \"countryPoem\",\n  description: \"Writes a poem about a country\",\n  load: async ({ name }) => {\n    return `Hello, ${name}!`;\n  },\n  arguments: [\n    {\n      name: \"name\",\n      description: \"Name of the country\",\n      required: true,\n      enum: [\"Germany\", \"France\", \"Italy\"],\n    },\n  ],\n});\n```\n\n### Authentication\n\nViteMCP supports OAuth 2.1 authentication with pre-configured providers, allowing you to secure your server with minimal setup. This section covers the common cases; the [OAuth guide](docs/oauth.md) is the full reference.\n\n#### OAuth with Pre-configured Providers\n\nUse the `auth` option with a provider to enable OAuth authentication:\n\n```ts\nimport {\n  ViteMCP,\n  getAuthSession,\n  GoogleProvider,\n  requireAuth,\n} from \"@vitemcp/server\";\n\nconst server = new ViteMCP({\n  auth: new GoogleProvider({\n    baseUrl: \"https://your-server.com\",\n    clientId: process.env.GOOGLE_CLIENT_ID!,\n    clientSecret: process.env.GOOGLE_CLIENT_SECRET!,\n  }),\n  name: \"My Server\",\n  version: \"1.0.0\",\n});\n\nserver.addTool({\n  canAccess: requireAuth,\n  description: \"Get user profile\",\n  execute: async (_args, { auth }) => {\n    const { accessToken } = getAuthSession(auth);\n    const response = await fetch(\n      \"https://www.googleapis.com/oauth2/v2/userinfo\",\n      {\n        headers: { Authorization: `Bearer ${accessToken}` },\n      },\n    );\n    return JSON.stringify(await response.json());\n  },\n  name: \"get-profile\",\n});\n```\n\n**Available providers**, all exported from `@vitemcp/server`:\n\n| Provider         | Use case                                     |\n| :--------------- | :------------------------------------------- |\n| `GoogleProvider` | Google OAuth                                 |\n| `GitHubProvider` | GitHub OAuth                                 |\n| `AzureProvider`  | Azure / Entra ID                             |\n| `OAuthProvider`  | Any OAuth 2.0 provider (Auth0, Okta, SAP, …) |\n\n`OAuthProvider` takes `authorizationEndpoint` and `tokenEndpoint` in place of a\nprovider name. See [Provider setup](docs/oauth.md#provider-setup) for\nregistration steps, redirect URIs and scopes for each.\n\n#### Tool Authorization\n\nConfiguring `auth` (or `authenticate`) closes the endpoint on its own: a request\nthat does not authenticate is refused with `401` and an RFC 6750\n`WWW-Authenticate` challenge before any handler runs, so nothing is reachable\nanonymously. `canAccess` then decides what an _authenticated_ caller may use.\n\n`canAccess` filters rejected tools out of `tools/list` entirely. Built-in helpers\ncover the common cases:\n\n```ts\nimport {\n  getAuthSession,\n  requireAll,\n  requireAny,\n  requireAuth,\n  requireRole,\n  requireScopes,\n} from \"@vitemcp/server\";\n\nserver.addTool({ canAccess: requireAuth, name: \"user-tool\" /* ... */ });\nserver.addTool({\n  canAccess: requireScopes(\"read:user\"),\n  name: \"scoped\" /* ... */,\n});\nserver.addTool({\n  canAccess: requireRole(\"admin\"),\n  name: \"admin-tool\" /* ... */,\n});\nserver.addTool({\n  canAccess: requireAll(requireAuth, requireRole(\"admin\")),\n  name: \"admin-only\",\n  // ...\n});\nserver.addTool({\n  canAccess: requireAny(requireRole(\"admin\"), requireRole(\"moderator\")),\n  name: \"staff-tool\",\n  // ...\n});\n```\n\nFor anything these do not cover, pass a function — it receives whatever your\n`authenticate` hook returned. Inside `execute`, `getAuthSession` gives\ntype-safe access to the session and throws a clear error if the request was\nnever authenticated:\n\n```ts\nserver.addTool({\n  canAccess: requireAuth,\n  name: \"get-profile\",\n  execute: async (_args, { auth }) => {\n    const { accessToken } = getAuthSession(auth);\n    // Or, with provider-specific typing:\n    // const { accessToken } = getAuthSession<GoogleSession>(auth);\n    const response = await fetch(\"https://api.example.com/user\", {\n      headers: { Authorization: `Bearer ${accessToken}` },\n    });\n    return JSON.stringify(await response.json());\n  },\n});\n```\n\nReading `auth.accessToken` directly works too, but then handling `undefined` is\nyours. Full detail in [Protecting tools](docs/oauth.md#protecting-tools).\n\n#### Custom Authentication\n\nFor non-OAuth scenarios (API keys, custom tokens), use the `authenticate` option:\n\n```ts\nconst server = new ViteMCP({\n  name: \"My Server\",\n  version: \"1.0.0\",\n  authenticate: (request) => {\n    const apiKey = request.headers.get(\"x-api-key\");\n\n    if (apiKey !== \"123\") {\n      throw new Response(null, {\n        status: 401,\n        statusText: \"Unauthorized\",\n      });\n    }\n\n    return { id: 1, role: \"user\" };\n  },\n});\n\nserver.addTool({\n  name: \"sayHello\",\n  execute: async (args, { auth }) => {\n    return `Hello, ${auth.id}!`;\n  },\n});\n```\n\nThe hook has two ways to refuse:\n\n- **Return `null` or `undefined`.** ViteMCP answers `401` with a\n  `WWW-Authenticate` challenge, pointing at the protected-resource document when\n  the server publishes one. `execute` never runs.\n- **Throw a `Response`.** It is sent to the client verbatim, for when you want an\n  exact status, body or header — as in the example above.\n\nAnything else the hook throws is a fault in your code: it is logged and answered\nwith `500`, never served.\n\nBecause a hook that cannot identify the caller has not authenticated them,\nreturning nothing is a refusal and not an anonymous session. If your server is\npublic in part, opt in explicitly and guard the rest with `canAccess`:\n\n```ts\nconst server = new ViteMCP({\n  name: \"My Server\",\n  version: \"1.0.0\",\n  // Callers the hook could not identify are served with `auth: undefined`.\n  allowAnonymous: true,\n  authenticate: async (request) => lookUpApiKey(request) ?? undefined,\n});\n\nserver.addTool({ name: \"public-tool\" /* ... */ });\nserver.addTool({ canAccess: requireAuth, name: \"private-tool\" /* ... */ });\n```\n\n#### OAuth Proxy\n\nThe `auth` option is backed by ViteMCP's OAuth Proxy, which sits between MCP\nclients and upstream providers. It presents a DCR-compliant face to the client\nwhile using your pre-registered credentials upstream, and handles the whole\nOAuth 2.1 flow: two-tier PKCE, the consent screen, token exchange and refresh,\nand encrypted storage with token swap.\n\n- **Secure by default** — AES-256-GCM storage encryption and the token swap pattern, both on unless you turn them off\n- **Zero configuration** — keys are generated and every `/oauth/*` endpoint is registered for you\n- **Pre-configured providers** — Google, GitHub and Azure, or bring your own\n- **RFC compliant** — DCR (7591), PKCE (7636), Authorization Server Metadata (8414), Issuer Identification (9207), OAuth 2.1\n- **Optional JWKS** — RS256/ES256 verification via the optional `jose` dependency\n\nThe [OAuth guide](docs/oauth.md) is the complete reference: provider setup,\nconfiguration, token swap, storage backends, running multiple instances, JWKS\nverification, the production checklist and troubleshooting.\n\n#### OAuth Discovery Endpoints\n\nViteMCP also supports OAuth discovery endpoints for direct integration with OAuth providers. These comply with RFC 8414 (OAuth 2.0 Authorization Server Metadata) and RFC 9728 (OAuth 2.0 Protected Resource Metadata):\n\n```ts\nimport { ViteMCP } from \"@vitemcp/server\";\nimport buildGetJwks from \"get-jwks\";\nimport fastJwt, { type DecodedJwt } from \"fast-jwt\";\n\nconst server = new ViteMCP({\n  name: \"My Server\",\n  version: \"1.0.0\",\n  oauth: {\n    enabled: true,\n    authorizationServer: {\n      issuer: \"https://auth.example.com\",\n      authorizationEndpoint: \"https://auth.example.com/oauth/authorize\",\n      tokenEndpoint: \"https://auth.example.com/oauth/token\",\n      jwksUri: \"https://auth.example.com/.well-known/jwks.json\",\n      responseTypesSupported: [\"code\"],\n    },\n    protectedResource: {\n      resource: \"mcp://my-server\",\n      authorizationServers: [\"https://auth.example.com\"],\n    },\n  },\n  authenticate: async (request) => {\n    const authHeader = request.headers.get(\"authorization\");\n\n    if (!authHeader?.startsWith(\"Bearer \")) {\n      throw new Response(null, {\n        status: 401,\n        statusText: \"Missing or invalid authorization header\",\n      });\n    }\n\n    const token = authHeader.slice(7); // Remove 'Bearer ' prefix\n\n    // Validate OAuth JWT access token using OpenID Connect discovery\n    try {\n      // Create JWKS client for token verification\n      const getJwks = buildGetJwks();\n\n      // Create JWT verifier\n      const verify = fastJwt.createVerifier({\n        async key({ header }: DecodedJwt) {\n          const publicKey = await getJwks.getPublicKey({\n            kid: header.kid,\n            alg: header.alg,\n            domain: \"https://auth.example.com\",\n          });\n          return publicKey;\n        },\n        algorithms: [\"RS256\"],\n      });\n\n      // Verify the JWT token\n      const payload = await verify(token);\n\n      return {\n        userId: payload.sub,\n        scope: payload.scope,\n        email: payload.email,\n        // Include other claims as needed\n      };\n    } catch (error) {\n      throw new Response(null, {\n        status: 401,\n        statusText: \"Invalid OAuth token\",\n      });\n    }\n  },\n});\n```\n\nIf your MCP server is published below an issuer path, configure the HTTP\nstream base path as well:\n\n```ts\nserver.start({\n  transportType: \"httpStream\",\n  httpStream: {\n    basePath: \"/issuer1\",\n    endpoint: \"/mcp\",\n    port: 8080,\n  },\n});\n```\n\nWith this configuration, ViteMCP serves the issuer-path authorization server\nmetadata at `/.well-known/oauth-authorization-server/issuer1`, while protected\nresource metadata remains available for the MCP endpoint at\n`/.well-known/oauth-protected-resource/issuer1/mcp`.\n\nThis configuration automatically exposes OAuth discovery endpoints:\n\n- `/.well-known/oauth-authorization-server` - Authorization server metadata (RFC 8414)\n- `/.well-known/oauth-authorization-server<basePath>` - Authorization server metadata when `httpStream.basePath` is set (RFC 8414 Section 3)\n- `/.well-known/oauth-protected-resource` - Protected resource metadata (RFC 9728)\n- `/.well-known/oauth-protected-resource<endpoint>` - Protected resource metadata at sub-path\n\n**Discovery Mechanism:**\n\nClients discover protected resource metadata using the following search order:\n\n1. **WWW-Authenticate header** - Primary method. The `401` challenge carries `resource_metadata`, formed from the configured `resource`, so it names the public address even behind a proxy that terminates TLS\n2. **Sub-path well-known** - `/.well-known/oauth-protected-resource<endpoint>` (e.g., `/.well-known/oauth-protected-resource/mcp`)\n3. **Root well-known** - `/.well-known/oauth-protected-resource` (fallback)\n\nBoth the sub-path and root endpoints return identical metadata, ensuring compatibility with all MCP client implementations.\n\nFor JWT token validation, you can use libraries like [`get-jwks`](https://github.com/nearform/get-jwks) and [`fast-jwt`](https://github.com/nearform/fast-jwt) for OAuth JWT tokens.\n\n#### Passing Headers Through Context\n\nIf you are exposing your MCP server via HTTP, you may wish to allow clients to supply sensitive keys via headers, which can then be passed along to APIs that your tools interact with, allowing each client to supply their own API keys. This can be done by capturing the HTTP headers in the `authenticate` section and storing them in the session to be referenced by the tools later.\n\n```ts\nimport { ViteMCP } from \"@vitemcp/server\";\nimport { IncomingHttpHeaders } from \"http\";\n\n// Define the session data type\ninterface SessionData {\n  headers: IncomingHttpHeaders;\n  [key: string]: unknown; // Add index signature to satisfy Record<string, unknown>\n}\n\n// Create a server instance\nconst server = new ViteMCP({\n  name: \"My Server\",\n  version: \"1.0.0\",\n  authenticate: async (request: any): Promise<SessionData> => {\n    // Authentication logic\n    return {\n      headers: request.headers,\n    };\n  },\n});\n\n// Tool to display HTTP headers\nserver.addTool({\n  name: \"headerTool\",\n  description: \"Reads HTTP headers from the request\",\n  execute: async (args: any, context: any) => {\n    const session = context.session as SessionData;\n    const headers = session?.headers ?? {};\n\n    const getHeaderString = (header: string | string[] | undefined) =>\n      Array.isArray(header) ? header.join(\", \") : (header ?? \"N/A\");\n\n    const userAgent = getHeaderString(headers[\"user-agent\"]);\n    const authorization = getHeaderString(headers[\"authorization\"]);\n    return `User-Agent: ${userAgent}\\nAuthorization: ${authorization}\\nAll Headers: ${JSON.stringify(headers, null, 2)}`;\n  },\n});\n\n// Start the server\nserver.start({\n  transportType: \"httpStream\",\n  httpStream: {\n    port: 8080,\n  },\n});\n```\n\nA client that would connect to this may look something like this:\n\n```ts\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/client\";\nimport { Client } from \"@modelcontextprotocol/client\";\n\nconst transport = new StreamableHTTPClientTransport(\n  new URL(`http://localhost:8080/mcp`),\n  {\n    requestInit: {\n      headers: {\n        Authorization: \"Test 123\",\n      },\n    },\n  },\n);\n\nconst client = new Client({\n  name: \"example-client\",\n  version: \"1.0.0\",\n});\n\n(async () => {\n  await client.connect(transport);\n\n  // Call a tool\n  const result = await client.callTool({\n    name: \"headerTool\",\n    arguments: {\n      arg1: \"value\",\n    },\n  });\n\n  console.log(\"Tool result:\", result);\n})().catch(console.error);\n```\n\nWhat would show up in the console after the client runs is something like this:\n\n```\nTool result: {\n  content: [\n    {\n      type: 'text',\n      text: 'User-Agent: node\\n' +\n        'Authorization: Test 123\\n' +\n        'All Headers: {\\n' +\n        '  \"host\": \"localhost:8080\",\\n' +\n        '  \"connection\": \"keep-alive\",\\n' +\n        '  \"authorization\": \"Test 123\",\\n' +\n        '  \"content-type\": \"application/json\",\\n' +\n        '  \"accept\": \"application/json, text/event-stream\",\\n' +\n        '  \"accept-language\": \"*\",\\n' +\n        '  \"sec-fetch-mode\": \"cors\",\\n' +\n        '  \"user-agent\": \"node\",\\n' +\n        '  \"accept-encoding\": \"gzip, deflate\",\\n' +\n        '  \"content-length\": \"163\"\\n' +\n        '}'\n    }\n  ]\n}\n```\n\n### Providing Instructions\n\nYou can provide instructions to the server using the `instructions` option:\n\n```ts\nconst server = new ViteMCP({\n  name: \"My Server\",\n  version: \"1.0.0\",\n  instructions:\n    'Instructions describing how to use the server and its features.\\n\\nThis can be used by clients to improve the LLM\\'s understanding of available tools, resources, etc. It can be thought of like a \"hint\" to the model. For example, this information MAY be added to the system prompt.',\n});\n```\n\n### Server metadata and icons\n\n`icons`, `title`, `description` and `websiteUrl` are returned in `serverInfo`\non `initialize`, so clients can list the server with a logo and a display name\ninstead of the bare `name`:\n\n```ts\nconst server = new ViteMCP({\n  name: \"my-server\",\n  title: \"My Server\",\n  description: \"Weather forecasts and alerts.\",\n  version: \"1.0.0\",\n  websiteUrl: \"https://example.com\",\n  icons: [\n    {\n      src: \"https://example.com/icon.png\",\n      mimeType: \"image/png\",\n      sizes: [\"48x48\"],\n    },\n  ],\n});\n```\n\n`src` is fetched by the client, so it has to be reachable from wherever the\nclient runs — not just from the server. Every field is optional, and clients\nthat do not support them ignore them.\n\n`description` is for the person picking a server; `instructions` is for the\nmodel using it.\n\n### Multi round-trip requests\n\nOn the stateless protocol a server cannot pause mid-execution and ask the\nclient a question — there is no session to hold the suspended call. Instead the\nhandler _returns_ a request for more input, and the client re-issues the whole\ncall with the answers attached.\n\n```ts\nimport { z } from \"zod\";\n\nconst confirmSchema = z.object({ confirmed: z.boolean() });\n\nserver.addTool({\n  name: \"delete-everything\",\n  parameters: z.object({ target: z.string() }),\n  execute: async ({ target }, ctx) => {\n    if (!ctx.inputResponses) {\n      return ctx.inputRequired(\n        {\n          confirm: ctx.elicit({\n            message: `Really delete ${target}?`,\n            requestedSchema: confirmSchema,\n          }),\n        },\n        // Optional opaque state, echoed back verbatim on the retry.\n        JSON.stringify({ target }),\n      );\n    }\n\n    const answer = ctx.input(\"confirm\", confirmSchema);\n    return answer?.confirmed ? `Deleted ${target}` : \"Cancelled\";\n  },\n});\n```\n\nA complete worked version, including HMAC-signing `requestState` and\ndistinguishing \"declined\" from \"answered no\", is in\n[`src/examples/multi-round-trip.ts`](src/examples/multi-round-trip.ts). Per-request\nauth is demonstrated in [`src/examples/auth-context.ts`](src/examples/auth-context.ts).\n\nThree consequences worth internalising:\n\n- **Handlers are re-entrant.** `execute` runs again from the top on the retry.\n  Do not do irreversible work before you have the input you need.\n- **`requestState` is attacker-controlled on the way back.** It round-trips\n  through the client. If it influences authorization or resource access, sign\n  or encrypt it and reject anything that fails verification — ViteMCP does not\n  do that for you.\n- **`ctx.input()` returns `undefined` when the client declined**, which is not\n  the same as the user answering \"no\". Handle the two separately, or a decline\n  silently reads as a negative answer.\n\n### Cacheable results\n\n`tools/list`, `prompts/list`, `resources/list`, `resources/templates/list` and\n`resources/read` carry cache hints on this revision. Set them per resource:\n\n```ts\nserver.addResource({\n  name: \"Changelog\",\n  uri: \"docs://changelog\",\n  cache: { cacheScope: \"public\", ttlMs: 60_000 },\n  load: async () => ({ text: await readChangelog() }),\n});\n```\n\n`cacheScope: \"private\"` restricts caching to the requesting client; `\"public\"`\npermits shared intermediaries.\n\n### Client ID Metadata Documents\n\nDynamic Client Registration is deprecated on this revision. The replacement is\nClient ID Metadata Documents: a client identifies itself with an HTTPS URL that\nserves a JSON document describing it, so no registration step is needed and the\nidentity is portable across authorization servers.\n\nViteMCP's OAuth proxy resolves URL-formatted `client_id`s automatically and\nadvertises `client_id_metadata_document_supported` in its metadata. A client\ndocument looks like this:\n\n```json\n{\n  \"client_id\": \"https://app.example.com/oauth/client.json\",\n  \"client_name\": \"Example MCP Client\",\n  \"redirect_uris\": [\"http://127.0.0.1:3000/callback\"],\n  \"grant_types\": [\"authorization_code\"],\n  \"response_types\": [\"code\"]\n}\n```\n\nSuch a client is a public one — it holds no secret — so the proxy requires\n`S256` PKCE from it, whatever `allowPlainPkce` is set to.\n\n> [!WARNING]\n>\n> Resolving a URL-formatted `client_id` means **your server fetches a URL an\n> unauthenticated caller chose** — a server-side request forgery surface. The\n> resolver defends it by refusing non-HTTPS URLs and bare origins, refusing\n> addresses that resolve into private, loopback, link-local or CGNAT ranges\n> (including `169.254.169.254`, the cloud instance-metadata endpoint), not\n> following redirects, and capping both response size and time.\n>\n> The address check runs inside the connection's own DNS lookup, so a name that\n> resolves publicly during validation and internally at connect time — DNS\n> rebinding — is still refused.\n\nNarrow it further with a trust policy, or turn it off:\n\n```ts\nconst authProxy = new OAuthProxy({\n  // ...\n  clientIdMetadata: {\n    allowedDomains: [\"app.example.com\", \".trusted-partner.com\"],\n    fetchTimeoutMs: 3000,\n    maxDocumentBytes: 32 * 1024,\n  },\n});\n```\n\n### Generating a server from OpenAPI\n\n`fromOpenAPI()` turns an OpenAPI 3.x document into a server, one tool per\noperation. Parameters and the request body are flattened into a single argument\nlist, `$ref`s are resolved, and each tool calls the real API when invoked.\n\n```ts\nimport { fromOpenAPI } from \"@vitemcp/server/openapi\";\n\nconst server = await fromOpenAPI({\n  headers: { authorization: `Bearer ${process.env.API_TOKEN}` },\n  include: (operation) => operation.tags.includes(\"pet\"),\n  spec: \"https://petstore3.swagger.io/api/v3/openapi.json\",\n});\n\nawait server.start({ transportType: \"stdio\" });\n```\n\n`spec` takes a URL, a file path, inline JSON, or a parsed object. The result is\nan ordinary `ViteMCP` instance — add your own tools to it, or pass `server` to\nregister the generated ones onto a server you already have.\n\nBecause ViteMCP is stateless, `headers` can be a function instead of an object,\nand it runs per request:\n\n```ts\nawait fromOpenAPI<Session>({\n  headers: (context) => ({\n    authorization: `Bearer ${context.auth!.upstreamToken}`,\n  }),\n  server,\n  spec: \"./openapi.json\",\n});\n```\n\nCredentials given this way are applied after the operation's own parameters, so\na model that supplies its own `authorization` argument cannot displace them.\n\nSelecting operations is required rather than optional. A document with two\nhundred operations makes a tool list no client can present, so with no\n`include`, `exclude` or `maxTools`, more than 40 operations is an error rather\nthan a large server.\n\nYAML documents and documents whose `$ref`s point at other files need the\noptional `@apidevtools/swagger-parser` peer dependency; a single-file JSON\ndocument needs nothing extra.\n\nFull reference: the [OpenAPI guide](docs/openapi.md).\n\n### Migrating from the session-based API\n\nRevision 2026-07-28 removed protocol sessions, the `initialize` handshake,\n`ping`, `logging/setLevel`, roots, `resources/subscribe` and SSE resumability.\nThe corresponding ViteMCP surface went with them:\n\n| Removed                                                                     | Replacement                                           |\n| --------------------------------------------------------------------------- | ----------------------------------------------------- |\n| `ViteMCPSession`, `server.sessions`, `server.on(\"connect\" \\| \"disconnect\")` | Nothing — requests are self-contained                 |\n| `context.session`                                                           | `context.auth` (per-request `authenticate` result)    |\n| `context.sessionId`                                                         | Nothing. Correlate with your own identifier if needed |\n| `await context.elicit(...)`                                                 | Return `ctx.inputRequired({ ... })` — see above       |\n| `session.requestSampling(...)`                                              | Call your LLM provider directly                       |\n| `session.roots`, `session.clientCapabilities`, `session.loggingLevel`       | Nothing                                               |\n| `context.streamContent(...)`                                                | `context.reportProgress(...)`                         |\n| `httpStream.stateless`                                                      | Nothing — every deployment is stateless               |\n| `httpStream.eventStore`                                                     | Nothing — stream resumability was removed             |\n| `ping` / `roots` server options                                             | Nothing                                               |\n\n`authenticate` now receives a web-standard `Request` rather than a Node\n`IncomingMessage`, so read headers with `request.headers.get(\"...\")`.\n\n**The SDK you build clients with also changed.** `@modelcontextprotocol/sdk`\nv1 is replaced by `@modelcontextprotocol/{core,server,client,node}` v2, so every\nSDK import in your own code moves.\n\n**Clients must opt into the new protocol era.** The v2 client negotiates the\n2025 era by default; this server serves only 2026-07-28. Construct clients with\n`versionNegotiation: { mode: \"auto\" }` or they will be rejected with\n`Unsupported protocol version`. If you need to serve older clients during a\ntransition, pass `httpStream: { legacy: \"stateless\" }` — but note the server\nthen answers requests it does not advertise support for.\n\n## Server Features\n\nBehaviour the server provides around your tools, resources and prompts.\n\n### Logging\n\nTools can log messages to the client using the `log` object in the context object.\n\n> [!IMPORTANT]\n>\n> Log notifications are **only emitted when the client asks for them**, by\n> setting `io.modelcontextprotocol/logLevel` in the request's `_meta`. The\n> revision forbids servers from sending `notifications/message` for a request\n> that did not opt in, so `log.*` is a no-op otherwise — that is expected\n> behaviour, not a bug. The level is a floor: a request that asks for\n> `warning` receives `log.warn` and `log.error`, not `log.info` or `log.debug`.\n>\n> Logging is also deprecated as of 2026-07-28. For diagnostics that always\n> reach you, write to `stderr` (stdio servers) or use OpenTelemetry; for\n> user-visible progress, prefer [`reportProgress`](#progress).\n\n```js\nserver.addTool({\n  name: \"download\",\n  description: \"Download a file\",\n  parameters: z.object({\n    url: z.string(),\n  }),\n  execute: async (args, { log }) => {\n    log.info(\"Downloading file...\", {\n      url,\n    });\n\n    // ...\n\n    log.info(\"Downloaded file\");\n\n    return \"done\";\n  },\n});\n```\n\nThe `log` object has the following methods:\n\n- `debug(message: string, data?: SerializableValue)`\n- `error(message: string, data?: SerializableValue)`\n- `info(message: string, data?: SerializableValue)`\n- `warn(message: string, data?: SerializableValue)`\n\n### Custom Logger\n\nProvide a `logger` to route server logs into your own infrastructure.\n\n```ts\nimport { ViteMCP, Logger } from \"@vitemcp/server\";\n\nclass CustomLogger implements Logger {\n  debug(...args: unknown[]): void {\n    console.log(\"[DEBUG]\", new Date().toISOString(), ...args);\n  }\n\n  error(...args: unknown[]): void {\n    console.error(\"[ERROR]\", new Date().toISOString(), ...args);\n  }\n\n  info(...args: unknown[]): void {\n    console.info(\"[INFO]\", new Date().toISOString(), ...args);\n  }\n\n  log(...args: unknown[]): void {\n    console.log(\"[LOG]\", new Date().toISOString(), ...args);\n  }\n\n  warn(...args: unknown[]): void {\n    console.warn(\"[WARN]\", new Date().toISOString(), ...args);\n  }\n}\n\nconst server = new ViteMCP({\n  name: \"My Server\",\n  version: \"1.0.0\",\n  logger: new CustomLogger(),\n});\n```\n\nSee `src/examples/custom-logger.ts` for examples with Winston, Pino, and file-based logging.\n\nWith `transportType: \"stdio\"`, stdout carries the protocol itself, so the\ndefault logger writes every level to stderr there. A custom logger is used as\ngiven: make sure it stays off stdout too — unlike the example above, whose\n`console.log` and `console.info` write to it.\n\n### Errors\n\nThe errors that are meant to be shown to the user should be thrown as `UserError` instances:\n\n```js\nimport { UserError } from \"@vitemcp/server\";\n\nserver.addTool({\n  name: \"download\",\n  description: \"Download a file\",\n  parameters: z.object({\n    url: z.string(),\n  }),\n  execute: async (args) => {\n    if (args.url.startsWith(\"https://example.com\")) {\n      throw new UserError(\"This URL is not allowed\");\n    }\n\n    return \"done\";\n  },\n});\n```\n\n### Progress\n\nTools can report progress by calling `reportProgress` in the context object:\n\n```js\nserver.addTool({\n  name: \"download\",\n  description: \"Download a file\",\n  parameters: z.object({\n    url: z.string(),\n  }),\n  execute: async (args, { reportProgress }) => {\n    await reportProgress({\n      progress: 0,\n      total: 100,\n    });\n\n    // ...\n\n    await reportProgress({\n      progress: 100,\n      total: 100,\n    });\n\n    return \"done\";\n  },\n});\n```\n\n`reportProgress` accepts an optional human-readable `message` alongside the numeric fields, which clients can display next to the progress indicator:\n\n```js\nawait reportProgress({\n  progress: 40,\n  total: 100,\n  message: \"Downloading chunk 4 of 10…\",\n});\n```\n\nProgress notifications are only emitted when the client opts in by supplying a `progressToken` on the tool call; otherwise `reportProgress` is a no-op. `notifications/progress` is part of the specification, so this is the portable way to send incremental updates during a long-running tool call.\n\n### Health-check Endpoint\n\nWhen you run ViteMCP with the `httpStream` transport you can optionally expose a\nsimple HTTP endpoint that returns a plain-text response useful for load-balancer\nor container orchestration liveness checks.\n\nEnable (or customise) the endpoint via the `health` key in the server options:\n\n```ts\nconst server = new ViteMCP({\n  name: \"My Server\",\n  version: \"1.0.0\",\n  health: {\n    // Enable / disable (default: true)\n    enabled: true,\n    // Body returned by the endpoint (default: 'ok')\n    message: \"healthy\",\n    // Path that should respond (default: '/health')\n    path: \"/healthz\",\n    // HTTP status code to return (default: 200)\n    status: 200,\n  },\n});\n\nawait server.start({\n  transportType: \"httpStream\",\n  httpStream: { port: 8080 },\n});\n```\n\nNow a request to `http://localhost:8080/healthz` will return:\n\n```\nHTTP/1.1 200 OK\ncontent-type: text/plain\n\nhealthy\n```\n\nThe endpoint is ignored when the server is started with the `stdio` transport.\n\n## Deployment\n\nViteMCP can serve over HTTP, so a server on a remote machine is reachable over\nthe network.\n\n### HTTP Streaming\n\n[HTTP streaming](https://www.cloudflare.com/learning/video/what-is-http-live-streaming/) provides a more efficient alternative to SSE in environments that support it, with potentially better performance for larger payloads.\n\nYou can run the server with HTTP streaming support:\n\n```ts\nserver.start({\n  transportType: \"httpStream\",\n  httpStream: {\n    port: 8080,\n  },\n});\n```\n\nThe server then listens on `http://localhost:8080/mcp`.\n\n> **Note:** You can also customize the endpoint path using the `httpStream.endpoint` option (default is `/mcp`).\n\n> **Note:** To serve HTTP streaming and built-in OAuth routes under an issuer path, set `httpStream.basePath` (for example, `/issuer1`). This exposes authorization server metadata at `/.well-known/oauth-authorization-server/issuer1` per RFC 8414.\n\nConnect with a client transport:\n\nFor HTTP streaming connections:\n\n```ts\nimport { StreamableHTTPClientTransport } from \"@modelcontextprotocol/client\";\n\nconst client = new Client(\n  {\n    name: \"example-client\",\n    version: \"1.0.0\",\n  },\n  {\n    // Required: the SDK client negotiates the 2025 protocol era unless told\n    // otherwise, and this server serves only 2026-07-28.\n    versionNegotiation: { mode: \"auto\" },\n  },\n);\n\nconst transport = new StreamableHTTPClientTransport(\n  new URL(`http://localhost:8080/mcp`),\n);\n\nawait client.connect(transport);\n```\n\n#### HTTPS Support\n\nPass SSL certificates to terminate TLS directly:\n\n```ts\nserver.start({\n  transportType: \"httpStream\",\n  httpStream: {\n    port: 8443,\n    sslCert: \"./path/to/cert.pem\",\n    sslKey: \"./path/to/key.pem\",\n    sslCa: \"./path/to/ca.pem\", // Optional: for client certificate authentication\n  },\n});\n```\n\nThe server then listens on `https://localhost:8443/mcp`.\n\n**SSL Options:**\n\n- `sslCert` - Path to SSL certificate file\n- `sslKey` - Path to SSL private key file\n- `sslCa` - (Optional) Path to CA certificate for mutual TLS authentication\n\n**For testing**, you can generate self-signed certificates:\n\n```bash\nopenssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes -subj \"/CN=localhost\"\n```\n\n**For production**, obtain certificates from a trusted CA like Let's Encrypt.\n\nSee the [https-server example](src/examples/https-server.ts) for a complete demonstration.\n\n#### CORS Configuration\n\nBy default, ViteMCP enables CORS with a standard set of allowed headers. You can customize the CORS behavior by passing a `cors` option:\n\n```ts\nserver.start({\n  transportType: \"httpStream\",\n  httpStream: {\n    port: 8080,\n    cors: {\n      origin: \"http://localhost:3000\",\n      allowedHeaders: [\n        \"Content-Type\",\n        \"Authorization\",\n        \"Accept\",\n        \"Mcp-Protocol-Version\",\n        \"X-Custom-Header\",\n      ],\n      credentials: true,\n    },\n  },\n});\n```\n\nThe `cors` option accepts:\n\n- `true` (default) - enable CORS with default settings\n- `false` - disable CORS entirely\n- An object with these fields:\n  - `origin` - a string, array of strings, or a function `(origin: string) => boolean`\n  - `allowedHeaders` - a string or array of strings\n  - `methods` - array of allowed HTTP methods\n  - `exposedHeaders` - array of headers to expose\n  - `credentials` - boolean to allow credentials\n  - `maxAge` - preflight cache duration in seconds\n\nThe `CorsOptions` type is exported from `vitemcp` for convenience.\n\n### Custom HTTP Routes\n\nCustom HTTP routes live alongside the MCP endpoint in the same process — REST APIs, webhooks, admin interfaces.\n\n```ts\nconst app = server.getApp();\n\n// Add REST API endpoints with Hono's native API\napp.get(\"/api/users\", async (c) => {\n  return c.json({ users: [] });\n});\n\n// Handle path parameters\napp.get(\"/api/users/:id\", async (c) => {\n  return c.json({\n    userId: c.req.param(\"id\"),\n    query: c.req.query(), // Access query parameters\n  });\n});\n\n// Handle POST requests with body parsing\napp.post(\"/api/users\", async (c) => {\n  const body = await c.req.json();\n  return c.json({ created: body }, 201);\n});\n\n// Serve HTML content\napp.get(\"/admin\", async (c) => {\n  return c.html(\"<html><body><h1>Admin Panel</h1></body></html>\");\n});\n\n// Handle webhooks\napp.post(\"/webhook/github\", async (c) => {\n  const payload = await c.req.json();\n  const event = c.req.header(\"x-github-event\");\n\n  // Process webhook...\n  return c.json({ received: true });\n});\n```\n\nCustom routes use the underlying [Hono](https://hono.dev/) app returned by `server.getApp()` and support:\n\n- Hono's HTTP methods: `get`, `post`, `put`, `delete`, `patch`, `options`, and more\n- Path parameters (`:param`) and wildcards (`*`)\n- Query string parsing\n- JSON, text, form, and other body helpers from `c.req`\n- Custom status codes and headers\n- Middleware and route groups through Hono\n\nRoutes are matched in the order they are registered, allowing you to define specific routes before catch-all patterns.\n\n#### Public and Protected Routes\n\nCustom Hono routes are public unless you add your own route middleware or authentication checks. For protected custom routes, put your auth logic in a reusable helper and call it from both ViteMCP's `authenticate` option and your Hono route handlers:\n\n```ts\nimport type { Context } from \"hono\";\nimport { ViteMCP } from \"@vitemcp/server\";\n\nasync function authenticateRequest(request: Request) {\n  const apiKey = request.headers.get(\"x-api-key\");\n  return apiKey === \"123\" ? { userId: \"123\" } : undefined;\n}\n\nconst server = new ViteMCP({\n  name: \"My Server\",\n  version: \"1.0.0\",\n  authenticate: authenticateRequest,\n});\n\nconst app = server.getApp();\n\nasync function requireAuth(c: Context) {\n  const auth = await authenticateRequest(c.env.incoming);\n\n  if (!auth) {\n    return c.json({ error: \"Authentication required\" }, 401);\n  }\n\n  return auth;\n}\n\n// Public route - no authentication required\napp.get(\"/.well-known/openid-configuration\", async (c) => {\n  return c.json({\n    issuer: \"https://example.com\",\n    authorization_endpoint: \"https://example.com/auth\",\n    token_endpoint: \"https://example.com/token\",\n  });\n});\n\n// Private route - requires authentication\napp.get(\"/api/users\", async (c) => {\n  const auth = await requireAuth(c);\n  if (auth instanceof Response) {\n    return auth;\n  }\n\n  return c.json({ users: [] });\n});\n\n// Public static files\napp.get(\"/public/*\", async (c) => {\n  return c.text(`File: ${c.req.path}`);\n});\n```\n\nPublic routes are perfect for:\n\n- OAuth discovery endpoints (`.well-known/*`)\n- Health checks and status pages\n- Static assets and documentation\n- Webhook endpoints from external services\n- Public APIs that don't require user authentication\n\nSee the [custom-routes example](src/examples/custom-routes.ts) for a complete demonstration.\n\n### Edge Runtime Support\n\nViteMCP runs on edge runtimes such as Cloudflare Workers.\n\n#### Choosing Between ViteMCP and EdgeViteMCP\n\n| Use Case                        | Class         | Import                                               |\n| ------------------------------- | ------------- | ---------------------------------------------------- |\n| Node.js, Express, Bun           | `ViteMCP`     | `import { ViteMCP } from \"@vitemcp/server\"`          |\n| Cloudflare Workers, Deno Deploy | `EdgeViteMCP` | `import { EdgeViteMCP } from \"@vitemcp/server/edge\"` |\n\n| Feature              | ViteMCP                        | EdgeViteMCP                            |\n| -------------------- | ------------------------------ | -------------------------------------- |\n| Runtime              | Node.js                        | Edge (V8 isolates)                     |\n| Start method         | `server.start({ port })`       | `export default server`                |\n| Transport            | stdio, httpStream              | HTTP Streamable only                   |\n| File system          | Yes                            | No                                     |\n| OAuth/Authentication | Built-in `authenticate` option | Use Hono middleware (built-in planned) |\n| Custom routes        | `server.getApp()`              | `server.getApp()`                      |\n\n> **Note:** Built-in authentication for EdgeViteMCP is planned for a future release. Both ViteMCP and EdgeViteMCP use Hono internally, so there's no technical barrier. `ViteMCP`'s `authenticate` already takes a web-standard `Request`, so the same hook shape works on both.\n>\n> In the meantime, use Hono middleware:\n>\n> ```ts\n> const app = server.getApp();\n> app.use(\"/api/*\", async (c, next) => {\n>   if (c.req.header(\"authorization\") !== \"Bearer secret\") {\n>     return c.json({ error: \"Unauthorized\" }, 401);\n>   }\n>   await next();\n> });\n> ```\n\n#### Cloudflare Workers\n\nTo deploy ViteMCP to Cloudflare Workers, use the `EdgeViteMCP` class from the `/edge` subpath:\n\n```ts\nimport { EdgeViteMCP } from \"@vitemcp/server/edge\";\nimport { z } from \"zod\";\n\nconst server = new EdgeViteMCP({\n  name: \"My Edge Server\",\n  version: \"1.0.0\",\n  description: \"MCP server running on Cloudflare Workers\",\n});\n\n// Add tools, resources, prompts as usual\nserver.addTool({\n  name: \"greet\",\n  description: \"Greet someone\",\n  parameters: z.object({\n    name: z.string(),\n  }),\n  execute: async ({ name }) => {\n    return `Hello, ${name}! Served from the edge.`;\n  },\n});\n\n// Export the server as the default (required for Cloudflare Workers)\nexport default server;\n```\n\n#### Edge Runtime Differences\n\nWhen running on edge runtimes:\n\n- **No shared state**: Each request is handled independently — which is simply how the protocol works now\n- **No filesystem access**: Use fetch APIs for external data\n- **V8 Isolates**: Fast cold starts and efficient resource usage\n- **Global deployment**: Automatic distribution to edge locations\n- **Request size**: The MCP endpoint refuses a body over `maxBodySize` (1 MiB by default, as on Node). Routes added through `getApp()` are not covered\n- **Schema libraries**: Zod, ArkType and Valibot describe a tool as they do on Node. Any other library that carries no JSON Schema of its own is not converted here: a tool written in one is left out and reported through the logger\n\n#### Custom Routes on Edge\n\nYou can access the underlying Hono app to add custom HTTP routes:\n\n```ts\nconst app = server.getApp();\n\n// Add a landing page\napp.get(\"/\", (c) => c.html(\"<h1>Welcome to my MCP server</h1>\"));\n\n// Add REST API endpoints\napp.get(\"/api/status\", (c) => c.json({ status: \"ok\" }));\n```\n\n#### Deploying to the edge\n\nConfigure your `wrangler.toml`:\n\n```toml\nname = \"my-mcp-server\"\nmain = \"src/index.ts\"\ncompatibility_date = \"2024-01-01\"\n```\n\nDeploy with:\n\n```bash\nwrangler deploy\n```\n\nSee the [edge-cloudflare-worker example](src/examples/edge-cloudflare-worker.ts) for a complete demonstration.\n\n## Testing and Debugging\n\n### Unit testing with an in-memory transport\n\n`server.connect(transport)` attaches the server to a transport you construct yourself, instead of letting `start()` create one. Paired with the SDK's `InMemoryTransport`, this lets you drive a server in-process — no port to bind, no subprocess to spawn — which is usually what you want for testing a `stdio` server:\n\n```ts\nimport { Client } from \"@modelcontextprotocol/client\";\nimport { InMemoryTransport } from \"@modelcontextprotocol/server\";\n\nasync function createTestClient(server: ViteMCP) {\n  const [clientTransport, serverTransport] =\n    InMemoryTransport.createLinkedPair();\n\n  const client = new Client(\n    { name: \"test-client\", version: \"0.0.0\" },\n    { versionNegotiation: { mode: \"auto\" } },\n  );\n\n  await Promise.all([\n    server.connect(serverTransport),\n    client.connect(clientTransport),\n  ]);\n\n  return { client };\n}\n\ntest(\"adds two numbers\", async () => {\n  const { client } = await createTestClient(server);\n\n  expect(\n    await client.callTool({ arguments: { a: 2, b: 3 }, name: \"add\" }),\n  ).toEqual({\n    content: [{ text: \"5\", type: \"text\" }],\n  });\n\n  await client.close();\n});\n```\n\nThe server instance is built from the","readmeFilename":"README.md"}