{"versions":{"0.0.1":{"name":"@opentiny/next","version":"0.0.1","type":"module","license":"MIT","author":{"name":"Chunhui Mo"},"main":"client.js","module":"client.js","description":"OpenTiny NEXT","dependencies":{"@modelcontextprotocol/sdk":"^1.10.2","jsonwebtoken":"^9.0.2","zod":"^3.24.2"},"engines":{"node":"^18.0.0 || >=20.0.0"},"publishConfig":{"access":"public"},"_id":"@opentiny/next@0.0.1","scripts":{"start":"node server.js"},"_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-ok7bYnsLyDR6npQU3uUJDVXK49h5mZGLug0UKIxhdYptzBzWVt+sBdw1Q+1afDOCTewtU98r75tJXV1nkE3Hsw==","shasum":"34cce7a396c6700b7780b175a020eae8f8b481b9","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@opentiny/next/-/next-0.0.1.tgz","fileCount":5,"unpackedSize":25551,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDyE+GSrxWeAhkMlThzrW0FpXDAJx7XsTFbFjhP5iFYXAIgSOQwBTL7LgJbvVCEJ0a6/5JqGZDLq3t9gkGBbX1un3M="}],"size":9051},"_npmUser":{"name":"anonymous","email":"opentiny@sina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"opentiny@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next_0.0.1_1746015445992_0.8756578171505351"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-04-30T12:17:26.195Z","publish_time":1746015446195,"_source_registry_name":"default","contributors":[]},"0.1.0":{"name":"@opentiny/next","version":"0.1.0","type":"module","license":"MIT","author":{"name":"Chunhui Mo"},"main":"client.js","module":"client.js","description":"OpenTiny NEXT","dependencies":{"@modelcontextprotocol/sdk":"^1.10.2","jsonwebtoken":"^9.0.2","zod":"^3.24.2"},"peerDependencies":{"express":"^4.21.2"},"devDependencies":{"@types/express":"^5.0.1","@types/jsonwebtoken":"^9.0.9"},"engines":{"node":"^18.0.0 || >=20.0.0"},"publishConfig":{"access":"public"},"_id":"@opentiny/next@0.1.0","scripts":{"start":"node server.js"},"types":"./client.d.ts","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-W8HAiaZjVk9/Q7Uyt1nrb6LxqhdBTry4Mf1y/FWiaPXTt/9VSx4oRJSh4mXdkIMolGDgAYBYBNf2h9UBgCsXkQ==","shasum":"e896a9633e3a9d09d920e0ec20772b095322c6f6","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@opentiny/next/-/next-0.1.0.tgz","fileCount":7,"unpackedSize":57791,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIG5e5YnMubvt+sBbzMDI3EiyMYW5P/CsdQ1nZslmrMmWAiBquODuVeGbRvg8B/VZuQd1Fl+AMFM04PH48F0f2xHR1A=="}],"size":17546},"_npmUser":{"name":"anonymous","email":"opentiny@sina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"opentiny@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next_0.1.0_1746784810815_0.649031602492919"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-05-09T10:00:10.984Z","publish_time":1746784810984,"_source_registry_name":"default","contributors":[]},"0.1.1":{"name":"@opentiny/next","version":"0.1.1","type":"module","license":"MIT","author":{"name":"Chunhui Mo"},"main":"client.js","module":"client.js","description":"OpenTiny NEXT","dependencies":{"@modelcontextprotocol/sdk":"^1.11.0","jsonwebtoken":"^9.0.2","zod":"^3.24.4"},"peerDependencies":{"express":"^4.21.2"},"devDependencies":{"@types/express":"^5.0.1","@types/jsonwebtoken":"^9.0.9"},"engines":{"node":"^18.0.0 || >=20.0.0"},"publishConfig":{"access":"public"},"_id":"@opentiny/next@0.1.1","scripts":{"start":"node server.js"},"types":"./client.d.ts","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-KeKkU9hcEuEqoE9uphnazMMg2xfWa80VtjZpDanZh5CgsUy+R+lcqLHmK7s+UJWcvGPVFm/S6XuEsjszPQDQvA==","shasum":"5b65471b256cec24de67c8c835cd74e194a3b1a4","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@opentiny/next/-/next-0.1.1.tgz","fileCount":7,"unpackedSize":57393,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIF/KIwcEzT/liQWq8rBdubVcjjhL/W7LYoWoFUDWR/lOAiAeAuqm5DFxuBP5F+pb75ji0gF3ZS8U3XnPEMDo5I7/8Q=="}],"size":17425},"_npmUser":{"name":"anonymous","email":"opentiny@sina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"opentiny@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next_0.1.1_1747013424155_0.14056424881145846"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-05-12T01:30:24.336Z","publish_time":1747013424336,"_source_registry_name":"default","contributors":[]},"0.1.2":{"name":"@opentiny/next","version":"0.1.2","type":"module","license":"MIT","author":{"name":"Chunhui Mo"},"main":"client.js","module":"client.js","types":"client.d.ts","description":"OpenTiny NEXT","dependencies":{"@modelcontextprotocol/sdk":"^1.12.0","jsonwebtoken":"^9.0.2","zod":"^3.25.30"},"peerDependencies":{"express":"^4.21.2"},"devDependencies":{"@types/express":"^5.0.1","@types/jsonwebtoken":"^9.0.9"},"engines":{"node":"^18.0.0 || >=20.0.0"},"publishConfig":{"access":"public"},"_id":"@opentiny/next@0.1.2","scripts":{"start":"node server.js"},"_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-nPZOeEWIpHvqthenLFHRpDBkOM10KZvnSBb1lyKx+zWqGGr02xjw/DL56AJRhxU6xYlk7gd6trxF0lZ+5kuyNA==","shasum":"8a39424dacfeb7bf01125fa8a47c8c30d90a29be","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@opentiny/next/-/next-0.1.2.tgz","fileCount":7,"unpackedSize":58301,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCvj012OdTgSuuNRBM4WSVuKQRBwT+exoOofcI2BJiGxwIhANESVx06kYyCv/3JEXi6VHpc0NwnhxJIb2IeUqpLA6QG"}],"size":17668},"_npmUser":{"name":"anonymous","email":"opentiny@sina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"opentiny@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next_0.1.2_1748501976094_0.11286380660637807"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-05-29T06:59:36.312Z","publish_time":1748501976312,"_source_registry_name":"default","contributors":[]},"0.1.3":{"name":"@opentiny/next","version":"0.1.3","type":"module","license":"MIT","author":{"name":"Chunhui Mo"},"main":"client.js","module":"client.js","types":"client.d.ts","description":"OpenTiny NEXT","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","jsonwebtoken":"^9.0.2","zod":"^3.25.30"},"peerDependencies":{"express":"^4.21.2"},"devDependencies":{"@types/express":"^5.0.1","@types/jsonwebtoken":"^9.0.9"},"engines":{"node":"^18.0.0 || >=20.0.0"},"publishConfig":{"access":"public"},"_id":"@opentiny/next@0.1.3","scripts":{"start":"node server.js"},"_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-f97d+cFg12UADwwupFo/IL5zfgcwHpCiTA1iK9+HcvDKXSe2AcYGqyUwGYPz/1/hKj/Ak5+RU9N03gcVpKvj5A==","shasum":"f4bd6229ebdc045b25da820f36952f773e211b53","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@opentiny/next/-/next-0.1.3.tgz","fileCount":7,"unpackedSize":59304,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBGzdLAH4IW27feKHHv202h7nh4nKoijEL3sDwAn+NmUAiEAwZO01zA//azLaoxP1wQ6/M7YGnxHDzaRZRdtvCY2IeE="}],"size":17950},"_npmUser":{"name":"anonymous","email":"opentiny@sina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"opentiny@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next_0.1.3_1748958003657_0.9455961843910128"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-06-03T13:40:03.843Z","publish_time":1748958003843,"_source_registry_name":"default","contributors":[]},"0.1.4":{"name":"@opentiny/next","version":"0.1.4","type":"module","license":"MIT","author":{"name":"Chunhui Mo"},"main":"client.js","module":"client.js","types":"client.d.ts","description":"OpenTiny NEXT","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","jsonwebtoken":"^9.0.2","zod":"^3.25.30"},"peerDependencies":{"express":"^4.21.2"},"devDependencies":{"@types/express":"^5.0.1","@types/jsonwebtoken":"^9.0.9"},"engines":{"node":"^18.0.0 || >=20.0.0"},"publishConfig":{"access":"public"},"scripts":{"start":"node server.js"},"_id":"@opentiny/next@0.1.4","_nodeVersion":"16.16.0","_npmVersion":"8.11.0","dist":{"integrity":"sha512-bUom+eyBF8L+r4lGqQn+Sd07sTgfAOXVbHON1s0Wzhml2F1eeqighJQxdRTeN+Mk55UGN1MBSxR+dkthdd0z9g==","shasum":"981b4571dd459d304ac3f9cbbf3292345073e6bb","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@opentiny/next/-/next-0.1.4.tgz","fileCount":7,"unpackedSize":60003,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIDdUqIEOU1BKDOzylYKXTnr9kTYSmPuZ5/+zGq9AY63TAiBeJRMoQheZKKCb2PrjtckJkWme3Pk1WBecndWv7DB30A=="}],"size":17853},"_npmUser":{"name":"anonymous","email":"opentiny@sina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"opentiny@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next_0.1.4_1749048739285_0.7480688058106766"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-06-04T14:52:19.465Z","publish_time":1749048739465,"_source_registry_name":"default","contributors":[]},"0.2.0":{"name":"@opentiny/next","version":"0.2.0","type":"module","license":"MIT","author":{"name":"Chunhui Mo"},"main":"client.js","module":"client.js","types":"client.d.ts","description":"OpenTiny NEXT","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","jsonwebtoken":"^9.0.2","zod":"^3.25.30"},"devDependencies":{"@types/express":"^5.0.1","@types/jsonwebtoken":"^9.0.9"},"engines":{"node":"^18.0.0 || >=20.0.0"},"publishConfig":{"access":"public"},"_id":"@opentiny/next@0.2.0","scripts":{"start":"node server.js"},"_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-xeexZRNFl7IEiIA7sow0ohpL7Q/ppkyGMI59wFhM/0OTQZR3z8JRslYH7oWNGkxoMz+VuoJ1rpu13TlDXPeu+w==","shasum":"a0afa7eee4c1895b1af0e0b774bb4def54a8f149","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@opentiny/next/-/next-0.2.0.tgz","fileCount":7,"unpackedSize":90089,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCXQ5LAU80h3RyMLYQTq7i6Cg+JdhQ1qthKtOi6cO3mKAIhALhQ7m0KYQ2JV+J2dyZTMegAOya5xbgjjAPNyw495onJ"}],"size":26295},"_npmUser":{"name":"anonymous","email":"opentiny@sina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"opentiny@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next_0.2.0_1749644398098_0.36206411380631853"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-06-11T12:19:58.265Z","publish_time":1749644398265,"_source_registry_name":"default","contributors":[]},"0.2.1":{"name":"@opentiny/next","version":"0.2.1","type":"module","license":"MIT","author":{"name":"Chunhui Mo"},"main":"client.js","module":"client.js","types":"client.d.ts","description":"OpenTiny NEXT","dependencies":{"@modelcontextprotocol/sdk":"^1.12.1","jsonwebtoken":"^9.0.2","zod":"^3.25.30"},"devDependencies":{"@types/express":"^5.0.1","@types/jsonwebtoken":"^9.0.9"},"engines":{"node":"^18.0.0 || >=20.0.0"},"publishConfig":{"access":"public"},"_id":"@opentiny/next@0.2.1","scripts":{"start":"node server.js"},"_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-o+p2rq3bud5l1r/uVs4v69bIMaEmvlIss9/ThNQoK3m1FwKBmNyDDPlPdawd3mGNzc249Vn0KnQ84q3ui0aRzg==","shasum":"07e0ba28354f08e32a314891dcaf48d4b3492135","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@opentiny/next/-/next-0.2.1.tgz","fileCount":7,"unpackedSize":96122,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQDFrP3T361ibi6QGwlhyaUCNss8UyBN6i3ScvkYAFKyLwIhANtjFjxns8/+fVUnykL06cN4Dz4TfFRIc0AQlha3zPl4"}],"size":28353},"_npmUser":{"name":"anonymous","email":"opentiny@sina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"opentiny@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next_0.2.1_1749696183503_0.8321299814464487"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-06-12T02:43:03.697Z","publish_time":1749696183697,"_source_registry_name":"default","contributors":[]},"0.3.0":{"name":"@opentiny/next","version":"0.3.0","type":"module","license":"MIT","author":{"name":"Chunhui Mo"},"main":"index.js","module":"index.js","types":"index.d.ts","description":"OpenTiny NEXT","dependencies":{"@modelcontextprotocol/sdk":"^1.16.0"},"devDependencies":{"eventsource":"^3.0.6"},"publishConfig":{"access":"public"},"_id":"@opentiny/next@0.3.0","_nodeVersion":"18.20.8","_npmVersion":"10.8.2","dist":{"integrity":"sha512-mGLU+HGEhK0kn1igiIis8u//sjAljbEg0tImDwS0Ydq8HP7AHtjfx+MH/t9Nca9rNoAHxzPaO2vDjwA/f8WVuQ==","shasum":"6dda0814ae09d1f4b55f54c0fbacc44822d03028","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@opentiny/next/-/next-0.3.0.tgz","fileCount":5,"unpackedSize":65866,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIAab+MfMzxGEe8S/gc1ZXWwObl2OuJ0bdR2UYwADFSxwAiEAhqTakBRhaKXz51YyWL2T+axvRFVf2mpSueclYAtcRas="}],"size":20175},"_npmUser":{"name":"anonymous","email":"opentiny@sina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"opentiny@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next_0.3.0_1753426889234_0.7941233379987189"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-07-25T07:01:29.449Z","publish_time":1753426889449,"_source_registry_name":"default","contributors":[]},"0.3.1":{"name":"@opentiny/next","version":"0.3.1","type":"module","license":"MIT","author":{"name":"Chunhui Mo"},"main":"index.js","module":"index.js","types":"index.d.ts","description":"OpenTiny NEXT","dependencies":{"@modelcontextprotocol/sdk":"^1.16.0"},"devDependencies":{"eventsource":"^3.0.6"},"publishConfig":{"access":"public"},"_id":"@opentiny/next@0.3.1","_nodeVersion":"22.16.0","_npmVersion":"10.9.2","dist":{"integrity":"sha512-QAy1nmSEHpa4/2FWAd7fjURB45+fZXIbCSorxA0GPORJpZAhnJgX21dY5hEdBeKJbW7xsbSrA8XYnysh/g57NQ==","shasum":"2d98054b0c46031b0e1f3a0aecfa1a0258f2930d","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@opentiny/next/-/next-0.3.1.tgz","fileCount":5,"unpackedSize":67015,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQClugAyRC+Uz8ZkKxUvLJlg2PdaPUzXQmrRYsAnrHoIawIhAIO8N1HAsElctrrFRST3db7tqVJsIEr/vRjbEK9T4IGK"}],"size":20369},"_npmUser":{"name":"anonymous","email":"opentiny@sina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"opentiny@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next_0.3.1_1757031906562_0.2847296573089031"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-09-05T00:25:06.733Z","publish_time":1757031906733,"_source_registry_name":"default","contributors":[]},"0.3.2":{"name":"@opentiny/next","version":"0.3.2","type":"module","license":"MIT","author":{"name":"Chunhui Mo"},"main":"index.js","module":"index.js","types":"index.d.ts","description":"OpenTiny NEXT","dependencies":{"@modelcontextprotocol/sdk":"^1.25.0"},"devDependencies":{"eventsource":"^3.0.6"},"publishConfig":{"access":"public"},"_id":"@opentiny/next@0.3.2","_nodeVersion":"20.10.0","_npmVersion":"10.2.3","dist":{"integrity":"sha512-jqLXyOOIL+Pc41+HnfHJUjdqs815Cy+Rl3EK3LLVaCnxAHfpod9TFHbxZNgbQYhCZ6oBkCB1VDRaxnDcszuvbA==","shasum":"9bb4e2f6f81c8a7cf7509185a0c49d81872e53eb","tarball":"http://123.232.10.234:8212/nexus/content/groups/npm-public/@opentiny/next/-/next-0.3.2.tgz","fileCount":5,"unpackedSize":68620,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIBRCDztzdOTgqfM9llMana1ojdQzzhFYy15PVTXGlfMUAiEAnXNh9bnBfE5pAodHGJ9l/cuO+hFEWNgoWnOLh1S4KI8="}],"size":20864},"_npmUser":{"name":"anonymous","email":"opentiny@sina.com"},"directories":{},"maintainers":[{"name":"anonymous","email":"opentiny@sina.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/next_0.3.2_1766878731376_0.3683336423449799"},"_hasShrinkwrap":false,"_cnpmcore_publish_time":"2025-12-27T23:38:51.560Z","publish_time":1766878731560,"_source_registry_name":"default","contributors":[]}},"dist-tags":{"latest":"0.3.2"},"name":"@opentiny/next","time":{"created":"2025-04-30T12:17:35.778Z","modified":"2025-12-27T23:39:10.465Z","0.0.1":"2025-04-30T12:17:26.195Z","0.1.0":"2025-05-09T10:00:10.984Z","0.1.1":"2025-05-12T01:30:24.336Z","0.1.2":"2025-05-29T06:59:36.312Z","0.1.3":"2025-06-03T13:40:03.843Z","0.1.4":"2025-06-04T14:52:19.465Z","0.2.0":"2025-06-11T12:19:58.265Z","0.2.1":"2025-06-12T02:43:03.697Z","0.3.0":"2025-07-25T07:01:29.449Z","0.3.1":"2025-09-05T00:25:06.733Z","0.3.2":"2025-12-27T23:38:51.560Z"},"readme":"# OpenTiny NEXT\n\nOpenTiny NEXT 是一个基于 Model Context Protocol（MCP）的 TypeScript 库，提供了多种传输方式来支持 MCP 客户端与服务端的通信。本库支持三种主要的传输方式：\n\n1. MessageChannel API - 用于浏览器内部不同上下文之间的通信\n2. SSE (Server-Sent Events) Client Proxy - 基于 HTTP 长连接实现单向数据推送的 Client 连接代理\n3. Streamable HTTP Client Proxy - 通过分块传输编码实现任意数据的流式传输的 Client 连接代理\n\n## 安装\n\n```bash\nnpm install @opentiny/next\n```\n\n## 客户端 API (client.js)\n\n客户端 API 主要用于在浏览器环境中的 MCP 通信。\n\n### MessageChannel API\n\n#### 在同一浏览器窗口内互相通信的场景\n\n使用 `createTransportPair` 创建一对可互通的 Transport 服务的和客户端实例来进行通信。\n\n```typescript\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { createTransportPair } from '@opentiny/next';\n\n// 创建一对可互通的 Transport 实例\nconst [serverTransport, clientTransport] = createTransportPair();\n\n// 创建 MCP 服务端和客户端实例\nconst serverCapabilities = {\n  prompts: { listChanged: true },\n  resources: { subscribe: true, listChanged: true },\n  tools: { listChanged: true },\n  completions: {},\n  logging: {}\n};\nconst clientCapabilities = { roots: { listChanged: true }, sampling: {}, elicitation: {} };\nconst server = new McpServer({ name: 'mcp-server', version: '1.0.0' }, { capabilities: serverCapabilities });\nconst client = new Client({ name: 'mcp-client', version: '1.0.0' }, { capabilities: clientCapabilities });\n\n// 建立服务端和客户端的通信连接\nawait server.connect(serverTransport);\nawait client.connect(clientTransport);\n\n// 将客户端实例存储到状态中\nstate.client = client;\n```\n\n#### 在浏览器主线程与iframe、Web Worker等互相通信的场景\n\n使用 `MessageChannelServerTransport` 和 `MessageChannelClientTransport` 创建用于监听的 Transport 服务端实例，以及用于连接的 Transport 客户端实例来进行通信。\n\n以下是在浏览器主线程的代码：\n\n```typescript\nimport { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';\nimport { MessageChannelServerTransport } from '@opentiny/next';\n\n// 创建用于监听的 Transport 服务端实例\nconst serverTransport = new MessageChannelServerTransport('endpoint');\n\n// 创建 MCP 服务端实例\nconst capabilities = {\n  prompts: { listChanged: true },\n  resources: { subscribe: true, listChanged: true },\n  tools: { listChanged: true },\n  completions: {},\n  logging: {}\n};\nconst server = new McpServer({ name: 'mcp-server', version: '1.0.0' }, { capabilities });\n\n// 监听 endpoint 端点，等待客户端连接\nawait serverTransport.listen();\n\n// 建立服务端和客户端的通信连接\nawait server.connect(serverTransport);\n```\n\n以下是在 iframe、Web Worker 的代码：\n\n```typescript\nimport { Client } from '@modelcontextprotocol/sdk/client/index.js';\nimport { MessageChannelClientTransport } from '@opentiny/next';\n\n// 创建用于连接的 Transport 客户端实例\nconst clientTransport = new MessageChannelClientTransport('endpoint');\n\n// 创建 MCP 客户端实例\nconst capabilities = { roots: { listChanged: true }, sampling: {}, elicitation: {} };\nconst client = new Client({ name: 'mcp-client', version: '1.0.0' }, { capabilities });\n\n// 建立服务端和客户端的通信连接\nawait client.connect(clientTransport);\n\n// 将客户端实例存储到状态中\nstate.client = client;\n```\n\n请注意：创建 `MessageChannelServerTransport` 实例必须在创建 `MessageChannelClientTransport` 实例之前，确保客户端连接之前服务端已经开始监听。由于 iframe、Web Worker 等代码运行通常在浏览器主线程之后，所以上述示例代码执行顺序一般是先创建 `MessageChannelServerTransport` 实例，后创建 `MessageChannelClientTransport` 实例。\n\n## 许可证\n\nMIT","users":{}}