\n```\n\n\u8be5\u811a\u672c\u4f1a\u81ea\u52a8\u6ce8\u5165\u9690\u85cf iframe\uff0c\u626b\u63cf `navigator.modelcontext`\uff08\u5373 webmcp nexus sdk \u6ce8\u518c\u7684\u5168\u90e8\u5de5\u5177\uff09\u5e76\u5efa\u7acb\u5230\u672c\u673a relay \u7684 websocket \u901a\u9053\u3002**\u4e1a\u52a1\u4ee3\u7801\u4e0e sdk \u8c03\u7528\u65b9\u5f0f\u5b8c\u5168\u65e0\u9700\u6539\u52a8**\u3002\n\n> \u53ef\u9009\u5c5e\u6027\uff1a`data-relay-port=\"9444\"` \u6307\u5b9a\u7aef\u53e3\uff08\u9ed8\u8ba4 9333\uff09\u3001`data-request-timeout=\"120000\"` \u8c03\u6574\u8bf7\u6c42\u8d85\u65f6\uff08\u9ed8\u8ba4 60000ms\uff09\u3002\n\n**2. \u5728 mcp \u5ba2\u6237\u7aef\u4e2d\u914d\u7f6e relay**\n\n\u4ee5 claude desktop \u4e3a\u4f8b\uff0c\u7f16\u8f91 `claude_desktop_config.json`\uff1a\n\n```json\n{\n \"mcpservers\": {\n \"webmcp-local-relay\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \"@mcp-b/webmcp-local-relay@latest\"]\n }\n }\n}\n```\n\ncursor\u3001vs code \u7684 mcp \u914d\u7f6e\u65b9\u5f0f\u76f8\u540c\uff0c\u5dee\u5f02\u4ec5\u5728\u914d\u7f6e\u6587\u4ef6\u4f4d\u7f6e\u3002\n\n**3. \u542f\u52a8 web \u5e94\u7528\u5e76\u5728 agent \u7aef\u9a71\u52a8**\n\n```bash\npnpm dev # \u4efb\u4f55\u63a5\u5165\u4e86 webmcp-nexus-sdk \u7684\u5e94\u7528\u5373\u53ef\n```\n\n\u91cd\u542f claude desktop / cursor\uff0c\u65b0\u4f1a\u8bdd\u4e2d\u5373\u53ef\u770b\u5230\u6765\u81ea\u6d4f\u89c8\u5668\u7684\u5de5\u5177\u3002\u4f8b\u5982\u5bf9 demo \u5e94\u7528\u8bf4\uff1a\n\n> \"\u628a\u6240\u6709 todo \u72b6\u6001\u7684\u4efb\u52a1\u6309\u622a\u6b62\u65e5\u671f\u5347\u5e8f\u5c55\u793a\uff0c\u7136\u540e\u628a\u7b2c\u4e00\u6761\u6807\u8bb0\u4e3a\u5df2\u5b8c\u6210\u3002\"\n\nagent \u4f1a\u4f9d\u6b21\u8c03\u7528 `listtasks` \u2192 `settasksort` \u2192 `settaskstatus`\uff0c\u5e76\u5728\u6d4f\u89c8\u5668\u4e2d\u53ef\u89c6\u5316\u5730\u5b8c\u6210\u5168\u90e8\u64cd\u4f5c\u3002\n\n## ai \u7f16\u7801 skill\n\n\u4ed3\u5e93 `skill/skill.md` \u662f\u4e00\u4efd\u4e3a ai \u7f16\u7801 agent \u91cf\u8eab\u6253\u9020\u7684 skill \u6587\u6863\uff0c\u8986\u76d6\uff1a\n\n- \u5de5\u5177\u51fd\u6570\u7b7e\u540d\u3001jsdoc\u3001ts \u7c7b\u578b\u7684\u786c\u6027\u7ea6\u675f\uff08must / should / may \u4e09\u7ea7\uff09\uff1b\n- **\u96f6\u98ce\u9669\u6539\u9020\u6d41\u7a0b**\uff1a\u628a\u73b0\u6709\u4e1a\u52a1\u51fd\u6570\u6539\u9020\u4e3a webmcp \u5de5\u5177\u65f6\uff0c\u53ea\u52a8\u7b7e\u540d\u4e0e\u6ce8\u91ca\uff0c\u4e0d\u52a8\u4e1a\u52a1\u903b\u8f91\uff1b\n- sdk \u4e0e vite / webpack \u6784\u5efa\u63d2\u4ef6\u7684\u63a5\u5165\u5f15\u5bfc\uff1b\n- \u771f\u5b9e\u573a\u666f\u7684\u6b63\u53cd\u5bf9\u7167\u793a\u4f8b\u3002\n\n### \u5b89\u88c5\n\n
\nclaude code\n\n```bash\n# \u9879\u76ee\u7ea7\uff08\u4ec5\u5f53\u524d\u4ed3\u5e93\u751f\u6548\uff09\nmkdir -p .claude/skills\ncp skill/skill.md .claude/skills/webmcp-nexus.md\n\n# \u7528\u6237\u7ea7\uff08\u6240\u6709\u9879\u76ee\u751f\u6548\uff09\nmkdir -p ~/.claude/skills\ncp skill/skill.md ~/.claude/skills/webmcp-nexus.md\n```\n\n
\n\n
\ncursor\n\n```bash\nmkdir -p .cursor/rules\ncp skill/skill.md .cursor/rules/webmcp-nexus.mdc\n```\n\n\u6216\u5728 settings \u2192 rules \u4e2d\u7c98\u8d34 `skill/skill.md` \u7684\u5168\u90e8\u5185\u5bb9\u3002\n\n
\n\n
\n\u5176\u4ed6 ai ide\uff08qoder / windsurf \u7b49\uff09\n\n\u5c06 `skill/skill.md` \u4f5c\u4e3a rule / context \u6587\u6863\u5bfc\u5165\u5230 ide \u7684 ai \u914d\u7f6e\u4e2d\u5373\u53ef\u3002\u6240\u6709\u89e6\u53d1\u8bcd\u5747\u5df2\u5199\u5165 frontmatter \u7684 `description` \u5b57\u6bb5\uff0c\u4e3b\u6d41 agent \u6846\u67b6\u53ef\u81ea\u52a8\u6309\u9700\u52a0\u8f7d\u3002\n\n
\n\n### \u4f7f\u7528\u793a\u4f8b\n\n> \"\u628a `apps/demo/src/store/todostore.tsx` \u91cc\u7684 `createtask` \u6539\u9020\u6210 webmcp \u5de5\u5177\uff0c\u6ce8\u518c\u5230\u4efb\u52a1\u5217\u8868\u9875\u3002\"\n\nagent \u4f1a\u6309 skill \u4e2d\u89c4\u5b9a\u7684\u6d41\u7a0b\uff0c\u81ea\u52a8\u8865\u9f50 jsdoc\u3001\u8c03\u6574\u53c2\u6570\u4e3a\u5bf9\u8c61\u5f62\u6001\u3001\u5728\u5bf9\u5e94\u7ec4\u4ef6\u6302\u8f7d\u70b9\u8c03\u7528 `usewebmcptools`\uff0c\u4e14**\u4e0d\u4fee\u6539\u4efb\u4f55\u4e1a\u52a1\u903b\u8f91**\u3002\n\n## \u6d4f\u89c8\u5668\u517c\u5bb9\n\n| \u73af\u5883 | \u884c\u4e3a |\n| --------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- |\n| chrome 146+ | \u4f7f\u7528\u539f\u751f `navigator.modelcontext` |\n| chrome <146 / firefox / safari / edge legacy \u7b49\u73af\u5883 | sdk \u5165\u53e3\u81ea\u52a8\u52a0\u8f7d\u5185\u7f6e [`@mcp-b/webmcp-polyfill`](https://www.npmjs.com/package/@mcp-b/webmcp-polyfill)\uff0c\u5bf9\u4e1a\u52a1\u900f\u660e |\n\n## \u5de5\u5177\u540d\u51b2\u7a81\u7b56\u7565\n\nsdk \u5185\u90e8\u7ef4\u62a4 scope ownership registry\uff0c\u8bb0\u5f55\u6bcf\u4e2a\u5de5\u5177\u540d\u7684\u6ce8\u518c\u6765\u6e90\uff08scope + scopeid\uff09\uff1a\n\n- \u591a\u4e2a scope \u6ce8\u518c\u540c\u540d\u5de5\u5177\u65f6\uff1a\u63a7\u5236\u53f0\u8f93\u51fa\u8b66\u544a\uff0c**\u4f46\u4ecd\u5141\u8bb8\u6ce8\u518c**\uff0c\u4e0d\u963b\u65ad ui \u6e32\u67d3\uff1b\n- \u6ce8\u9500\u65f6\u53ea\u6e05\u7406\u81ea\u5df1 scope \u7684\u6ce8\u518c\uff0c\u4e0d\u5f71\u54cd\u5176\u4ed6\u4f5c\u7528\u57df\u7684\u540c\u540d\u5de5\u5177\u3002\n\n> **\u6700\u4f73\u5b9e\u8df5**\uff1a\u4f7f\u7528\u8bed\u4e49\u5316\u7684\u552f\u4e00\u5de5\u5177\u540d\uff0c\u4e0d\u540c\u5c42\u7ea7\u907f\u514d\u540c\u540d\u51b2\u7a81\u3002\n\n## typescript \u7c7b\u578b\u652f\u6301\u8303\u56f4\n\n**\u5df2\u7a33\u5b9a\u652f\u6301**\n\n- \u57fa\u7840\u7c7b\u578b\uff08`string` / `number` / `boolean`\uff09\n- \u5b57\u9762\u91cf\u8054\u5408\uff08`'a' | 'b' | 'c'` \u2192 `enum`\uff09\n- \u53ef\u9009\u5c5e\u6027\uff08`prop?` \u2192 \u4e0d\u8fdb\u5165 `required`\uff09\n- \u5d4c\u5957\u5bf9\u8c61\uff08\u2264 3 \u5c42\uff09\n\n**\u4e0d\u5efa\u8bae\u4f9d\u8d56**\n\n- \u6cdb\u578b\uff08`record`\u3001`partial`\u3001`pick` \u7b49\uff09\n- \u6620\u5c04\u7c7b\u578b / \u6761\u4ef6\u7c7b\u578b\n- \u8d85\u8fc7 3 \u5c42\u7684\u6df1\u5ea6\u5d4c\u5957\uff1b\u5bf9\u8c61\u6570\u7ec4\u4e2d\u7684\u5bf9\u8c61\u5143\u7d20 schema\n\n## \u6280\u672f\u6808\n\n- react 19 + typescript + vite 8 / webpack 5\n- pnpm workspace monorepo\n- `ts-morph` \u9a71\u52a8\u7684\u6784\u5efa\u65f6\u7c7b\u578b\u62bd\u53d6\n- vitest \u6d4b\u8bd5\u6846\u67b6\n\n## \u5f00\u53d1\u811a\u672c\n\n```bash\npnpm install # \u5b89\u88c5\u4f9d\u8d56\npnpm dev # \u542f\u52a8 vite demo\npnpm dev:webpack # \u542f\u52a8 webpack demo\npnpm build # \u6784\u5efa\u6240\u6709\u5305\npnpm test # \u8fd0\u884c\u5168\u90e8\u5305\u7684\u6d4b\u8bd5\npnpm lint # eslint\npnpm format # prettier\n```\n\n## \u9879\u76ee\u72b6\u6001\n\nwebmcp nexus \u7684\u6838\u5fc3 api\uff08`registerglobaltools` / `usewebmcptools`\uff09\u4e0e\u6784\u5efa\u63d2\u4ef6\u5df2\u5728\u751f\u4ea7\u5e94\u7528\u4e2d\u7a33\u5b9a\u8fd0\u884c\u3002\u5e95\u5c42 webmcp \u6807\u51c6\u672c\u8eab\u4ecd\u5728 w3c \u63a8\u8fdb\u4e2d\uff0c\u5efa\u8bae\u540c\u6b65\u5173\u6ce8\u4e0a\u6e38\u8fdb\u5c55\uff1a\n\n- webmcp \u6807\u51c6\uff1a[webmcp.org](https://webmcp.org)\n- \u4e0a\u6e38\u8fd0\u884c\u65f6 / polyfill\uff1a[`@mcp-b/webmcp-polyfill`](https://www.npmjs.com/package/@mcp-b/webmcp-polyfill)\n\n## \u53c2\u4e0e\u8d21\u732e\n\n\u6b22\u8fce\u901a\u8fc7 issue \u4e0e pull request \u53c2\u4e0e\u9879\u76ee\uff1a\n\n- \ud83d\udc1b **bug reports** \u2014\u2014 \u8bf7\u5c3d\u91cf\u9644\u5e26\u6700\u5c0f\u590d\u73b0\u4ed3\u5e93\uff1b\n- \ud83d\udca1 **feature requests** \u2014\u2014 \u4f18\u5148\u8ba8\u8bba\u4f7f\u7528\u573a\u666f\uff0c\u518d\u8ba8\u8bba api\uff1b\n- \ud83d\udee0\ufe0f **pull requests** \u2014\u2014 \u63d0\u4ea4\u524d\u8bf7\u8fd0\u884c `pnpm lint && pnpm test`\uff0c\u5e76\u4fdd\u6301\u6bcf\u4e2a commit \u805a\u7126\u5355\u4e00\u53d8\u66f4\u3002\n\n\u63d0\u4ea4 pr \u5373\u89c6\u4e3a\u540c\u610f\u4ee5 mit license \u6388\u6743\u4f60\u7684\u8d21\u732e\u3002\n\n## \u8bb8\u53ef\u8bc1\n\nmit", "installation_instructions": null, "categories": [ "Everything" ], "owners": [], "owner": null, "code_snippets": {}, "evaluation_results": [], "found_via_ownership_request": false, "hosting_eligible": false, "knative_enabled": false, "security_scans": [ { "repo_url": "https://github.com/alibaba/webmcp-nexus", "repo_name": "webmcp-nexus", "score": 100, "risk_level": "low", "score_explanation": "Score starts at 100, deducts points for security issues, and adds points for security best practices", "scan_id": "54d8fc37-0031-4946-8877-396909862baa", "mcp_app_id": "dd0accfb-6d28-4c01-b5ff-a3de25a9aced", "scan_time": "2026-06-12T07:39:00.729593+00:00", "created_at": "2026-06-12T07:39:00.734293+00:00", "updated_at": "2026-06-12T07:39:00.734293+00:00", "findings": [], "vulnerabilities": [] } ] } }