@assistant-ui/mcp-docs-server 0.2.2 → 0.3.0

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.
Files changed (459) hide show
  1. package/README.md +16 -43
  2. package/dist/index.d.ts +2 -3
  3. package/dist/index.d.ts.map +1 -1
  4. package/dist/index.js +3 -91
  5. package/dist/index.js.map +1 -1
  6. package/dist/proxy.d.ts +9 -0
  7. package/dist/proxy.d.ts.map +1 -0
  8. package/dist/proxy.js +76 -0
  9. package/dist/proxy.js.map +1 -0
  10. package/package.json +9 -13
  11. package/src/index.ts +3 -115
  12. package/src/proxy.test.ts +250 -0
  13. package/src/proxy.ts +111 -0
  14. package/.docs/organized/code-examples/waterfall.md +0 -807
  15. package/.docs/organized/code-examples/with-a2a.md +0 -674
  16. package/.docs/organized/code-examples/with-ag-ui.md +0 -552
  17. package/.docs/organized/code-examples/with-ai-sdk-v7.md +0 -465
  18. package/.docs/organized/code-examples/with-artifacts.md +0 -814
  19. package/.docs/organized/code-examples/with-assistant-transport.md +0 -575
  20. package/.docs/organized/code-examples/with-browser-extension.md +0 -371
  21. package/.docs/organized/code-examples/with-chain-of-thought.md +0 -960
  22. package/.docs/organized/code-examples/with-cloud-standalone.md +0 -681
  23. package/.docs/organized/code-examples/with-cloud.md +0 -438
  24. package/.docs/organized/code-examples/with-custom-thread-list.md +0 -568
  25. package/.docs/organized/code-examples/with-elevenlabs-conversational.md +0 -526
  26. package/.docs/organized/code-examples/with-elevenlabs-scribe.md +0 -696
  27. package/.docs/organized/code-examples/with-eve.md +0 -404
  28. package/.docs/organized/code-examples/with-expo.md +0 -2063
  29. package/.docs/organized/code-examples/with-external-store.md +0 -420
  30. package/.docs/organized/code-examples/with-ffmpeg.md +0 -828
  31. package/.docs/organized/code-examples/with-generative-ui.md +0 -1812
  32. package/.docs/organized/code-examples/with-google-adk.md +0 -367
  33. package/.docs/organized/code-examples/with-heat-graph.md +0 -304
  34. package/.docs/organized/code-examples/with-image-generation.md +0 -462
  35. package/.docs/organized/code-examples/with-interactables.md +0 -732
  36. package/.docs/organized/code-examples/with-langchain.md +0 -445
  37. package/.docs/organized/code-examples/with-langgraph.md +0 -854
  38. package/.docs/organized/code-examples/with-livekit.md +0 -642
  39. package/.docs/organized/code-examples/with-mcp.md +0 -780
  40. package/.docs/organized/code-examples/with-nuxt.md +0 -2428
  41. package/.docs/organized/code-examples/with-opencode.md +0 -1974
  42. package/.docs/organized/code-examples/with-openui.md +0 -449
  43. package/.docs/organized/code-examples/with-pi.md +0 -2083
  44. package/.docs/organized/code-examples/with-react-hook-form.md +0 -724
  45. package/.docs/organized/code-examples/with-react-ink-web.md +0 -690
  46. package/.docs/organized/code-examples/with-react-ink.md +0 -472
  47. package/.docs/organized/code-examples/with-react-router.md +0 -935
  48. package/.docs/organized/code-examples/with-resumable-stream.md +0 -667
  49. package/.docs/organized/code-examples/with-store.md +0 -679
  50. package/.docs/organized/code-examples/with-svelte.md +0 -415
  51. package/.docs/organized/code-examples/with-sveltekit.md +0 -1061
  52. package/.docs/organized/code-examples/with-tanstack.md +0 -811
  53. package/.docs/organized/code-examples/with-tap-runtime.md +0 -812
  54. package/.docs/organized/code-examples/with-virtualized-thread.md +0 -680
  55. package/.docs/organized/code-examples/with-vue.md +0 -408
  56. package/.docs/raw/docs/(docs)/architecture.mdx +0 -146
  57. package/.docs/raw/docs/(docs)/base-ui.mdx +0 -39
  58. package/.docs/raw/docs/(docs)/cli.mdx +0 -542
  59. package/.docs/raw/docs/(docs)/devtools.mdx +0 -79
  60. package/.docs/raw/docs/(docs)/index.mdx +0 -21
  61. package/.docs/raw/docs/(docs)/installation.mdx +0 -483
  62. package/.docs/raw/docs/(docs)/llm.mdx +0 -211
  63. package/.docs/raw/docs/(docs)/rtl.mdx +0 -78
  64. package/.docs/raw/docs/(reference)/api-reference/adapters/attachments.mdx +0 -36
  65. package/.docs/raw/docs/(reference)/api-reference/adapters/feedback.mdx +0 -20
  66. package/.docs/raw/docs/(reference)/api-reference/adapters/index.mdx +0 -34
  67. package/.docs/raw/docs/(reference)/api-reference/adapters/model.mdx +0 -44
  68. package/.docs/raw/docs/(reference)/api-reference/adapters/persistence.mdx +0 -59
  69. package/.docs/raw/docs/(reference)/api-reference/adapters/runtime.mdx +0 -20
  70. package/.docs/raw/docs/(reference)/api-reference/adapters/suggestions.mdx +0 -20
  71. package/.docs/raw/docs/(reference)/api-reference/context-providers/assistant-runtime-provider.mdx +0 -84
  72. package/.docs/raw/docs/(reference)/api-reference/context-providers/index.mdx +0 -22
  73. package/.docs/raw/docs/(reference)/api-reference/context-providers/scoped-providers.mdx +0 -64
  74. package/.docs/raw/docs/(reference)/api-reference/external-store/index.mdx +0 -22
  75. package/.docs/raw/docs/(reference)/api-reference/external-store/message-conversion.mdx +0 -52
  76. package/.docs/raw/docs/(reference)/api-reference/external-store/runtime.mdx +0 -49
  77. package/.docs/raw/docs/(reference)/api-reference/generative-ui/a2ui.mdx +0 -40
  78. package/.docs/raw/docs/(reference)/api-reference/generative-ui/actions.mdx +0 -56
  79. package/.docs/raw/docs/(reference)/api-reference/generative-ui/components.mdx +0 -86
  80. package/.docs/raw/docs/(reference)/api-reference/generative-ui/index.mdx +0 -39
  81. package/.docs/raw/docs/(reference)/api-reference/generative-ui/json-generative-ui.mdx +0 -42
  82. package/.docs/raw/docs/(reference)/api-reference/generative-ui/rendering.mdx +0 -84
  83. package/.docs/raw/docs/(reference)/api-reference/generative-ui/slack.mdx +0 -85
  84. package/.docs/raw/docs/(reference)/api-reference/generative-ui/spec.mdx +0 -45
  85. package/.docs/raw/docs/(reference)/api-reference/generative-ui/teams.mdx +0 -93
  86. package/.docs/raw/docs/(reference)/api-reference/generative-ui/tokens.mdx +0 -62
  87. package/.docs/raw/docs/(reference)/api-reference/hooks/composer-triggers.mdx +0 -129
  88. package/.docs/raw/docs/(reference)/api-reference/hooks/index.mdx +0 -31
  89. package/.docs/raw/docs/(reference)/api-reference/hooks/model-context.mdx +0 -34
  90. package/.docs/raw/docs/(reference)/api-reference/hooks/primitives.mdx +0 -350
  91. package/.docs/raw/docs/(reference)/api-reference/hooks/runtimes.mdx +0 -28
  92. package/.docs/raw/docs/(reference)/api-reference/hooks/state.mdx +0 -97
  93. package/.docs/raw/docs/(reference)/api-reference/integrations/cloud-ai-sdk.mdx +0 -24
  94. package/.docs/raw/docs/(reference)/api-reference/integrations/eve.mdx +0 -97
  95. package/.docs/raw/docs/(reference)/api-reference/integrations/index.mdx +0 -28
  96. package/.docs/raw/docs/(reference)/api-reference/integrations/react-ai-sdk.mdx +0 -200
  97. package/.docs/raw/docs/(reference)/api-reference/integrations/react-data-stream.mdx +0 -37
  98. package/.docs/raw/docs/(reference)/api-reference/model-context/context.mdx +0 -50
  99. package/.docs/raw/docs/(reference)/api-reference/model-context/index.mdx +0 -22
  100. package/.docs/raw/docs/(reference)/api-reference/model-context/registry.mdx +0 -20
  101. package/.docs/raw/docs/(reference)/api-reference/overview.mdx +0 -566
  102. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar-more.mdx +0 -152
  103. package/.docs/raw/docs/(reference)/api-reference/primitives/action-bar.mdx +0 -239
  104. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-if.mdx +0 -208
  105. package/.docs/raw/docs/(reference)/api-reference/primitives/assistant-modal.mdx +0 -108
  106. package/.docs/raw/docs/(reference)/api-reference/primitives/attachment.mdx +0 -99
  107. package/.docs/raw/docs/(reference)/api-reference/primitives/branch-picker.mdx +0 -145
  108. package/.docs/raw/docs/(reference)/api-reference/primitives/chain-of-thought.mdx +0 -82
  109. package/.docs/raw/docs/(reference)/api-reference/primitives/composer.mdx +0 -619
  110. package/.docs/raw/docs/(reference)/api-reference/primitives/composition.mdx +0 -22
  111. package/.docs/raw/docs/(reference)/api-reference/primitives/error.mdx +0 -65
  112. package/.docs/raw/docs/(reference)/api-reference/primitives/index.mdx +0 -73
  113. package/.docs/raw/docs/(reference)/api-reference/primitives/message-part.mdx +0 -117
  114. package/.docs/raw/docs/(reference)/api-reference/primitives/message.mdx +0 -339
  115. package/.docs/raw/docs/(reference)/api-reference/primitives/queue-item.mdx +0 -77
  116. package/.docs/raw/docs/(reference)/api-reference/primitives/selection-toolbar.mdx +0 -88
  117. package/.docs/raw/docs/(reference)/api-reference/primitives/suggestion.mdx +0 -81
  118. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item-more.mdx +0 -129
  119. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list-item.mdx +0 -138
  120. package/.docs/raw/docs/(reference)/api-reference/primitives/thread-list.mdx +0 -122
  121. package/.docs/raw/docs/(reference)/api-reference/primitives/thread.mdx +0 -289
  122. package/.docs/raw/docs/(reference)/api-reference/runtimes/assistant-runtime.mdx +0 -20
  123. package/.docs/raw/docs/(reference)/api-reference/runtimes/attachment-runtime.mdx +0 -24
  124. package/.docs/raw/docs/(reference)/api-reference/runtimes/composer-runtime.mdx +0 -32
  125. package/.docs/raw/docs/(reference)/api-reference/runtimes/index.mdx +0 -43
  126. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-part-runtime.mdx +0 -43
  127. package/.docs/raw/docs/(reference)/api-reference/runtimes/message-runtime.mdx +0 -24
  128. package/.docs/raw/docs/(reference)/api-reference/runtimes/queue-state.mdx +0 -20
  129. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-item-runtime.mdx +0 -24
  130. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-list-runtime.mdx +0 -24
  131. package/.docs/raw/docs/(reference)/api-reference/runtimes/thread-runtime.mdx +0 -36
  132. package/.docs/raw/docs/(reference)/api-reference/tools/component-tools.mdx +0 -85
  133. package/.docs/raw/docs/(reference)/api-reference/tools/index.mdx +0 -45
  134. package/.docs/raw/docs/(reference)/api-reference/tools/interactables-legacy.mdx +0 -55
  135. package/.docs/raw/docs/(reference)/api-reference/tools/interactables.mdx +0 -151
  136. package/.docs/raw/docs/(reference)/api-reference/tools/rendering.mdx +0 -106
  137. package/.docs/raw/docs/(reference)/api-reference/tools/status.mdx +0 -62
  138. package/.docs/raw/docs/(reference)/api-reference/tools/toolkits.mdx +0 -178
  139. package/.docs/raw/docs/(reference)/api-reference/transport/assistant-transport.mdx +0 -48
  140. package/.docs/raw/docs/(reference)/api-reference/transport/frame.mdx +0 -62
  141. package/.docs/raw/docs/(reference)/api-reference/transport/index.mdx +0 -22
  142. package/.docs/raw/docs/(reference)/api-reference/utilities/index.mdx +0 -19
  143. package/.docs/raw/docs/(reference)/api-reference/utilities/miscellaneous.mdx +0 -149
  144. package/.docs/raw/docs/(reference)/api-reference/voice/index.mdx +0 -22
  145. package/.docs/raw/docs/(reference)/api-reference/voice/session.mdx +0 -54
  146. package/.docs/raw/docs/(reference)/api-reference/voice/speech-dictation.mdx +0 -36
  147. package/.docs/raw/docs/cloud/ai-sdk-assistant-ui.mdx +0 -527
  148. package/.docs/raw/docs/cloud/ai-sdk.mdx +0 -602
  149. package/.docs/raw/docs/cloud/authorization.mdx +0 -252
  150. package/.docs/raw/docs/cloud/index.mdx +0 -46
  151. package/.docs/raw/docs/cloud/langgraph.mdx +0 -554
  152. package/.docs/raw/docs/copilots/assistant-frame.mdx +0 -400
  153. package/.docs/raw/docs/copilots/make-assistant-visible.mdx +0 -82
  154. package/.docs/raw/docs/copilots/model-context.mdx +0 -156
  155. package/.docs/raw/docs/copilots/motivation.mdx +0 -202
  156. package/.docs/raw/docs/copilots/use-assistant-instructions.mdx +0 -64
  157. package/.docs/raw/docs/guides/attachments.mdx +0 -619
  158. package/.docs/raw/docs/guides/branching.mdx +0 -76
  159. package/.docs/raw/docs/guides/chain-of-thought.mdx +0 -164
  160. package/.docs/raw/docs/guides/chatgpt-subscription.mdx +0 -108
  161. package/.docs/raw/docs/guides/context-api.mdx +0 -619
  162. package/.docs/raw/docs/guides/dictation.mdx +0 -298
  163. package/.docs/raw/docs/guides/editing.mdx +0 -102
  164. package/.docs/raw/docs/guides/electron.mdx +0 -369
  165. package/.docs/raw/docs/guides/headless-composer-input.mdx +0 -113
  166. package/.docs/raw/docs/guides/image-generation.mdx +0 -74
  167. package/.docs/raw/docs/guides/index.mdx +0 -117
  168. package/.docs/raw/docs/guides/input-history.mdx +0 -55
  169. package/.docs/raw/docs/guides/latex.mdx +0 -158
  170. package/.docs/raw/docs/guides/mentions.mdx +0 -575
  171. package/.docs/raw/docs/guides/message-timing.mdx +0 -209
  172. package/.docs/raw/docs/guides/quoting.mdx +0 -169
  173. package/.docs/raw/docs/guides/resumable-stream-deployment.mdx +0 -212
  174. package/.docs/raw/docs/guides/resumable-stream-stores.mdx +0 -152
  175. package/.docs/raw/docs/guides/resumable-streams.mdx +0 -292
  176. package/.docs/raw/docs/guides/slash-commands.mdx +0 -358
  177. package/.docs/raw/docs/guides/speech.mdx +0 -172
  178. package/.docs/raw/docs/guides/suggestions.mdx +0 -384
  179. package/.docs/raw/docs/guides/virtualization.mdx +0 -133
  180. package/.docs/raw/docs/guides/voice.mdx +0 -310
  181. package/.docs/raw/docs/ink/adapters.mdx +0 -99
  182. package/.docs/raw/docs/ink/custom-backend.mdx +0 -254
  183. package/.docs/raw/docs/ink/hooks.mdx +0 -469
  184. package/.docs/raw/docs/ink/index.mdx +0 -236
  185. package/.docs/raw/docs/ink/migration.mdx +0 -138
  186. package/.docs/raw/docs/ink/primitives.mdx +0 -1259
  187. package/.docs/raw/docs/integrations/attachments/custom-adapter.mdx +0 -528
  188. package/.docs/raw/docs/integrations/auth/better-auth.mdx +0 -188
  189. package/.docs/raw/docs/integrations/auth/clerk.mdx +0 -166
  190. package/.docs/raw/docs/integrations/auth/next-auth.mdx +0 -191
  191. package/.docs/raw/docs/integrations/frameworks/ai-sdk.mdx +0 -88
  192. package/.docs/raw/docs/integrations/frameworks/cloudflare-agents/overview.mdx +0 -282
  193. package/.docs/raw/docs/integrations/frameworks/mastra/full-stack.mdx +0 -188
  194. package/.docs/raw/docs/integrations/frameworks/mastra/overview.mdx +0 -57
  195. package/.docs/raw/docs/integrations/frameworks/mastra/separate-server.mdx +0 -201
  196. package/.docs/raw/docs/integrations/gateways/index.mdx +0 -162
  197. package/.docs/raw/docs/integrations/index.mdx +0 -178
  198. package/.docs/raw/docs/integrations/observability/helicone.mdx +0 -129
  199. package/.docs/raw/docs/integrations/observability/langfuse.mdx +0 -161
  200. package/.docs/raw/docs/integrations/observability/langsmith.mdx +0 -151
  201. package/.docs/raw/docs/integrations/persistence/custom-adapter.mdx +0 -773
  202. package/.docs/raw/docs/migrations/deprecation-policy.mdx +0 -42
  203. package/.docs/raw/docs/migrations/index.mdx +0 -50
  204. package/.docs/raw/docs/migrations/react-compatibility.mdx +0 -74
  205. package/.docs/raw/docs/migrations/react-langgraph-v0-7.mdx +0 -328
  206. package/.docs/raw/docs/migrations/toolkit-tools.mdx +0 -236
  207. package/.docs/raw/docs/migrations/v0-11.mdx +0 -172
  208. package/.docs/raw/docs/migrations/v0-12.mdx +0 -302
  209. package/.docs/raw/docs/migrations/v0-14.mdx +0 -297
  210. package/.docs/raw/docs/migrations/v0-15.mdx +0 -270
  211. package/.docs/raw/docs/primitives/action-bar.mdx +0 -352
  212. package/.docs/raw/docs/primitives/assistant-modal.mdx +0 -216
  213. package/.docs/raw/docs/primitives/attachment.mdx +0 -217
  214. package/.docs/raw/docs/primitives/branch-picker.mdx +0 -222
  215. package/.docs/raw/docs/primitives/chain-of-thought.mdx +0 -315
  216. package/.docs/raw/docs/primitives/composer.mdx +0 -659
  217. package/.docs/raw/docs/primitives/error.mdx +0 -142
  218. package/.docs/raw/docs/primitives/index.mdx +0 -99
  219. package/.docs/raw/docs/primitives/message.mdx +0 -618
  220. package/.docs/raw/docs/primitives/selection-toolbar.mdx +0 -191
  221. package/.docs/raw/docs/primitives/suggestion.mdx +0 -254
  222. package/.docs/raw/docs/primitives/thread-list.mdx +0 -467
  223. package/.docs/raw/docs/primitives/thread.mdx +0 -509
  224. package/.docs/raw/docs/react-native/adapters.mdx +0 -94
  225. package/.docs/raw/docs/react-native/custom-backend.mdx +0 -207
  226. package/.docs/raw/docs/react-native/hooks.mdx +0 -339
  227. package/.docs/raw/docs/react-native/index.mdx +0 -289
  228. package/.docs/raw/docs/react-native/migration.mdx +0 -142
  229. package/.docs/raw/docs/react-native/primitives.mdx +0 -839
  230. package/.docs/raw/docs/runtimes/a2a/client-and-hooks.mdx +0 -399
  231. package/.docs/raw/docs/runtimes/a2a/overview.mdx +0 -60
  232. package/.docs/raw/docs/runtimes/a2a/quickstart.mdx +0 -216
  233. package/.docs/raw/docs/runtimes/ag-ui/agent-state.mdx +0 -124
  234. package/.docs/raw/docs/runtimes/ag-ui/overview.mdx +0 -70
  235. package/.docs/raw/docs/runtimes/ag-ui/quickstart.mdx +0 -243
  236. package/.docs/raw/docs/runtimes/ag-ui/runtime-options.mdx +0 -255
  237. package/.docs/raw/docs/runtimes/ai-sdk/overview.mdx +0 -61
  238. package/.docs/raw/docs/runtimes/ai-sdk/v4-legacy.mdx +0 -122
  239. package/.docs/raw/docs/runtimes/ai-sdk/v5-legacy.mdx +0 -135
  240. package/.docs/raw/docs/runtimes/ai-sdk/v6-legacy.mdx +0 -636
  241. package/.docs/raw/docs/runtimes/ai-sdk/v7.mdx +0 -716
  242. package/.docs/raw/docs/runtimes/claude-managed-agents.mdx +0 -118
  243. package/.docs/raw/docs/runtimes/concepts/adapters.mdx +0 -265
  244. package/.docs/raw/docs/runtimes/concepts/architecture.mdx +0 -167
  245. package/.docs/raw/docs/runtimes/concepts/stability.mdx +0 -68
  246. package/.docs/raw/docs/runtimes/concepts/threads.mdx +0 -513
  247. package/.docs/raw/docs/runtimes/custom/assistant-transport.mdx +0 -763
  248. package/.docs/raw/docs/runtimes/custom/data-stream.mdx +0 -339
  249. package/.docs/raw/docs/runtimes/custom/external-store.mdx +0 -957
  250. package/.docs/raw/docs/runtimes/custom/local-runtime.mdx +0 -902
  251. package/.docs/raw/docs/runtimes/custom/overview.mdx +0 -71
  252. package/.docs/raw/docs/runtimes/eve/overview.mdx +0 -151
  253. package/.docs/raw/docs/runtimes/eve/quickstart.mdx +0 -192
  254. package/.docs/raw/docs/runtimes/google-adk/api.mdx +0 -256
  255. package/.docs/raw/docs/runtimes/google-adk/hooks.mdx +0 -784
  256. package/.docs/raw/docs/runtimes/google-adk/overview.mdx +0 -69
  257. package/.docs/raw/docs/runtimes/google-adk/quickstart.mdx +0 -229
  258. package/.docs/raw/docs/runtimes/langchain.mdx +0 -901
  259. package/.docs/raw/docs/runtimes/langgraph/agent-state.mdx +0 -181
  260. package/.docs/raw/docs/runtimes/langgraph/generative-ui.mdx +0 -305
  261. package/.docs/raw/docs/runtimes/langgraph/interrupts.mdx +0 -104
  262. package/.docs/raw/docs/runtimes/langgraph/overview.mdx +0 -84
  263. package/.docs/raw/docs/runtimes/langgraph/quickstart.mdx +0 -496
  264. package/.docs/raw/docs/runtimes/langgraph/streaming.mdx +0 -144
  265. package/.docs/raw/docs/runtimes/langgraph/threads.mdx +0 -113
  266. package/.docs/raw/docs/runtimes/langgraph/tutorial/introduction.mdx +0 -29
  267. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-1.mdx +0 -93
  268. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-2.mdx +0 -347
  269. package/.docs/raw/docs/runtimes/langgraph/tutorial/part-3.mdx +0 -393
  270. package/.docs/raw/docs/runtimes/opencode/hooks.mdx +0 -194
  271. package/.docs/raw/docs/runtimes/opencode/overview.mdx +0 -58
  272. package/.docs/raw/docs/runtimes/opencode/quickstart.mdx +0 -119
  273. package/.docs/raw/docs/runtimes/pick-a-runtime.mdx +0 -133
  274. package/.docs/raw/docs/tools/a2ui.mdx +0 -107
  275. package/.docs/raw/docs/tools/backend.mdx +0 -147
  276. package/.docs/raw/docs/tools/defining-tools.mdx +0 -574
  277. package/.docs/raw/docs/tools/dynamic-tools.mdx +0 -112
  278. package/.docs/raw/docs/tools/generative-ui-primitive.mdx +0 -180
  279. package/.docs/raw/docs/tools/generative-ui-slack.mdx +0 -167
  280. package/.docs/raw/docs/tools/generative-ui-teams.mdx +0 -160
  281. package/.docs/raw/docs/tools/generative-ui.mdx +0 -322
  282. package/.docs/raw/docs/tools/index.mdx +0 -72
  283. package/.docs/raw/docs/tools/interactables.mdx +0 -1084
  284. package/.docs/raw/docs/tools/mcp-apps.mdx +0 -346
  285. package/.docs/raw/docs/tools/mcp.mdx +0 -466
  286. package/.docs/raw/docs/tools/multi-agent.mdx +0 -237
  287. package/.docs/raw/docs/tools/openui.mdx +0 -175
  288. package/.docs/raw/docs/tools/tool-ui.mdx +0 -1008
  289. package/.docs/raw/docs/tools/user-managed-mcp.mdx +0 -428
  290. package/.docs/raw/docs/ui/accordion.mdx +0 -266
  291. package/.docs/raw/docs/ui/assistant-modal.mdx +0 -166
  292. package/.docs/raw/docs/ui/assistant-sidebar.mdx +0 -89
  293. package/.docs/raw/docs/ui/attachment.mdx +0 -259
  294. package/.docs/raw/docs/ui/badge.mdx +0 -150
  295. package/.docs/raw/docs/ui/composer-trigger-popover.mdx +0 -212
  296. package/.docs/raw/docs/ui/context-display.mdx +0 -148
  297. package/.docs/raw/docs/ui/diff-viewer.mdx +0 -280
  298. package/.docs/raw/docs/ui/directive-text.mdx +0 -114
  299. package/.docs/raw/docs/ui/dot-matrix.mdx +0 -133
  300. package/.docs/raw/docs/ui/file.mdx +0 -159
  301. package/.docs/raw/docs/ui/follow-up-suggestions.mdx +0 -82
  302. package/.docs/raw/docs/ui/image.mdx +0 -102
  303. package/.docs/raw/docs/ui/markdown.mdx +0 -64
  304. package/.docs/raw/docs/ui/mcp-config.mdx +0 -107
  305. package/.docs/raw/docs/ui/mermaid.mdx +0 -92
  306. package/.docs/raw/docs/ui/message-timing.mdx +0 -93
  307. package/.docs/raw/docs/ui/model-selector.mdx +0 -455
  308. package/.docs/raw/docs/ui/number-roll.mdx +0 -154
  309. package/.docs/raw/docs/ui/part-grouping.mdx +0 -614
  310. package/.docs/raw/docs/ui/quote.mdx +0 -211
  311. package/.docs/raw/docs/ui/reasoning.mdx +0 -186
  312. package/.docs/raw/docs/ui/scrollbar.mdx +0 -77
  313. package/.docs/raw/docs/ui/select.mdx +0 -254
  314. package/.docs/raw/docs/ui/sources.mdx +0 -177
  315. package/.docs/raw/docs/ui/streamdown.mdx +0 -392
  316. package/.docs/raw/docs/ui/syntax-highlighting.mdx +0 -205
  317. package/.docs/raw/docs/ui/tabs.mdx +0 -271
  318. package/.docs/raw/docs/ui/thread-list.mdx +0 -372
  319. package/.docs/raw/docs/ui/thread.mdx +0 -512
  320. package/.docs/raw/docs/ui/tool-fallback.mdx +0 -127
  321. package/.docs/raw/docs/ui/tool-group.mdx +0 -240
  322. package/.docs/raw/docs/ui/voice.mdx +0 -173
  323. package/.docs/raw/docs/utilities/heat-graph.mdx +0 -237
  324. package/.docs/raw/docs/utilities/react-o11y.mdx +0 -362
  325. package/.docs/raw/docs/utilities/tw-shimmer.mdx +0 -212
  326. package/dist/constants.d.ts +0 -14
  327. package/dist/constants.d.ts.map +0 -1
  328. package/dist/constants.js +0 -19
  329. package/dist/constants.js.map +0 -1
  330. package/dist/prepare-docs/code-examples.d.ts +0 -5
  331. package/dist/prepare-docs/code-examples.d.ts.map +0 -1
  332. package/dist/prepare-docs/code-examples.js +0 -117
  333. package/dist/prepare-docs/code-examples.js.map +0 -1
  334. package/dist/prepare-docs/copy-raw.d.ts +0 -5
  335. package/dist/prepare-docs/copy-raw.d.ts.map +0 -1
  336. package/dist/prepare-docs/copy-raw.js +0 -49
  337. package/dist/prepare-docs/copy-raw.js.map +0 -1
  338. package/dist/prepare-docs/prepare.d.ts +0 -1
  339. package/dist/prepare-docs/prepare.js +0 -22
  340. package/dist/prepare-docs/prepare.js.map +0 -1
  341. package/dist/prompts/xulux-playground.d.ts +0 -12
  342. package/dist/prompts/xulux-playground.d.ts.map +0 -1
  343. package/dist/prompts/xulux-playground.js +0 -33
  344. package/dist/prompts/xulux-playground.js.map +0 -1
  345. package/dist/tools/docs.d.ts +0 -22
  346. package/dist/tools/docs.d.ts.map +0 -1
  347. package/dist/tools/docs.js +0 -177
  348. package/dist/tools/docs.js.map +0 -1
  349. package/dist/tools/examples.d.ts +0 -24
  350. package/dist/tools/examples.d.ts.map +0 -1
  351. package/dist/tools/examples.js +0 -87
  352. package/dist/tools/examples.js.map +0 -1
  353. package/dist/tools/resources.d.ts +0 -6
  354. package/dist/tools/resources.d.ts.map +0 -1
  355. package/dist/tools/resources.js +0 -75
  356. package/dist/tools/resources.js.map +0 -1
  357. package/dist/tools/search.d.ts +0 -24
  358. package/dist/tools/search.d.ts.map +0 -1
  359. package/dist/tools/search.js +0 -39
  360. package/dist/tools/search.js.map +0 -1
  361. package/dist/tools/tests/mcp-test-client.d.ts +0 -15
  362. package/dist/tools/tests/mcp-test-client.d.ts.map +0 -1
  363. package/dist/tools/tests/mcp-test-client.js +0 -68
  364. package/dist/tools/tests/mcp-test-client.js.map +0 -1
  365. package/dist/tools/tests/test-setup.d.ts +0 -7
  366. package/dist/tools/tests/test-setup.d.ts.map +0 -1
  367. package/dist/tools/tests/test-setup.js +0 -36
  368. package/dist/tools/tests/test-setup.js.map +0 -1
  369. package/dist/tools/xulux-templates.d.ts +0 -58
  370. package/dist/tools/xulux-templates.d.ts.map +0 -1
  371. package/dist/tools/xulux-templates.js +0 -84
  372. package/dist/tools/xulux-templates.js.map +0 -1
  373. package/dist/utils/cache.d.ts +0 -5
  374. package/dist/utils/cache.d.ts.map +0 -1
  375. package/dist/utils/cache.js +0 -18
  376. package/dist/utils/cache.js.map +0 -1
  377. package/dist/utils/logger.d.ts +0 -10
  378. package/dist/utils/logger.d.ts.map +0 -1
  379. package/dist/utils/logger.js +0 -20
  380. package/dist/utils/logger.js.map +0 -1
  381. package/dist/utils/mcp-format.d.ts +0 -11
  382. package/dist/utils/mcp-format.d.ts.map +0 -1
  383. package/dist/utils/mcp-format.js +0 -14
  384. package/dist/utils/mcp-format.js.map +0 -1
  385. package/dist/utils/mdx.d.ts +0 -12
  386. package/dist/utils/mdx.d.ts.map +0 -1
  387. package/dist/utils/mdx.js +0 -45
  388. package/dist/utils/mdx.js.map +0 -1
  389. package/dist/utils/paths.d.ts +0 -12
  390. package/dist/utils/paths.d.ts.map +0 -1
  391. package/dist/utils/paths.js +0 -93
  392. package/dist/utils/paths.js.map +0 -1
  393. package/dist/utils/search.d.ts +0 -10
  394. package/dist/utils/search.d.ts.map +0 -1
  395. package/dist/utils/search.js +0 -97
  396. package/dist/utils/search.js.map +0 -1
  397. package/dist/utils/security.d.ts +0 -5
  398. package/dist/utils/security.d.ts.map +0 -1
  399. package/dist/utils/security.js +0 -22
  400. package/dist/utils/security.js.map +0 -1
  401. package/dist/xulux/catalog-client.d.ts +0 -14
  402. package/dist/xulux/catalog-client.d.ts.map +0 -1
  403. package/dist/xulux/catalog-client.js +0 -67
  404. package/dist/xulux/catalog-client.js.map +0 -1
  405. package/dist/xulux/fallback-catalog.d.ts +0 -7
  406. package/dist/xulux/fallback-catalog.d.ts.map +0 -1
  407. package/dist/xulux/fallback-catalog.js +0 -47
  408. package/dist/xulux/fallback-catalog.js.map +0 -1
  409. package/dist/xulux/fetch-sandbox.d.ts +0 -5
  410. package/dist/xulux/fetch-sandbox.d.ts.map +0 -1
  411. package/dist/xulux/fetch-sandbox.js +0 -40
  412. package/dist/xulux/fetch-sandbox.js.map +0 -1
  413. package/dist/xulux/template-service.d.ts +0 -84
  414. package/dist/xulux/template-service.d.ts.map +0 -1
  415. package/dist/xulux/template-service.js +0 -223
  416. package/dist/xulux/template-service.js.map +0 -1
  417. package/dist/xulux/types.d.ts +0 -55
  418. package/dist/xulux/types.d.ts.map +0 -1
  419. package/dist/xulux/types.js +0 -6
  420. package/dist/xulux/types.js.map +0 -1
  421. package/src/constants.ts +0 -24
  422. package/src/prepare-docs/code-examples.ts +0 -158
  423. package/src/prepare-docs/copy-raw.ts +0 -50
  424. package/src/prepare-docs/prepare.ts +0 -24
  425. package/src/prompts/xulux-playground.ts +0 -36
  426. package/src/tools/docs.ts +0 -255
  427. package/src/tools/examples.ts +0 -114
  428. package/src/tools/resources.ts +0 -111
  429. package/src/tools/search.ts +0 -46
  430. package/src/tools/tests/completions.test.ts +0 -60
  431. package/src/tools/tests/directory-size-cap.test.ts +0 -50
  432. package/src/tools/tests/docs.test.ts +0 -144
  433. package/src/tools/tests/examples.test.ts +0 -94
  434. package/src/tools/tests/integration.test.ts +0 -45
  435. package/src/tools/tests/json-parsing.test.ts +0 -23
  436. package/src/tools/tests/listings-cache.test.ts +0 -19
  437. package/src/tools/tests/mcp-protocol.test.ts +0 -216
  438. package/src/tools/tests/mcp-test-client.ts +0 -111
  439. package/src/tools/tests/path-traversal.test.ts +0 -81
  440. package/src/tools/tests/resources.test.ts +0 -133
  441. package/src/tools/tests/search.test.ts +0 -37
  442. package/src/tools/tests/test-setup.ts +0 -50
  443. package/src/tools/tests/xulux-templates.test.ts +0 -262
  444. package/src/tools/xulux-templates.ts +0 -141
  445. package/src/utils/cache.ts +0 -20
  446. package/src/utils/logger.ts +0 -20
  447. package/src/utils/mcp-format.ts +0 -14
  448. package/src/utils/mdx.ts +0 -59
  449. package/src/utils/paths.ts +0 -139
  450. package/src/utils/search.ts +0 -131
  451. package/src/utils/security.ts +0 -52
  452. package/src/utils/tests/cache.test.ts +0 -51
  453. package/src/utils/tests/mcp-format.test.ts +0 -22
  454. package/src/utils/tests/security.test.ts +0 -119
  455. package/src/xulux/catalog-client.ts +0 -105
  456. package/src/xulux/fallback-catalog.ts +0 -63
  457. package/src/xulux/fetch-sandbox.ts +0 -56
  458. package/src/xulux/template-service.ts +0 -406
  459. package/src/xulux/types.ts +0 -60
@@ -1,428 +0,0 @@
1
- ---
2
- title: User-managed MCP servers
3
- description: Let end users add and authenticate MCP servers from the browser with @assistant-ui/react-mcp.
4
- ---
5
-
6
- [`@assistant-ui/react-mcp`](https://npmjs.com/package/@assistant-ui/react-mcp) is the user-facing layer for MCP. Where the [server-side MCP guide](/docs/tools/mcp) wires a single fixed set of MCP servers into your API route, this package lets *end users* see a list of connectors, sign in via OAuth, paste a custom server URL, and have the resulting tool catalog flow into the chat — automatically.
7
-
8
- Two ways a server reaches the user:
9
-
10
- - **Connector** — a preset declared by the app developer with `defineConnector(...)`. The user just clicks Connect (and completes auth).
11
- - **Custom server** — the user supplies the URL, name, and auth in `<McpAddFormPrimitive>`. Hide the add UI to disable.
12
-
13
- Both flow through one connection lifecycle, one persisted state surface, and one tool registration path.
14
-
15
- ## How it works
16
-
17
- ```
18
- AuiConfig({ mcp: McpManagerResource({ connectors }) })
19
- │
20
- ├─ Resource — connection lifecycle, server lookup, OAuth/bearer auth
21
- ├─ Auto-mounts the modelContext scope when no chat runtime provides one
22
- └─ Registers connected tools as frontend tools — your chat sees them automatically
23
- ```
24
-
25
- The manager is a single resource. Mount it with `AuiProvider` like any other scope. OAuth (PKCE + RFC 7591 dynamic client registration), bearer, and "no auth" are first-class. Token refresh runs inside the MCP SDK on 401; this package mediates persistence and the redirect step.
26
-
27
- <Callout type="info">
28
- The [2026-07-28 spec revision](https://modelcontextprotocol.io/specification/2026-07-28/changelog) deprecates RFC 7591 dynamic client registration in favor of [Client ID Metadata Documents](https://modelcontextprotocol.io/specification/2026-07-28/basic/authorization/client-registration#client-id-metadata-documents), which clients should prefer over DCR when the authorization server advertises `client_id_metadata_document_supported`. Dynamic client registration remains available for backwards compatibility with authorization servers that do not support CIMD, and the spec's deprecation policy sets a minimum twelve-month window before removal, so the flow described here keeps working. Against a CIMD-only authorization server that exposes no `registration_endpoint`, supply a pre-registered [`clientId`](#auth) instead.
29
- </Callout>
30
-
31
- ## Setup
32
-
33
- <Steps>
34
- <Step>
35
-
36
- ### Install
37
-
38
- <InstallCommand npm={["@assistant-ui/react-mcp"]} />
39
-
40
- </Step>
41
- <Step>
42
-
43
- ### Mount the manager
44
-
45
- Declare your connectors and provide the `mcp` scope via `AuiProvider`. No imperative hooks:
46
-
47
- ```tsx title="app/providers.tsx"
48
- "use client";
49
-
50
- import { AuiConfig, AuiProvider, useAui } from "@assistant-ui/react";
51
- import { McpManagerResource, defineConnector } from "@assistant-ui/react-mcp";
52
-
53
- const connectors = [
54
- defineConnector({
55
- id: "linear",
56
- name: "Linear",
57
- url: "https://mcp.linear.app",
58
- auth: { type: "oauth", scopes: ["read"] },
59
- icon: "/icons/linear.svg",
60
- }),
61
- defineConnector({
62
- id: "weather",
63
- name: "Weather",
64
- url: "https://mcp.example.com/weather",
65
- auth: { type: "none" },
66
- connectionTimeout: 10_000,
67
- }),
68
- ];
69
-
70
- export function Providers({ children }: { children: React.ReactNode }) {
71
- const aui = useAui();
72
- const config = AuiConfig({
73
- mcp: McpManagerResource({
74
- connectors,
75
- connectionTimeout: 15_000,
76
- }),
77
- });
78
- return (
79
- <AuiProvider extends={aui} config={config}>
80
- {children}
81
- </AuiProvider>
82
- );
83
- }
84
- ```
85
-
86
- Defaults and useful options:
87
-
88
- - `storage` — `McpLocalStorage()` (override for production; see [Storage](#storage))
89
- - `oauthRedirectUri` — `${window.location.origin}/mcp/callback`
90
- - `autoConnect` — `true` (connect on mount when usable auth is persisted)
91
- - `connectionTimeout` — optional timeout in milliseconds. Set it on the manager as a default or on a connector/custom server to bound the MCP readiness flow (`connect()` plus `listTools()`) with a clear error.
92
- - Connector `id` values must be unique. The id is used for server lookup, OAuth routing, and model-visible tool names such as `linear__search`.
93
-
94
- </Step>
95
- <Step>
96
-
97
- ### Pick your UI
98
-
99
- You have two options:
100
-
101
- **Drop-in shadcn dialog** (recommended for most apps) — install the `mcp-config` component via the assistant-ui registry, then render `<McpConfigDialog />` anywhere inside the provider. You get a styled trigger, server cards, status badges, error banners, and the add form for free:
102
-
103
- <InstallCommand shadcn={["mcp-config"]} />
104
-
105
- ```tsx title="app/page.tsx"
106
- import { McpConfigDialog } from "@/components/assistant-ui/mcp-config";
107
-
108
- export default function Page() {
109
- return (
110
- <header className="flex items-center justify-between">
111
- <h1>My app</h1>
112
- <McpConfigDialog />
113
- </header>
114
- );
115
- }
116
- ```
117
-
118
- Pass children to override the trigger:
119
-
120
- ```tsx
121
- <McpConfigDialog>
122
- <Button variant="ghost">Servers</Button>
123
- </McpConfigDialog>
124
- ```
125
-
126
- **Compose your own from primitives.** Four namespaces are available, all unstyled and `data-*`-driven. The iteration primitives take a **render function** so the body re-runs per server with the right scope:
127
-
128
- ```tsx title="app/mcp/page.tsx"
129
- "use client";
130
-
131
- import {
132
- McpManagerPrimitive,
133
- McpServerPrimitive,
134
- } from "@assistant-ui/react-mcp";
135
-
136
- const ServerCard = () => (
137
- <McpServerPrimitive.Root>
138
- <McpServerPrimitive.Icon />
139
- <McpServerPrimitive.Name />
140
- <McpServerPrimitive.Status />
141
- <McpServerPrimitive.ConnectButton>Connect</McpServerPrimitive.ConnectButton>
142
- <McpServerPrimitive.DisconnectButton>Disconnect</McpServerPrimitive.DisconnectButton>
143
- <McpServerPrimitive.OAuthLink>Authorize ↗</McpServerPrimitive.OAuthLink>
144
- <McpServerPrimitive.RemoveButton>Remove</McpServerPrimitive.RemoveButton>
145
- <McpServerPrimitive.Error />
146
- </McpServerPrimitive.Root>
147
- );
148
-
149
- export default function McpPage() {
150
- return (
151
- <McpManagerPrimitive.Root>
152
- <h2>Connectors</h2>
153
- <McpManagerPrimitive.Connectors>
154
- {() => <ServerCard />}
155
- </McpManagerPrimitive.Connectors>
156
-
157
- <h2>Your servers</h2>
158
- <McpManagerPrimitive.CustomServers>
159
- {() => <ServerCard />}
160
- </McpManagerPrimitive.CustomServers>
161
-
162
- <McpManagerPrimitive.AddCustomTrigger>
163
- Add custom server
164
- </McpManagerPrimitive.AddCustomTrigger>
165
- </McpManagerPrimitive.Root>
166
- );
167
- }
168
- ```
169
-
170
- To disable custom servers entirely, just don't render `AddCustomTrigger` and `CustomServers`.
171
-
172
- The iteration primitives wrap each item in an `McpServerByIdProvider`, so the nested `<McpServerPrimitive.*>` automatically reads the right scope. `<ConnectButton>`, `<DisconnectButton>`, `<OAuthLink>` and `<RemoveButton>` only render when the relevant state matches — no manual gating. `<RemoveButton>` is also hidden on connector items (which the user can't remove).
173
-
174
- </Step>
175
- <Step>
176
-
177
- ### Add the custom-server form
178
-
179
- ```tsx
180
- <McpAddFormPrimitive.Root onSubmitted={() => closeDialog()}>
181
- <McpAddFormPrimitive.NameField />
182
- <McpAddFormPrimitive.UrlField />
183
- <McpAddFormPrimitive.AuthSelect /> {/* none | bearer | oauth */}
184
- <McpAddFormPrimitive.AuthFields /> {/* token or scope input depending on selection */}
185
- <McpAddFormPrimitive.Error />
186
- <McpAddFormPrimitive.Submit>Add</McpAddFormPrimitive.Submit>
187
- <McpAddFormPrimitive.Cancel>Cancel</McpAddFormPrimitive.Cancel>
188
- </McpAddFormPrimitive.Root>
189
- ```
190
-
191
- The form owns its own draft state and submits via `aui.mcp.addCustomServer(...)`. Pass a render function to `AuthFields` to fully customize it.
192
-
193
- </Step>
194
- <Step>
195
-
196
- ### Handle the OAuth callback
197
-
198
- Add a route at `/mcp/callback` (or whatever you set `oauthRedirectUri` to):
199
-
200
- ```tsx title="app/mcp/callback/page.tsx"
201
- "use client";
202
-
203
- import { McpOAuthCallback } from "@assistant-ui/react-mcp";
204
- import { useRouter } from "next/navigation";
205
- import { Providers } from "../../providers";
206
-
207
- export default function Callback() {
208
- const router = useRouter();
209
- return (
210
- <Providers>
211
- <McpOAuthCallback onComplete={() => router.replace("/mcp")} />
212
- </Providers>
213
- );
214
- }
215
- ```
216
-
217
- The callback reads `?state=...&code=...` from the URL, derives the target server id (encoded in the OAuth `state` parameter automatically), and calls `completeAuth` on the right server.
218
-
219
- </Step>
220
- <Step>
221
-
222
- ### That's it — the chat sees your tools
223
-
224
- `McpManagerResource` registers connected tools as **frontend tools** with the `modelContext` scope. Any chat runtime mounted in the same store (e.g. `@assistant-ui/react-ai-sdk`'s `useChatRuntime`) sees them and exposes them to the model — no `useMcpTools` hook, no adapter call.
225
-
226
- ```tsx
227
- "use client";
228
- import { lastAssistantMessageIsCompleteWithToolCalls } from "ai";
229
- import { useChatRuntime } from "@assistant-ui/react-ai-sdk";
230
-
231
- export function Chat() {
232
- const runtime = useChatRuntime({
233
- sendAutomaticallyWhen: lastAssistantMessageIsCompleteWithToolCalls,
234
- });
235
- /* … */
236
- }
237
- ```
238
-
239
- `sendAutomaticallyWhen` sends completed frontend tool results back to the server so the model can continue after a tool call. `useChatRuntime()` targets `/api/chat` by default; to point at a different endpoint, see [Custom transport](/docs/runtimes/ai-sdk/v7#custom-transport).
240
-
241
- Tool names are prefixed `serverId__toolName` to avoid collisions across connected servers. The toolkit re-registers whenever a server connects / disconnects or its tool list changes.
242
-
243
- If no chat runtime is mounted, `McpManagerResource` brings its own minimal `modelContext` along. Tools are still callable directly:
244
-
245
- ```ts
246
- // In an event handler, never in render.
247
- const aui = useAui();
248
- const out = await aui.mcp.server({ id: "linear" }).callTool("search", { q });
249
- ```
250
-
251
- </Step>
252
- </Steps>
253
-
254
- ## Form elicitation
255
-
256
- Connected servers can request structured user input through form-mode elicitation. Render `McpElicitationPrimitive.Items` inside a server-scoped subtree, then compose fields and response actions from the unstyled primitives:
257
-
258
- Answering a request requires composing `McpElicitationPrimitive`, because the server waits for the form response otherwise. Set `elicitation: false` on a connector or custom server to opt it out of advertising the capability. Numeric fields can stay text inputs (parseable strings are coerced); boolean fields must compose a checkbox, because string drafts for booleans are flagged invalid rather than coerced. Clearing a field returns it to the unanswered state, so an empty text input is omitted from the response rather than submitted as `""` or flagged invalid, unless the schema admits `""` for that property through an `enum` member or a `""` default. Render `enum` properties as a select; when `""` is not a member, its blank option is the unanswered state.
259
-
260
- ```tsx
261
- import { McpElicitationPrimitive } from "@assistant-ui/react-mcp";
262
-
263
- <McpElicitationPrimitive.Items>
264
- {() => (
265
- <McpElicitationPrimitive.Root>
266
- <McpElicitationPrimitive.Message />
267
- <McpElicitationPrimitive.Error />
268
- <McpElicitationPrimitive.Fields>
269
- {({ name, schema, value, setValue }) =>
270
- (schema as { type?: string } | undefined)?.type === "boolean" ? (
271
- <label>
272
- {name}
273
- <input
274
- type="checkbox"
275
- checked={value === true}
276
- onChange={(event) => setValue(event.target.checked)}
277
- />
278
- </label>
279
- ) : (
280
- <input
281
- name={name}
282
- value={typeof value === "string" ? value : ""}
283
- onChange={(event) => setValue(event.target.value)}
284
- />
285
- )
286
- }
287
- </McpElicitationPrimitive.Fields>
288
- <McpElicitationPrimitive.Accept>Submit</McpElicitationPrimitive.Accept>
289
- <McpElicitationPrimitive.Decline>Decline</McpElicitationPrimitive.Decline>
290
- <McpElicitationPrimitive.Cancel>Cancel</McpElicitationPrimitive.Cancel>
291
- </McpElicitationPrimitive.Root>
292
- )}
293
- </McpElicitationPrimitive.Items>
294
- ```
295
-
296
- Client-side validation errors keep the elicitation pending so the user can correct the form, and `McpElicitationPrimitive.Error` renders the resulting message.
297
-
298
- ## Storage
299
-
300
- All persisted state — custom server records, OAuth tokens, PKCE verifiers, DCR client info — goes through a single `MCPStorage` resource. Three built-ins:
301
-
302
- - `McpLocalStorage()` — default. Stores under the `aui-mcp:` prefix in `window.localStorage`.
303
- - `McpMemoryStorage()` — in-process Map. Use for SSR/tests where localStorage is absent.
304
- - `McpCustomStorage({...})` — bring your own load/save. Use for app-controlled backends (e.g. POST to your API).
305
-
306
- ```tsx
307
- import { McpManagerResource, McpCustomStorage } from "@assistant-ui/react-mcp";
308
-
309
- AuiConfig({
310
- mcp: McpManagerResource({
311
- connectors,
312
- storage: McpCustomStorage({
313
- loadCustomServers: async () => fetch("/api/mcp/servers").then((r) => r.json()),
314
- saveCustomServers: async (records) =>
315
- fetch("/api/mcp/servers", { method: "PUT", body: JSON.stringify(records) }),
316
- loadAuthState: async (id) =>
317
- fetch(`/api/mcp/auth/${id}`).then((r) => (r.ok ? r.json() : null)),
318
- saveAuthState: async (id, state) =>
319
- fetch(`/api/mcp/auth/${id}`, { method: "PUT", body: JSON.stringify(state) }),
320
- clearAuthState: async (id) =>
321
- fetch(`/api/mcp/auth/${id}`, { method: "DELETE" }),
322
- }),
323
- }),
324
- });
325
- ```
326
-
327
- <Callout type="warn">
328
- `McpLocalStorage` stores tokens in plain text and is XSS-exposed. For anything beyond local prototyping, use `McpCustomStorage` against an HTTP-only-cookie-backed endpoint, or wrap localStorage with your own encrypted serializer.
329
- </Callout>
330
-
331
- ## Auth
332
-
333
- Three modes, declared per-connector or per-custom-record:
334
-
335
- ```ts
336
- { type: "none" } // no auth header
337
- { type: "bearer", token?: "…" } // Authorization: Bearer …
338
- { type: "oauth", // PKCE + DCR + refresh
339
- scopes?: ["read"],
340
- authorizationEndpoint?: "…", // overrides RFC 8414 discovery
341
- tokenEndpoint?: "…",
342
- registrationEndpoint?: "…",
343
- clientId?: "…", // skip DCR with a static client
344
- clientSecret?: "…",
345
- }
346
- ```
347
-
348
- The OAuth provider implements the MCP SDK's `OAuthClientProvider`. The SDK handles discovery (RFC 8414), DCR (RFC 7591 — [deprecated in favor of CIMD](#how-it-works) but still supported), PKCE, token exchange, and refresh; this package mediates `MCPStorage` reads/writes and the redirect step. The server id is embedded in the OAuth `state` parameter so a single `/mcp/callback` route knows which server to complete.
349
-
350
- ## State & methods
351
-
352
- Render-time state — `useAuiState`:
353
-
354
- ```ts
355
- import { useAuiState } from "@assistant-ui/store";
356
-
357
- const isHydrated = useAuiState((s) => s.mcp.isHydrated);
358
- const connectionState = useAuiState((s) => s.mcpServer.connectionState);
359
- // ^ requires McpServerByIdProvider
360
- ```
361
-
362
- Imperative methods: `useAui` + resolve in a callback (never during render):
363
-
364
- ```ts
365
- const aui = useAui();
366
-
367
- // inside an event handler:
368
- await aui.mcp.addCustomServer({ name, url, auth: { type: "bearer", token } });
369
- await aui.mcp.server({ id }).connect();
370
- await aui.mcp.server({ id }).callTool("echo", { text: "hi" });
371
-
372
- // Build a paginated resource browser/preview UI.
373
- type ResourcePage = {
374
- resources: Array<{ uri: string; name?: string }>;
375
- nextCursor?: string;
376
- };
377
-
378
- const server = aui.mcp.server({ id });
379
- const resources: ResourcePage["resources"] = [];
380
- let nextCursor: string | undefined;
381
-
382
- do {
383
- const page = (await (nextCursor === undefined
384
- ? server.listResources()
385
- : server.listResources({ cursor: nextCursor }))) as ResourcePage;
386
- resources.push(...page.resources);
387
- nextCursor = page.nextCursor;
388
- } while (nextCursor !== undefined);
389
-
390
- const firstResource = resources[0];
391
- if (firstResource) {
392
- const preview = await server.readResource(firstResource.uri);
393
- }
394
- ```
395
-
396
- ## v1 scope
397
-
398
- What ships:
399
-
400
- - Tool listing and invocation, auto-registered as frontend tools
401
- - Resource listing and reads for app-built browsers or preview panes
402
- - Form-mode elicitation with app-composed fields and response actions
403
- - OAuth (PKCE + DCR), bearer, none
404
- - StreamableHTTP transport
405
- - Manual connect/disconnect
406
-
407
- What's deferred:
408
-
409
- - Prompts, sampling
410
- - Auto-reconnect with backoff
411
- - Per-tool enable/disable persistence
412
- - Per-tool consent prompts
413
- - Out-of-the-box token encryption (use `McpCustomStorage` against a server endpoint)
414
-
415
- ## Related
416
-
417
- <Cards>
418
- <Card
419
- title="Server-side MCP"
420
- description="App-developer-controlled MCP servers wired into the API route."
421
- href="/docs/tools/mcp"
422
- />
423
- <Card
424
- title="Tools and tool UI"
425
- description="Build custom renderers for tool calls and approvals."
426
- href="/docs/tools/defining-tools"
427
- />
428
- </Cards>
@@ -1,266 +0,0 @@
1
- ---
2
- title: Accordion
3
- description: A vertically stacked set of interactive headings that reveal or hide content sections.
4
- links:
5
- - label: Radix UI Accordion (Radix styles)
6
- url: https://www.radix-ui.com/primitives/docs/components/accordion
7
- - label: Base UI Accordion (base styles)
8
- url: https://base-ui.com/react/components/accordion
9
- platforms: ["react"]
10
- ---
11
-
12
- import { PreviewCode } from "@/components/docs/preview-code.server";
13
- import {
14
- AccordionSample,
15
- AccordionVariantsSample,
16
- AccordionMultipleSample,
17
- AccordionWithIconsSample,
18
- AccordionControlledSample,
19
- AccordionFAQSample,
20
- } from "@/components/docs/samples/accordion";
21
- import * as AccordionRadixSamples from "@/components/docs/samples/accordion.radix";
22
- import { Flavored, FlavorSwitcher } from "@/components/docs/contexts/flavor.server";
23
-
24
- <Callout>
25
- This is a **standalone component** that does not depend on the assistant-ui runtime. Use it anywhere in your application.
26
- </Callout>
27
-
28
- <FlavorSwitcher />
29
-
30
- <Flavored radix={<AccordionRadixSamples.AccordionSample />} base={<AccordionSample />} />
31
-
32
- ## Installation
33
-
34
- <InstallCommand shadcn={["accordion"]} />
35
-
36
- ## Usage
37
-
38
- ```tsx
39
- import {
40
- Accordion,
41
- AccordionItem,
42
- AccordionTrigger,
43
- AccordionContent,
44
- } from "@/components/assistant-ui/accordion";
45
-
46
- export function Example() {
47
- return (
48
- <Accordion type="single" collapsible>
49
- <AccordionItem value="item-1">
50
- <AccordionTrigger>Section 1</AccordionTrigger>
51
- <AccordionContent>Content for section 1.</AccordionContent>
52
- </AccordionItem>
53
- <AccordionItem value="item-2">
54
- <AccordionTrigger>Section 2</AccordionTrigger>
55
- <AccordionContent>Content for section 2.</AccordionContent>
56
- </AccordionItem>
57
- </Accordion>
58
- );
59
- }
60
- ```
61
-
62
- ## Examples
63
-
64
- ### Variants
65
-
66
- Use the `variant` prop on `Accordion` to change the visual style. Child components inherit the variant automatically.
67
-
68
- <Flavored radix={<AccordionRadixSamples.AccordionVariantsSample />} base={<AccordionVariantsSample />} />
69
-
70
- ```tsx
71
- // Default - border-bottom separator
72
- <Accordion type="single" collapsible variant="default">
73
- <AccordionItem value="item-1">
74
- <AccordionTrigger>...</AccordionTrigger>
75
- <AccordionContent>...</AccordionContent>
76
- </AccordionItem>
77
- </Accordion>
78
-
79
- // Outline - bordered container
80
- <Accordion type="single" collapsible variant="outline">
81
- <AccordionItem value="item-1">
82
- <AccordionTrigger>...</AccordionTrigger>
83
- <AccordionContent>...</AccordionContent>
84
- </AccordionItem>
85
- </Accordion>
86
-
87
- // Ghost - separated cards
88
- <Accordion type="single" collapsible variant="ghost">
89
- <AccordionItem value="item-1">
90
- <AccordionTrigger>...</AccordionTrigger>
91
- <AccordionContent>...</AccordionContent>
92
- </AccordionItem>
93
- </Accordion>
94
- ```
95
-
96
- ### Multiple Items Open
97
-
98
- Use `type="multiple"` to allow multiple items to be open simultaneously.
99
-
100
- <Flavored radix={<AccordionRadixSamples.AccordionMultipleSample />} base={<AccordionMultipleSample />} />
101
-
102
- ```tsx
103
- <Accordion type="multiple">
104
- <AccordionItem value="item-1">
105
- <AccordionTrigger>First Section</AccordionTrigger>
106
- <AccordionContent>Content 1</AccordionContent>
107
- </AccordionItem>
108
- <AccordionItem value="item-2">
109
- <AccordionTrigger>Second Section</AccordionTrigger>
110
- <AccordionContent>Content 2</AccordionContent>
111
- </AccordionItem>
112
- </Accordion>
113
- ```
114
-
115
- ### With Icons
116
-
117
- Add icons or custom elements inside the trigger.
118
-
119
- <PreviewCode file="components/docs/samples/accordion" name="AccordionWithIconsSample" base={<AccordionWithIconsSample />}>
120
- <AccordionRadixSamples.AccordionWithIconsSample />
121
- </PreviewCode>
122
-
123
- ### Controlled
124
-
125
- Use `value` and `onValueChange` for controlled accordion state.
126
-
127
- <PreviewCode file="components/docs/samples/accordion" name="AccordionControlledSample" base={<AccordionControlledSample />}>
128
- <AccordionRadixSamples.AccordionControlledSample />
129
- </PreviewCode>
130
-
131
- ### FAQ Section
132
-
133
- A practical example of using accordion for a FAQ section.
134
-
135
- <PreviewCode file="components/docs/samples/accordion" name="AccordionFAQSample" base={<AccordionFAQSample />}>
136
- <AccordionRadixSamples.AccordionFAQSample />
137
- </PreviewCode>
138
-
139
- ## API Reference
140
-
141
- ### Composable API
142
-
143
- | Component | Description |
144
- |-----------|-------------|
145
- | `Accordion` | The root component that manages accordion state and variant. |
146
- | `AccordionItem` | A single collapsible section container. |
147
- | `AccordionTrigger` | The clickable header that toggles content visibility. |
148
- | `AccordionContent` | The collapsible content panel. |
149
-
150
- ### Accordion
151
-
152
- The root component that manages accordion state. Set `variant` here to style all child components.
153
-
154
- <ParametersTable
155
- type="AccordionProps"
156
- parameters={[
157
- {
158
- name: "type",
159
- type: '"single" | "multiple"',
160
- required: true,
161
- description: "Whether only one or multiple items can be open at once.",
162
- },
163
- {
164
- name: "collapsible",
165
- type: "boolean",
166
- default: "false",
167
- description: "When type is 'single', allows closing the open item by clicking it again.",
168
- },
169
- {
170
- name: "defaultValue",
171
- type: "string | string[]",
172
- description: "The default open item(s) (uncontrolled).",
173
- },
174
- {
175
- name: "value",
176
- type: "string | string[]",
177
- description: "The controlled open item(s).",
178
- },
179
- {
180
- name: "onValueChange",
181
- type: "(value: string | string[]) => void",
182
- description: "Callback when the open item(s) change.",
183
- },
184
- {
185
- name: "variant",
186
- type: '"default" | "outline" | "ghost"',
187
- default: '"default"',
188
- description: "The visual style of the accordion. Child components inherit this automatically.",
189
- },
190
- {
191
- name: "className",
192
- type: "string",
193
- description: "Additional CSS classes.",
194
- },
195
- ]}
196
- />
197
-
198
- ### AccordionItem
199
-
200
- A single collapsible section container.
201
-
202
- <ParametersTable
203
- type="AccordionItemProps"
204
- parameters={[
205
- {
206
- name: "value",
207
- type: "string",
208
- required: true,
209
- description: "A unique identifier for this item.",
210
- },
211
- {
212
- name: "disabled",
213
- type: "boolean",
214
- description: "Whether the item is disabled.",
215
- },
216
- {
217
- name: "className",
218
- type: "string",
219
- description: "Additional CSS classes.",
220
- },
221
- ]}
222
- />
223
-
224
- ### AccordionTrigger
225
-
226
- The clickable header that toggles content visibility.
227
-
228
- <ParametersTable
229
- type="AccordionTriggerProps"
230
- parameters={[
231
- {
232
- name: "className",
233
- type: "string",
234
- description: "Additional CSS classes.",
235
- },
236
- ]}
237
- />
238
-
239
- ### AccordionContent
240
-
241
- The collapsible content panel.
242
-
243
- <ParametersTable
244
- type="AccordionContentProps"
245
- parameters={[
246
- {
247
- name: "className",
248
- type: "string",
249
- description: "Additional CSS classes.",
250
- },
251
- ]}
252
- />
253
-
254
- ### Style Variants (CVA)
255
-
256
- | Export | Description |
257
- |--------|-------------|
258
- | `accordionVariants` | Styles for the accordion container. |
259
-
260
- ```tsx
261
- import { accordionVariants } from "@/components/assistant-ui/accordion";
262
-
263
- <div className={accordionVariants({ variant: "outline" })}>
264
- Custom Accordion Container
265
- </div>
266
- ```