@agent-native/core 0.79.11 → 0.79.15
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +25 -0
- package/corpus/core/docs/content/locales/zh-TW/a2a-protocol.md +68 -68
- package/corpus/core/docs/content/locales/zh-TW/actions.md +82 -82
- package/corpus/core/docs/content/locales/zh-TW/agent-mentions.md +22 -22
- package/corpus/core/docs/content/locales/zh-TW/agent-surfaces.md +82 -82
- package/corpus/core/docs/content/locales/zh-TW/agent-teams.md +29 -29
- package/corpus/core/docs/content/locales/zh-TW/agent-web-surfaces.md +11 -11
- package/corpus/core/docs/content/locales/zh-TW/audit-log.md +16 -16
- package/corpus/core/docs/content/locales/zh-TW/authentication.md +32 -32
- package/corpus/core/docs/content/locales/zh-TW/automations.md +32 -32
- package/corpus/core/docs/content/locales/zh-TW/blueprint-installer.md +19 -19
- package/corpus/core/docs/content/locales/zh-TW/cli-adapters.md +17 -17
- package/corpus/core/docs/content/locales/zh-TW/client.md +62 -62
- package/corpus/core/docs/content/locales/zh-TW/cloneable-saas.md +32 -32
- package/corpus/core/docs/content/locales/zh-TW/code-agents-ui.md +91 -91
- package/corpus/core/docs/content/locales/zh-TW/components.md +51 -51
- package/corpus/core/docs/content/locales/zh-TW/context-awareness.md +66 -66
- package/corpus/core/docs/content/locales/zh-TW/creating-templates.md +39 -39
- package/corpus/core/docs/content/locales/zh-TW/cross-app-sso.md +29 -29
- package/corpus/core/docs/content/locales/zh-TW/database.md +21 -21
- package/corpus/core/docs/content/locales/zh-TW/deployment.md +37 -37
- package/corpus/core/docs/content/locales/zh-TW/dispatch.md +43 -43
- package/corpus/core/docs/content/locales/zh-TW/drop-in-agent.md +34 -34
- package/corpus/core/docs/content/locales/zh-TW/durable-resume.md +18 -18
- package/corpus/core/docs/content/locales/zh-TW/embedding-sdk.md +73 -73
- package/corpus/core/docs/content/locales/zh-TW/evals.md +16 -16
- package/corpus/core/docs/content/locales/zh-TW/extensions.md +81 -81
- package/corpus/core/docs/content/locales/zh-TW/external-agents.md +146 -146
- package/corpus/core/docs/content/locales/zh-TW/faq.md +43 -43
- package/corpus/core/docs/content/locales/zh-TW/file-uploads.md +11 -11
- package/corpus/core/docs/content/locales/zh-TW/frames.md +33 -33
- package/corpus/core/docs/content/locales/zh-TW/getting-started.md +28 -28
- package/corpus/core/docs/content/locales/zh-TW/harness-agents.md +78 -78
- package/corpus/core/docs/content/locales/zh-TW/human-approval.md +27 -27
- package/corpus/core/docs/content/locales/zh-TW/internationalization.md +19 -19
- package/corpus/core/docs/content/locales/zh-TW/key-concepts.md +68 -68
- package/corpus/core/docs/content/locales/zh-TW/local-file-mode.md +50 -50
- package/corpus/core/docs/content/locales/zh-TW/mcp-apps.md +38 -38
- package/corpus/core/docs/content/locales/zh-TW/mcp-clients.md +67 -67
- package/corpus/core/docs/content/locales/zh-TW/mcp-protocol.md +50 -50
- package/corpus/core/docs/content/locales/zh-TW/messaging.md +99 -99
- package/corpus/core/docs/content/locales/zh-TW/migration-workbench.md +6 -6
- package/corpus/core/docs/content/locales/zh-TW/multi-app-workspace.md +39 -39
- package/corpus/core/docs/content/locales/zh-TW/multi-tenancy.md +7 -7
- package/corpus/core/docs/content/locales/zh-TW/native-chat-ui.md +38 -38
- package/corpus/core/docs/content/locales/zh-TW/notifications.md +23 -23
- package/corpus/core/docs/content/locales/zh-TW/observability.md +49 -49
- package/corpus/core/docs/content/locales/zh-TW/observational-memory.md +23 -23
- package/corpus/core/docs/content/locales/zh-TW/onboarding.md +40 -40
- package/corpus/core/docs/content/locales/zh-TW/plan-plugin.md +37 -37
- package/corpus/core/docs/content/locales/zh-TW/pr-visual-recap.md +72 -72
- package/corpus/core/docs/content/locales/zh-TW/processors.md +17 -17
- package/corpus/core/docs/content/locales/zh-TW/progress.md +15 -15
- package/corpus/core/docs/content/locales/zh-TW/pure-agent-apps.md +10 -10
- package/corpus/core/docs/content/locales/zh-TW/real-time-collaboration.md +103 -103
- package/corpus/core/docs/content/locales/zh-TW/recurring-jobs.md +19 -19
- package/corpus/core/docs/content/locales/zh-TW/routing.md +9 -9
- package/corpus/core/docs/content/locales/zh-TW/sandbox-adapters.md +48 -48
- package/corpus/core/docs/content/locales/zh-TW/security.md +49 -49
- package/corpus/core/docs/content/locales/zh-TW/server.md +47 -47
- package/corpus/core/docs/content/locales/zh-TW/sharing.md +22 -22
- package/corpus/core/docs/content/locales/zh-TW/skills-guide.md +46 -46
- package/corpus/core/docs/content/locales/zh-TW/template-analytics.md +40 -40
- package/corpus/core/docs/content/locales/zh-TW/template-assets.md +69 -69
- package/corpus/core/docs/content/locales/zh-TW/template-brain.md +81 -81
- package/corpus/core/docs/content/locales/zh-TW/template-calendar.md +40 -40
- package/corpus/core/docs/content/locales/zh-TW/template-chat.md +27 -27
- package/corpus/core/docs/content/locales/zh-TW/template-clips.md +85 -85
- package/corpus/core/docs/content/locales/zh-TW/template-content.md +65 -66
- package/corpus/core/docs/content/locales/zh-TW/template-design.md +29 -29
- package/corpus/core/docs/content/locales/zh-TW/template-dispatch.md +51 -51
- package/corpus/core/docs/content/locales/zh-TW/template-forms.md +25 -25
- package/corpus/core/docs/content/locales/zh-TW/template-mail.md +71 -71
- package/corpus/core/docs/content/locales/zh-TW/template-plan.md +92 -92
- package/corpus/core/docs/content/locales/zh-TW/template-slides.md +52 -52
- package/corpus/core/docs/content/locales/zh-TW/template-videos.md +30 -30
- package/corpus/core/docs/content/locales/zh-TW/tracking.md +29 -29
- package/corpus/core/docs/content/locales/zh-TW/using-your-agent.md +18 -18
- package/corpus/core/docs/content/locales/zh-TW/voice-input.md +19 -19
- package/corpus/core/docs/content/locales/zh-TW/what-is-agent-native.md +61 -61
- package/corpus/core/docs/content/locales/zh-TW/workspace-connections.md +41 -41
- package/corpus/core/docs/content/locales/zh-TW/workspace-management.md +27 -27
- package/corpus/core/docs/content/locales/zh-TW/workspace.md +58 -58
- package/corpus/core/docs/content/locales/zh-TW/writing-agent-instructions.md +41 -41
- package/corpus/core/docs/content/template-clips.md +48 -2
- package/corpus/core/package.json +2 -1
- package/corpus/core/src/client/AgentPanel.tsx +27 -3
- package/corpus/core/src/deploy/build.ts +738 -57
- package/corpus/core/src/deploy/route-discovery.ts +1 -1
- package/corpus/core/src/server/edge.ts +50 -0
- package/corpus/core/src/styles/agent-native.css +93 -0
- package/corpus/core/src/templates/default/app/i18n/zh-TW.ts +44 -44
- package/corpus/core/src/vite/client.ts +1 -0
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +5 -3
- package/corpus/templates/analytics/app/i18n/zh-TW.ts +69 -70
- package/corpus/templates/analytics/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/assets/app/components/layout/Layout.tsx +3 -3
- package/corpus/templates/assets/app/i18n/zh-TW.ts +82 -82
- package/corpus/templates/assets/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/brain/app/components/layout/Layout.tsx +6 -4
- package/corpus/templates/brain/app/i18n/zh-TW.ts +90 -90
- package/corpus/templates/brain/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/calendar/app/components/layout/AppLayout.tsx +1 -1
- package/corpus/templates/calendar/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/calendar/app/i18n/zh-TW.ts +57 -57
- package/corpus/templates/calendar/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/calendar/server/lib/booking-og-fonts.ts +20 -6
- package/corpus/templates/calendar/server/lib/booking-og-image.ts +17 -9
- package/corpus/templates/chat/app/components/layout/Layout.tsx +5 -3
- package/corpus/templates/chat/app/i18n/zh-TW.ts +3 -3
- package/corpus/templates/chat/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/clips/AGENTS.md +6 -0
- package/corpus/templates/clips/actions/delete-recording-permanent.ts +7 -1
- package/corpus/templates/clips/actions/get-recording-player-data.ts +44 -2
- package/corpus/templates/clips/actions/navigate.ts +2 -0
- package/corpus/templates/clips/actions/save-bug-report-context.ts +173 -0
- package/corpus/templates/clips/actions/view-screen.ts +58 -7
- package/corpus/templates/clips/app/components/recorder/storage-setup-card.tsx +9 -3
- package/corpus/templates/clips/app/hooks/use-navigation-state.ts +17 -0
- package/corpus/templates/clips/app/i18n/ar-SA.ts +31 -0
- package/corpus/templates/clips/app/i18n/de-DE.ts +32 -0
- package/corpus/templates/clips/app/i18n/en-US.ts +32 -0
- package/corpus/templates/clips/app/i18n/es-ES.ts +32 -0
- package/corpus/templates/clips/app/i18n/fr-FR.ts +32 -0
- package/corpus/templates/clips/app/i18n/hi-IN.ts +32 -0
- package/corpus/templates/clips/app/i18n/ja-JP.ts +31 -0
- package/corpus/templates/clips/app/i18n/ko-KR.ts +32 -0
- package/corpus/templates/clips/app/i18n/pt-BR.ts +32 -0
- package/corpus/templates/clips/app/i18n/zh-CN.ts +30 -0
- package/corpus/templates/clips/app/i18n/zh-TW.ts +461 -451
- package/corpus/templates/clips/app/routes/bug-report.done.tsx +126 -0
- package/corpus/templates/clips/app/routes/bug-report.tsx +222 -0
- package/corpus/templates/clips/app/routes/record.tsx +104 -12
- package/corpus/templates/clips/changelog/2026-06-26-brief-network-blips-no-longer-block-recording-or-wrongly-pro.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-bug-report-recordings-can-keep-redacted-host-app-context-wit.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-bug-report-widgets-can-launch-clips-recordings-from-embedded.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-desktop-recording-keeps-connected-users-out-of-the-storage-s.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-26-if-a-recording-can-t-be-uploaded-the-chrome-extension-now-sa.md +6 -0
- package/corpus/templates/clips/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/clips/chrome-extension/public/manifest.json +9 -2
- package/corpus/templates/clips/chrome-extension/src/background.ts +43 -0
- package/corpus/templates/clips/chrome-extension/src/offscreen.ts +111 -6
- package/corpus/templates/clips/chrome-extension/src/popup.ts +18 -7
- package/corpus/templates/clips/desktop/src/app.tsx +53 -19
- package/corpus/templates/clips/server/db/schema.ts +26 -0
- package/corpus/templates/clips/server/lib/public-agent-context.ts +51 -0
- package/corpus/templates/clips/server/plugins/auth.ts +1 -0
- package/corpus/templates/clips/server/plugins/db.ts +28 -0
- package/corpus/templates/clips/server/routes/api/agent-context.json.get.ts +4 -1
- package/corpus/templates/clips/shared/bug-report.ts +161 -0
- package/corpus/templates/content/app/components/layout/Layout.tsx +10 -8
- package/corpus/templates/content/app/components/sidebar/DocumentSidebar.tsx +1 -1
- package/corpus/templates/content/app/i18n/zh-TW.ts +67 -66
- package/corpus/templates/content/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/design/app/components/layout/Layout.tsx +3 -3
- package/corpus/templates/design/app/i18n/zh-TW.ts +44 -44
- package/corpus/templates/design/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/dispatch/app/i18n/zh-TW.ts +5 -4
- package/corpus/templates/dispatch/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/forms/app/components/layout/Layout.tsx +4 -2
- package/corpus/templates/forms/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/forms/app/i18n/zh-TW.ts +48 -48
- package/corpus/templates/forms/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/macros/app/components/layout/AppLayout.tsx +3 -3
- package/corpus/templates/macros/app/i18n/zh-TW.ts +5 -5
- package/corpus/templates/macros/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/mail/app/i18n/zh-TW.ts +83 -83
- package/corpus/templates/mail/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/plan/app/components/layout/Layout.tsx +5 -3
- package/corpus/templates/plan/app/i18n/zh-TW.ts +69 -69
- package/corpus/templates/plan/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/slides/app/components/layout/Layout.tsx +3 -3
- package/corpus/templates/slides/app/i18n/zh-TW.ts +64 -64
- package/corpus/templates/slides/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/corpus/templates/videos/app/components/layout/Layout.tsx +2 -2
- package/corpus/templates/videos/app/i18n/zh-TW.ts +54 -54
- package/corpus/templates/videos/changelog/2026-06-27-traditional-chinese-copy-uses-taiwan-terminology.md +6 -0
- package/dist/client/AgentPanel.d.ts.map +1 -1
- package/dist/client/AgentPanel.js +14 -4
- package/dist/client/AgentPanel.js.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/deploy/build.d.ts +29 -2
- package/dist/deploy/build.d.ts.map +1 -1
- package/dist/deploy/build.js +587 -51
- package/dist/deploy/build.js.map +1 -1
- package/dist/deploy/route-discovery.d.ts +1 -1
- package/dist/deploy/route-discovery.js +1 -1
- package/dist/deploy/route-discovery.js.map +1 -1
- package/dist/file-upload/actions/upload-image.d.ts +2 -2
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +7 -7
- package/dist/resources/handlers.d.ts +2 -2
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/edge.d.ts +11 -0
- package/dist/server/edge.d.ts.map +1 -0
- package/dist/server/edge.js +11 -0
- package/dist/server/edge.js.map +1 -0
- package/dist/styles/agent-native.css +93 -0
- package/dist/templates/default/app/i18n/zh-TW.ts +44 -44
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +1 -0
- package/dist/vite/client.js.map +1 -1
- package/docs/content/locales/zh-TW/a2a-protocol.md +68 -68
- package/docs/content/locales/zh-TW/actions.md +82 -82
- package/docs/content/locales/zh-TW/agent-mentions.md +22 -22
- package/docs/content/locales/zh-TW/agent-surfaces.md +82 -82
- package/docs/content/locales/zh-TW/agent-teams.md +29 -29
- package/docs/content/locales/zh-TW/agent-web-surfaces.md +11 -11
- package/docs/content/locales/zh-TW/audit-log.md +16 -16
- package/docs/content/locales/zh-TW/authentication.md +32 -32
- package/docs/content/locales/zh-TW/automations.md +32 -32
- package/docs/content/locales/zh-TW/blueprint-installer.md +19 -19
- package/docs/content/locales/zh-TW/cli-adapters.md +17 -17
- package/docs/content/locales/zh-TW/client.md +62 -62
- package/docs/content/locales/zh-TW/cloneable-saas.md +32 -32
- package/docs/content/locales/zh-TW/code-agents-ui.md +91 -91
- package/docs/content/locales/zh-TW/components.md +51 -51
- package/docs/content/locales/zh-TW/context-awareness.md +66 -66
- package/docs/content/locales/zh-TW/creating-templates.md +39 -39
- package/docs/content/locales/zh-TW/cross-app-sso.md +29 -29
- package/docs/content/locales/zh-TW/database.md +21 -21
- package/docs/content/locales/zh-TW/deployment.md +37 -37
- package/docs/content/locales/zh-TW/dispatch.md +43 -43
- package/docs/content/locales/zh-TW/drop-in-agent.md +34 -34
- package/docs/content/locales/zh-TW/durable-resume.md +18 -18
- package/docs/content/locales/zh-TW/embedding-sdk.md +73 -73
- package/docs/content/locales/zh-TW/evals.md +16 -16
- package/docs/content/locales/zh-TW/extensions.md +81 -81
- package/docs/content/locales/zh-TW/external-agents.md +146 -146
- package/docs/content/locales/zh-TW/faq.md +43 -43
- package/docs/content/locales/zh-TW/file-uploads.md +11 -11
- package/docs/content/locales/zh-TW/frames.md +33 -33
- package/docs/content/locales/zh-TW/getting-started.md +28 -28
- package/docs/content/locales/zh-TW/harness-agents.md +78 -78
- package/docs/content/locales/zh-TW/human-approval.md +27 -27
- package/docs/content/locales/zh-TW/internationalization.md +19 -19
- package/docs/content/locales/zh-TW/key-concepts.md +68 -68
- package/docs/content/locales/zh-TW/local-file-mode.md +50 -50
- package/docs/content/locales/zh-TW/mcp-apps.md +38 -38
- package/docs/content/locales/zh-TW/mcp-clients.md +67 -67
- package/docs/content/locales/zh-TW/mcp-protocol.md +50 -50
- package/docs/content/locales/zh-TW/messaging.md +99 -99
- package/docs/content/locales/zh-TW/migration-workbench.md +6 -6
- package/docs/content/locales/zh-TW/multi-app-workspace.md +39 -39
- package/docs/content/locales/zh-TW/multi-tenancy.md +7 -7
- package/docs/content/locales/zh-TW/native-chat-ui.md +38 -38
- package/docs/content/locales/zh-TW/notifications.md +23 -23
- package/docs/content/locales/zh-TW/observability.md +49 -49
- package/docs/content/locales/zh-TW/observational-memory.md +23 -23
- package/docs/content/locales/zh-TW/onboarding.md +40 -40
- package/docs/content/locales/zh-TW/plan-plugin.md +37 -37
- package/docs/content/locales/zh-TW/pr-visual-recap.md +72 -72
- package/docs/content/locales/zh-TW/processors.md +17 -17
- package/docs/content/locales/zh-TW/progress.md +15 -15
- package/docs/content/locales/zh-TW/pure-agent-apps.md +10 -10
- package/docs/content/locales/zh-TW/real-time-collaboration.md +103 -103
- package/docs/content/locales/zh-TW/recurring-jobs.md +19 -19
- package/docs/content/locales/zh-TW/routing.md +9 -9
- package/docs/content/locales/zh-TW/sandbox-adapters.md +48 -48
- package/docs/content/locales/zh-TW/security.md +49 -49
- package/docs/content/locales/zh-TW/server.md +47 -47
- package/docs/content/locales/zh-TW/sharing.md +22 -22
- package/docs/content/locales/zh-TW/skills-guide.md +46 -46
- package/docs/content/locales/zh-TW/template-analytics.md +40 -40
- package/docs/content/locales/zh-TW/template-assets.md +69 -69
- package/docs/content/locales/zh-TW/template-brain.md +81 -81
- package/docs/content/locales/zh-TW/template-calendar.md +40 -40
- package/docs/content/locales/zh-TW/template-chat.md +27 -27
- package/docs/content/locales/zh-TW/template-clips.md +85 -85
- package/docs/content/locales/zh-TW/template-content.md +65 -66
- package/docs/content/locales/zh-TW/template-design.md +29 -29
- package/docs/content/locales/zh-TW/template-dispatch.md +51 -51
- package/docs/content/locales/zh-TW/template-forms.md +25 -25
- package/docs/content/locales/zh-TW/template-mail.md +71 -71
- package/docs/content/locales/zh-TW/template-plan.md +92 -92
- package/docs/content/locales/zh-TW/template-slides.md +52 -52
- package/docs/content/locales/zh-TW/template-videos.md +30 -30
- package/docs/content/locales/zh-TW/tracking.md +29 -29
- package/docs/content/locales/zh-TW/using-your-agent.md +18 -18
- package/docs/content/locales/zh-TW/voice-input.md +19 -19
- package/docs/content/locales/zh-TW/what-is-agent-native.md +61 -61
- package/docs/content/locales/zh-TW/workspace-connections.md +41 -41
- package/docs/content/locales/zh-TW/workspace-management.md +27 -27
- package/docs/content/locales/zh-TW/workspace.md +58 -58
- package/docs/content/locales/zh-TW/writing-agent-instructions.md +41 -41
- package/docs/content/template-clips.md +48 -2
- package/package.json +2 -1
- package/src/templates/default/app/i18n/zh-TW.ts +44 -44
|
@@ -1,38 +1,38 @@
|
|
|
1
1
|
---
|
|
2
2
|
title: "MCP 應用程式"
|
|
3
|
-
description: "使用真實應用路由、嵌入橋和主機橋 API,在 Claude、ChatGPT
|
|
3
|
+
description: "使用真實應用路由、嵌入橋和主機橋 API,在 Claude、ChatGPT 和其他相容主機中編寫和嵌入互動式 MCP 應用 UI。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# MCP 應用程式
|
|
7
7
|
|
|
8
|
-
**此頁面:Claude/ChatGPT
|
|
8
|
+
**此頁面:Claude/ChatGPT 中的行內 UI。** 創作 MCP 應用程式資源以及在相容主機的聊天中呈現真實應用程式路由的嵌入橋。此頁面也是**用戶端支援矩陣** ([below](#client-support)) 的單一主頁面。
|
|
9
9
|
|
|
10
10
|
| 如果你想…… | 閱讀 |
|
|
11
11
|
| ------------------------------------------------- | ---------------------------------------- |
|
|
12
12
|
| 將外部代理/主機連線到您的應用 | [External Agents](/docs/external-agents) |
|
|
13
13
|
| 為您的代理提供更多工具(使用其他 MCP 伺服器) | [MCP Clients](/docs/mcp-clients) |
|
|
14
|
-
| 建置在 Claude/ChatGPT
|
|
15
|
-
|
|
|
14
|
+
| 建置在 Claude/ChatGPT 中渲染的行內 UI | **此頁面** — MCP 應用 |
|
|
15
|
+
| 較低階別的 MCP 伺服器參考(驗證、工具、自訂掛載) | [MCP Protocol](/docs/mcp-protocol) |
|
|
16
16
|
|
|
17
|
-
MCP 應用程式是官方的 `io.modelcontextprotocol/ui`
|
|
17
|
+
MCP 應用程式是官方的 `io.modelcontextprotocol/ui` 擴充功能,可讓相容主機(Claude、Claude Desktop、ChatGPT、VS Code GitHub Copilot、Goose、Postman、MCPJam 和 Cursor)在聊天中渲染互動式 UI。在 Agent-Native 應用程式中,每個 MCP 應用程式都是**真正的 React 路由**,而不是單獨的普通 HTML 小工具。
|
|
18
18
|
|
|
19
|
-
在 Agent-Native 應用自己的聊天中,首選 [native chat renderers](/docs/native-chat-ui)
|
|
19
|
+
在 Agent-Native 應用自己的聊天中,首選 [native chat renderers](/docs/native-chat-ui) 作為第一方小工具,例如表格、圖表、鍵入的結果和核准功能可用性。在 Claude、ChatGPT、Copilot、Cursor 和其他相容主機中使用 MCP 應用程式進行外部/跨主機行內 UI,並使用操作 `link` 作為通用深層連結回退。
|
|
20
20
|
|
|
21
21
|
## 創作:可選的 MCP 應用 UI {#mcp-apps}
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
對於支援 MCP 應用擴充功能的主機,操作還可以使用 `mcpApp` 通告行內 UI 資源。這是對流程的漸進增強,外部代理應向使用者提供互動式介面而不僅僅是文字,例如檢視電子郵件草稿、編輯行事曆邀請或在產生的儀表板變體之間進行選取。
|
|
24
24
|
|
|
25
|
-
每當使用者需要 UI 時,將真正的 React 應用程式與 `embedRoute()` 或 `embedApp()` 一起使用。思維模型很簡單:操作的 `link` 目標也是 MCP 應用程式嵌入目標。將操作公開為正常操作/工具,返回與 `link` 相關的深層連結,並新增 `mcpApp.resource = embedApp(...)
|
|
25
|
+
每當使用者需要 UI 時,將真正的 React 應用程式與 `embedRoute()` 或 `embedApp()` 一起使用。思維模型很簡單:操作的 `link` 目標也是 MCP 應用程式嵌入目標。將操作公開為正常操作/工具,返回與 `link` 相關的深層連結,並新增 `mcpApp.resource = embedApp(...)`,以便有能力的主機行內載入相同的路由,而不是開啟新分頁。當兩者都應該從同一路由建置時,更喜歡 `embedRoute({ title, openLabel, path })`:它是一種方便的包裝器,可以從一次呼叫中返回匹配的 `link` 和 `mcpApp` 欄位,而 `embedApp(...)` 是您直接分配給 `mcpApp.resource` 的較低階別資源。
|
|
26
26
|
|
|
27
27
|
這意味著完整的應用程式嵌入可以執行路由開啟後可以執行的任何操作:檢視或編輯電子郵件草稿、顯示過濾的收件箱/搜尋、開啟行事曆事件或事件草稿、載入擴充功能頁面、檢查完整的分析儀表板或儲存的分析、在幻燈片編輯器中繼續幻燈片或開啟設計專案/編輯器。優先選取 URL/深層連結參數和現有的 `/_agent-native/open` 導覽/應用程式狀態橋,而不是為 MCP 應用程式發明第二個狀態協議。
|
|
28
28
|
|
|
29
|
-
在極少數情況下,正確的目標是渲染一個共用 React 元件而不是整個應用程式 shell 的集中應用程式路徑。 Analytics 的 `/chart`
|
|
29
|
+
在極少數情況下,正確的目標是渲染一個共用 React 元件而不是整個應用程式 shell 的集中應用程式路徑。 Analytics 的 `/chart` 路由就是模型:它在 URL 中采用緊湊的 `SqlPanel` 有效負載,並呈現儀表板使用的相同圖表元件。這仍然是一個應用程式嵌入,而不是一個普通的 HTML MCP 應用程式。透過正常操作 / `open_app({ path, embed: true })` 公開或呼叫它,保持 URL 的確定性,並讓 `embedApp()` 行內渲染該路由。
|
|
30
30
|
|
|
31
31
|
請勿為產品 UI 手寫一次性普通 HTML MCP 應用程式;如果操作需要自訂介面,請首先新增或重用真實的應用程式路由/元件並嵌入該路由。
|
|
32
32
|
|
|
33
|
-
```an-diagram title="MCP 應用程式嵌入往返" summary="
|
|
33
|
+
```an-diagram title="MCP 應用程式嵌入往返" summary="該操作的連結目標也是嵌入目標。有能力的主機行內載入相同的簽名應用程式路由;其他人都回到深層連結。"
|
|
34
34
|
{
|
|
35
|
-
"html": "<div class=\"diagram-embed\"><div class=\"diagram-card\" data-rough><strong>Action</strong><small class=\"diagram-muted\">`link` target = MCP App embed target</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\" data-rough><strong>embedApp()</strong><span class=\"diagram-pill accent\">create_embed_session</span><small class=\"diagram-muted\">mints short-lived embed session</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\" data-rough><strong>/_agent-native/embed/start</strong><small class=\"diagram-muted\">交換一次性 SQL ticket</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\" data-rough><strong>Signed app route</strong><span class=\"diagram-pill ok\">真實 React 路由</span><small class=\"diagram-muted\">short-lived browser session</small></div><div class=\"diagram-fallback\"><span class=\"diagram-pill warn\"
|
|
35
|
+
"html": "<div class=\"diagram-embed\"><div class=\"diagram-card\" data-rough><strong>Action</strong><small class=\"diagram-muted\">`link` target = MCP App embed target</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\" data-rough><strong>embedApp()</strong><span class=\"diagram-pill accent\">create_embed_session</span><small class=\"diagram-muted\">mints short-lived embed session</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\" data-rough><strong>/_agent-native/embed/start</strong><small class=\"diagram-muted\">交換一次性 SQL ticket</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-card\" data-rough><strong>Signed app route</strong><span class=\"diagram-pill ok\">真實 React 路由</span><small class=\"diagram-muted\">short-lived browser session</small></div><div class=\"diagram-fallback\"><span class=\"diagram-pill warn\">不支援 MCP Apps</span><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">↓</div><div class=\"diagram-box\" data-rough>"Open in … →" deep link</div></div></div>",
|
|
36
36
|
"css": ".diagram-embed{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.diagram-embed .diagram-card{display:flex;flex-direction:column;gap:6px;padding:14px 16px;min-width:140px}.diagram-embed .diagram-arrow{font-size:22px;line-height:1}.diagram-embed .diagram-fallback{display:flex;flex-direction:column;align-items:center;gap:6px;margin-inline-start:8px}"
|
|
37
37
|
}
|
|
38
38
|
|
|
@@ -60,85 +60,85 @@ export default defineAction({
|
|
|
60
60
|
"language": "ts",
|
|
61
61
|
"code": "import { embedApp } from \"@agent-native/core\";\n\nexport default defineAction({\n // ...description, schema, run, link...\n mcpApp: {\n resource: embedApp({\n title: \"Review draft\",\n description: \"Open the generated draft in the real Mail compose UI.\",\n iframeTitle: \"Agent-Native Mail\",\n openLabel: \"Open in Mail\",\n }),\n },\n});",
|
|
62
62
|
"annotations": [
|
|
63
|
-
{ "lines": "6", "label": "漸進增強", "note": "`mcpApp.resource`
|
|
63
|
+
{ "lines": "6", "label": "漸進增強", "note": "`mcpApp.resource` 為支援 MCP 應用擴充功能的主機宣傳行內 UI。也保留操作的 `link` 建置器 - 僅 CLI 和較舊的主機會忽略 UI 中繼資料,但仍然需要深層連結。" },
|
|
64
64
|
{ "lines": "7", "label": "Embed = the link target", "note": "`embedApp()` uses the action's `link` as its launch target: it calls `create_embed_session`, exchanges a one-time SQL ticket at `/_agent-native/embed/start`, and navigates the MCP App frame to the same signed app route." },
|
|
65
65
|
{ "lines": "11", "label": "通用後備標籤", "note": "`openLabel` is the visible `\"Open in … →\"` text used as the deep-link escape hatch when a host does not render the inline iframe." }
|
|
66
66
|
]
|
|
67
67
|
}
|
|
68
68
|
```
|
|
69
69
|
|
|
70
|
-
MCP 伺服器通告擴充功能 `io.modelcontextprotocol/ui`,將 `_meta.ui.resourceUri` 和 `_meta["ui/resourceUri"]` 新增到 `tools/list`,並且還發出 ChatGPT 應用 SDK
|
|
70
|
+
MCP 伺服器通告擴充功能 `io.modelcontextprotocol/ui`,將 `_meta.ui.resourceUri` 和 `_meta["ui/resourceUri"]` 新增到 `tools/list`,並且還發出 ChatGPT 應用 SDK 相容性中繼資料(`openai/outputTemplate`、小工具 CSP/描述/可存取性)。它透過 `resources/list`、`resources/templates/list` 和 `resources/read` 使用 MIME `text/html;profile=mcp-app` 公開 HTML。 stdio 代理從即時應用程式轉發這些資源處理常式,因此桌面和 CLI 用戶端可以看到與 HTTP 用戶端相同的資源。
|
|
71
71
|
|
|
72
|
-
即使新增 `mcpApp` 也保留現有的 `link` 建置器。僅 CLI 的用戶端、較舊的主機以及任何不呈現 MCP 應用程式的主機將忽略 UI
|
|
72
|
+
即使新增 `mcpApp` 也保留現有的 `link` 建置器。僅 CLI 的用戶端、較舊的主機以及任何不呈現 MCP 應用程式的主機將忽略 UI 中繼資料,並且仍然需要 `"Open in … →"` 連結。 `embedApp()` 使用該連結作為其啟動目標,呼叫僅應用程式的 `create_embed_session` 幫助程式,在 `/_agent-native/embed/start` 交換一次性 SQL 票證,並透過短暫的瀏覽器工作階段以及同來源擷取的承載回退將 MCP 應用程式框架導覽到目標路由。 `open_app({ app, path, embed: true })` 是用於完整儀表板、過濾收件箱、行事曆草稿檢視、分析和擴充功能頁面等路由的通用逃生口,當完整應用程式是最清晰的審查/編輯介面時,應廣泛使用。
|
|
73
73
|
|
|
74
|
-
`embedApp()` 在資源 CSP 中包含 MCP
|
|
74
|
+
`embedApp()` 在資源 CSP 中包含 MCP 請求來源,以便啟動程式可以取得並在明確請求時建置已簽名的第一方應用程式路由。 Dispatch 將授予的應用程式的確切來源新增到其 `open_app` 資源中,以便單一 Dispatch 連線器可以行內郵件、行事曆、幻燈片和其他內容,而無需允許每個 HTTPS 來源。僅為真正嵌入第三方播放器或載入第三方資源的自訂 MCP 應用傳遞額外的框架或資源域。
|
|
75
75
|
|
|
76
|
-
在這些 `embedApp()` 路由中,`sendToAgentChat()` 是嵌入感知的。自動提交的提示會以 `ui/update-model-context` 加 `ui/message` 的形式中繼到 MCP 主機,因此嵌入式應用程式中的按鈕可以有意從所選應用程式狀態繼續 Claude/ChatGPT
|
|
76
|
+
在這些 `embedApp()` 路由中,`sendToAgentChat()` 是嵌入感知的。自動提交的提示會以 `ui/update-model-context` 加 `ui/message` 的形式中繼到 MCP 主機,因此嵌入式應用程式中的按鈕可以有意從所選應用程式狀態繼續 Claude/ChatGPT 對話。隱藏脈絡作為模型脈絡傳送;可見的使用者轉向僅保留應用程式的提示,這避免了圍繞內部應用程式狀態檔案路徑的可怕的主機同意。 `submit: false` 保留本機預填充/審核行為。
|
|
77
77
|
|
|
78
|
-
## 一流的MCP應用橋 {#mcp-app-bridge}
|
|
78
|
+
## 一流的 MCP 應用橋 {#mcp-app-bridge}
|
|
79
79
|
|
|
80
|
-
MCP
|
|
80
|
+
MCP 應用嵌入是路由嵌入,而不是單獨的迷你產品。 `embedApp()` 從操作的 `link` 目標開始,建立一個短暫的嵌入工作階段,並啟動該簽名的應用程式路由。當主機可以直接水合路由時,標準 MCP 應用程式主機可以自行導覽 MCP 應用程式框架。
|
|
81
81
|
|
|
82
|
-
```an-diagram title="兩條主橋路徑,一條簽名路由" summary="
|
|
82
|
+
```an-diagram title="兩條主橋路徑,一條簽名路由" summary="Claude 移植了水合路由,使用直接ui/_bridge; ChatGPT 透過 window.openai 取得受控 iframe,並透過 postMessage 中繼主機操作。兩者都指向同一個簽名的應用程式路由。"
|
|
83
83
|
{
|
|
84
|
-
"html": "<div class=\"diagram-bridge\"><div class=\"diagram-col\"><div class=\"diagram-card\" data-rough><strong>Claude web</strong><span class=\"diagram-pill accent\">single-frame transplant</span><small class=\"diagram-muted\">在 Claude iframe
|
|
84
|
+
"html": "<div class=\"diagram-bridge\"><div class=\"diagram-col\"><div class=\"diagram-card\" data-rough><strong>Claude web</strong><span class=\"diagram-pill accent\">single-frame transplant</span><small class=\"diagram-muted\">在 Claude iframe 中啟用已簽名的應用 HTML,然後使用直接 `ui/_` 主機橋</small></div><div class=\"diagram-card\" data-rough><strong>ChatGPT web</strong><span class=\"diagram-pill accent\">controlled route iframe</span><small class=\"diagram-muted\">`window.openai`host APIs ·`agentNative.mcpHost.*` postMessage relay</small></div></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-box\" data-rough>Same signed app route<br><small class=\"diagram-muted\">普通路由 + React 元件</small></div></div>",
|
|
85
85
|
"css": ".diagram-bridge{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.diagram-bridge .diagram-col{display:flex;flex-direction:column;gap:12px}.diagram-bridge .diagram-card{display:flex;flex-direction:column;gap:6px;padding:14px 16px;max-width:300px}.diagram-bridge .diagram-arrow{font-size:22px;line-height:1}.diagram-bridge .diagram-box{padding:16px 18px;text-align:center}"
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
```
|
|
89
89
|
|
|
90
|
-
Claude Web
|
|
90
|
+
Claude Web 使用單框架移植路徑:資源檔案取得已簽名的應用程式 HTML 並將其水合到 Claude 的 MCP 應用程式 iframe 中,因為 Claude 無法可靠地允許應用程式擁有的子 iframe 或外部框架導覽。 ChatGPT Web 獲得受控路由 iframe,因為它的 Apps 橋為我們提供了穩定的 `window.openai` 主機 API 和有界高度控制。所有路徑都指向相同的簽名應用程式路由並渲染正常路由和 React 元件。設計嵌入式路由,以便使用相同簽名的 URL 重新載入可以重建相同的檢視。
|
|
91
91
|
|
|
92
|
-
對於同一應用程式 `open_app({ embed: true })
|
|
92
|
+
對於同一應用程式 `open_app({ embed: true })`,框架在原始工具呼叫期間建立嵌入啟動票證,並將簽名的啟動 URL 儲存在隱藏的工具中繼資料中。定制actions可以返回`embedStartUrl`相同的快速路徑; MCP 層將票證 URL 從模型可見的 `structuredContent` 和正常的開放連結中繼資料中剝離。當不存在嵌入啟動 URL 時,資源將回退到僅應用程式的 `create_embed_session` 幫助程式。這使得正式環境主機能夠在直接路由上限制 iframe 發起的工具呼叫,而不會將一次性應用程式工作階段 URL 泄漏到紀錄中。如果使用者在一次性啟動票過期後重新開啟舊聊天,啟動路由將返回一個小重新整理頁面並將 `agentNative.embedSessionExpired` 發布到包裝器; `embedApp()` 清除陳舊的開始 URL,並在仍具有原始應用程式路由的情況下透過 `create_embed_session` 鑄造新票。
|
|
93
93
|
|
|
94
|
-
ChatGPT
|
|
94
|
+
ChatGPT 透過`window.openai`獲得專用的相容路徑:啟動檔案直接讀取`toolInput`、`toolOutput`和`toolResponseMetadata`,然後透過`window.openai.callTool(...)`呼叫`create_embed_session`。標準 MCP 應用程式主機使用 `ui/*` JSON-RPC 橋接器。直接水合路由可以透過主橋助手呼叫`ui/update-model-context`、`ui/message`、`ui/open-link`和`ui/request-display-mode`。 Claude 的移植路由在水合後使用相同的直接`ui/*`主橋。當使用 ChatGPT 或顯式診斷 iframe 路徑時,包裝器透過 `agentNative.mcpHost.*` postMessage 請求中繼同一主機 actions。保持兩條路徑的結果形狀相同:返回集中的 `link` 和簡潔的結構化內容。
|
|
95
95
|
|
|
96
|
-
請勿將標準 `_meta.ui.domain` 設定為應用程式 URL。 MCP Apps 將該欄位視為特定於主機的欄位:Claude 驗證 `{hash}.claudemcpcontent.com` 樣式的沙箱域,而 ChatGPT 使用自己的 `openai/widgetDomain`
|
|
96
|
+
請勿將標準 `_meta.ui.domain` 設定為應用程式 URL。 MCP Apps 將該欄位視為特定於主機的欄位:Claude 驗證 `{hash}.claudemcpcontent.com` 樣式的沙箱域,而 ChatGPT 使用自己的 `openai/widgetDomain` 中繼資料。除非您故意發出特定於主機的值,否則請省略 `ui.domain`;主機將選取預設沙箱來源。
|
|
97
97
|
|
|
98
98
|
擴充功能頁面將其沙箱保留在 MCP 聊天嵌入中,而無需導覽第二個路由 iframe。正常應用程式使用會將 `/_agent-native/extensions/:id/render` 呈現為沙盒子 iframe。在 MCP 聊天橋模式下,框架在路由 iframe 內呈現與沙箱 `srcDoc` 相同的擴充功能檔案,避免主機 `frame-ancestors` / `X-Frame-Options` 故障,同時保留 `sandbox="allow-scripts allow-forms"`。
|
|
99
99
|
|
|
100
|
-
資源 shell 擁有外部主機大小。 `embedApp({ height })`預設為`560px`,將外殼夾到`320-900px`,並為小工具列保留`44px
|
|
100
|
+
資源 shell 擁有外部主機大小。 `embedApp({ height })`預設為`560px`,將外殼夾到`320-900px`,並為小工具列保留`44px`,因此路由視口為`height - 44px`。保持嵌入式應用程式路由內部可滾動,並讓啟動程式報告有界的固有高度而不是完整的檔案高度;否則主機自動調整大小可以將一個普通的應用頁面變成一個很高的聊天產物。更改的 shell 僅影響新的 MCP App 資源和新的工具呼叫。舊的 ChatGPT/Claude 對話框架可以保留以前的資源行為,因此在判斷修復之前使用新的行內渲染驗證大小。
|
|
101
101
|
|
|
102
102
|
### 嵌入模式 {#embed-modes}
|
|
103
103
|
|
|
104
|
-
Claude
|
|
104
|
+
Claude 預設使用單幀移植路徑。在偵錯主機模組載入行為時,您還可以在具有 `embedMode: "transplant"` 或 `frame: "transplant"` 的其他主機中強制使用它。您可以使用 `embedMode: "iframe"`、`renderMode: "iframe"`、`nested: true` 或 `frame: "iframe"` 強制嵌套診斷 iframe。如果 iframe 被阻止,`embedApp()` 會將其替換為開放應用後備:使用者可以重試行內、透過主機開啟新建立的嵌入工作階段,或使用可見路由 URL。保持動作的 `link` 目標本身有用,因為它仍然是通用逃生艙口。
|
|
105
105
|
|
|
106
|
-
|
|
106
|
+
透過 ngrok 測試 Claude 時,請使用正式環境版本(`npx @agent-native/core@latest build` 然後 `npx @agent-native/core@latest start`)或已部署的預覽/正式環境 URL。 Claude 的單幀移植路徑適用於正式環境資產塊;原始 Vite 開發模組(例如 `/app/root.tsx`)可以受到應用程式驗證的保護,並且無法從 Claude 資源來源進行動態匯入。
|
|
107
107
|
|
|
108
|
-
## 主橋API {#host-bridge}
|
|
108
|
+
## 主橋 API {#host-bridge}
|
|
109
109
|
|
|
110
110
|
主橋故意很小:
|
|
111
111
|
|
|
112
112
|
| 模式 | 訊息型別 | 使用它 |
|
|
113
113
|
| --------------------- | ------------------------------------- | --------------------------------- |
|
|
114
|
-
| 直接主機路由 | `ui/update-model-context` |
|
|
114
|
+
| 直接主機路由 | `ui/update-model-context` | 主機模型的隱藏脈絡 |
|
|
115
115
|
| 直接主機路由 | `ui/message` | 將可見使用者轉入主機 |
|
|
116
|
-
| 直接主機路由 | `ui/open-link` |
|
|
116
|
+
| 直接主機路由 | `ui/open-link` | 透過主機開啟外部或應用程式 URL |
|
|
117
117
|
| 直接主機路由 | `ui/request-display-mode` | 請求`inline`、`fullscreen`或`pip` |
|
|
118
|
-
| Claude移植
|
|
118
|
+
| Claude 移植 | `ui/*` | 水合後相同的直接主橋 |
|
|
119
119
|
| ChatGPT / iframe 路由 | `agentNative.mcpHostContext` | 主題、區域設定、主機平台、維度 |
|
|
120
120
|
| ChatGPT / iframe 路由 | `agentNative.embeddedAppReady` | 確認路由iframe載入 |
|
|
121
121
|
| ChatGPT / iframe 路由 | `agentNative.mcpHost.*` / `.response` | 主機請求的包裝中繼 |
|
|
122
122
|
|
|
123
123
|
嵌入式路由可以使用 `@agent-native/core/client` 中的 `updateMcpAppModelContext()`、`openMcpAppHostLink()`、`requestMcpAppDisplayMode()`、`getMcpAppHostContext()` 和 `useMcpAppHostContext()`。 `sendToAgentChat()` 使用完整應用程式嵌入中的相同路徑來自動提交提示。
|
|
124
124
|
|
|
125
|
-
顯示模式是盡力而為。應用內 `McpAppRenderer`
|
|
125
|
+
顯示模式是盡力而為。應用內 `McpAppRenderer` 目前報告行內 Web 主機脈絡和僅行內顯示模式;外部主機可能會接受較大的顯示請求、忽略它們或回覆不支援模式的錯誤。始終保持行內路由可用。
|
|
126
126
|
|
|
127
|
-
##
|
|
127
|
+
## 用戶端支援和快取 {#client-support}
|
|
128
128
|
|
|
129
|
-
目前MCP Apps
|
|
129
|
+
目前 MCP Apps 官方用戶端清單包括 Claude、Claude Desktop、VS Code GitHub Copilot、Goose、Postman、MCPJam、ChatGPT、Cursor;主機支援仍然因計畫、發布管道和用戶端版本而異,因此請檢查 [MCP extension support matrix](https://modelcontextprotocol.io/extensions/client-matrix)。 ChatGPT 自訂 MCP 應用程式可透過 ChatGPT Web 上的商業和企業/教育工作區的開發人員模式使用;請參閱 OpenAI 的 [developer mode and MCP apps](https://help.openai.com/en/articles/12584461-developer-mode-and-full-mcp-apps-in-chatgpt-beta) 註解。
|
|
130
130
|
|
|
131
|
-
Claude Code、Codex 和其他 CLI
|
|
131
|
+
Claude Code、Codex 和其他 CLI/程式碼編輯器用戶端在支援 MCP 應用程式時仍會收到相同的資源和中繼資料,但將它們視為連結輸出主機,除非您已在該確切表面中驗證了行內 iframe 渲染。當主機選取不渲染 iframe 時,深層連結仍然是可靠的後備方案。實際上,每個 Agent-Native 應用程式都應使用以下兩種方式編寫:用於在有能力的主機中進行行內審核/編輯的 MCP 應用程式,以及用於通用往返返回完整應用程式的 `link` 應用程式。
|
|
132
132
|
|
|
133
|
-
Claude 和 ChatGPT
|
|
133
|
+
Claude 和 ChatGPT 可以快取現有自訂連線器的工具和資源中繼資料。更改 MCP App 中繼資料後,使用新的工具呼叫進行驗證;如果主機仍使用舊描述符,請重新連線 Claude 連線器或重新掃描/檢查 ChatGPT 連線器,以便重新整理目錄。如果部署後 Claude 在工具描述符上紀錄了有關 `_meta.ui.csp` 或 `_meta.ui.permissions` 的警告,則該連線器正在使用過時的中繼資料:刪除/重新連線 Claude 連線器並開始新的聊天。
|
|
134
134
|
|
|
135
135
|
## 測試 {#testing}
|
|
136
136
|
|
|
137
|
-
使用`embedApp()`和`McpAppRenderer`週圍的輕量級夾具測試MCP應用程式;它們涵蓋 CSP
|
|
137
|
+
使用`embedApp()`和`McpAppRenderer`週圍的輕量級夾具測試 MCP 應用程式;它們涵蓋 CSP、主機脈絡、應用程式啟動和橋接訊息行為,而無需真正的外部主機。驗證 ChatGPT 或 Claude Web 時,在 shell 更改後觸發新的工具呼叫並測量可見的 iframe。同一對話中先前渲染的幀可能仍會顯示快取的高度或啟動行為。
|
|
138
138
|
|
|
139
139
|
## 相關 {#related}
|
|
140
140
|
|
|
141
|
-
- [External Agents](/docs/external-agents) — 將 Claude、ChatGPT、Codex 和 Cursor 連線到託管應用程式; MCP
|
|
141
|
+
- [External Agents](/docs/external-agents) — 將 Claude、ChatGPT、Codex 和 Cursor 連線到託管應用程式; MCP 應用程式相容性矩陣;目錄層;深層連結。
|
|
142
142
|
- [MCP Protocol](/docs/mcp-protocol) — 自動安裝的 MCP 伺服器、驗證、工具和 `ask-agent`。
|
|
143
143
|
- [Actions](/docs/actions) — `defineAction`,`link` 建置者,`publicAgent`。
|
|
144
144
|
|
|
@@ -1,79 +1,79 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "MCP用戶端"
|
|
3
|
-
description: "
|
|
2
|
+
title: "MCP 用戶端"
|
|
3
|
+
description: "將您的 Agent-Native 應用程式連線到本機 MCP 伺服器(claude-in-chrome、檔案系統、Playwright等),以便代理獲得其工具。"
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# MCP用戶端
|
|
6
|
+
# MCP 用戶端
|
|
7
7
|
|
|
8
|
-
**此頁面:為您的代理提供更多工具。**
|
|
8
|
+
**此頁面:為您的代理提供更多工具。** 將 Agent-Native 應用程式指向 MCP 伺服器(本機或遠端),以便他們的工具顯示在代理聊天中。這是 _client_ 方向,[MCP Protocol](/docs/mcp-protocol) 的鏡像(這使您的應用成為 MCP _server_)。
|
|
9
9
|
|
|
10
10
|
| 如果你想…… | 閱讀 |
|
|
11
11
|
| ------------------------------------------------- | ---------------------------------------- |
|
|
12
12
|
| 將外部代理/主機連線到您的應用 | [External Agents](/docs/external-agents) |
|
|
13
13
|
| 為您的代理提供更多工具(使用其他 MCP 伺服器) | **此頁面** — MCP 用戶端 |
|
|
14
|
-
| 建置在 Claude/ChatGPT
|
|
15
|
-
|
|
|
14
|
+
| 建置在 Claude/ChatGPT 中渲染的行內 UI | [MCP Apps](/docs/mcp-apps) |
|
|
15
|
+
| 較低階別的 MCP 伺服器參考(驗證、工具、自訂掛載) | [MCP Protocol](/docs/mcp-protocol) |
|
|
16
16
|
|
|
17
|
-
|
|
17
|
+
透過一個設定檔案,工作區中的每個 Agent-Native 應用都可以存取電腦上的 MCP 伺服器提供的工具:用於瀏覽器自動化的 `claude-in-chrome`、用於讀取檔案的 `@modelcontextprotocol/server-filesystem`、用於瀏覽器測試的 `@playwright/mcp` 以及任何使用 MCP 的其他工具。
|
|
18
18
|
|
|
19
19
|
您還可以 [connect remote (HTTP) MCP servers at runtime](#remote-via-ui)(個人使用者或整個組織),而無需編輯設定檔案。
|
|
20
20
|
|
|
21
|
-
每個來源都會解析為一個執行時 **MCP 管理器**,並且它學習的每個工具都會以防碰撞 `mcp__<server-id>__<tool>` 前綴登入到代理的工具註冊表中 -
|
|
21
|
+
每個來源都會解析為一個執行時 **MCP 管理器**,並且它學習的每個工具都會以防碰撞 `mcp__<server-id>__<tool>` 前綴登入到代理的工具註冊表中 - 可透過 `tool-search` 進行意圖搜尋。
|
|
22
22
|
|
|
23
|
-
```an-diagram title="用戶端方向:多種來源,一種工具註冊表" summary="設定檔案、環境和執行時 UI
|
|
23
|
+
```an-diagram title="用戶端方向:多種來源,一種工具註冊表" summary="設定檔案、環境和執行時 UI 全部合併到 MCP 管理器中;它的工具與您的應用程式的操作一起顯示為前綴並且可透過工具搜尋。這是伺服器方向的鏡像。"
|
|
24
24
|
{
|
|
25
|
-
"html": "<div class=\"mcp-merge\"><div class=\"diagram-col sources\"><div class=\"diagram-box\" data-rough>Workspace <code>mcp.config.json</code><br><small class=\"diagram-muted\">跨應用共用</small></div><div class=\"diagram-box\" data-rough>應用根 <code>mcp.config.json</code><br><small class=\"diagram-muted\">每個應用覆蓋</small></div><div class=\"diagram-box\" data-rough><code>MCP_SERVERS</code> env<br><small class=\"diagram-muted\">CI / 正式環境</small></div><div class=\"diagram-box\" data-rough
|
|
25
|
+
"html": "<div class=\"mcp-merge\"><div class=\"diagram-col sources\"><div class=\"diagram-box\" data-rough>Workspace <code>mcp.config.json</code><br><small class=\"diagram-muted\">跨應用共用</small></div><div class=\"diagram-box\" data-rough>應用根 <code>mcp.config.json</code><br><small class=\"diagram-muted\">每個應用覆蓋</small></div><div class=\"diagram-box\" data-rough><code>MCP_SERVERS</code> env<br><small class=\"diagram-muted\">CI / 正式環境</small></div><div class=\"diagram-box\" data-rough>透過設定介面遠端設定<br><small class=\"diagram-muted\">personal & org scope</small></div></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-panel center\" data-rough><span class=\"diagram-pill accent\">MCP 管理器</span><small class=\"diagram-muted\">merge · hot-reload</small></div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-col out\"><div class=\"diagram-node\">Agent 工具 registry<br><small class=\"diagram-muted\"><code>mcp__<server-id>__<tool></code></small></div><div class=\"diagram-node\"><code>tool-search</code><br><small class=\"diagram-muted\">按意圖發現</small></div></div></div>",
|
|
26
26
|
"css": ".mcp-merge{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.mcp-merge .diagram-col{display:flex;flex-direction:column;gap:8px}.mcp-merge .center{display:flex;flex-direction:column;align-items:center;gap:4px}.mcp-merge .diagram-arrow{font-size:22px;line-height:1}.mcp-merge code{font-size:.85em}"
|
|
27
27
|
}
|
|
28
28
|
```
|
|
29
29
|
|
|
30
30
|
> 相反的方向 - 使 _your_ 應用程式成為其他主機使用的 MCP 伺服器 - 位於 [MCP Protocol](/docs/mcp-protocol) 和 [External Agents](/docs/external-agents) 中。
|
|
31
31
|
|
|
32
|
-
##
|
|
32
|
+
## 內建瀏覽器和電腦使用功能 {#built-in-capabilities}
|
|
33
33
|
|
|
34
|
-
Agent-
|
|
34
|
+
Agent-Native 包括常見 stdio MCP 伺服器的本機開發切換。
|
|
35
35
|
預設情況下它們處於關閉狀態,並且只能針對每個使用者或每個組織啟用
|
|
36
36
|
當應用程式在本機執行時。跳過正式環境和託管無伺服器執行時
|
|
37
|
-
|
|
37
|
+
即使舊設定行存在,這些內建函式和工作區資源
|
|
38
38
|
樹不會將它們顯示為預設的 `mcp-servers/*.json` 資源。
|
|
39
39
|
|
|
40
40
|
| 能力 | 伺服器 ID | 指令 |
|
|
41
41
|
| ---------------- | ----------------- | ----------------------------------------------------------------------- |
|
|
42
42
|
| Chrome 開發工具 | `chrome-devtools` | `npx -y chrome-devtools-mcp@latest --autoConnect --no-usage-statistics` |
|
|
43
43
|
| Playwright瀏覽器 | `playwright` | `npx -y @playwright/mcp@latest` |
|
|
44
|
-
|
|
|
44
|
+
| 電腦使用 | `computer-use` | `npx -y computer-use-mcp@latest` |
|
|
45
45
|
|
|
46
46
|
一次只能在一個範圍內啟用一種瀏覽器功能。啟用 Chrome DevTools 會停用同一使用者或組織的 Playwright,啟用 Playwright 會停用 Chrome DevTools。
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
電腦使用僅限 macOS。在其他平台上,它被列為不可用,並且即使舊設定行包含它也會被跳過。
|
|
49
49
|
|
|
50
|
-
Chrome DevTools 預設使用 `--autoConnect`。它附加到符合條件的正在執行的 Chrome
|
|
50
|
+
Chrome DevTools 預設使用 `--autoConnect`。它附加到符合條件的正在執行的 Chrome 執行個體;它不會為您建立獨立的瀏覽器設定檔案或登入使用者的一般設定檔案。它需要啟用遠端偵錯的 Chrome 144+。當部署需要特定的偵錯端點時,可以稍後新增手動 `browser-url` 設定。
|
|
51
51
|
|
|
52
|
-
|
|
52
|
+
內建程式保留在框架的 `settings` 表中,位於用於個人切換的 `u:<email>:mcp-builtin-capabilities` 和用於團隊切換的 `o:<orgId>:mcp-builtin-capabilities` 下。啟用後,它們會合併到執行時 MCP 管理器中,其範圍可見性格式與遠端伺服器相同,例如 `mcp__user_<emailhash>_playwright__*` 或 `mcp__org_<orgId>_chrome-devtools__*`。
|
|
53
53
|
|
|
54
54
|
### 面向使用者的設定說明
|
|
55
55
|
|
|
56
|
-
|
|
56
|
+
對敏感的內建程式使用簡潔、明確的設定副本:
|
|
57
57
|
|
|
58
58
|
- **Chrome DevTools** 附加到正在執行的 Chrome 偵錯目標。告訴使用者
|
|
59
59
|
它用於瀏覽器測試和登入驗證,並且它
|
|
60
60
|
可能需要在工具出現之前啟用 Chrome 遠端偵錯。
|
|
61
61
|
- **Playwright** 啟動一個獨立的瀏覽器。推薦它用於確定性
|
|
62
|
-
|
|
63
|
-
-
|
|
62
|
+
當不需要使用者的即時 Chrome 個人資料時進行品質檢查。
|
|
63
|
+
- **電腦使用**可以操作本機應用程式。預設關閉,解釋一下
|
|
64
64
|
macOS 螢幕錄製和輔助功能提示,並在拍攝前詢問
|
|
65
65
|
敏感的 actions,例如購買、財務變化或帳戶更改。
|
|
66
66
|
|
|
67
|
-
###
|
|
67
|
+
### 內建端點
|
|
68
68
|
|
|
69
|
-
| 方法 |
|
|
69
|
+
| 方法 | 路由 | 目的 |
|
|
70
70
|
| ---- | ---------------------------- | --------------------------------------------------------------------- |
|
|
71
|
-
| GET | `/_agent-native/mcp/builtin` |
|
|
71
|
+
| GET | `/_agent-native/mcp/builtin` | 列出內建功能、啟用的範圍、合併的 ID 和即時狀態。 |
|
|
72
72
|
| POST | `/_agent-native/mcp/builtin` | 更新範圍。主體:`{ scope, enabledIds }` 或 `{ scope, id, enabled }`。 |
|
|
73
73
|
|
|
74
|
-
## 新增本機MCP伺服器 {#adding-a-server}
|
|
74
|
+
## 新增本機 MCP 伺服器 {#adding-a-server}
|
|
75
75
|
|
|
76
|
-
|
|
76
|
+
在您的工作區根目錄(或單一應用程式根目錄 - 當兩者都存在時,工作區根目錄獲勝)建立 `mcp.config.json`:
|
|
77
77
|
|
|
78
78
|
```jsonc
|
|
79
79
|
{
|
|
@@ -100,17 +100,17 @@ Chrome DevTools 預設使用 `--autoConnect`。它附加到符合條件的正在
|
|
|
100
100
|
}
|
|
101
101
|
```
|
|
102
102
|
|
|
103
|
-
形狀很小:由伺服器 ID 鍵入的 `servers` 對應,其中每個條目都是 stdio
|
|
103
|
+
形狀很小:由伺服器 ID 鍵入的 `servers` 對應,其中每個條目都是 stdio 啟動程式(`command` + `args` + 可選的 `env`)或遠端 `{ "type": "http", "url", "headers" }` 條目。
|
|
104
104
|
|
|
105
|
-
```an-annotated-code title="mcp.config.json
|
|
105
|
+
```an-annotated-code title="mcp.config.json,帶註解"
|
|
106
106
|
{
|
|
107
107
|
"filename": "mcp.config.json",
|
|
108
108
|
"language": "jsonc",
|
|
109
109
|
"code": "{\n \"$schema\": \"https://agent-native.com/schema/mcp.config.json\",\n \"servers\": {\n \"claude-in-chrome\": {\n \"command\": \"claude-in-chrome-mcp\",\n \"args\": [],\n \"env\": { \"LOG_LEVEL\": \"info\" }\n },\n \"filesystem\": {\n \"command\": \"npx\",\n \"args\": [\"-y\", \"@modelcontextprotocol/server-filesystem@latest\", \"/Users/me/projects\"]\n }\n }\n}",
|
|
110
110
|
"annotations": [
|
|
111
111
|
{ "lines": "3", "label": "伺服器ID", "note": "鍵成為工具前綴:該伺服器的工具在代理的註冊表中顯示為 `mcp__claude-in-chrome__*`,因此它們不會與範本的操作發生衝突。" },
|
|
112
|
-
{ "lines": "4-6", "label": "stdio launcher", "note": "`command` + `args` 生成本機二進制檔案。 Stdio 伺服器旨在用於**本機開發**-
|
|
113
|
-
{ "lines": "6", "label": "
|
|
112
|
+
{ "lines": "4-6", "label": "stdio launcher", "note": "`command` + `args` 生成本機二進制檔案。 Stdio 伺服器旨在用於**本機開發**- 它們在邊緣執行時中是無操作的。" },
|
|
113
|
+
{ "lines": "6", "label": "行程環境", "note": "Optional `env` is passed to the spawned process. Keep secrets out of committed config; prefer `MCP_SERVERS` or the settings UI for tokens." }
|
|
114
114
|
]
|
|
115
115
|
}
|
|
116
116
|
```
|
|
@@ -124,13 +124,13 @@ Chrome DevTools 預設使用 `--autoConnect`。它附加到符合條件的正在
|
|
|
124
124
|
[mcp-client] connected to filesystem: 4 tools
|
|
125
125
|
```
|
|
126
126
|
|
|
127
|
-
這些工具在代理的工具註冊表中註冊,前綴為 `mcp__<server-id>__<tool-name>`,因此它們不會與範本的 actions 發生衝突。它們也包含在 `tool-search`
|
|
127
|
+
這些工具在代理的工具註冊表中註冊,前綴為 `mcp__<server-id>__<tool-name>`,因此它們不會與範本的 actions 發生衝突。它們也包含在 `tool-search` 中,因此代理可以透過意圖發現新連線的 MCP 功能,而不需要預先提供確切的前綴名稱。
|
|
128
128
|
|
|
129
129
|
## 設定優先級 {#precedence}
|
|
130
130
|
|
|
131
131
|
MCP 設定按此順序解析,第一個匹配獲勝:
|
|
132
132
|
|
|
133
|
-
1. **工作空間根 `mcp.config.json`** —
|
|
133
|
+
1. **工作空間根 `mcp.config.json`** — 透過 `package.json` 中的 `agent-native.workspaceCore` 偵測到。在工作區中的每個應用程式之間共用。
|
|
134
134
|
2. **應用程式根 `mcp.config.json`** — 如果您不希望每個應用程式中都提供 MCP 伺服器,則按應用程式覆蓋。
|
|
135
135
|
3. **`MCP_SERVERS` env var** — 具有相同形狀的 JSON 字串,適用於檔案沒有意義的 CI/正式環境。
|
|
136
136
|
|
|
@@ -144,51 +144,51 @@ MCP_SERVERS='{"servers":{"zapier":{"type":"http","url":"https://mcp.example.com/
|
|
|
144
144
|
```
|
|
145
145
|
|
|
146
146
|
`MCP_SERVERS` 被解析為 JSON,因此 `${...}` 預留位置不會擴充功能
|
|
147
|
-
|
|
147
|
+
在字串內。如果您將權杖儲存在另一個秘密中,請先將其展開
|
|
148
148
|
寫入最終的 JSON 值。
|
|
149
149
|
|
|
150
150
|
Stdio MCP 伺服器生成本機二進制檔案,用於本機開發。
|
|
151
|
-
MCP 工具僅在 Node
|
|
151
|
+
MCP 工具僅在 Node 執行時啟用 - Cloudflare Workers 和其他邊緣
|
|
152
152
|
目標默默地跳過 MCP 並繼續應用程式的其餘部分工作
|
|
153
153
|
通常。
|
|
154
154
|
|
|
155
|
-
##
|
|
155
|
+
## 自動偵測:`claude-in-chrome` {#autodetect}
|
|
156
156
|
|
|
157
157
|
如果您**沒有** `mcp.config.json` 並且 `claude-in-chrome-mcp` 二進制檔案位於 `PATH`(或眾所週知的安裝位置 `~/.claude-in-chrome/bin/claude-in-chrome-mcp`)上,則本機代理會將其自動註冊為預設 MCP 伺服器。將 `AGENT_NATIVE_DISABLE_MCP_AUTODETECT=1` 設定為選取退出。
|
|
158
158
|
|
|
159
|
-
這意味著安裝了 claude-in-chrome
|
|
159
|
+
這意味著安裝了 claude-in-chrome 擴充功能的使用者無需更改設定即可獲得對他們開啟的每個 Agent-Native 應用程式的瀏覽器控制。
|
|
160
160
|
|
|
161
|
-
##
|
|
161
|
+
## 透過設定 UI 遠端 MCP 伺服器 {#remote-via-ui}
|
|
162
162
|
|
|
163
|
-
MCP
|
|
163
|
+
MCP(模型脈絡協議)伺服器為您的代理提供新的能力 - 例如連線到 Zapier、Cloudflare、Composio 或您公司的內部工具。連線後,代理可以像使用內建工具一樣使用這些工具。
|
|
164
164
|
|
|
165
|
-
### 如何連線遠端MCP伺服器
|
|
165
|
+
### 如何連線遠端 MCP 伺服器
|
|
166
166
|
|
|
167
167
|
1. **伺服器名稱** - 供您自己參考的簡短標籤(例如“zapier”、“slack-tools”)。
|
|
168
168
|
2. **URL** — MCP 伺服器提供者為您提供的 HTTPS 端點(例如 `https://mcp.zapier.com/s/abc123/mcp`)。這通常可以在提供者的儀表板或整合檔案中找到。
|
|
169
|
-
3. **描述**(可選)-
|
|
170
|
-
4. **標頭** — 伺服器所需的驗證憑證,每行一個。大多數伺服器需要 `Authorization` 標頭。範例:`Authorization: Bearer sk-your-key-here
|
|
169
|
+
3. **描述**(可選)- 關於此伺服器功能的註解。
|
|
170
|
+
4. **標頭** — 伺服器所需的驗證憑證,每行一個。大多數伺服器需要 `Authorization` 標頭。範例:`Authorization: Bearer sk-your-key-here`。提供者的檔案會告訴您在此處放置什麼內容。
|
|
171
171
|
|
|
172
172
|
點選“**測試**”以在儲存之前驗證連線。如果成功,您將看到可用工具的數量。點選“**連線**”進行新增。
|
|
173
173
|
|
|
174
174
|
### 個人與組織範圍
|
|
175
175
|
|
|
176
|
-
|
|
176
|
+
支援兩個範圍:
|
|
177
177
|
|
|
178
|
-
- **個人** —
|
|
179
|
-
- **團隊** —
|
|
178
|
+
- **個人** — 只有登入使用者才能獲得工具。儲存為使用者範圍設定。
|
|
179
|
+
- **團隊** — 活躍組織中的每個人都可以獲得工具。所有者和管理員可以新增;成員只能看到該清單。儲存為組織範圍設定。
|
|
180
180
|
|
|
181
|
-
在正在執行的 MCP 管理器中新增和刪除熱重載 —
|
|
181
|
+
在正在執行的 MCP 管理器中新增和刪除熱重載 — 無需重新啟動行程,也無需重新啟動伺服器。新的 `mcp__<scope>-<name>__*` 工具將在下一條訊息中向代理顯示,並且可透過 `tool-search` 進行搜尋。
|
|
182
182
|
|
|
183
|
-
HTTPS URL 在任何地方都被接受; plain `http://` 在開發過程中僅允許用於 `localhost
|
|
183
|
+
HTTPS URL 在任何地方都被接受; plain `http://` 在開發過程中僅允許用於 `localhost`。可選的驗證作為不記名權杖在每個請求上透過 `Authorization: Bearer …` 傳送。
|
|
184
184
|
|
|
185
|
-
在底層,這些伺服器以 `u:<email>:mcp-servers-remote`(個人)或 `o:<orgId>:mcp-servers-remote`(團隊)鍵儲存在框架的 `settings` 表中,並在啟動時與 `mcp.config.json`
|
|
185
|
+
在底層,這些伺服器以 `u:<email>:mcp-servers-remote`(個人)或 `o:<orgId>:mcp-servers-remote`(團隊)鍵儲存在框架的 `settings` 表中,並在啟動時與 `mcp.config.json` 合併。
|
|
186
186
|
|
|
187
|
-
### HTTP端點
|
|
187
|
+
### HTTP 端點
|
|
188
188
|
|
|
189
|
-
| 方法 |
|
|
189
|
+
| 方法 | 路由 | 目的 |
|
|
190
190
|
| ------ | ----------------------------------------------------- | ------------------------------------------------------------------ |
|
|
191
|
-
| GET | `/_agent-native/mcp/servers` |
|
|
191
|
+
| GET | `/_agent-native/mcp/servers` | 列出目前使用者的個人+組織伺服器的即時狀態。 |
|
|
192
192
|
| POST | `/_agent-native/mcp/servers` | 新增伺服器。身體:`{ scope, name, url, headers?, description? }`。 |
|
|
193
193
|
| DELETE | `/_agent-native/mcp/servers/:id?scope=user\|org` | Remove a server and reconfigure the manager. |
|
|
194
194
|
| POST | `/_agent-native/mcp/servers/:id/test?scope=user\|org` | Dry-run the existing server's connect + list-tools. |
|
|
@@ -196,13 +196,13 @@ HTTPS URL 在任何地方都被接受; plain `http://` 在開發過程中僅
|
|
|
196
196
|
|
|
197
197
|
Stdio 伺服器在 Node 執行時之外仍然是無操作的,但遠端 HTTP MCP 伺服器可以在任何具有 `fetch` 的環境中工作 - 包括桌面正式環境版本。
|
|
198
198
|
|
|
199
|
-
##
|
|
199
|
+
## 透過集線器共用 MCP 伺服器 {#hub}
|
|
200
200
|
|
|
201
|
-
|
|
201
|
+
如果您的工作區執行多個 Agent-Native 應用程式(例如調度+郵件+剪輯),您可以將**一個**應用程式設定為中心,並讓其他應用程式自動拉取其組織範圍的 MCP 伺服器。沒有每個應用程式複製貼上 URL 和不記名權杖。請參閱 [Multi-App Workspace](/docs/multi-app-workspace) 了解使用 Dispatch 工作區 MCP 資源的規範方法。
|
|
202
202
|
|
|
203
203
|
Dispatch 是傳統的中心 - 它已經跨應用進行協調。
|
|
204
204
|
|
|
205
|
-
```an-diagram title="中心模型:一個應用程式為組織範圍的 MCP 伺服器提供服務" summary="Dispatch 擁有組織範圍 MCP
|
|
205
|
+
```an-diagram title="中心模型:一個應用程式為組織範圍的 MCP 伺服器提供服務" summary="Dispatch 擁有組織範圍 MCP 伺服器;消費者應用程式將它們拉取並合併為 mcp__hub_<orgId>_<name>__*。僅共用組織範圍的行 - 個人憑證保持不變。"
|
|
206
206
|
{
|
|
207
207
|
"html": "<div class=\"mcp-hub\"><div class=\"diagram-panel center\" data-rough><span class=\"diagram-pill accent\">Dispatch hub</span><small class=\"diagram-muted\">組織範圍 MCP 伺服器</small><small class=\"diagram-muted\"><code>GET /mcp/hub/servers</code></small></div><div class=\"diagram-col arrows\"><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div><div class=\"diagram-arrow diagram-muted\" aria-hidden=\"true\">→</div></div><div class=\"diagram-col consumers\"><div class=\"diagram-box\" data-rough>Mail<br><small class=\"diagram-muted\"><code>mcp__hub_<orgId>_<name>__*</code></small></div><div class=\"diagram-box\" data-rough>Clips<br><small class=\"diagram-muted\">約每 60 秒 pull + merge</small></div></div></div><p class=\"diagram-muted note\">Bearer-gated by <code>AGENT_NATIVE_MCP_HUB_TOKEN</code>. Personal (user-scope) servers are never re-exposed.</p>",
|
|
208
208
|
"css": ".mcp-hub{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.mcp-hub .center{display:flex;flex-direction:column;align-items:center;gap:4px}.mcp-hub .diagram-col{display:flex;flex-direction:column;gap:10px}.mcp-hub .arrows .diagram-arrow{font-size:22px;line-height:1}.mcp-hub .note{margin:8px 0 0;font-size:.85em}.mcp-hub code{font-size:.85em}"
|
|
@@ -227,12 +227,12 @@ Dispatch 是傳統的中心 - 它已經跨應用進行協調。
|
|
|
227
227
|
將其儲存在 `mcp-servers/<name>.json` 下,型別為 `mcp-server`。所有應用
|
|
228
228
|
資源由每個工作區應用程式載入;選定的資源僅載入
|
|
229
229
|
具有有效調度授權的應用程式。從應用程式解析秘密預留位置
|
|
230
|
-
|
|
231
|
-
使用 `${keys.NAME}
|
|
230
|
+
秘密儲存,因此將原始不記名權杖放入 Dispatch Vault 並引用它們
|
|
231
|
+
使用 `${keys.NAME}`,而不是將它們儲存在資源主體中。
|
|
232
232
|
|
|
233
|
-
|
|
233
|
+
應用程式大約每分鐘重新整理一次合併的 MCP 設定,因此是中央資源
|
|
234
234
|
編輯、授予更改和刪除無需部署即可生效。設定
|
|
235
|
-
`AGENT_NATIVE_MCP_CONFIG_REFRESH_MS=0`
|
|
235
|
+
`AGENT_NATIVE_MCP_CONFIG_REFRESH_MS=0` 停用背景重新整理,或
|
|
236
236
|
將其設定為至少 `5000` 毫秒的值以調整間隔。
|
|
237
237
|
|
|
238
238
|
下面的舊集線器模式對於粗略的“共用每個組織範圍 MCP”仍然有用
|
|
@@ -247,7 +247,7 @@ Dispatch 是傳統的中心 - 它已經跨應用進行協調。
|
|
|
247
247
|
AGENT_NATIVE_MCP_HUB_TOKEN=<a-long-random-secret>
|
|
248
248
|
```
|
|
249
249
|
|
|
250
|
-
Dispatch 現在掛載 `GET /_agent-native/mcp/hub/servers
|
|
250
|
+
Dispatch 現在掛載 `GET /_agent-native/mcp/hub/servers`,它返回儲存在其 `settings` 表中的每個組織範圍 MCP 伺服器,以及完整的 URL + 標頭,並透過權杖進行驗證。
|
|
251
251
|
|
|
252
252
|
### 2。將消費應用程式指向中心
|
|
253
253
|
|
|
@@ -258,9 +258,9 @@ AGENT_NATIVE_MCP_HUB_URL=https://dispatch.acme.com
|
|
|
258
258
|
AGENT_NATIVE_MCP_HUB_TOKEN=<the-same-secret>
|
|
259
259
|
```
|
|
260
260
|
|
|
261
|
-
|
|
261
|
+
啟動時,每個消費者都會拉取集線器的伺服器清單並將其合併到自己的 MCP 管理器中。這些工具對代理來說顯示為 `mcp__hub_<orgId>_<name>__*` — 與消費者自己的本機 `mcp__org_…` 不同,因此不會發生衝突。
|
|
262
262
|
|
|
263
|
-
### 3
|
|
263
|
+
### 3。分享什麼內容
|
|
264
264
|
|
|
265
265
|
僅共用**組織範圍**伺服器。使用者範圍(個人)伺服器由新增它們的使用者保留 - 中心絕不會跨應用程式重新公開個人憑證。
|
|
266
266
|
|
|
@@ -268,16 +268,16 @@ AGENT_NATIVE_MCP_HUB_TOKEN=<the-same-secret>
|
|
|
268
268
|
|
|
269
269
|
### 4。熱重載與重啟
|
|
270
270
|
|
|
271
|
-
本機 UI
|
|
271
|
+
本機 UI 透過 `McpClientManager.reconfigure()` 在每個應用程式中新增熱重載 - 無需重新啟動。集線器來源的伺服器由工作區資源路徑使用的相同定期背景重新整理(大約 60 秒,可透過 `AGENT_NATIVE_MCP_CONFIG_REFRESH_MS` 調整或停用)來取得,因此在 Dispatch 中所做的更改會在大約一分鐘內傳播到所有消費者應用程式,而無需重新啟動。此外,消費者應用程式中的任何本機突變都會立即觸發該應用程式的重新設定。
|
|
272
272
|
|
|
273
273
|
### 端點摘要
|
|
274
274
|
|
|
275
|
-
| 方法 |
|
|
275
|
+
| 方法 | 路由 | 目的 |
|
|
276
276
|
| ---- | -------------------------------- | -------------------------------------------------------------------------------------------------- |
|
|
277
277
|
| GET | `/_agent-native/mcp/hub/servers` | 為所有組織範圍的伺服器提供完整的信用(不記名門控,僅在設定 `AGENT_NATIVE_MCP_HUB_TOKEN` 時安裝)。 |
|
|
278
|
-
| GET | `/_agent-native/mcp/hub/status` | 返回設定UI卡的`{ serving, consuming, hubUrl }`。
|
|
278
|
+
| GET | `/_agent-native/mcp/hub/status` | 返回設定 UI 卡的`{ serving, consuming, hubUrl }`。 |
|
|
279
279
|
|
|
280
|
-
##
|
|
280
|
+
## 狀態路由 {#status-route}
|
|
281
281
|
|
|
282
282
|
每個應用程式都公開 `GET /_agent-native/mcp/status` 用於工具和入門:
|
|
283
283
|
|
|
@@ -313,7 +313,7 @@ AGENT_NATIVE_MCP_HUB_TOKEN=<the-same-secret>
|
|
|
313
313
|
}
|
|
314
314
|
```
|
|
315
315
|
|
|
316
|
-
|
|
316
|
+
使用它來建置“偵測到 claude-in-chrome - 您的代理現在可以驅動 Chrome”入門提示,或偵錯 MCP 連線問題。
|
|
317
317
|
|
|
318
318
|
## 故障模式 {#failures}
|
|
319
319
|
|
|
@@ -321,10 +321,10 @@ AGENT_NATIVE_MCP_HUB_TOKEN=<the-same-secret>
|
|
|
321
321
|
|
|
322
322
|
- 設定錯誤的 `command` → 伺服器被跳過,其錯誤出現在 `errors.<server-id>` 下的 `/mcp/status` 中,而其他所有伺服器繼續工作。
|
|
323
323
|
- `node_modules` 中缺少 MCP SDK → 所有 MCP 功能都會被跳過並出現警告;代理聊天可以使用零 MCP 工具繼續工作。
|
|
324
|
-
-
|
|
324
|
+
- 在邊緣執行時中執行 → MCP 用戶端是無操作的。
|
|
325
325
|
|
|
326
|
-
|
|
326
|
+
Agent-Native 將始終啟動;損壞的 MCP 設定僅意味著工具更少。
|
|
327
327
|
|
|
328
328
|
## 安全 {#security}
|
|
329
329
|
|
|
330
|
-
MCP
|
|
330
|
+
MCP 工具在您的電腦上執行,具有產生的行程具有的任何權限。像對待您願意讓代理驅動的任何其他可執行檔案清單一樣對待 `mcp.config.json`。來自 MCP 伺服器的工具出現在代理的工具使用迴圈中,就像您範本自己的 actions 一樣,因此請確保您信任您設定的每個伺服器。
|