{"_id":"@act-sdk/adapters","_rev":"3-3691c942798b918125d3b2faf5cbdfea","name":"@act-sdk/adapters","dist-tags":{"latest":"3.1.0"},"versions":{"3.0.0":{"name":"@act-sdk/adapters","version":"3.0.0","_id":"@act-sdk/adapters@3.0.0","maintainers":[{"name":"act-sdk","email":"kupamakunura@gmail.com"}],"dist":{"shasum":"e705bc2aa45e14f08b7e478a49988efe40fb6694","tarball":"https://registry.npmjs.org/@act-sdk/adapters/-/adapters-3.0.0.tgz","fileCount":16,"integrity":"sha512-nJ7a3G3+cqCIM+d2hR7UhUQYhmn3F1oYiiK+ZdqwKSHDapFH3hTqQZlGFSg7cgT4mF4lQh1AaWLhXpfip+te8g==","signatures":[{"sig":"MEQCIAW/upnc06/KhUU2h9wGA7+oHSBlh2wzMDrTalKBIwFKAiALpAtG48jXwKR35HoqJMKVYmNhRzeHjaCxE2Y84vMNrw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11270},"main":"./dist/index.js","type":"module","_from":"file:act-sdk-adapters-3.0.0.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./stdio":{"types":"./dist/stdio/index.d.ts","import":"./dist/stdio/index.js"},"./nextjs":{"types":"./dist/nextjs/index.d.ts","import":"./dist/nextjs/index.js"}},"private":false,"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"pnpm -s tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"act-sdk","email":"kupamakunura@gmail.com"},"_resolved":"/tmp/b6bfd51bf3526b121d62124fb9327b59/act-sdk-adapters-3.0.0.tgz","_integrity":"sha512-nJ7a3G3+cqCIM+d2hR7UhUQYhmn3F1oYiiK+ZdqwKSHDapFH3hTqQZlGFSg7cgT4mF4lQh1AaWLhXpfip+te8g==","_npmVersion":"11.6.4","description":"MCP adapters for STDIO and Next.js.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"@act-sdk/mcp":"3.0.0","@act-sdk/core":"3.0.0","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"zod":"^3.25.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adapters_3.0.0_1775193754900_0.6239575711205194","host":"s3://npm-registry-packages-npm-production"}},"3.0.1":{"name":"@act-sdk/adapters","version":"3.0.1","_id":"@act-sdk/adapters@3.0.1","maintainers":[{"name":"act-sdk","email":"kupamakunura@gmail.com"}],"dist":{"shasum":"c75719fd40b5bebf3809a7d0ab69f4d48489a75d","tarball":"https://registry.npmjs.org/@act-sdk/adapters/-/adapters-3.0.1.tgz","fileCount":16,"integrity":"sha512-t79SOoNovWdTPLA1fhnwIkZlwJtvSeXirg0dcyARVhOr6mWMV3FYSakp4lHl4wbCmiCDqtt2KPk2HFdAg7C9Mg==","signatures":[{"sig":"MEUCIQCv3I1dK1az0ui7QDvE9THZLJHEUI49r/ECt5YGH8IIowIgLHYSk6B0Ny3Dk9rYrmbSRwg4nWl+xNHGTRAeGpfv00Y=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":11063},"main":"./dist/index.js","type":"module","_from":"file:act-sdk-adapters-3.0.1.tgz","types":"./dist/index.d.ts","module":"./dist/index.js","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./stdio":{"types":"./dist/stdio/index.d.ts","import":"./dist/stdio/index.js"},"./nextjs":{"types":"./dist/nextjs/index.d.ts","import":"./dist/nextjs/index.js"}},"private":false,"scripts":{"dev":"tsup --watch","build":"tsup","typecheck":"pnpm -s tsc --noEmit -p tsconfig.json"},"_npmUser":{"name":"act-sdk","email":"kupamakunura@gmail.com"},"_resolved":"/tmp/9796d66fab2c4a44f83f0ac60da239b9/act-sdk-adapters-3.0.1.tgz","_integrity":"sha512-t79SOoNovWdTPLA1fhnwIkZlwJtvSeXirg0dcyARVhOr6mWMV3FYSakp4lHl4wbCmiCDqtt2KPk2HFdAg7C9Mg==","_npmVersion":"11.6.4","description":"MCP adapters for STDIO and Next.js.","directories":{},"_nodeVersion":"22.17.1","dependencies":{"@act-sdk/mcp":"3.0.1","@act-sdk/core":"3.0.1","@modelcontextprotocol/sdk":"^1.27.1"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"peerDependencies":{"zod":"^3.25.0 || ^4.0.0"},"_npmOperationalInternal":{"tmp":"tmp/adapters_3.0.1_1775195703006_0.48168117021696477","host":"s3://npm-registry-packages-npm-production"}},"3.1.0":{"name":"@act-sdk/adapters","version":"3.1.0","private":false,"type":"module","main":"./dist/index.js","module":"./dist/index.js","types":"./dist/index.d.ts","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"},"./stdio":{"types":"./dist/stdio/index.d.ts","import":"./dist/stdio/index.js"},"./nextjs":{"types":"./dist/nextjs/index.d.ts","import":"./dist/nextjs/index.js"},"./express":{"types":"./dist/express/index.d.ts","import":"./dist/express/index.js"},"./hono":{"types":"./dist/hono/index.d.ts","import":"./dist/hono/index.js"}},"publishConfig":{"access":"public"},"dependencies":{"@modelcontextprotocol/sdk":"^1.27.1","@act-sdk/mcp":"3.0.1","@act-sdk/core":"3.0.1"},"peerDependencies":{"express":"^4.21.0 || ^5.0.0","hono":"^4.0.0","zod":"^3.25.0 || ^4.0.0"},"peerDependenciesMeta":{"express":{"optional":true},"hono":{"optional":true}},"devDependencies":{"@types/express":"^5.0.0","express":"^5.1.0","hono":"^4.7.0"},"scripts":{"build":"tsup","dev":"tsup --watch","typecheck":"pnpm -s tsc --noEmit -p tsconfig.json","test":"pnpm --filter @act-sdk/core build && pnpm run build && node --test test/**/*.test.mjs"},"_id":"@act-sdk/adapters@3.1.0","description":"MCP adapters for STDIO, Next.js, Express, and Hono.","_integrity":"sha512-Z6FCqnoZ/FO5t3dTIINGWlgRw/bZpbSq6UT13PLnHgjQS636bZqF/PkXbc3KHDvU6A2MJa20J+/iRKDqblGniw==","_resolved":"/tmp/db6cd1c9e2c8b2916803b3979b3b48ef/act-sdk-adapters-3.1.0.tgz","_from":"file:act-sdk-adapters-3.1.0.tgz","_nodeVersion":"22.17.1","_npmVersion":"11.6.4","dist":{"integrity":"sha512-Z6FCqnoZ/FO5t3dTIINGWlgRw/bZpbSq6UT13PLnHgjQS636bZqF/PkXbc3KHDvU6A2MJa20J+/iRKDqblGniw==","shasum":"9320d469562957584bb937aed75790b5d92d8928","tarball":"https://registry.npmjs.org/@act-sdk/adapters/-/adapters-3.1.0.tgz","fileCount":27,"unpackedSize":26144,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQD4unNAllWZ8425whaRFAngknlklTeQ03dZZxLiJDsHQgIgAQziX0o+VlarCw0KruCb1iHLlen2B3V0nDLyh4aWFKA="}]},"_npmUser":{"name":"act-sdk","email":"kupamakunura@gmail.com"},"directories":{},"maintainers":[{"name":"act-sdk","email":"kupamakunura@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/adapters_3.1.0_1780582688190_0.9487460655257485"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-03T05:22:34.780Z","modified":"2026-06-04T14:18:08.439Z","3.0.0":"2026-04-03T05:22:35.054Z","3.0.1":"2026-04-03T05:55:03.154Z","3.1.0":"2026-06-04T14:18:08.344Z"},"description":"MCP adapters for STDIO, Next.js, Express, and Hono.","maintainers":[{"name":"act-sdk","email":"kupamakunura@gmail.com"}],"readme":"# @act-sdk/adapters\n\nMCP adapters for STDIO, Next.js, Express, and Hono.\n\n## What is this?\n\nAdapters that run your Act SDK actions as MCP servers in different environments. Choose the adapter that matches where your app runs.\n\n## Installation\n\n```bash\nnpm install @act-sdk/adapters\n```\n\n## STDIO Adapter\n\nFor CLI tools and terminal applications.\n\n```typescript\nimport { createStdioServer } from '@act-sdk/adapters/stdio';\nimport config from './act-sdk.config';\n\ncreateStdioServer(config);\n```\n\n**When to use:** Building MCP servers that communicate over stdin/stdout (most common for desktop AI apps like Claude Desktop).\n\n**Example:** `server.ts`\n```typescript\nimport { createStdioServer } from '@act-sdk/adapters/stdio';\nimport config from './act-sdk.config';\n\ncreateStdioServer(config);\n```\n\nThen in your Claude Desktop config:\n```json\n{\n  \"mcpServers\": {\n    \"my-app\": {\n      \"command\": \"node\",\n      \"args\": [\"./dist/server.js\"]\n    }\n  }\n}\n```\n\n## Next.js Adapter\n\nFor Next.js App Router applications.\n\n```typescript\nimport { createNextHandler } from '@act-sdk/adapters/nextjs';\nimport config from '@/act-sdk.config';\n\nexport const { GET, POST, DELETE } = createNextHandler(config, {\n  auth: async (req) => {\n    const token = req.headers.get('authorization')?.split(' ')[1];\n    if (!token) return null;\n    \n    const user = await verifyToken(token);\n    return { userId: user.id };\n  },\n});\n```\n\n**When to use:** Exposing MCP tools via HTTP in Next.js apps.\n\n**Example:** `app/api/mcp/route.ts`\n```typescript\nimport { createNextHandler } from '@act-sdk/adapters/nextjs';\nimport config from '@/act-sdk.config';\n\nexport const { GET, POST, DELETE } = createNextHandler(config, {\n  auth: async (req) => {\n    // Extract and verify auth token\n    const token = req.headers.get('authorization')?.split(' ')[1];\n    if (!token) return null;\n    \n    // Return auth context (passed to action handlers)\n    return verifyJWT(token);\n  },\n});\n```\n\n### Authentication\n\nThe `auth` function:\n- Runs on every request\n- Returns auth context or `null`\n- If `null`, returns 401 Unauthorized\n- Auth context is passed to action handlers as `context.authInfo`\n\n```typescript\n// In your action\nexport const getProfile = act.action({\n  id: 'getProfile',\n  description: 'Get user profile',\n  handler: async (args, context) => {\n    const userId = context?.authInfo?.userId;\n    return db.users.findOne({ id: userId });\n  },\n});\n```\n\n## Express Adapter\n\nFor Express applications on Node.js.\n\n```bash\nnpm install @act-sdk/adapters express\n```\n\n```typescript\nimport express from 'express';\nimport { createExpressHandler } from '@act-sdk/adapters/express';\nimport config from './act-sdk.config.js';\n\nconst app = express();\n\napp.use(\n  '/mcp',\n  createExpressHandler(config, {\n    auth: async (req) => {\n      const token = req.headers.authorization?.split(' ')[1];\n      if (!token) return null;\n      return verifyJWT(token);\n    },\n  }),\n);\n\napp.listen(3000);\n```\n\n**When to use:** Existing Express APIs that need MCP over Streamable HTTP.\n\n**Note:** Mount MCP before `express.json()` on the same path so the request body stream stays available for MCP POST payloads.\n\n## Hono Adapter\n\nFor Hono on Node.js, Bun, or Cloudflare Workers.\n\n```bash\nnpm install @act-sdk/adapters hono\n```\n\n```typescript\nimport { Hono } from 'hono';\nimport { createHonoHandler } from '@act-sdk/adapters/hono';\nimport config from './act-sdk.config.js';\n\nconst app = new Hono();\n\napp.use(\n  '/mcp/*',\n  createHonoHandler(config, {\n    auth: async (c) => {\n      const token = c.req.header('authorization')?.split(' ')[1];\n      if (!token) return null;\n      return verifyJWT(token);\n    },\n  }),\n);\n\nexport default app;\n```\n\n**When to use:** Edge or lightweight HTTP servers with Hono's Web Standard `Request` API.\n\n## API\n\n### `createStdioServer(config, options?)`\n\nCreates an MCP server on stdio.\n\n**Parameters:**\n- `config` - Your Act SDK config\n- `options` - (Future use)\n\n**Returns:** `Promise<void>`\n\n### `createNextHandler(config, options?)`\n\nCreates Next.js route handlers.\n\n**Parameters:**\n- `config` - Your Act SDK config\n- `options.auth?` - Auth function `(req: Request) => Promise<AuthContext | null>`\n\n**Returns:** `{ GET, POST, DELETE }` route handlers\n\n### `createExpressHandler(config, options?)`\n\nCreates Express middleware for GET, POST, and DELETE MCP requests.\n\n**Parameters:**\n- `config` - Your Act SDK config\n- `options.auth?` - Auth function `(req) => Promise<AuthContext | null>`\n\n**Returns:** Express middleware `(req, res, next)`\n\n### `createHonoHandler(config, options?)`\n\nCreates Hono middleware for MCP on `/mcp/*` (or your chosen route).\n\n**Parameters:**\n- `config` - Your Act SDK config\n- `options.auth?` - Auth function `(c) => Promise<AuthContext | null>`\n\n**Returns:** Hono handler returning a `Response`\n\n## Coming Soon\n\nFastify adapter is on the roadmap.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}