{"_id":"@cool-ai/beach-channel-mcp","_rev":"2-16ec10835513915f5b4bf6651a8a50ee","name":"@cool-ai/beach-channel-mcp","dist-tags":{"latest":"0.1.2"},"versions":{"0.1.1":{"name":"@cool-ai/beach-channel-mcp","version":"0.1.1","license":"Apache-2.0","_id":"@cool-ai/beach-channel-mcp@0.1.1","maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"homepage":"https://cool-ai.org","bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"dist":{"shasum":"9bfb1b012a798e568ae4da786f24e5fc7cb4b262","tarball":"https://registry.npmjs.org/@cool-ai/beach-channel-mcp/-/beach-channel-mcp-0.1.1.tgz","fileCount":31,"integrity":"sha512-SPJ7+22NlMubHbXfi6q2oTQ0xiuz23W/K3thAMIzgSIYFgK3QdCNTzYeDMtsnzvZ7RhWdWHDvX+1Ks0Vb8krXA==","signatures":[{"sig":"MEYCIQCk1REWKpsq/945Aufi/9LcvfiYAbTlbVJGpsVQEDFViQIhANDPg4aJbJvKR6b0dyp1Bv7NRZNFBZ7+sTKEJHXPlvWX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":326762},"type":"module","_from":"file:cool-ai-beach-channel-mcp-0.1.1.tgz","exports":{".":{"types":"./dist/index.d.ts","import":"./dist/index.js"}},"scripts":{"dev":"tsc --project tsconfig.json --watch","test":"vitest run","build":"tsc --project tsconfig.json","coverage":"vitest run --coverage","typecheck":"tsc --noEmit","test:watch":"vitest"},"_npmUser":{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"},"_resolved":"/tmp/84cf4ba3a75b688457908c64dd6ed84c/cool-ai-beach-channel-mcp-0.1.1.tgz","_integrity":"sha512-SPJ7+22NlMubHbXfi6q2oTQ0xiuz23W/K3thAMIzgSIYFgK3QdCNTzYeDMtsnzvZ7RhWdWHDvX+1Ks0Vb8krXA==","repository":{"url":"git+https://gitlab.com/johncandrew/beach.git","type":"git","directory":"packages/beach-channel-mcp"},"_npmVersion":"10.9.8","description":"Beach MCP channel — expose a Beach agent as an MCP tool over stdio or streamable HTTP. Implements core's ChannelAdaptor.","directories":{},"_nodeVersion":"22.22.3","dependencies":{"@cool-ai/beach-core":"^0.13.0"},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"vitest":"^2.0.0","typescript":"^5.5.0","@types/node":"^22.0.0","@modelcontextprotocol/sdk":"^1.0.0"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.0.0"},"_npmOperationalInternal":{"tmp":"tmp/beach-channel-mcp_0.1.1_1780677375922_0.1615809796256953","host":"s3://npm-registry-packages-npm-production"}},"0.1.2":{"name":"@cool-ai/beach-channel-mcp","version":"0.1.2","description":"Beach MCP channel — expose a Beach agent as an MCP tool over stdio or streamable HTTP. Implements core's ChannelAdaptor.","license":"Apache-2.0","repository":{"type":"git","url":"git+https://gitlab.com/johncandrew/beach.git","directory":"packages/beach-channel-mcp"},"homepage":"https://cool-ai.org","bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"type":"module","exports":{".":{"import":"./dist/index.js","types":"./dist/index.d.ts"}},"publishConfig":{"access":"public"},"dependencies":{"@cool-ai/beach-core":"^0.13.3"},"devDependencies":{"@modelcontextprotocol/sdk":"^1.0.0","@types/node":"^22.0.0","typescript":"^5.5.0","vitest":"^2.0.0"},"peerDependencies":{"@modelcontextprotocol/sdk":"^1.0.0"},"scripts":{"build":"tsc --project tsconfig.json","dev":"tsc --project tsconfig.json --watch","test":"vitest run","coverage":"vitest run --coverage","test:watch":"vitest","typecheck":"tsc --noEmit"},"_id":"@cool-ai/beach-channel-mcp@0.1.2","_integrity":"sha512-S+RCW7oRD+N8pRbEipHfoczaFItlkC0QmDHoTcP67RK+Qce0Ta4xb8/xCT07QUpeqszyJVlacGNrkwXLEI4yyg==","_resolved":"/tmp/bbabc4513b389429c26f3f4a9a2014a9/cool-ai-beach-channel-mcp-0.1.2.tgz","_from":"file:cool-ai-beach-channel-mcp-0.1.2.tgz","_nodeVersion":"22.22.3","_npmVersion":"10.9.8","dist":{"integrity":"sha512-S+RCW7oRD+N8pRbEipHfoczaFItlkC0QmDHoTcP67RK+Qce0Ta4xb8/xCT07QUpeqszyJVlacGNrkwXLEI4yyg==","shasum":"5d2d834beabb04f92aa1afcce96a14f82e021d55","tarball":"https://registry.npmjs.org/@cool-ai/beach-channel-mcp/-/beach-channel-mcp-0.1.2.tgz","fileCount":31,"unpackedSize":318981,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDYHI6uH7lFCKxuVMgUyhw06DPfAkppapLhzHmmDFa3jAIgbZgBv78sv2FcPLNMak3ui48/PhyGQKrTtT771zTNo8w="}]},"_npmUser":{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"},"directories":{},"maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/beach-channel-mcp_0.1.2_1781772153971_0.05937173029688103"},"_hasShrinkwrap":false}},"time":{"created":"2026-06-05T16:36:15.789Z","modified":"2026-06-18T08:42:34.294Z","0.1.1":"2026-06-05T16:36:16.059Z","0.1.2":"2026-06-18T08:42:34.167Z"},"bugs":{"url":"https://gitlab.com/johncandrew/beach/-/issues"},"license":"Apache-2.0","homepage":"https://cool-ai.org","repository":{"type":"git","url":"git+https://gitlab.com/johncandrew/beach.git","directory":"packages/beach-channel-mcp"},"description":"Beach MCP channel — expose a Beach agent as an MCP tool over stdio or streamable HTTP. Implements core's ChannelAdaptor.","maintainers":[{"name":"johncandrew","email":"johncandrew@yahoo.co.uk"}],"readme":"# @cool-ai/beach-channel-mcp\n\nThe MCP channel adaptor: it exposes a Beach agent as an MCP tool. A caller invokes the tool, the call is routed, and the reply comes back as the tool's result. It implements core's `ChannelAdaptor`, and like A2A it is a way for one agent to reach another — here over the Model Context Protocol.\n\nAn MCP tool call is synchronous, so the adaptor is a blocking channel: the tool handler holds its result open — keyed on a correlation id carried on the reply destination — until the routed reply arrives, then resolves with the reply text. A call whose reply never comes returns an error result after `replyTimeoutMs`.\n\nThe package imports no MCP SDK at runtime. You wire the tool onto your own `McpServer` (stdio or streamable HTTP) with `registerOn`; the routing engine here is transport-agnostic.\n\n## Use\n\n```ts\nimport { MCPChannelAdaptor } from '@cool-ai/beach-channel-mcp';\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\n\nconst mcp = new MCPChannelAdaptor({\n  inbound: (req) => channelRouter.inbound(req),\n  render: (parts) => toText(parts),   // optional; defaults to string-or-JSON\n});\n\nconst server = new McpServer({ name: 'baxter', version: '1.0.0' });\nmcp.registerOn(server, { toolName: 'ask_baxter' });\n// Connect `server` over stdio or streamable HTTP, and register `mcp` as a\n// channel-router adaptor so replies resolve the tool call.\n```\n\nThe caller's tool arguments are handed through channel-blind as the inbound message's data; your request handler interprets them.\n","readmeFilename":"README.md"}