@mastra/core 1.6.0 → 1.7.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 (453) hide show
  1. package/CHANGELOG.md +236 -0
  2. package/dist/agent/agent.d.ts +6 -0
  3. package/dist/agent/agent.d.ts.map +1 -1
  4. package/dist/agent/index.cjs +8 -8
  5. package/dist/agent/index.js +1 -1
  6. package/dist/{chunk-VJWRJWSC.cjs → chunk-2X66GWF5.cjs} +94 -16
  7. package/dist/chunk-2X66GWF5.cjs.map +1 -0
  8. package/dist/{chunk-YM6245EM.js → chunk-6OXW5E2O.js} +3 -3
  9. package/dist/{chunk-YM6245EM.js.map → chunk-6OXW5E2O.js.map} +1 -1
  10. package/dist/{chunk-XWZAKKFT.cjs → chunk-6QBN6MZY.cjs} +14 -14
  11. package/dist/{chunk-XWZAKKFT.cjs.map → chunk-6QBN6MZY.cjs.map} +1 -1
  12. package/dist/{chunk-AYHSPIT6.cjs → chunk-7UAJ6LMR.cjs} +820 -259
  13. package/dist/chunk-7UAJ6LMR.cjs.map +1 -0
  14. package/dist/{chunk-RZNHRIM7.cjs → chunk-A72NTLFT.cjs} +5 -5
  15. package/dist/{chunk-RZNHRIM7.cjs.map → chunk-A72NTLFT.cjs.map} +1 -1
  16. package/dist/{chunk-EEU5NHHU.js → chunk-DFCRXDVK.js} +3 -3
  17. package/dist/{chunk-EEU5NHHU.js.map → chunk-DFCRXDVK.js.map} +1 -1
  18. package/dist/{chunk-5K45E5VE.js → chunk-GPJGPARM.js} +3 -2
  19. package/dist/chunk-GPJGPARM.js.map +1 -0
  20. package/dist/{chunk-LNKS4TJ6.cjs → chunk-HB6T4554.cjs} +8 -7
  21. package/dist/chunk-HB6T4554.cjs.map +1 -0
  22. package/dist/{chunk-DGS2KGDI.js → chunk-KUXNBWN7.js} +6 -5
  23. package/dist/chunk-KUXNBWN7.js.map +1 -0
  24. package/dist/{chunk-IHDE4CJV.js → chunk-QSHV7GPT.js} +89 -12
  25. package/dist/chunk-QSHV7GPT.js.map +1 -0
  26. package/dist/{chunk-3U3XFMGJ.cjs → chunk-QTAS3HND.cjs} +13 -8
  27. package/dist/chunk-QTAS3HND.cjs.map +1 -0
  28. package/dist/{chunk-RHKNKJNM.js → chunk-QWTB53GS.js} +4 -4
  29. package/dist/{chunk-RHKNKJNM.js.map → chunk-QWTB53GS.js.map} +1 -1
  30. package/dist/{chunk-4WG5K4CK.js → chunk-R4N65TLG.js} +7 -7
  31. package/dist/{chunk-4WG5K4CK.js.map → chunk-R4N65TLG.js.map} +1 -1
  32. package/dist/{chunk-5VQPSWPG.cjs → chunk-RABITNTG.cjs} +48 -48
  33. package/dist/{chunk-5VQPSWPG.cjs.map → chunk-RABITNTG.cjs.map} +1 -1
  34. package/dist/{chunk-TVPANHLE.cjs → chunk-SBOHDNIZ.cjs} +3 -2
  35. package/dist/chunk-SBOHDNIZ.cjs.map +1 -0
  36. package/dist/{chunk-MWGGSA5Q.js → chunk-T6GAM3SQ.js} +10 -5
  37. package/dist/chunk-T6GAM3SQ.js.map +1 -0
  38. package/dist/{chunk-TL2TTA4X.cjs → chunk-YQG7NBPR.cjs} +9 -9
  39. package/dist/{chunk-TL2TTA4X.cjs.map → chunk-YQG7NBPR.cjs.map} +1 -1
  40. package/dist/{chunk-XB3DA67Q.js → chunk-ZSBM2SVU.js} +818 -259
  41. package/dist/chunk-ZSBM2SVU.js.map +1 -0
  42. package/dist/datasets/experiment/scorer.d.ts.map +1 -1
  43. package/dist/datasets/index.cjs +17 -17
  44. package/dist/datasets/index.js +2 -2
  45. package/dist/evals/index.cjs +20 -20
  46. package/dist/evals/index.js +3 -3
  47. package/dist/evals/scoreTraces/index.cjs +7 -6
  48. package/dist/evals/scoreTraces/index.cjs.map +1 -1
  49. package/dist/evals/scoreTraces/index.js +4 -3
  50. package/dist/evals/scoreTraces/index.js.map +1 -1
  51. package/dist/evals/scoreTraces/scoreTracesWorkflow.d.ts.map +1 -1
  52. package/dist/harness/harness.d.ts +21 -1
  53. package/dist/harness/harness.d.ts.map +1 -1
  54. package/dist/harness/index.cjs +422 -5
  55. package/dist/harness/index.cjs.map +1 -1
  56. package/dist/harness/index.d.ts +2 -1
  57. package/dist/harness/index.d.ts.map +1 -1
  58. package/dist/harness/index.js +418 -3
  59. package/dist/harness/index.js.map +1 -1
  60. package/dist/harness/types.d.ts +151 -0
  61. package/dist/harness/types.d.ts.map +1 -1
  62. package/dist/index.cjs +2 -2
  63. package/dist/index.js +1 -1
  64. package/dist/loop/index.cjs +12 -12
  65. package/dist/loop/index.js +1 -1
  66. package/dist/loop/test-utils/tools.d.ts.map +1 -1
  67. package/dist/loop/workflows/agentic-loop/index.d.ts.map +1 -1
  68. package/dist/mastra/hooks.d.ts.map +1 -1
  69. package/dist/mastra/index.cjs +2 -2
  70. package/dist/mastra/index.js +1 -1
  71. package/dist/memory/index.cjs +14 -14
  72. package/dist/memory/index.js +1 -1
  73. package/dist/processor-provider/index.cjs +10 -10
  74. package/dist/processor-provider/index.js +1 -1
  75. package/dist/processors/index.cjs +45 -41
  76. package/dist/processors/index.js +1 -1
  77. package/dist/processors/processors/index.d.ts +1 -0
  78. package/dist/processors/processors/index.d.ts.map +1 -1
  79. package/dist/processors/processors/workspace-instructions.d.ts +50 -0
  80. package/dist/processors/processors/workspace-instructions.d.ts.map +1 -0
  81. package/dist/relevance/index.cjs +3 -3
  82. package/dist/relevance/index.js +1 -1
  83. package/dist/storage/constants.cjs +56 -56
  84. package/dist/storage/constants.d.ts.map +1 -1
  85. package/dist/storage/constants.js +1 -1
  86. package/dist/storage/index.cjs +160 -160
  87. package/dist/storage/index.js +2 -2
  88. package/dist/storage/types.d.ts +2 -0
  89. package/dist/storage/types.d.ts.map +1 -1
  90. package/dist/stream/aisdk/v5/compat/prepare-tools.d.ts.map +1 -1
  91. package/dist/stream/base/output.d.ts.map +1 -1
  92. package/dist/stream/index.cjs +8 -8
  93. package/dist/stream/index.js +1 -1
  94. package/dist/tool-loop-agent/index.cjs +4 -4
  95. package/dist/tool-loop-agent/index.js +1 -1
  96. package/dist/vector/index.cjs +7 -7
  97. package/dist/vector/index.js +1 -1
  98. package/dist/workflows/evented/index.cjs +10 -10
  99. package/dist/workflows/evented/index.js +1 -1
  100. package/dist/workflows/index.cjs +25 -25
  101. package/dist/workflows/index.js +1 -1
  102. package/dist/workspace/constants/index.d.ts +2 -0
  103. package/dist/workspace/constants/index.d.ts.map +1 -1
  104. package/dist/workspace/errors.d.ts +1 -1
  105. package/dist/workspace/errors.d.ts.map +1 -1
  106. package/dist/workspace/filesystem/composite-filesystem.d.ts +4 -1
  107. package/dist/workspace/filesystem/composite-filesystem.d.ts.map +1 -1
  108. package/dist/workspace/filesystem/file-write-lock.d.ts +35 -0
  109. package/dist/workspace/filesystem/file-write-lock.d.ts.map +1 -0
  110. package/dist/workspace/filesystem/filesystem.d.ts +5 -1
  111. package/dist/workspace/filesystem/filesystem.d.ts.map +1 -1
  112. package/dist/workspace/filesystem/index.d.ts +1 -0
  113. package/dist/workspace/filesystem/index.d.ts.map +1 -1
  114. package/dist/workspace/filesystem/local-filesystem.d.ts +17 -1
  115. package/dist/workspace/filesystem/local-filesystem.d.ts.map +1 -1
  116. package/dist/workspace/index.cjs +72 -64
  117. package/dist/workspace/index.d.ts +3 -2
  118. package/dist/workspace/index.d.ts.map +1 -1
  119. package/dist/workspace/index.js +1 -1
  120. package/dist/workspace/lifecycle.d.ts +1 -9
  121. package/dist/workspace/lifecycle.d.ts.map +1 -1
  122. package/dist/workspace/sandbox/index.d.ts +2 -0
  123. package/dist/workspace/sandbox/index.d.ts.map +1 -1
  124. package/dist/workspace/sandbox/local-process-manager.d.ts +18 -0
  125. package/dist/workspace/sandbox/local-process-manager.d.ts.map +1 -0
  126. package/dist/workspace/sandbox/local-sandbox.d.ts +49 -35
  127. package/dist/workspace/sandbox/local-sandbox.d.ts.map +1 -1
  128. package/dist/workspace/sandbox/mastra-sandbox.d.ts +45 -11
  129. package/dist/workspace/sandbox/mastra-sandbox.d.ts.map +1 -1
  130. package/dist/workspace/sandbox/native-sandbox/bubblewrap.d.ts +2 -3
  131. package/dist/workspace/sandbox/native-sandbox/bubblewrap.d.ts.map +1 -1
  132. package/dist/workspace/sandbox/native-sandbox/seatbelt.d.ts +2 -3
  133. package/dist/workspace/sandbox/native-sandbox/seatbelt.d.ts.map +1 -1
  134. package/dist/workspace/sandbox/native-sandbox/wrapper.d.ts +4 -5
  135. package/dist/workspace/sandbox/native-sandbox/wrapper.d.ts.map +1 -1
  136. package/dist/workspace/sandbox/process-manager/index.d.ts +4 -0
  137. package/dist/workspace/sandbox/process-manager/index.d.ts.map +1 -0
  138. package/dist/workspace/sandbox/process-manager/process-handle.d.ts +107 -0
  139. package/dist/workspace/sandbox/process-manager/process-handle.d.ts.map +1 -0
  140. package/dist/workspace/sandbox/process-manager/process-manager.d.ts +59 -0
  141. package/dist/workspace/sandbox/process-manager/process-manager.d.ts.map +1 -0
  142. package/dist/workspace/sandbox/process-manager/types.d.ts +24 -0
  143. package/dist/workspace/sandbox/process-manager/types.d.ts.map +1 -0
  144. package/dist/workspace/sandbox/sandbox.d.ts +38 -2
  145. package/dist/workspace/sandbox/sandbox.d.ts.map +1 -1
  146. package/dist/workspace/sandbox/types.d.ts +9 -2
  147. package/dist/workspace/sandbox/types.d.ts.map +1 -1
  148. package/dist/workspace/sandbox/utils.d.ts +7 -0
  149. package/dist/workspace/sandbox/utils.d.ts.map +1 -0
  150. package/dist/workspace/tools/execute-command.d.ts +53 -2
  151. package/dist/workspace/tools/execute-command.d.ts.map +1 -1
  152. package/dist/workspace/tools/get-process-output.d.ts +6 -0
  153. package/dist/workspace/tools/get-process-output.d.ts.map +1 -0
  154. package/dist/workspace/tools/index.d.ts +4 -1
  155. package/dist/workspace/tools/index.d.ts.map +1 -1
  156. package/dist/workspace/tools/kill-process.d.ts +4 -0
  157. package/dist/workspace/tools/kill-process.d.ts.map +1 -0
  158. package/dist/workspace/tools/output-helpers.d.ts +21 -0
  159. package/dist/workspace/tools/output-helpers.d.ts.map +1 -0
  160. package/dist/workspace/tools/tools.d.ts.map +1 -1
  161. package/dist/workspace/types.d.ts +31 -0
  162. package/dist/workspace/types.d.ts.map +1 -1
  163. package/dist/workspace/utils.d.ts +11 -0
  164. package/dist/workspace/utils.d.ts.map +1 -0
  165. package/dist/workspace/workspace.d.ts +36 -0
  166. package/dist/workspace/workspace.d.ts.map +1 -1
  167. package/package.json +7 -7
  168. package/dist/chunk-3U3XFMGJ.cjs.map +0 -1
  169. package/dist/chunk-5K45E5VE.js.map +0 -1
  170. package/dist/chunk-AYHSPIT6.cjs.map +0 -1
  171. package/dist/chunk-DGS2KGDI.js.map +0 -1
  172. package/dist/chunk-IHDE4CJV.js.map +0 -1
  173. package/dist/chunk-LNKS4TJ6.cjs.map +0 -1
  174. package/dist/chunk-MWGGSA5Q.js.map +0 -1
  175. package/dist/chunk-TVPANHLE.cjs.map +0 -1
  176. package/dist/chunk-VJWRJWSC.cjs.map +0 -1
  177. package/dist/chunk-XB3DA67Q.js.map +0 -1
  178. package/dist/docs/SKILL.md +0 -301
  179. package/dist/docs/assets/SOURCE_MAP.json +0 -1413
  180. package/dist/docs/references/docs-agents-adding-voice.md +0 -353
  181. package/dist/docs/references/docs-agents-agent-approval.md +0 -377
  182. package/dist/docs/references/docs-agents-agent-memory.md +0 -212
  183. package/dist/docs/references/docs-agents-guardrails.md +0 -382
  184. package/dist/docs/references/docs-agents-network-approval.md +0 -275
  185. package/dist/docs/references/docs-agents-networks.md +0 -290
  186. package/dist/docs/references/docs-agents-overview.md +0 -309
  187. package/dist/docs/references/docs-agents-processors.md +0 -632
  188. package/dist/docs/references/docs-agents-structured-output.md +0 -271
  189. package/dist/docs/references/docs-agents-using-tools.md +0 -214
  190. package/dist/docs/references/docs-evals-custom-scorers.md +0 -519
  191. package/dist/docs/references/docs-evals-overview.md +0 -146
  192. package/dist/docs/references/docs-evals-running-in-ci.md +0 -106
  193. package/dist/docs/references/docs-mcp-overview.md +0 -370
  194. package/dist/docs/references/docs-mcp-publishing-mcp-server.md +0 -95
  195. package/dist/docs/references/docs-memory-memory-processors.md +0 -316
  196. package/dist/docs/references/docs-memory-observational-memory.md +0 -246
  197. package/dist/docs/references/docs-memory-overview.md +0 -45
  198. package/dist/docs/references/docs-memory-semantic-recall.md +0 -272
  199. package/dist/docs/references/docs-memory-storage.md +0 -261
  200. package/dist/docs/references/docs-memory-working-memory.md +0 -400
  201. package/dist/docs/references/docs-observability-datasets-overview.md +0 -188
  202. package/dist/docs/references/docs-observability-datasets-running-experiments.md +0 -266
  203. package/dist/docs/references/docs-observability-logging.md +0 -99
  204. package/dist/docs/references/docs-observability-overview.md +0 -70
  205. package/dist/docs/references/docs-observability-tracing-bridges-otel.md +0 -209
  206. package/dist/docs/references/docs-observability-tracing-exporters-arize.md +0 -274
  207. package/dist/docs/references/docs-observability-tracing-exporters-braintrust.md +0 -111
  208. package/dist/docs/references/docs-observability-tracing-exporters-cloud.md +0 -129
  209. package/dist/docs/references/docs-observability-tracing-exporters-datadog.md +0 -187
  210. package/dist/docs/references/docs-observability-tracing-exporters-default.md +0 -211
  211. package/dist/docs/references/docs-observability-tracing-exporters-laminar.md +0 -100
  212. package/dist/docs/references/docs-observability-tracing-exporters-langfuse.md +0 -217
  213. package/dist/docs/references/docs-observability-tracing-exporters-langsmith.md +0 -202
  214. package/dist/docs/references/docs-observability-tracing-exporters-otel.md +0 -479
  215. package/dist/docs/references/docs-observability-tracing-exporters-posthog.md +0 -148
  216. package/dist/docs/references/docs-observability-tracing-overview.md +0 -1114
  217. package/dist/docs/references/docs-rag-chunking-and-embedding.md +0 -183
  218. package/dist/docs/references/docs-rag-graph-rag.md +0 -215
  219. package/dist/docs/references/docs-rag-overview.md +0 -72
  220. package/dist/docs/references/docs-rag-retrieval.md +0 -521
  221. package/dist/docs/references/docs-rag-vector-databases.md +0 -648
  222. package/dist/docs/references/docs-server-auth-auth0.md +0 -222
  223. package/dist/docs/references/docs-server-auth-clerk.md +0 -132
  224. package/dist/docs/references/docs-server-auth-composite-auth.md +0 -234
  225. package/dist/docs/references/docs-server-auth-custom-auth-provider.md +0 -513
  226. package/dist/docs/references/docs-server-auth-firebase.md +0 -272
  227. package/dist/docs/references/docs-server-auth-jwt.md +0 -110
  228. package/dist/docs/references/docs-server-auth-simple-auth.md +0 -178
  229. package/dist/docs/references/docs-server-auth-supabase.md +0 -117
  230. package/dist/docs/references/docs-server-auth-workos.md +0 -190
  231. package/dist/docs/references/docs-server-custom-adapters.md +0 -374
  232. package/dist/docs/references/docs-server-custom-api-routes.md +0 -267
  233. package/dist/docs/references/docs-server-mastra-client.md +0 -243
  234. package/dist/docs/references/docs-server-mastra-server.md +0 -71
  235. package/dist/docs/references/docs-server-middleware.md +0 -228
  236. package/dist/docs/references/docs-server-request-context.md +0 -478
  237. package/dist/docs/references/docs-streaming-events.md +0 -247
  238. package/dist/docs/references/docs-streaming-tool-streaming.md +0 -178
  239. package/dist/docs/references/docs-streaming-workflow-streaming.md +0 -109
  240. package/dist/docs/references/docs-voice-overview.md +0 -979
  241. package/dist/docs/references/docs-voice-speech-to-speech.md +0 -103
  242. package/dist/docs/references/docs-voice-speech-to-text.md +0 -80
  243. package/dist/docs/references/docs-voice-text-to-speech.md +0 -84
  244. package/dist/docs/references/docs-workflows-agents-and-tools.md +0 -170
  245. package/dist/docs/references/docs-workflows-control-flow.md +0 -823
  246. package/dist/docs/references/docs-workflows-error-handling.md +0 -360
  247. package/dist/docs/references/docs-workflows-human-in-the-loop.md +0 -213
  248. package/dist/docs/references/docs-workflows-overview.md +0 -372
  249. package/dist/docs/references/docs-workflows-snapshots.md +0 -238
  250. package/dist/docs/references/docs-workflows-suspend-and-resume.md +0 -205
  251. package/dist/docs/references/docs-workflows-time-travel.md +0 -309
  252. package/dist/docs/references/docs-workflows-workflow-state.md +0 -181
  253. package/dist/docs/references/docs-workspace-filesystem.md +0 -162
  254. package/dist/docs/references/docs-workspace-overview.md +0 -239
  255. package/dist/docs/references/docs-workspace-sandbox.md +0 -63
  256. package/dist/docs/references/docs-workspace-search.md +0 -219
  257. package/dist/docs/references/docs-workspace-skills.md +0 -126
  258. package/dist/docs/references/guides-agent-frameworks-ai-sdk.md +0 -140
  259. package/dist/docs/references/reference-agents-agent.md +0 -142
  260. package/dist/docs/references/reference-agents-generate.md +0 -174
  261. package/dist/docs/references/reference-agents-generateLegacy.md +0 -176
  262. package/dist/docs/references/reference-agents-getDefaultGenerateOptions.md +0 -36
  263. package/dist/docs/references/reference-agents-getDefaultOptions.md +0 -34
  264. package/dist/docs/references/reference-agents-getDefaultStreamOptions.md +0 -36
  265. package/dist/docs/references/reference-agents-getDescription.md +0 -21
  266. package/dist/docs/references/reference-agents-getInstructions.md +0 -34
  267. package/dist/docs/references/reference-agents-getLLM.md +0 -37
  268. package/dist/docs/references/reference-agents-getMemory.md +0 -34
  269. package/dist/docs/references/reference-agents-getModel.md +0 -34
  270. package/dist/docs/references/reference-agents-getTools.md +0 -29
  271. package/dist/docs/references/reference-agents-getVoice.md +0 -34
  272. package/dist/docs/references/reference-agents-listAgents.md +0 -35
  273. package/dist/docs/references/reference-agents-listScorers.md +0 -34
  274. package/dist/docs/references/reference-agents-listTools.md +0 -34
  275. package/dist/docs/references/reference-agents-listWorkflows.md +0 -34
  276. package/dist/docs/references/reference-agents-network.md +0 -134
  277. package/dist/docs/references/reference-ai-sdk-chat-route.md +0 -82
  278. package/dist/docs/references/reference-ai-sdk-network-route.md +0 -74
  279. package/dist/docs/references/reference-ai-sdk-to-ai-sdk-stream.md +0 -232
  280. package/dist/docs/references/reference-ai-sdk-with-mastra.md +0 -59
  281. package/dist/docs/references/reference-ai-sdk-workflow-route.md +0 -79
  282. package/dist/docs/references/reference-auth-auth0.md +0 -73
  283. package/dist/docs/references/reference-auth-clerk.md +0 -36
  284. package/dist/docs/references/reference-auth-firebase.md +0 -80
  285. package/dist/docs/references/reference-auth-jwt.md +0 -26
  286. package/dist/docs/references/reference-auth-supabase.md +0 -33
  287. package/dist/docs/references/reference-auth-workos.md +0 -84
  288. package/dist/docs/references/reference-client-js-agents.md +0 -438
  289. package/dist/docs/references/reference-configuration.md +0 -749
  290. package/dist/docs/references/reference-core-addGateway.md +0 -42
  291. package/dist/docs/references/reference-core-getAgent.md +0 -21
  292. package/dist/docs/references/reference-core-getAgentById.md +0 -21
  293. package/dist/docs/references/reference-core-getDeployer.md +0 -22
  294. package/dist/docs/references/reference-core-getGateway.md +0 -38
  295. package/dist/docs/references/reference-core-getGatewayById.md +0 -41
  296. package/dist/docs/references/reference-core-getLogger.md +0 -22
  297. package/dist/docs/references/reference-core-getMCPServer.md +0 -45
  298. package/dist/docs/references/reference-core-getMCPServerById.md +0 -53
  299. package/dist/docs/references/reference-core-getMemory.md +0 -50
  300. package/dist/docs/references/reference-core-getScorer.md +0 -54
  301. package/dist/docs/references/reference-core-getScorerById.md +0 -54
  302. package/dist/docs/references/reference-core-getServer.md +0 -22
  303. package/dist/docs/references/reference-core-getStorage.md +0 -22
  304. package/dist/docs/references/reference-core-getStoredAgentById.md +0 -89
  305. package/dist/docs/references/reference-core-getTelemetry.md +0 -22
  306. package/dist/docs/references/reference-core-getVector.md +0 -22
  307. package/dist/docs/references/reference-core-getWorkflow.md +0 -40
  308. package/dist/docs/references/reference-core-listAgents.md +0 -21
  309. package/dist/docs/references/reference-core-listGateways.md +0 -40
  310. package/dist/docs/references/reference-core-listLogs.md +0 -38
  311. package/dist/docs/references/reference-core-listLogsByRunId.md +0 -36
  312. package/dist/docs/references/reference-core-listMCPServers.md +0 -51
  313. package/dist/docs/references/reference-core-listMemory.md +0 -56
  314. package/dist/docs/references/reference-core-listScorers.md +0 -29
  315. package/dist/docs/references/reference-core-listStoredAgents.md +0 -93
  316. package/dist/docs/references/reference-core-listVectors.md +0 -22
  317. package/dist/docs/references/reference-core-listWorkflows.md +0 -21
  318. package/dist/docs/references/reference-core-mastra-class.md +0 -66
  319. package/dist/docs/references/reference-core-mastra-model-gateway.md +0 -153
  320. package/dist/docs/references/reference-core-setLogger.md +0 -26
  321. package/dist/docs/references/reference-core-setStorage.md +0 -27
  322. package/dist/docs/references/reference-datasets-addItem.md +0 -35
  323. package/dist/docs/references/reference-datasets-addItems.md +0 -33
  324. package/dist/docs/references/reference-datasets-compareExperiments.md +0 -48
  325. package/dist/docs/references/reference-datasets-create.md +0 -49
  326. package/dist/docs/references/reference-datasets-dataset.md +0 -78
  327. package/dist/docs/references/reference-datasets-datasets-manager.md +0 -84
  328. package/dist/docs/references/reference-datasets-delete.md +0 -23
  329. package/dist/docs/references/reference-datasets-deleteExperiment.md +0 -25
  330. package/dist/docs/references/reference-datasets-deleteItem.md +0 -25
  331. package/dist/docs/references/reference-datasets-deleteItems.md +0 -27
  332. package/dist/docs/references/reference-datasets-get.md +0 -29
  333. package/dist/docs/references/reference-datasets-getDetails.md +0 -45
  334. package/dist/docs/references/reference-datasets-getExperiment.md +0 -28
  335. package/dist/docs/references/reference-datasets-getItem.md +0 -31
  336. package/dist/docs/references/reference-datasets-getItemHistory.md +0 -29
  337. package/dist/docs/references/reference-datasets-list.md +0 -29
  338. package/dist/docs/references/reference-datasets-listExperimentResults.md +0 -37
  339. package/dist/docs/references/reference-datasets-listExperiments.md +0 -31
  340. package/dist/docs/references/reference-datasets-listItems.md +0 -44
  341. package/dist/docs/references/reference-datasets-listVersions.md +0 -31
  342. package/dist/docs/references/reference-datasets-startExperiment.md +0 -60
  343. package/dist/docs/references/reference-datasets-startExperimentAsync.md +0 -41
  344. package/dist/docs/references/reference-datasets-update.md +0 -46
  345. package/dist/docs/references/reference-datasets-updateItem.md +0 -36
  346. package/dist/docs/references/reference-evals-answer-relevancy.md +0 -105
  347. package/dist/docs/references/reference-evals-answer-similarity.md +0 -99
  348. package/dist/docs/references/reference-evals-bias.md +0 -120
  349. package/dist/docs/references/reference-evals-completeness.md +0 -137
  350. package/dist/docs/references/reference-evals-content-similarity.md +0 -101
  351. package/dist/docs/references/reference-evals-context-precision.md +0 -196
  352. package/dist/docs/references/reference-evals-create-scorer.md +0 -270
  353. package/dist/docs/references/reference-evals-faithfulness.md +0 -114
  354. package/dist/docs/references/reference-evals-hallucination.md +0 -220
  355. package/dist/docs/references/reference-evals-keyword-coverage.md +0 -128
  356. package/dist/docs/references/reference-evals-mastra-scorer.md +0 -123
  357. package/dist/docs/references/reference-evals-run-evals.md +0 -138
  358. package/dist/docs/references/reference-evals-scorer-utils.md +0 -330
  359. package/dist/docs/references/reference-evals-textual-difference.md +0 -113
  360. package/dist/docs/references/reference-evals-tone-consistency.md +0 -119
  361. package/dist/docs/references/reference-evals-toxicity.md +0 -123
  362. package/dist/docs/references/reference-harness-harness-class.md +0 -645
  363. package/dist/docs/references/reference-logging-pino-logger.md +0 -117
  364. package/dist/docs/references/reference-memory-deleteMessages.md +0 -40
  365. package/dist/docs/references/reference-memory-memory-class.md +0 -147
  366. package/dist/docs/references/reference-memory-observational-memory.md +0 -565
  367. package/dist/docs/references/reference-observability-tracing-bridges-otel.md +0 -131
  368. package/dist/docs/references/reference-observability-tracing-configuration.md +0 -178
  369. package/dist/docs/references/reference-observability-tracing-exporters-console-exporter.md +0 -138
  370. package/dist/docs/references/reference-observability-tracing-exporters-datadog.md +0 -116
  371. package/dist/docs/references/reference-observability-tracing-instances.md +0 -109
  372. package/dist/docs/references/reference-observability-tracing-interfaces.md +0 -749
  373. package/dist/docs/references/reference-observability-tracing-processors-sensitive-data-filter.md +0 -144
  374. package/dist/docs/references/reference-observability-tracing-spans.md +0 -224
  375. package/dist/docs/references/reference-processors-batch-parts-processor.md +0 -61
  376. package/dist/docs/references/reference-processors-language-detector.md +0 -81
  377. package/dist/docs/references/reference-processors-message-history-processor.md +0 -85
  378. package/dist/docs/references/reference-processors-moderation-processor.md +0 -104
  379. package/dist/docs/references/reference-processors-pii-detector.md +0 -107
  380. package/dist/docs/references/reference-processors-processor-interface.md +0 -525
  381. package/dist/docs/references/reference-processors-prompt-injection-detector.md +0 -71
  382. package/dist/docs/references/reference-processors-semantic-recall-processor.md +0 -123
  383. package/dist/docs/references/reference-processors-system-prompt-scrubber.md +0 -80
  384. package/dist/docs/references/reference-processors-token-limiter-processor.md +0 -113
  385. package/dist/docs/references/reference-processors-tool-call-filter.md +0 -85
  386. package/dist/docs/references/reference-processors-tool-search-processor.md +0 -113
  387. package/dist/docs/references/reference-processors-unicode-normalizer.md +0 -62
  388. package/dist/docs/references/reference-processors-working-memory-processor.md +0 -154
  389. package/dist/docs/references/reference-rag-database-config.md +0 -264
  390. package/dist/docs/references/reference-rag-embeddings.md +0 -92
  391. package/dist/docs/references/reference-server-mastra-server.md +0 -298
  392. package/dist/docs/references/reference-server-register-api-route.md +0 -249
  393. package/dist/docs/references/reference-storage-cloudflare-d1.md +0 -218
  394. package/dist/docs/references/reference-storage-composite.md +0 -235
  395. package/dist/docs/references/reference-storage-lance.md +0 -131
  396. package/dist/docs/references/reference-storage-libsql.md +0 -135
  397. package/dist/docs/references/reference-storage-mongodb.md +0 -262
  398. package/dist/docs/references/reference-storage-mssql.md +0 -155
  399. package/dist/docs/references/reference-storage-overview.md +0 -121
  400. package/dist/docs/references/reference-storage-postgresql.md +0 -529
  401. package/dist/docs/references/reference-storage-upstash.md +0 -160
  402. package/dist/docs/references/reference-streaming-ChunkType.md +0 -292
  403. package/dist/docs/references/reference-streaming-agents-MastraModelOutput.md +0 -182
  404. package/dist/docs/references/reference-streaming-agents-streamLegacy.md +0 -142
  405. package/dist/docs/references/reference-streaming-workflows-observeStream.md +0 -42
  406. package/dist/docs/references/reference-streaming-workflows-resumeStream.md +0 -61
  407. package/dist/docs/references/reference-streaming-workflows-stream.md +0 -88
  408. package/dist/docs/references/reference-streaming-workflows-timeTravelStream.md +0 -142
  409. package/dist/docs/references/reference-templates-overview.md +0 -194
  410. package/dist/docs/references/reference-tools-create-tool.md +0 -237
  411. package/dist/docs/references/reference-tools-graph-rag-tool.md +0 -185
  412. package/dist/docs/references/reference-tools-mcp-client.md +0 -962
  413. package/dist/docs/references/reference-tools-mcp-server.md +0 -1275
  414. package/dist/docs/references/reference-tools-vector-query-tool.md +0 -459
  415. package/dist/docs/references/reference-vectors-libsql.md +0 -305
  416. package/dist/docs/references/reference-vectors-mongodb.md +0 -295
  417. package/dist/docs/references/reference-vectors-pg.md +0 -408
  418. package/dist/docs/references/reference-vectors-upstash.md +0 -294
  419. package/dist/docs/references/reference-voice-composite-voice.md +0 -121
  420. package/dist/docs/references/reference-voice-mastra-voice.md +0 -313
  421. package/dist/docs/references/reference-voice-voice.addInstructions.md +0 -56
  422. package/dist/docs/references/reference-voice-voice.addTools.md +0 -67
  423. package/dist/docs/references/reference-voice-voice.connect.md +0 -94
  424. package/dist/docs/references/reference-voice-voice.events.md +0 -37
  425. package/dist/docs/references/reference-voice-voice.listen.md +0 -164
  426. package/dist/docs/references/reference-voice-voice.on.md +0 -111
  427. package/dist/docs/references/reference-voice-voice.speak.md +0 -157
  428. package/dist/docs/references/reference-workflows-run-methods-cancel.md +0 -86
  429. package/dist/docs/references/reference-workflows-run-methods-restart.md +0 -33
  430. package/dist/docs/references/reference-workflows-run-methods-resume.md +0 -59
  431. package/dist/docs/references/reference-workflows-run-methods-start.md +0 -58
  432. package/dist/docs/references/reference-workflows-run-methods-startAsync.md +0 -67
  433. package/dist/docs/references/reference-workflows-run-methods-timeTravel.md +0 -142
  434. package/dist/docs/references/reference-workflows-run.md +0 -59
  435. package/dist/docs/references/reference-workflows-step.md +0 -119
  436. package/dist/docs/references/reference-workflows-workflow-methods-branch.md +0 -25
  437. package/dist/docs/references/reference-workflows-workflow-methods-commit.md +0 -17
  438. package/dist/docs/references/reference-workflows-workflow-methods-create-run.md +0 -63
  439. package/dist/docs/references/reference-workflows-workflow-methods-dountil.md +0 -25
  440. package/dist/docs/references/reference-workflows-workflow-methods-dowhile.md +0 -25
  441. package/dist/docs/references/reference-workflows-workflow-methods-foreach.md +0 -118
  442. package/dist/docs/references/reference-workflows-workflow-methods-map.md +0 -93
  443. package/dist/docs/references/reference-workflows-workflow-methods-parallel.md +0 -21
  444. package/dist/docs/references/reference-workflows-workflow-methods-sleep.md +0 -35
  445. package/dist/docs/references/reference-workflows-workflow-methods-sleepUntil.md +0 -35
  446. package/dist/docs/references/reference-workflows-workflow-methods-then.md +0 -21
  447. package/dist/docs/references/reference-workflows-workflow.md +0 -157
  448. package/dist/docs/references/reference-workspace-filesystem.md +0 -202
  449. package/dist/docs/references/reference-workspace-local-filesystem.md +0 -327
  450. package/dist/docs/references/reference-workspace-local-sandbox.md +0 -285
  451. package/dist/docs/references/reference-workspace-sandbox.md +0 -81
  452. package/dist/docs/references/reference-workspace-workspace-class.md +0 -226
  453. package/dist/docs/references/reference.md +0 -276
@@ -1,962 +0,0 @@
1
- # MCPClient
2
-
3
- The `MCPClient` class provides a way to manage multiple MCP server connections and their tools in a Mastra application. It handles connection lifecycle, tool namespacing, and provides access to tools across all configured servers.
4
-
5
- ## Constructor
6
-
7
- Creates a new instance of the MCPClient class.
8
-
9
- ```typescript
10
- constructor({
11
- id?: string;
12
- servers: Record<string, MastraMCPServerDefinition>;
13
- timeout?: number;
14
- }: MCPClientOptions)
15
- ```
16
-
17
- ### MCPClientOptions
18
-
19
- **id?:** (`string`): Optional unique identifier for the configuration instance. Use this to prevent memory leaks when creating multiple instances with identical configurations.
20
-
21
- **servers:** (`Record<string, MastraMCPServerDefinition>`): A map of server configurations, where each key is a unique server identifier and the value is the server configuration.
22
-
23
- **timeout?:** (`number`): Global timeout value in milliseconds for all servers unless overridden in individual server configs. (Default: `60000`)
24
-
25
- ### MastraMCPServerDefinition
26
-
27
- Each server in the `servers` map is configured using the `MastraMCPServerDefinition` type. The transport type is detected based on the provided parameters:
28
-
29
- - If `command` is provided, it uses the Stdio transport.
30
- - If `url` is provided, it first attempts to use the Streamable HTTP transport and falls back to the legacy SSE transport if the initial connection fails.
31
-
32
- **command?:** (`string`): For Stdio servers: The command to execute.
33
-
34
- **args?:** (`string[]`): For Stdio servers: Arguments to pass to the command.
35
-
36
- **env?:** (`Record<string, string>`): For Stdio servers: Environment variables to set for the command.
37
-
38
- **url?:** (`URL`): For HTTP servers (Streamable HTTP or SSE): The URL of the server.
39
-
40
- **requestInit?:** (`RequestInit`): For HTTP servers: Request configuration for the fetch API.
41
-
42
- **eventSourceInit?:** (`EventSourceInit`): For SSE fallback: Custom fetch configuration for SSE connections. Required when using custom headers with SSE.
43
-
44
- **fetch?:** (`FetchLike`): For HTTP servers: Custom fetch implementation used for all network requests. When provided, this function will be used for all HTTP requests, allowing you to add dynamic authentication headers (e.g., refreshing bearer tokens), customize request behavior per-request, or intercept and modify requests/responses. When \`fetch\` is provided, \`requestInit\`, \`eventSourceInit\`, and \`authProvider\` become optional, as you can handle these concerns within your custom fetch function.
45
-
46
- **logger?:** (`LogHandler`): Optional additional handler for logging.
47
-
48
- **timeout?:** (`number`): Server-specific timeout in milliseconds.
49
-
50
- **capabilities?:** (`ClientCapabilities`): Server-specific capabilities configuration.
51
-
52
- **authProvider?:** (`OAuthClientProvider`): For HTTP servers: OAuth authentication provider for automatic token refresh and OAuth flow management. Use MCPOAuthClientProvider for a ready-to-use implementation.
53
-
54
- **enableServerLogs?:** (`boolean`): Whether to enable logging for this server. (Default: `true`)
55
-
56
- ## Methods
57
-
58
- ### listTools()
59
-
60
- Retrieves all tools from all configured servers, with tool names namespaced by their server name (in the format `serverName_toolName`) to prevent conflicts. Intended to be passed onto an Agent definition.
61
-
62
- ```ts
63
- new Agent({ id: "agent", tools: await mcp.listTools() });
64
- ```
65
-
66
- ### listToolsets()
67
-
68
- Returns an object mapping namespaced tool names (in the format `serverName.toolName`) to their tool implementations. Intended to be passed dynamically into the generate or stream method.
69
-
70
- ```typescript
71
- const res = await agent.stream(prompt, {
72
- toolsets: await mcp.listToolsets(),
73
- });
74
- ```
75
-
76
- ### disconnect()
77
-
78
- Disconnects from all MCP servers and cleans up resources.
79
-
80
- ```typescript
81
- async disconnect(): Promise<void>
82
- ```
83
-
84
- ### `resources` Property
85
-
86
- The `MCPClient` instance has a `resources` property that provides access to resource-related operations.
87
-
88
- ```typescript
89
- const mcpClient = new MCPClient({
90
- /* ...servers configuration... */
91
- });
92
-
93
- // Access resource methods via mcpClient.resources
94
- const allResourcesByServer = await mcpClient.resources.list();
95
- const templatesByServer = await mcpClient.resources.templates();
96
- // ... and so on for other resource methods.
97
- ```
98
-
99
- #### `resources.list()`
100
-
101
- Retrieves all available resources from all connected MCP servers, grouped by server name.
102
-
103
- ```typescript
104
- async list(): Promise<Record<string, Resource[]>>
105
- ```
106
-
107
- Example:
108
-
109
- ```typescript
110
- const resourcesByServer = await mcpClient.resources.list();
111
- for (const serverName in resourcesByServer) {
112
- console.log(`Resources from ${serverName}:`, resourcesByServer[serverName]);
113
- }
114
- ```
115
-
116
- #### `resources.templates()`
117
-
118
- Retrieves all available resource templates from all connected MCP servers, grouped by server name.
119
-
120
- ```typescript
121
- async templates(): Promise<Record<string, ResourceTemplate[]>>
122
- ```
123
-
124
- Example:
125
-
126
- ```typescript
127
- const templatesByServer = await mcpClient.resources.templates();
128
- for (const serverName in templatesByServer) {
129
- console.log(`Templates from ${serverName}:`, templatesByServer[serverName]);
130
- }
131
- ```
132
-
133
- #### `resources.read(serverName: string, uri: string)`
134
-
135
- Reads the content of a specific resource from a named server.
136
-
137
- ```typescript
138
- async read(serverName: string, uri: string): Promise<ReadResourceResult>
139
- ```
140
-
141
- - `serverName`: The identifier of the server (key used in the `servers` constructor option).
142
- - `uri`: The URI of the resource to read.
143
-
144
- Example:
145
-
146
- ```typescript
147
- const content = await mcpClient.resources.read(
148
- "myWeatherServer",
149
- "weather://current",
150
- );
151
- console.log("Current weather:", content.contents[0].text);
152
- ```
153
-
154
- #### `resources.subscribe(serverName: string, uri: string)`
155
-
156
- Subscribes to updates for a specific resource on a named server.
157
-
158
- ```typescript
159
- async subscribe(serverName: string, uri: string): Promise<object>
160
- ```
161
-
162
- Example:
163
-
164
- ```typescript
165
- await mcpClient.resources.subscribe("myWeatherServer", "weather://current");
166
- ```
167
-
168
- #### `resources.unsubscribe(serverName: string, uri: string)`
169
-
170
- Unsubscribes from updates for a specific resource on a named server.
171
-
172
- ```typescript
173
- async unsubscribe(serverName: string, uri: string): Promise<object>
174
- ```
175
-
176
- Example:
177
-
178
- ```typescript
179
- await mcpClient.resources.unsubscribe("myWeatherServer", "weather://current");
180
- ```
181
-
182
- #### `resources.onUpdated(serverName: string, handler: (params: { uri: string }) => void)`
183
-
184
- Sets a notification handler that will be called when a subscribed resource on a specific server is updated.
185
-
186
- ```typescript
187
- async onUpdated(serverName: string, handler: (params: { uri: string }) => void): Promise<void>
188
- ```
189
-
190
- Example:
191
-
192
- ```typescript
193
- mcpClient.resources.onUpdated("myWeatherServer", (params) => {
194
- console.log(`Resource updated on myWeatherServer: ${params.uri}`);
195
- // You might want to re-fetch the resource content here
196
- // await mcpClient.resources.read("myWeatherServer", params.uri);
197
- });
198
- ```
199
-
200
- #### `resources.onListChanged(serverName: string, handler: () => void)`
201
-
202
- Sets a notification handler that will be called when the overall list of available resources changes on a specific server.
203
-
204
- ```typescript
205
- async onListChanged(serverName: string, handler: () => void): Promise<void>
206
- ```
207
-
208
- Example:
209
-
210
- ```typescript
211
- mcpClient.resources.onListChanged("myWeatherServer", () => {
212
- console.log("Resource list changed on myWeatherServer.");
213
- // You should re-fetch the list of resources
214
- // await mcpClient.resources.list();
215
- });
216
- ```
217
-
218
- ### `elicitation` Property
219
-
220
- The `MCPClient` instance has an `elicitation` property that provides access to elicitation-related operations. Elicitation allows MCP servers to request structured information from users.
221
-
222
- ```typescript
223
- const mcpClient = new MCPClient({
224
- /* ...servers configuration... */
225
- });
226
-
227
- // Set up elicitation handler
228
- mcpClient.elicitation.onRequest("serverName", async (request) => {
229
- // Handle elicitation request from server
230
- console.log("Server requests:", request.message);
231
- console.log("Schema:", request.requestedSchema);
232
-
233
- // Return user response
234
- return {
235
- action: "accept",
236
- content: { name: "John Doe", email: "john@example.com" },
237
- };
238
- });
239
- ```
240
-
241
- #### `elicitation.onRequest(serverName: string, handler: ElicitationHandler)`
242
-
243
- Sets up a handler function that will be called when any connected MCP server sends an elicitation request. The handler receives the request and must return a response.
244
-
245
- **ElicitationHandler Function:**
246
-
247
- The handler function receives a request object with:
248
-
249
- - `message`: A human-readable message describing what information is needed
250
- - `requestedSchema`: A JSON schema defining the structure of the expected response
251
-
252
- The handler must return an `ElicitResult` with:
253
-
254
- - `action`: One of `'accept'`, `'decline'`, or `'cancel'`
255
- - `content`: The user's data (only when action is `'accept'`)
256
-
257
- **Example:**
258
-
259
- ```typescript
260
- mcpClient.elicitation.onRequest("serverName", async (request) => {
261
- console.log(`Server requests: ${request.message}`);
262
-
263
- // Example: Simple user input collection
264
- if (request.requestedSchema.properties.name) {
265
- // Simulate user accepting and providing data
266
- return {
267
- action: "accept",
268
- content: {
269
- name: "Alice Smith",
270
- email: "alice@example.com",
271
- },
272
- };
273
- }
274
-
275
- // Simulate user declining the request
276
- return { action: "decline" };
277
- });
278
- ```
279
-
280
- **Complete Interactive Example:**
281
-
282
- ```typescript
283
- import { MCPClient } from "@mastra/mcp";
284
- import { createInterface } from "readline";
285
-
286
- const readline = createInterface({
287
- input: process.stdin,
288
- output: process.stdout,
289
- });
290
-
291
- function askQuestion(question: string): Promise<string> {
292
- return new Promise((resolve) => {
293
- readline.question(question, (answer) => resolve(answer.trim()));
294
- });
295
- }
296
-
297
- const mcpClient = new MCPClient({
298
- servers: {
299
- interactiveServer: {
300
- url: new URL("http://localhost:3000/mcp"),
301
- },
302
- },
303
- });
304
-
305
- // Set up interactive elicitation handler
306
- await mcpClient.elicitation.onRequest("interactiveServer", async (request) => {
307
- console.log(`\n📋 Server Request: ${request.message}`);
308
- console.log("Required information:");
309
-
310
- const schema = request.requestedSchema;
311
- const properties = schema.properties || {};
312
- const required = schema.required || [];
313
- const content: Record<string, any> = {};
314
-
315
- // Collect input for each field
316
- for (const [fieldName, fieldSchema] of Object.entries(properties)) {
317
- const field = fieldSchema as any;
318
- const isRequired = required.includes(fieldName);
319
-
320
- let prompt = `${field.title || fieldName}`;
321
- if (field.description) prompt += ` (${field.description})`;
322
- if (isRequired) prompt += " *required*";
323
- prompt += ": ";
324
-
325
- const answer = await askQuestion(prompt);
326
-
327
- // Handle cancellation
328
- if (answer.toLowerCase() === "cancel") {
329
- return { action: "cancel" };
330
- }
331
-
332
- // Validate required fields
333
- if (answer === "" && isRequired) {
334
- console.log(`❌ ${fieldName} is required`);
335
- return { action: "decline" };
336
- }
337
-
338
- if (answer !== "") {
339
- content[fieldName] = answer;
340
- }
341
- }
342
-
343
- // Confirm submission
344
- console.log("\n📝 You provided:");
345
- console.log(JSON.stringify(content, null, 2));
346
-
347
- const confirm = await askQuestion(
348
- "\nSubmit this information? (yes/no/cancel): ",
349
- );
350
-
351
- if (confirm.toLowerCase() === "yes" || confirm.toLowerCase() === "y") {
352
- return { action: "accept", content };
353
- } else if (confirm.toLowerCase() === "cancel") {
354
- return { action: "cancel" };
355
- } else {
356
- return { action: "decline" };
357
- }
358
- });
359
- ```
360
-
361
- ### `prompts` Property
362
-
363
- The `MCPClient` instance has a `prompts` property that provides access to prompt-related operations.
364
-
365
- ```typescript
366
- const mcpClient = new MCPClient({
367
- /* ...servers configuration... */
368
- });
369
-
370
- // Access prompt methods via mcpClient.prompts
371
- const allPromptsByServer = await mcpClient.prompts.list();
372
- const { prompt, messages } = await mcpClient.prompts.get({
373
- serverName: "myWeatherServer",
374
- name: "current",
375
- });
376
- ```
377
-
378
- #### `prompts.list()`
379
-
380
- Retrieves all available prompts from all connected MCP servers, grouped by server name.
381
-
382
- ```typescript
383
- async list(): Promise<Record<string, Prompt[]>>
384
- ```
385
-
386
- Example:
387
-
388
- ```typescript
389
- const promptsByServer = await mcpClient.prompts.list();
390
- for (const serverName in promptsByServer) {
391
- console.log(`Prompts from ${serverName}:`, promptsByServer[serverName]);
392
- }
393
- ```
394
-
395
- #### `prompts.get({ serverName, name, args?, version? })`
396
-
397
- Retrieves a specific prompt and its messages from a server.
398
-
399
- ```typescript
400
- async get({
401
- serverName,
402
- name,
403
- args?,
404
- version?,
405
- }: {
406
- serverName: string;
407
- name: string;
408
- args?: Record<string, any>;
409
- version?: string;
410
- }): Promise<{ prompt: Prompt; messages: PromptMessage[] }>
411
- ```
412
-
413
- Example:
414
-
415
- ```typescript
416
- const { prompt, messages } = await mcpClient.prompts.get({
417
- serverName: "myWeatherServer",
418
- name: "current",
419
- args: { location: "London" },
420
- });
421
- console.log(prompt);
422
- console.log(messages);
423
- ```
424
-
425
- #### `prompts.onListChanged(serverName: string, handler: () => void)`
426
-
427
- Sets a notification handler that will be called when the list of available prompts changes on a specific server.
428
-
429
- ```typescript
430
- async onListChanged(serverName: string, handler: () => void): Promise<void>
431
- ```
432
-
433
- Example:
434
-
435
- ```typescript
436
- mcpClient.prompts.onListChanged("myWeatherServer", () => {
437
- console.log("Prompt list changed on myWeatherServer.");
438
- // You should re-fetch the list of prompts
439
- // await mcpClient.prompts.list();
440
- });
441
- ```
442
-
443
- ### `progress` Property
444
-
445
- The `MCPClient` instance has a `progress` property for subscribing to progress notifications emitted by MCP servers while tools execute.
446
-
447
- ```typescript
448
- const mcpClient = new MCPClient({
449
- servers: {
450
- myServer: {
451
- url: new URL('http://localhost:4111/api/mcp/myServer/mcp'),
452
- // Enabled by default; set to false to disable
453
- enableProgressTracking: true,
454
- },
455
- },
456
- });
457
-
458
- // Subscribe to progress updates for a specific server
459
- await mcpClient.progress.onUpdate('myServer', (params) => {
460
- console.log('📊 Progress:', params.progress, '/', params.total);
461
- if (params.message) console.log('Message:', params.message);
462
- if (params.progressToken) console.log('Token:', params.progressToken);
463
- });
464
- ```
465
-
466
- #### `progress.onUpdate(serverName: string, handler)`
467
-
468
- Registers a handler function to receive progress updates from the specified server.
469
-
470
- ```typescript
471
- async onUpdate(
472
- serverName: string,
473
- handler: (params: {
474
- progressToken: string;
475
- progress: number;
476
- total?: number;
477
- message?: string;
478
- }) => void,
479
- ): Promise<void>
480
- ```
481
-
482
- Notes:
483
-
484
- - When `enableProgressTracking` is true (default), tool calls include a `progressToken` so you can correlate updates to a specific run.
485
- - If you pass a `runId` when executing a tool, it will be used as the `progressToken`.
486
-
487
- To disable progress tracking for a server:
488
-
489
- ```typescript
490
- const mcpClient = new MCPClient({
491
- servers: {
492
- myServer: {
493
- url: new URL('http://localhost:4111/api/mcp/myServer/mcp'),
494
- enableProgressTracking: false,
495
- },
496
- },
497
- });
498
- ```
499
-
500
- ## Elicitation
501
-
502
- Elicitation is a feature that allows MCP servers to request structured information from users. When a server needs additional data, it can send an elicitation request that the client handles by prompting the user. A common example is during a tool call.
503
-
504
- ### How Elicitation Works
505
-
506
- 1. **Server Request**: An MCP server tool calls `server.elicitation.sendRequest()` with a message and schema
507
- 2. **Client Handler**: Your elicitation handler function is called with the request
508
- 3. **User Interaction**: Your handler collects user input (via UI, CLI, etc.)
509
- 4. **Response**: Your handler returns the user's response (accept/decline/cancel)
510
- 5. **Tool Continuation**: The server tool receives the response and continues execution
511
-
512
- ### Setting Up Elicitation
513
-
514
- You must set up an elicitation handler before tools that use elicitation are called:
515
-
516
- ```typescript
517
- import { MCPClient } from "@mastra/mcp";
518
-
519
- const mcpClient = new MCPClient({
520
- servers: {
521
- interactiveServer: {
522
- url: new URL("http://localhost:3000/mcp"),
523
- },
524
- },
525
- });
526
-
527
- // Set up elicitation handler
528
- mcpClient.elicitation.onRequest("interactiveServer", async (request) => {
529
- // Handle the server's request for user input
530
- console.log(`Server needs: ${request.message}`);
531
-
532
- // Your logic to collect user input
533
- const userData = await collectUserInput(request.requestedSchema);
534
-
535
- return {
536
- action: "accept",
537
- content: userData,
538
- };
539
- });
540
- ```
541
-
542
- ### Response Types
543
-
544
- Your elicitation handler must return one of three response types:
545
-
546
- - **Accept**: User provided data and confirmed submission
547
-
548
- ```typescript
549
- return {
550
- action: "accept",
551
- content: { name: "John Doe", email: "john@example.com" },
552
- };
553
- ```
554
-
555
- - **Decline**: User explicitly declined to provide the information
556
-
557
- ```typescript
558
- return { action: "decline" };
559
- ```
560
-
561
- - **Cancel**: User dismissed or cancelled the request
562
-
563
- ```typescript
564
- return { action: "cancel" };
565
- ```
566
-
567
- ### Schema-Based Input Collection
568
-
569
- The `requestedSchema` provides structure for the data the server needs:
570
-
571
- ```typescript
572
- await mcpClient.elicitation.onRequest("interactiveServer", async (request) => {
573
- const { properties, required = [] } = request.requestedSchema;
574
- const content: Record<string, any> = {};
575
-
576
- for (const [fieldName, fieldSchema] of Object.entries(properties || {})) {
577
- const field = fieldSchema as any;
578
- const isRequired = required.includes(fieldName);
579
-
580
- // Collect input based on field type and requirements
581
- const value = await promptUser({
582
- name: fieldName,
583
- title: field.title,
584
- description: field.description,
585
- type: field.type,
586
- required: isRequired,
587
- format: field.format,
588
- enum: field.enum,
589
- });
590
-
591
- if (value !== null) {
592
- content[fieldName] = value;
593
- }
594
- }
595
-
596
- return { action: "accept", content };
597
- });
598
- ```
599
-
600
- ### Best Practices
601
-
602
- - **Always handle elicitation**: Set up your handler before calling tools that might use elicitation
603
- - **Validate input**: Check that required fields are provided
604
- - **Respect user choice**: Handle decline and cancel responses gracefully
605
- - **Clear UI**: Make it obvious what information is being requested and why
606
- - **Security**: Never auto-accept requests for sensitive information
607
-
608
- ## OAuth Authentication
609
-
610
- For connecting to MCP servers that require OAuth authentication per the [MCP Auth Specification](https://modelcontextprotocol.io/specification/2025-06-18/basic/authorization), use the `MCPOAuthClientProvider`:
611
-
612
- ```typescript
613
- import { MCPClient, MCPOAuthClientProvider } from "@mastra/mcp";
614
-
615
- // Create an OAuth provider
616
- const oauthProvider = new MCPOAuthClientProvider({
617
- redirectUrl: "http://localhost:3000/oauth/callback",
618
- clientMetadata: {
619
- redirect_uris: ["http://localhost:3000/oauth/callback"],
620
- client_name: "My MCP Client",
621
- grant_types: ["authorization_code", "refresh_token"],
622
- response_types: ["code"],
623
- },
624
- onRedirectToAuthorization: (url) => {
625
- // Handle authorization redirect (open browser, redirect response, etc.)
626
- console.log(`Please visit: ${url}`);
627
- },
628
- });
629
-
630
- // Use the provider with MCPClient
631
- const client = new MCPClient({
632
- servers: {
633
- protectedServer: {
634
- url: new URL("https://mcp.example.com/mcp"),
635
- authProvider: oauthProvider,
636
- },
637
- },
638
- });
639
- ```
640
-
641
- ### Quick Token Provider
642
-
643
- For testing or when you already have a valid access token:
644
-
645
- ```typescript
646
- import { MCPClient, createSimpleTokenProvider } from "@mastra/mcp";
647
-
648
- const provider = createSimpleTokenProvider("your-access-token", {
649
- redirectUrl: "http://localhost:3000/callback",
650
- clientMetadata: {
651
- redirect_uris: ["http://localhost:3000/callback"],
652
- client_name: "Test Client",
653
- },
654
- });
655
-
656
- const client = new MCPClient({
657
- servers: {
658
- testServer: {
659
- url: new URL("https://mcp.example.com/mcp"),
660
- authProvider: provider,
661
- },
662
- },
663
- });
664
- ```
665
-
666
- ### Custom Token Storage
667
-
668
- For persistent token storage across sessions, implement the `OAuthStorage` interface:
669
-
670
- ```typescript
671
- import { MCPOAuthClientProvider, OAuthStorage } from "@mastra/mcp";
672
-
673
- class DatabaseOAuthStorage implements OAuthStorage {
674
- constructor(private db: Database, private userId: string) {}
675
-
676
- async set(key: string, value: string): Promise<void> {
677
- await this.db.query(
678
- "INSERT INTO oauth_tokens (user_id, key, value) VALUES (?, ?, ?) ON CONFLICT DO UPDATE SET value = ?",
679
- [this.userId, key, value, value]
680
- );
681
- }
682
-
683
- async get(key: string): Promise<string | undefined> {
684
- const result = await this.db.query(
685
- "SELECT value FROM oauth_tokens WHERE user_id = ? AND key = ?",
686
- [this.userId, key]
687
- );
688
- return result?.[0]?.value;
689
- }
690
-
691
- async delete(key: string): Promise<void> {
692
- await this.db.query(
693
- "DELETE FROM oauth_tokens WHERE user_id = ? AND key = ?",
694
- [this.userId, key]
695
- );
696
- }
697
- }
698
-
699
- const provider = new MCPOAuthClientProvider({
700
- redirectUrl: "http://localhost:3000/callback",
701
- clientMetadata: { /* ... */ },
702
- storage: new DatabaseOAuthStorage(db, "user-123"),
703
- });
704
- ```
705
-
706
- ## Examples
707
-
708
- ### Static Tool Configuration
709
-
710
- For tools where you have a single connection to the MCP server for you entire app, use `listTools()` and pass the tools to your agent:
711
-
712
- ```typescript
713
- import { MCPClient } from "@mastra/mcp";
714
- import { Agent } from "@mastra/core/agent";
715
-
716
- const mcp = new MCPClient({
717
- servers: {
718
- stockPrice: {
719
- command: "npx",
720
- args: ["tsx", "stock-price.ts"],
721
- env: {
722
- API_KEY: "your-api-key",
723
- },
724
- log: (logMessage) => {
725
- console.log(`[${logMessage.level}] ${logMessage.message}`);
726
- },
727
- },
728
- weather: {
729
- url: new URL("http://localhost:8080/sse"),
730
- },
731
- },
732
- timeout: 30000, // Global 30s timeout
733
- });
734
-
735
- // Create an agent with access to all tools
736
- const agent = new Agent({
737
- id: "multi-tool-agent",
738
- name: "Multi-tool Agent",
739
- instructions: "You have access to multiple tool servers.",
740
- model: "openai/gpt-5.1",
741
- tools: await mcp.listTools(),
742
- });
743
-
744
- // Example of using resource methods
745
- async function checkWeatherResource() {
746
- try {
747
- const weatherResources = await mcp.resources.list();
748
- if (weatherResources.weather && weatherResources.weather.length > 0) {
749
- const currentWeatherURI = weatherResources.weather[0].uri;
750
- const weatherData = await mcp.resources.read(
751
- "weather",
752
- currentWeatherURI,
753
- );
754
- console.log("Weather data:", weatherData.contents[0].text);
755
- }
756
- } catch (error) {
757
- console.error("Error fetching weather resource:", error);
758
- }
759
- }
760
- checkWeatherResource();
761
-
762
- // Example of using prompt methods
763
- async function checkWeatherPrompt() {
764
- try {
765
- const weatherPrompts = await mcp.prompts.list();
766
- if (weatherPrompts.weather && weatherPrompts.weather.length > 0) {
767
- const currentWeatherPrompt = weatherPrompts.weather.find(
768
- (p) => p.name === "current",
769
- );
770
- if (currentWeatherPrompt) {
771
- console.log("Weather prompt:", currentWeatherPrompt);
772
- } else {
773
- console.log("Current weather prompt not found");
774
- }
775
- }
776
- } catch (error) {
777
- console.error("Error fetching weather prompt:", error);
778
- }
779
- }
780
- checkWeatherPrompt();
781
- ```
782
-
783
- ### Dynamic toolsets
784
-
785
- When you need a new MCP connection for each user, use `listToolsets()` and add the tools when calling stream or generate:
786
-
787
- ```typescript
788
- import { Agent } from "@mastra/core/agent";
789
- import { MCPClient } from "@mastra/mcp";
790
-
791
- // Create the agent first, without any tools
792
- const agent = new Agent({
793
- id: "multi-tool-agent",
794
- name: "Multi-tool Agent",
795
- instructions: "You help users check stocks and weather.",
796
- model: "openai/gpt-5.1",
797
- });
798
-
799
- // Later, configure MCP with user-specific settings
800
- const mcp = new MCPClient({
801
- servers: {
802
- stockPrice: {
803
- command: "npx",
804
- args: ["tsx", "stock-price.ts"],
805
- env: {
806
- API_KEY: "user-123-api-key",
807
- },
808
- timeout: 20000, // Server-specific timeout
809
- },
810
- weather: {
811
- url: new URL("http://localhost:8080/sse"),
812
- requestInit: {
813
- headers: {
814
- Authorization: `Bearer user-123-token`,
815
- },
816
- },
817
- },
818
- },
819
- });
820
-
821
- // Pass all toolsets to stream() or generate()
822
- const response = await agent.stream(
823
- "How is AAPL doing and what is the weather?",
824
- {
825
- toolsets: await mcp.listToolsets(),
826
- },
827
- );
828
- ```
829
-
830
- ## Instance Management
831
-
832
- The `MCPClient` class includes built-in memory leak prevention for managing multiple instances:
833
-
834
- 1. Creating multiple instances with identical configurations without an `id` will throw an error to prevent memory leaks
835
- 2. If you need multiple instances with identical configurations, provide a unique `id` for each instance
836
- 3. Call `await configuration.disconnect()` before recreating an instance with the same configuration
837
- 4. If you only need one instance, consider moving the configuration to a higher scope to avoid recreation
838
-
839
- For example, if you try to create multiple instances with the same configuration without an `id`:
840
-
841
- ```typescript
842
- // First instance - OK
843
- const mcp1 = new MCPClient({
844
- servers: {
845
- /* ... */
846
- },
847
- });
848
-
849
- // Second instance with same config - Will throw an error
850
- const mcp2 = new MCPClient({
851
- servers: {
852
- /* ... */
853
- },
854
- });
855
-
856
- // To fix, either:
857
- // 1. Add unique IDs
858
- const mcp3 = new MCPClient({
859
- id: "instance-1",
860
- servers: {
861
- /* ... */
862
- },
863
- });
864
-
865
- // 2. Or disconnect before recreating
866
- await mcp1.disconnect();
867
- const mcp4 = new MCPClient({
868
- servers: {
869
- /* ... */
870
- },
871
- });
872
- ```
873
-
874
- ## Server Lifecycle
875
-
876
- MCPClient handles server connections gracefully:
877
-
878
- 1. Automatic connection management for multiple servers
879
- 2. Graceful server shutdown to prevent error messages during development
880
- 3. Proper cleanup of resources when disconnecting
881
-
882
- ## Using Custom Fetch for Dynamic Authentication
883
-
884
- For HTTP servers, you can provide a custom `fetch` function to handle dynamic authentication, request interception, or other custom behavior. This is particularly useful when you need to refresh tokens on each request or customize request behavior.
885
-
886
- When `fetch` is provided, `requestInit`, `eventSourceInit`, and `authProvider` become optional, as you can handle these concerns within your custom fetch function.
887
-
888
- ```typescript
889
- const mcpClient = new MCPClient({
890
- servers: {
891
- apiServer: {
892
- url: new URL("https://api.example.com/mcp"),
893
- fetch: async (url, init) => {
894
- // Refresh token on each request
895
- const token = await getAuthToken(); // Your token refresh logic
896
-
897
- return fetch(url, {
898
- ...init,
899
- headers: {
900
- ...init?.headers,
901
- Authorization: `Bearer ${token}`,
902
- },
903
- });
904
- },
905
- },
906
- },
907
- });
908
- ```
909
-
910
- ## Using SSE Request Headers
911
-
912
- When using the legacy SSE MCP transport, you must configure both `requestInit` and `eventSourceInit` due to a bug in the MCP SDK. Alternatively, you can use a custom `fetch` function which will be automatically used for both POST requests and SSE connections:
913
-
914
- ```ts
915
- // Option 1: Using requestInit and eventSourceInit (required for SSE)
916
- const sseClient = new MCPClient({
917
- servers: {
918
- exampleServer: {
919
- url: new URL("https://your-mcp-server.com/sse"),
920
- // Note: requestInit alone isn't enough for SSE
921
- requestInit: {
922
- headers: {
923
- Authorization: "Bearer your-token",
924
- },
925
- },
926
- // This is also required for SSE connections with custom headers
927
- eventSourceInit: {
928
- fetch(input: Request | URL | string, init?: RequestInit) {
929
- const headers = new Headers(init?.headers || {});
930
- headers.set("Authorization", "Bearer your-token");
931
- return fetch(input, {
932
- ...init,
933
- headers,
934
- });
935
- },
936
- },
937
- },
938
- },
939
- });
940
-
941
- // Option 2: Using custom fetch (simpler, works for both Streamable HTTP and SSE)
942
- const sseClientWithFetch = new MCPClient({
943
- servers: {
944
- exampleServer: {
945
- url: new URL("https://your-mcp-server.com/sse"),
946
- fetch: async (url, init) => {
947
- const headers = new Headers(init?.headers || {});
948
- headers.set("Authorization", "Bearer your-token");
949
- return fetch(url, {
950
- ...init,
951
- headers,
952
- });
953
- },
954
- },
955
- },
956
- });
957
- ```
958
-
959
- ## Related Information
960
-
961
- - For creating MCP servers, see the [MCPServer documentation](https://mastra.ai/reference/tools/mcp-server).
962
- - For more about the Model Context Protocol, see the [@modelcontextprotocol/sdk documentation](https://github.com/modelcontextprotocol/typescript-sdk).