{"_id":"@askturret/mcp-adapters-express","_rev":"4-7e0fe4de2804a9278cb119127f573b15","name":"@askturret/mcp-adapters-express","dist-tags":{"latest":"0.2.0"},"versions":{"0.1.0":{"name":"@askturret/mcp-adapters-express","version":"0.1.0","license":"Apache-2.0","_id":"@askturret/mcp-adapters-express@0.1.0","maintainers":[{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},{"name":"alprimak","email":"alprimak@gmail.com"}],"dist":{"shasum":"d697bd09b4fc9d96882c04e54fde84a86499d13f","tarball":"https://registry.npmjs.org/@askturret/mcp-adapters-express/-/mcp-adapters-express-0.1.0.tgz","fileCount":9,"integrity":"sha512-ZX9o5/YlvhUHrAqwKso+gOyGNldDzOkVSgg003Auokd9+GlXk/vM5HJFg+JRdpwcpj4mRohjZddX+9WicA8qPA==","signatures":[{"sig":"MEYCIQCDigM/nmyCFq5dsFPFuEo+Oz8mb14imJz3Lo3lnx8rKQIhAJcM6amjaegUBDs9vFPKEtbMYotAmLkEl6zQQ4knzZm6","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":27222},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"c54b62a19421ed3bc620807cfc871e2c94b76576","scripts":{"lint":"echo \"Linting not yet configured\"","test":"NODE_OPTIONS=--experimental-vm-modules jest","build":"tsc"},"_npmUser":{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},"_npmVersion":"11.8.0","description":"Express framework adapter","directories":{},"_nodeVersion":"25.5.0","dependencies":{"@askturret/mcp-core":"^0.1.0","@askturret/mcp-explorer":"^0.1.0","@askturret/mcp-transports":"^0.1.0","@askturret/mcp-sources-openapi":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","express":"^4.18.0","ts-jest":"^29.1.0","supertest":"^6.3.0","typescript":"*","@types/node":"^20.14.0","@jest/globals":"^29.7.0","@types/express":"^4.17.0","@types/supertest":"^6.0.0"},"peerDependencies":{"express":"^4.18.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-adapters-express_0.1.0_1788200456439_0.08078953273489997","host":"s3://npm-registry-packages-npm-production"}},"0.1.1":{"name":"@askturret/mcp-adapters-express","version":"0.1.1","keywords":["askturret","mcp","server","client"],"license":"Apache-2.0","_id":"@askturret/mcp-adapters-express@0.1.1","maintainers":[{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},{"name":"alprimak","email":"alprimak@gmail.com"}],"dist":{"shasum":"00fc010f9061b9ad5a68828d03e4b35c02e90249","tarball":"https://registry.npmjs.org/@askturret/mcp-adapters-express/-/mcp-adapters-express-0.1.1.tgz","fileCount":12,"integrity":"sha512-3qKwbAUyXDt2+/qa/kIDykRfZyQ4YJsw6NuMQUElw4fQDZcvjzq/C5kotAfXam6Lj5gDB4bk3sZeIgXhICdzvw==","signatures":[{"sig":"MEQCIGSHNIvLxkggcetW2RGGIfrwF6qoO/aKhXQwAVEpK2rJAiBqwfhUJ++UHgz3ZycPat6ImvVCsX4pBKAqpGM/2iZmWQ==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIDryHYdtyqSEpyNt3A+7zwekSNuHrQrhEbBnr7VNoJJSAiEAsM7gAcRwZJKNQw+3ADexcPVjMbbcUtmqFkAh87l44cQ=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":49021},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"69d35f79c070c6322357902e786a527261463d3f","scripts":{"lint":"echo \"Linting not yet configured\"","test":"NODE_OPTIONS=--experimental-vm-modules jest","build":"tsc"},"_npmUser":{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},"_npmVersion":"11.8.0","description":"Express framework adapter","directories":{},"_nodeVersion":"25.5.0","dependencies":{"@askturret/mcp-core":"^0.1.0","@askturret/mcp-explorer":"^0.1.0","@askturret/mcp-transports":"^0.1.0","@askturret/mcp-sources-openapi":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","express":"^4.18.0","ts-jest":"^29.1.0","supertest":"^6.3.0","typescript":"*","@types/node":"^20.14.0","@jest/globals":"^29.7.0","@types/express":"^4.17.0","@types/supertest":"^6.0.0"},"peerDependencies":{"express":"^4.18.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-adapters-express_0.1.1_1788458690083_0.9267777411324234","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@askturret/mcp-adapters-express","version":"0.1.2","keywords":["askturret","mcp","server","client"],"license":"Apache-2.0","_id":"@askturret/mcp-adapters-express@0.1.2","maintainers":[{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},{"name":"alprimak","email":"alprimak@gmail.com"}],"homepage":"https://github.com/askturret/mcp#readme","bugs":{"url":"https://github.com/askturret/mcp/issues"},"dist":{"shasum":"d53f04a0d919496ad4ac999fd4354c9b967e9ab2","tarball":"https://registry.npmjs.org/@askturret/mcp-adapters-express/-/mcp-adapters-express-0.1.2.tgz","fileCount":12,"integrity":"sha512-d29UAnP6KT4fmDy8BT0is4mkWIE5roUM1wJpbWYuB/9AcBALsOKt0UA3H9DiQv6vTO5vd2duoSVKAZ7TCbMXcA==","signatures":[{"sig":"MEUCIQDMc7g2SMPuJUOLPVMG0xR7F7JqFt9z9N5wD7O4YGMCogIgDOafpJgKnyuw5RX9h376oVWYetsL6igugI6k3qUvVI8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEQCIE4o3l3vo7s2k3UCNbCvTSC8jvbIx5At9GMzUvAkFmyqAiAgfl1zjNl1KJnxPSAHOPYQbFCa4CwBjGYkTZVyko2vbg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@askturret%2fmcp-adapters-express@0.1.2","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":49310},"main":"./dist/index.js","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"ec334b34d1a55df0d4f8c2d5f69c7e80679476e5","scripts":{"lint":"echo \"Linting not yet configured\"","test":"NODE_OPTIONS=--experimental-vm-modules jest","build":"tsc"},"_npmUser":{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},"repository":{"url":"git+https://github.com/askturret/mcp.git","type":"git","directory":"packages/adapters-express"},"_npmVersion":"10.8.2","description":"Express framework adapter","directories":{},"_nodeVersion":"20.20.2","dependencies":{"@askturret/mcp-core":"^0.1.0","@askturret/mcp-explorer":"^0.1.0","@askturret/mcp-transports":"^0.1.0","@askturret/mcp-sources-openapi":"^0.1.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","express":"^4.18.0","ts-jest":"^29.1.0","supertest":"^6.3.0","typescript":"*","@types/node":"^20.14.0","@jest/globals":"^29.7.0","@types/express":"^4.17.0","@types/supertest":"^6.0.0"},"peerDependencies":{"express":"^4.18.0 || ^5.0.0"},"_npmOperationalInternal":{"tmp":"tmp/mcp-adapters-express_0.1.2_1788607260595_0.4734887721268617","host":"s3://npm-registry-packages-npm-production"}},"0.2.0":{"_id":"@askturret/mcp-adapters-express@0.2.0","bugs":{"url":"https://github.com/askturret/mcp/issues"},"dist":{"shasum":"648de59cac3f57a3e0d7d380da3a4d77dbe2a6c7","tarball":"https://registry.npmjs.org/@askturret/mcp-adapters-express/-/mcp-adapters-express-0.2.0.tgz","fileCount":12,"integrity":"sha512-ghrZUxd1kCegrizBmS5j1Dt2a/ncwbGX8Sya+yyteihe/TBbwNrsPF5szRaflxJBLQucJagtgQQHaP8C5iuxEQ==","signatures":[{"sig":"MEUCIQC74flPom2l4DjHvuapQlC2tcI0NO0RQJAdbygdYlwtowIgNLSUXY1NT5sc1LLgWHd5h0WOVzHMyyo4VjT+EP4YfNg=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIHAJrItKo2jib2z+fdhjjNaH634l9gEOCTeUlspzibffAiEAivqCBO6yrHJ69hHEWCCM6/eS49i6T45+upW1H7nLdfY="}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@askturret%2fmcp-adapters-express@0.2.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":53223},"main":"./dist/index.js","name":"@askturret/mcp-adapters-express","type":"module","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js","require":"./dist/index.cjs"}},"gitHead":"01db00fa88fb96dac636f82fc70bd248e834c9c7","license":"Apache-2.0","scripts":{"lint":"echo \"Linting not yet configured\"","test":"NODE_OPTIONS=--experimental-vm-modules jest","build":"tsc"},"version":"0.2.0","_npmUser":{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},"homepage":"https://github.com/askturret/mcp#readme","keywords":["askturret","mcp","server","client"],"repository":{"url":"git+https://github.com/askturret/mcp.git","type":"git","directory":"packages/adapters-express"},"_npmVersion":"10.8.2","description":"Express framework adapter","directories":{},"maintainers":[{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},{"name":"alprimak","email":"alprimak@gmail.com"}],"_nodeVersion":"20.20.2","dependencies":{"@askturret/mcp-core":"^0.2.0","@askturret/mcp-explorer":"^0.2.0","@askturret/mcp-transports":"^0.2.0","@askturret/mcp-sources-openapi":"^0.2.0"},"_hasShrinkwrap":false,"devDependencies":{"jest":"^29.7.0","express":"^5.2.1","ts-jest":"^29.1.0","supertest":"^6.3.0","typescript":"*","@types/node":"^20.14.0","@jest/globals":"^29.7.0","@types/express":"^5.0.0","@types/supertest":"^6.0.0"},"peerDependencies":{"express":"^4.18.0 || ^5.0.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-adapters-express_0.2.0_1789134107485_0.4739732620821864"}}},"time":{"created":"2026-08-31T18:20:56.226Z","modified":"2026-09-11T13:41:48.007Z","0.1.0":"2026-08-31T18:20:56.584Z","0.1.1":"2026-09-03T18:04:50.282Z","0.1.2":"2026-09-05T11:21:00.668Z","0.2.0":"2026-09-11T13:41:47.578Z"},"bugs":{"url":"https://github.com/askturret/mcp/issues"},"license":"Apache-2.0","homepage":"https://github.com/askturret/mcp#readme","keywords":["askturret","mcp","server","client"],"repository":{"url":"git+https://github.com/askturret/mcp.git","type":"git","directory":"packages/adapters-express"},"description":"Express framework adapter","maintainers":[{"name":"didi178","email":"dmitry.stepanov37@gmail.com"},{"name":"alprimak","email":"alprimak@gmail.com"}],"readme":"# @askturret/mcp-adapters-express\n\nMount an MCP server into an existing Express app. For most people this is the\npackage to install first: one line turns an OpenAPI spec into MCP tools your\nagents can call.\n\n## Five-minute version\n\n```bash\nnpm install express @askturret/mcp-adapters-express\n```\n\n```js\nimport express from 'express';\nimport { mcpFromOpenApi } from '@askturret/mcp-adapters-express';\n\nconst app = express();\napp.use('/mcp', mcpFromOpenApi('./openapi.yaml'));\napp.listen(7078);\n```\n\n`/mcp` now speaks MCP over JSON-RPC 2.0. `tools/list` returns the operations\ndiscovered from your spec; `tools/call` executes them.\n\n## The composable form\n\nWhen the one-call form stops fitting — several sources, a custom executor, your\nown policy — `expressMcp` takes the same runtime with the parts named\nexplicitly:\n\n```js\nimport { expressMcp } from '@askturret/mcp-adapters-express';\n\napp.use('/mcp', expressMcp({ sources: [...], executor: ... }));\n```\n\nBoth forms produce a standard Express `Router`, so ordinary middleware,\nmounting and error handling apply.\n\n## Defaults you are opting into\n\nThe one-call form applies the **Light preset**, which is chosen to be safe\nbefore it is complete:\n\n- read-only operations are exposed automatically, provided their schemas validate;\n- **mutating operations require explicit inclusion** — they do not appear by accident;\n- stateless HTTP transport, payloads bounded at 1 MiB, 30-second deadline;\n- the local Explorer UI is mounted only when `NODE_ENV !== 'production'`.\n\n## Requirements and scope\n\nExpress is a **peer dependency**, `^4.18.0 || ^5.0.0` — install it yourself, and\nboth majors are exercised by CI. Node 20+.\n\nThis package is the Express-shaped part and nothing else. Discovery,\ncompilation, policy and execution all come from\n[`@askturret/mcp-core`](https://www.npmjs.com/package/@askturret/mcp-core); the\nsame facade backs the Fastify adapter, which is how we know the design is not\naccidentally Express-shaped. If you are on Fastify, use\n[`@askturret/mcp-adapters-fastify`](https://www.npmjs.com/package/@askturret/mcp-adapters-fastify)\n— the entry points are identical.\n\n---\n\nFull documentation and the compatibility matrix are in the\n[main README](https://github.com/askturret/mcp#readme).\n","readmeFilename":"README.md"}