ai 6.0.31 → 6.0.33
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +12 -2
- package/dist/index.mjs.map +1 -1
- package/dist/internal/index.js +1 -1
- package/dist/internal/index.mjs +1 -1
- package/docs/00-introduction/index.mdx +76 -0
- package/docs/02-foundations/01-overview.mdx +43 -0
- package/docs/02-foundations/02-providers-and-models.mdx +163 -0
- package/docs/02-foundations/03-prompts.mdx +620 -0
- package/docs/02-foundations/04-tools.mdx +160 -0
- package/docs/02-foundations/05-streaming.mdx +62 -0
- package/docs/02-foundations/index.mdx +43 -0
- package/docs/02-getting-started/00-choosing-a-provider.mdx +110 -0
- package/docs/02-getting-started/01-navigating-the-library.mdx +85 -0
- package/docs/02-getting-started/02-nextjs-app-router.mdx +556 -0
- package/docs/02-getting-started/03-nextjs-pages-router.mdx +542 -0
- package/docs/02-getting-started/04-svelte.mdx +627 -0
- package/docs/02-getting-started/05-nuxt.mdx +566 -0
- package/docs/02-getting-started/06-nodejs.mdx +512 -0
- package/docs/02-getting-started/07-expo.mdx +766 -0
- package/docs/02-getting-started/08-tanstack-start.mdx +583 -0
- package/docs/02-getting-started/index.mdx +44 -0
- package/docs/03-agents/01-overview.mdx +96 -0
- package/docs/03-agents/02-building-agents.mdx +367 -0
- package/docs/03-agents/03-workflows.mdx +370 -0
- package/docs/03-agents/04-loop-control.mdx +350 -0
- package/docs/03-agents/05-configuring-call-options.mdx +286 -0
- package/docs/03-agents/index.mdx +40 -0
- package/docs/03-ai-sdk-core/01-overview.mdx +33 -0
- package/docs/03-ai-sdk-core/05-generating-text.mdx +600 -0
- package/docs/03-ai-sdk-core/10-generating-structured-data.mdx +662 -0
- package/docs/03-ai-sdk-core/15-tools-and-tool-calling.mdx +1102 -0
- package/docs/03-ai-sdk-core/16-mcp-tools.mdx +375 -0
- package/docs/03-ai-sdk-core/20-prompt-engineering.mdx +144 -0
- package/docs/03-ai-sdk-core/25-settings.mdx +198 -0
- package/docs/03-ai-sdk-core/30-embeddings.mdx +247 -0
- package/docs/03-ai-sdk-core/31-reranking.mdx +218 -0
- package/docs/03-ai-sdk-core/35-image-generation.mdx +341 -0
- package/docs/03-ai-sdk-core/36-transcription.mdx +173 -0
- package/docs/03-ai-sdk-core/37-speech.mdx +167 -0
- package/docs/03-ai-sdk-core/40-middleware.mdx +480 -0
- package/docs/03-ai-sdk-core/45-provider-management.mdx +349 -0
- package/docs/03-ai-sdk-core/50-error-handling.mdx +149 -0
- package/docs/03-ai-sdk-core/55-testing.mdx +218 -0
- package/docs/03-ai-sdk-core/60-telemetry.mdx +313 -0
- package/docs/03-ai-sdk-core/65-devtools.mdx +107 -0
- package/docs/03-ai-sdk-core/index.mdx +88 -0
- package/docs/04-ai-sdk-ui/01-overview.mdx +44 -0
- package/docs/04-ai-sdk-ui/02-chatbot.mdx +1313 -0
- package/docs/04-ai-sdk-ui/03-chatbot-message-persistence.mdx +535 -0
- package/docs/04-ai-sdk-ui/03-chatbot-resume-streams.mdx +263 -0
- package/docs/04-ai-sdk-ui/03-chatbot-tool-usage.mdx +682 -0
- package/docs/04-ai-sdk-ui/04-generative-user-interfaces.mdx +389 -0
- package/docs/04-ai-sdk-ui/05-completion.mdx +186 -0
- package/docs/04-ai-sdk-ui/08-object-generation.mdx +344 -0
- package/docs/04-ai-sdk-ui/20-streaming-data.mdx +397 -0
- package/docs/04-ai-sdk-ui/21-error-handling.mdx +190 -0
- package/docs/04-ai-sdk-ui/21-transport.mdx +174 -0
- package/docs/04-ai-sdk-ui/24-reading-ui-message-streams.mdx +104 -0
- package/docs/04-ai-sdk-ui/25-message-metadata.mdx +152 -0
- package/docs/04-ai-sdk-ui/50-stream-protocol.mdx +477 -0
- package/docs/04-ai-sdk-ui/index.mdx +64 -0
- package/docs/05-ai-sdk-rsc/01-overview.mdx +45 -0
- package/docs/05-ai-sdk-rsc/02-streaming-react-components.mdx +209 -0
- package/docs/05-ai-sdk-rsc/03-generative-ui-state.mdx +279 -0
- package/docs/05-ai-sdk-rsc/03-saving-and-restoring-states.mdx +105 -0
- package/docs/05-ai-sdk-rsc/04-multistep-interfaces.mdx +282 -0
- package/docs/05-ai-sdk-rsc/05-streaming-values.mdx +158 -0
- package/docs/05-ai-sdk-rsc/06-loading-state.mdx +273 -0
- package/docs/05-ai-sdk-rsc/08-error-handling.mdx +96 -0
- package/docs/05-ai-sdk-rsc/09-authentication.mdx +42 -0
- package/docs/05-ai-sdk-rsc/10-migrating-to-ui.mdx +722 -0
- package/docs/05-ai-sdk-rsc/index.mdx +58 -0
- package/docs/06-advanced/01-prompt-engineering.mdx +96 -0
- package/docs/06-advanced/02-stopping-streams.mdx +184 -0
- package/docs/06-advanced/03-backpressure.mdx +173 -0
- package/docs/06-advanced/04-caching.mdx +169 -0
- package/docs/06-advanced/05-multiple-streamables.mdx +68 -0
- package/docs/06-advanced/06-rate-limiting.mdx +60 -0
- package/docs/06-advanced/07-rendering-ui-with-language-models.mdx +213 -0
- package/docs/06-advanced/08-model-as-router.mdx +120 -0
- package/docs/06-advanced/09-multistep-interfaces.mdx +115 -0
- package/docs/06-advanced/09-sequential-generations.mdx +55 -0
- package/docs/06-advanced/10-vercel-deployment-guide.mdx +117 -0
- package/docs/06-advanced/index.mdx +11 -0
- package/docs/07-reference/01-ai-sdk-core/01-generate-text.mdx +2142 -0
- package/docs/07-reference/01-ai-sdk-core/02-stream-text.mdx +3215 -0
- package/docs/07-reference/01-ai-sdk-core/03-generate-object.mdx +780 -0
- package/docs/07-reference/01-ai-sdk-core/04-stream-object.mdx +1140 -0
- package/docs/07-reference/01-ai-sdk-core/05-embed.mdx +190 -0
- package/docs/07-reference/01-ai-sdk-core/06-embed-many.mdx +171 -0
- package/docs/07-reference/01-ai-sdk-core/06-rerank.mdx +309 -0
- package/docs/07-reference/01-ai-sdk-core/10-generate-image.mdx +227 -0
- package/docs/07-reference/01-ai-sdk-core/11-transcribe.mdx +138 -0
- package/docs/07-reference/01-ai-sdk-core/12-generate-speech.mdx +214 -0
- package/docs/07-reference/01-ai-sdk-core/15-agent.mdx +203 -0
- package/docs/07-reference/01-ai-sdk-core/16-tool-loop-agent.mdx +449 -0
- package/docs/07-reference/01-ai-sdk-core/17-create-agent-ui-stream.mdx +148 -0
- package/docs/07-reference/01-ai-sdk-core/18-create-agent-ui-stream-response.mdx +168 -0
- package/docs/07-reference/01-ai-sdk-core/18-pipe-agent-ui-stream-to-response.mdx +144 -0
- package/docs/07-reference/01-ai-sdk-core/20-tool.mdx +196 -0
- package/docs/07-reference/01-ai-sdk-core/22-dynamic-tool.mdx +175 -0
- package/docs/07-reference/01-ai-sdk-core/23-create-mcp-client.mdx +410 -0
- package/docs/07-reference/01-ai-sdk-core/24-mcp-stdio-transport.mdx +68 -0
- package/docs/07-reference/01-ai-sdk-core/25-json-schema.mdx +94 -0
- package/docs/07-reference/01-ai-sdk-core/26-zod-schema.mdx +109 -0
- package/docs/07-reference/01-ai-sdk-core/27-valibot-schema.mdx +55 -0
- package/docs/07-reference/01-ai-sdk-core/28-output.mdx +342 -0
- package/docs/07-reference/01-ai-sdk-core/30-model-message.mdx +415 -0
- package/docs/07-reference/01-ai-sdk-core/31-ui-message.mdx +246 -0
- package/docs/07-reference/01-ai-sdk-core/32-validate-ui-messages.mdx +101 -0
- package/docs/07-reference/01-ai-sdk-core/33-safe-validate-ui-messages.mdx +113 -0
- package/docs/07-reference/01-ai-sdk-core/40-provider-registry.mdx +182 -0
- package/docs/07-reference/01-ai-sdk-core/42-custom-provider.mdx +121 -0
- package/docs/07-reference/01-ai-sdk-core/50-cosine-similarity.mdx +52 -0
- package/docs/07-reference/01-ai-sdk-core/60-wrap-language-model.mdx +59 -0
- package/docs/07-reference/01-ai-sdk-core/61-wrap-image-model.mdx +64 -0
- package/docs/07-reference/01-ai-sdk-core/65-language-model-v2-middleware.mdx +46 -0
- package/docs/07-reference/01-ai-sdk-core/66-extract-reasoning-middleware.mdx +68 -0
- package/docs/07-reference/01-ai-sdk-core/67-simulate-streaming-middleware.mdx +71 -0
- package/docs/07-reference/01-ai-sdk-core/68-default-settings-middleware.mdx +80 -0
- package/docs/07-reference/01-ai-sdk-core/69-add-tool-input-examples-middleware.mdx +155 -0
- package/docs/07-reference/01-ai-sdk-core/70-extract-json-middleware.mdx +147 -0
- package/docs/07-reference/01-ai-sdk-core/70-step-count-is.mdx +84 -0
- package/docs/07-reference/01-ai-sdk-core/71-has-tool-call.mdx +120 -0
- package/docs/07-reference/01-ai-sdk-core/75-simulate-readable-stream.mdx +94 -0
- package/docs/07-reference/01-ai-sdk-core/80-smooth-stream.mdx +145 -0
- package/docs/07-reference/01-ai-sdk-core/90-generate-id.mdx +43 -0
- package/docs/07-reference/01-ai-sdk-core/91-create-id-generator.mdx +89 -0
- package/docs/07-reference/01-ai-sdk-core/index.mdx +159 -0
- package/docs/07-reference/02-ai-sdk-ui/01-use-chat.mdx +446 -0
- package/docs/07-reference/02-ai-sdk-ui/02-use-completion.mdx +179 -0
- package/docs/07-reference/02-ai-sdk-ui/03-use-object.mdx +178 -0
- package/docs/07-reference/02-ai-sdk-ui/31-convert-to-model-messages.mdx +230 -0
- package/docs/07-reference/02-ai-sdk-ui/32-prune-messages.mdx +108 -0
- package/docs/07-reference/02-ai-sdk-ui/40-create-ui-message-stream.mdx +151 -0
- package/docs/07-reference/02-ai-sdk-ui/41-create-ui-message-stream-response.mdx +113 -0
- package/docs/07-reference/02-ai-sdk-ui/42-pipe-ui-message-stream-to-response.mdx +73 -0
- package/docs/07-reference/02-ai-sdk-ui/43-read-ui-message-stream.mdx +57 -0
- package/docs/07-reference/02-ai-sdk-ui/46-infer-ui-tools.mdx +99 -0
- package/docs/07-reference/02-ai-sdk-ui/47-infer-ui-tool.mdx +75 -0
- package/docs/07-reference/02-ai-sdk-ui/50-direct-chat-transport.mdx +333 -0
- package/docs/07-reference/02-ai-sdk-ui/index.mdx +89 -0
- package/docs/07-reference/03-ai-sdk-rsc/01-stream-ui.mdx +767 -0
- package/docs/07-reference/03-ai-sdk-rsc/02-create-ai.mdx +90 -0
- package/docs/07-reference/03-ai-sdk-rsc/03-create-streamable-ui.mdx +91 -0
- package/docs/07-reference/03-ai-sdk-rsc/04-create-streamable-value.mdx +48 -0
- package/docs/07-reference/03-ai-sdk-rsc/05-read-streamable-value.mdx +78 -0
- package/docs/07-reference/03-ai-sdk-rsc/06-get-ai-state.mdx +50 -0
- package/docs/07-reference/03-ai-sdk-rsc/07-get-mutable-ai-state.mdx +70 -0
- package/docs/07-reference/03-ai-sdk-rsc/08-use-ai-state.mdx +26 -0
- package/docs/07-reference/03-ai-sdk-rsc/09-use-actions.mdx +42 -0
- package/docs/07-reference/03-ai-sdk-rsc/10-use-ui-state.mdx +35 -0
- package/docs/07-reference/03-ai-sdk-rsc/11-use-streamable-value.mdx +46 -0
- package/docs/07-reference/03-ai-sdk-rsc/20-render.mdx +262 -0
- package/docs/07-reference/03-ai-sdk-rsc/index.mdx +67 -0
- package/docs/07-reference/04-stream-helpers/01-ai-stream.mdx +89 -0
- package/docs/07-reference/04-stream-helpers/02-streaming-text-response.mdx +79 -0
- package/docs/07-reference/04-stream-helpers/05-stream-to-response.mdx +108 -0
- package/docs/07-reference/04-stream-helpers/07-openai-stream.mdx +77 -0
- package/docs/07-reference/04-stream-helpers/08-anthropic-stream.mdx +79 -0
- package/docs/07-reference/04-stream-helpers/09-aws-bedrock-stream.mdx +91 -0
- package/docs/07-reference/04-stream-helpers/10-aws-bedrock-anthropic-stream.mdx +96 -0
- package/docs/07-reference/04-stream-helpers/10-aws-bedrock-messages-stream.mdx +96 -0
- package/docs/07-reference/04-stream-helpers/11-aws-bedrock-cohere-stream.mdx +93 -0
- package/docs/07-reference/04-stream-helpers/12-aws-bedrock-llama-2-stream.mdx +93 -0
- package/docs/07-reference/04-stream-helpers/13-cohere-stream.mdx +78 -0
- package/docs/07-reference/04-stream-helpers/14-google-generative-ai-stream.mdx +85 -0
- package/docs/07-reference/04-stream-helpers/15-hugging-face-stream.mdx +84 -0
- package/docs/07-reference/04-stream-helpers/16-langchain-adapter.mdx +98 -0
- package/docs/07-reference/04-stream-helpers/16-llamaindex-adapter.mdx +70 -0
- package/docs/07-reference/04-stream-helpers/17-mistral-stream.mdx +81 -0
- package/docs/07-reference/04-stream-helpers/18-replicate-stream.mdx +83 -0
- package/docs/07-reference/04-stream-helpers/19-inkeep-stream.mdx +80 -0
- package/docs/07-reference/04-stream-helpers/index.mdx +103 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-api-call-error.mdx +30 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-download-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-empty-response-body-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-argument-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-data-content.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-message-role-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-prompt-error.mdx +47 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-response-data-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-approval-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-invalid-tool-input-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-json-parse-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-load-api-key-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-load-setting-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-message-conversion-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-content-generated-error.mdx +24 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-image-generated-error.mdx +36 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-object-generated-error.mdx +43 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-speech-generated-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-such-model-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-such-provider-error.mdx +28 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-such-tool-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-no-transcript-generated-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-retry-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-too-many-embedding-values-for-call-error.mdx +27 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-not-found-for-approval-error.mdx +26 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-tool-call-repair-error.mdx +28 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-type-validation-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/ai-unsupported-functionality-error.mdx +25 -0
- package/docs/07-reference/05-ai-sdk-errors/index.mdx +38 -0
- package/docs/07-reference/index.mdx +34 -0
- package/docs/08-migration-guides/00-versioning.mdx +46 -0
- package/docs/08-migration-guides/24-migration-guide-6-0.mdx +823 -0
- package/docs/08-migration-guides/25-migration-guide-5-0-data.mdx +882 -0
- package/docs/08-migration-guides/26-migration-guide-5-0.mdx +3427 -0
- package/docs/08-migration-guides/27-migration-guide-4-2.mdx +99 -0
- package/docs/08-migration-guides/28-migration-guide-4-1.mdx +14 -0
- package/docs/08-migration-guides/29-migration-guide-4-0.mdx +1157 -0
- package/docs/08-migration-guides/36-migration-guide-3-4.mdx +14 -0
- package/docs/08-migration-guides/37-migration-guide-3-3.mdx +64 -0
- package/docs/08-migration-guides/38-migration-guide-3-2.mdx +46 -0
- package/docs/08-migration-guides/39-migration-guide-3-1.mdx +168 -0
- package/docs/08-migration-guides/index.mdx +22 -0
- package/docs/09-troubleshooting/01-azure-stream-slow.mdx +33 -0
- package/docs/09-troubleshooting/02-client-side-function-calls-not-invoked.mdx +22 -0
- package/docs/09-troubleshooting/03-server-actions-in-client-components.mdx +40 -0
- package/docs/09-troubleshooting/04-strange-stream-output.mdx +36 -0
- package/docs/09-troubleshooting/05-streamable-ui-errors.mdx +16 -0
- package/docs/09-troubleshooting/05-tool-invocation-missing-result.mdx +106 -0
- package/docs/09-troubleshooting/06-streaming-not-working-when-deployed.mdx +31 -0
- package/docs/09-troubleshooting/06-streaming-not-working-when-proxied.mdx +31 -0
- package/docs/09-troubleshooting/06-timeout-on-vercel.mdx +60 -0
- package/docs/09-troubleshooting/07-unclosed-streams.mdx +34 -0
- package/docs/09-troubleshooting/08-use-chat-failed-to-parse-stream.mdx +26 -0
- package/docs/09-troubleshooting/09-client-stream-error.mdx +25 -0
- package/docs/09-troubleshooting/10-use-chat-tools-no-response.mdx +32 -0
- package/docs/09-troubleshooting/11-use-chat-custom-request-options.mdx +149 -0
- package/docs/09-troubleshooting/12-typescript-performance-zod.mdx +46 -0
- package/docs/09-troubleshooting/12-use-chat-an-error-occurred.mdx +59 -0
- package/docs/09-troubleshooting/13-repeated-assistant-messages.mdx +73 -0
- package/docs/09-troubleshooting/14-stream-abort-handling.mdx +73 -0
- package/docs/09-troubleshooting/14-tool-calling-with-structured-outputs.mdx +48 -0
- package/docs/09-troubleshooting/15-abort-breaks-resumable-streams.mdx +55 -0
- package/docs/09-troubleshooting/15-stream-text-not-working.mdx +33 -0
- package/docs/09-troubleshooting/16-streaming-status-delay.mdx +63 -0
- package/docs/09-troubleshooting/17-use-chat-stale-body-data.mdx +141 -0
- package/docs/09-troubleshooting/18-ontoolcall-type-narrowing.mdx +66 -0
- package/docs/09-troubleshooting/19-unsupported-model-version.mdx +50 -0
- package/docs/09-troubleshooting/20-no-object-generated-content-filter.mdx +72 -0
- package/docs/09-troubleshooting/30-model-is-not-assignable-to-type.mdx +21 -0
- package/docs/09-troubleshooting/40-typescript-cannot-find-namespace-jsx.mdx +24 -0
- package/docs/09-troubleshooting/50-react-maximum-update-depth-exceeded.mdx +39 -0
- package/docs/09-troubleshooting/60-jest-cannot-find-module-ai-rsc.mdx +22 -0
- package/docs/09-troubleshooting/index.mdx +11 -0
- package/package.json +8 -4
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: dynamicTool
|
|
3
|
+
description: Helper function for creating dynamic tools with unknown types
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `dynamicTool()`
|
|
7
|
+
|
|
8
|
+
The `dynamicTool` function creates tools where the input and output types are not known at compile time. This is useful for scenarios such as:
|
|
9
|
+
|
|
10
|
+
- MCP (Model Context Protocol) tools without schemas
|
|
11
|
+
- User-defined functions loaded at runtime
|
|
12
|
+
- Tools loaded from external sources or databases
|
|
13
|
+
- Dynamic tool generation based on user input
|
|
14
|
+
|
|
15
|
+
Unlike the regular `tool` function, `dynamicTool` accepts and returns `unknown` types, allowing you to work with tools that have runtime-determined schemas.
|
|
16
|
+
|
|
17
|
+
```ts highlight={"1,4,9,10,11"}
|
|
18
|
+
import { dynamicTool } from 'ai';
|
|
19
|
+
import { z } from 'zod';
|
|
20
|
+
|
|
21
|
+
export const customTool = dynamicTool({
|
|
22
|
+
description: 'Execute a custom user-defined function',
|
|
23
|
+
inputSchema: z.object({}),
|
|
24
|
+
// input is typed as 'unknown'
|
|
25
|
+
execute: async input => {
|
|
26
|
+
const { action, parameters } = input as any;
|
|
27
|
+
|
|
28
|
+
// Execute your dynamic logic
|
|
29
|
+
return {
|
|
30
|
+
result: `Executed ${action} with ${JSON.stringify(parameters)}`,
|
|
31
|
+
};
|
|
32
|
+
},
|
|
33
|
+
});
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Import
|
|
37
|
+
|
|
38
|
+
<Snippet text={`import { dynamicTool } from "ai"`} prompt={false} />
|
|
39
|
+
|
|
40
|
+
## API Signature
|
|
41
|
+
|
|
42
|
+
### Parameters
|
|
43
|
+
|
|
44
|
+
<PropertiesTable
|
|
45
|
+
content={[
|
|
46
|
+
{
|
|
47
|
+
name: 'tool',
|
|
48
|
+
type: 'Object',
|
|
49
|
+
description: 'The dynamic tool definition.',
|
|
50
|
+
properties: [
|
|
51
|
+
{
|
|
52
|
+
type: 'Object',
|
|
53
|
+
parameters: [
|
|
54
|
+
{
|
|
55
|
+
name: 'description',
|
|
56
|
+
isOptional: true,
|
|
57
|
+
type: 'string',
|
|
58
|
+
description:
|
|
59
|
+
'Information about the purpose of the tool including details on how and when it can be used by the model.'
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'inputSchema',
|
|
63
|
+
type: 'FlexibleSchema<unknown>',
|
|
64
|
+
description:
|
|
65
|
+
'The schema of the input that the tool expects. While the type is unknown, a schema is still required for validation. You can use Zod schemas with z.unknown() or z.any() for fully dynamic inputs.'
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
name: 'execute',
|
|
69
|
+
type: 'ToolExecuteFunction<unknown, unknown>',
|
|
70
|
+
description:
|
|
71
|
+
'An async function that is called with the arguments from the tool call. The input is typed as unknown and must be validated/cast at runtime.',
|
|
72
|
+
properties: [
|
|
73
|
+
{
|
|
74
|
+
type: "ToolExecutionOptions",
|
|
75
|
+
parameters: [
|
|
76
|
+
{
|
|
77
|
+
name: 'toolCallId',
|
|
78
|
+
type: 'string',
|
|
79
|
+
description: 'The ID of the tool call.',
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
name: "messages",
|
|
83
|
+
type: "ModelMessage[]",
|
|
84
|
+
description: "Messages that were sent to the language model."
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: "abortSignal",
|
|
88
|
+
type: "AbortSignal",
|
|
89
|
+
isOptional: true,
|
|
90
|
+
description: "An optional abort signal."
|
|
91
|
+
}
|
|
92
|
+
]
|
|
93
|
+
}
|
|
94
|
+
]
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
name: 'toModelOutput',
|
|
98
|
+
isOptional: true,
|
|
99
|
+
type: '({toolCallId: string; input: unknown; output: unknown}) => ToolResultOutput | PromiseLike<ToolResultOutput>',
|
|
100
|
+
description: 'Optional conversion function that maps the tool result to an output that can be used by the language model.'
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'providerOptions',
|
|
104
|
+
isOptional: true,
|
|
105
|
+
type: 'ProviderOptions',
|
|
106
|
+
description: 'Additional provider-specific metadata.'
|
|
107
|
+
}
|
|
108
|
+
]
|
|
109
|
+
}
|
|
110
|
+
]
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
]}
|
|
114
|
+
/>
|
|
115
|
+
|
|
116
|
+
### Returns
|
|
117
|
+
|
|
118
|
+
A `Tool<unknown, unknown>` with `type: 'dynamic'` that can be used with `generateText`, `streamText`, and other AI SDK functions.
|
|
119
|
+
|
|
120
|
+
## Type-Safe Usage
|
|
121
|
+
|
|
122
|
+
When using dynamic tools alongside static tools, you need to check the `dynamic` flag for proper type narrowing:
|
|
123
|
+
|
|
124
|
+
```ts
|
|
125
|
+
const result = await generateText({
|
|
126
|
+
model: __MODEL__,
|
|
127
|
+
tools: {
|
|
128
|
+
// Static tool with known types
|
|
129
|
+
weather: weatherTool,
|
|
130
|
+
// Dynamic tool with unknown types
|
|
131
|
+
custom: dynamicTool({
|
|
132
|
+
/* ... */
|
|
133
|
+
}),
|
|
134
|
+
},
|
|
135
|
+
onStepFinish: ({ toolCalls, toolResults }) => {
|
|
136
|
+
for (const toolCall of toolCalls) {
|
|
137
|
+
if (toolCall.dynamic) {
|
|
138
|
+
// Dynamic tool: input/output are 'unknown'
|
|
139
|
+
console.log('Dynamic tool:', toolCall.toolName);
|
|
140
|
+
console.log('Input:', toolCall.input);
|
|
141
|
+
continue;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
// Static tools have full type inference
|
|
145
|
+
switch (toolCall.toolName) {
|
|
146
|
+
case 'weather':
|
|
147
|
+
// TypeScript knows the exact types
|
|
148
|
+
console.log(toolCall.input.location); // string
|
|
149
|
+
break;
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
},
|
|
153
|
+
});
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## Usage with `useChat`
|
|
157
|
+
|
|
158
|
+
When used with useChat (`UIMessage` format), dynamic tools appear as `dynamic-tool` parts:
|
|
159
|
+
|
|
160
|
+
```tsx
|
|
161
|
+
{
|
|
162
|
+
message.parts.map(part => {
|
|
163
|
+
switch (part.type) {
|
|
164
|
+
case 'dynamic-tool':
|
|
165
|
+
return (
|
|
166
|
+
<div>
|
|
167
|
+
<h4>Tool: {part.toolName}</h4>
|
|
168
|
+
<pre>{JSON.stringify(part.input, null, 2)}</pre>
|
|
169
|
+
</div>
|
|
170
|
+
);
|
|
171
|
+
// ... handle other part types
|
|
172
|
+
}
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
```
|
|
@@ -0,0 +1,410 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: createMCPClient
|
|
3
|
+
description: Create a client for connecting to MCP servers
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `createMCPClient()`
|
|
7
|
+
|
|
8
|
+
Creates a lightweight Model Context Protocol (MCP) client that connects to an MCP server. The client provides:
|
|
9
|
+
|
|
10
|
+
- **Tools**: Automatic conversion between MCP tools and AI SDK tools
|
|
11
|
+
- **Resources**: Methods to list, read, and discover resource templates from MCP servers
|
|
12
|
+
- **Prompts**: Methods to list available prompts and retrieve prompt messages
|
|
13
|
+
- **Elicitation**: Support for handling server requests for additional input during tool execution
|
|
14
|
+
|
|
15
|
+
It currently does not support accepting notifications from an MCP server, and custom configuration of the client.
|
|
16
|
+
|
|
17
|
+
## Import
|
|
18
|
+
|
|
19
|
+
<Snippet
|
|
20
|
+
text={`import { createMCPClient } from "@ai-sdk/mcp"`}
|
|
21
|
+
prompt={false}
|
|
22
|
+
/>
|
|
23
|
+
|
|
24
|
+
## API Signature
|
|
25
|
+
|
|
26
|
+
### Parameters
|
|
27
|
+
|
|
28
|
+
<PropertiesTable
|
|
29
|
+
content={[
|
|
30
|
+
{
|
|
31
|
+
name: 'config',
|
|
32
|
+
type: 'MCPClientConfig',
|
|
33
|
+
description: 'Configuration for the MCP client.',
|
|
34
|
+
properties: [
|
|
35
|
+
{
|
|
36
|
+
type: 'MCPClientConfig',
|
|
37
|
+
parameters: [
|
|
38
|
+
{
|
|
39
|
+
name: 'transport',
|
|
40
|
+
type: 'TransportConfig = MCPTransport | McpSSEServerConfig',
|
|
41
|
+
description: 'Configuration for the message transport layer.',
|
|
42
|
+
properties: [
|
|
43
|
+
{
|
|
44
|
+
type: 'MCPTransport',
|
|
45
|
+
description:
|
|
46
|
+
'A client transport instance, used explicitly for stdio or custom transports',
|
|
47
|
+
parameters: [
|
|
48
|
+
{
|
|
49
|
+
name: 'start',
|
|
50
|
+
type: '() => Promise<void>',
|
|
51
|
+
description: 'A method that starts the transport',
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
name: 'send',
|
|
55
|
+
type: '(message: JSONRPCMessage) => Promise<void>',
|
|
56
|
+
description:
|
|
57
|
+
'A method that sends a message through the transport',
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
name: 'close',
|
|
61
|
+
type: '() => Promise<void>',
|
|
62
|
+
description: 'A method that closes the transport',
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'onclose',
|
|
66
|
+
type: '() => void',
|
|
67
|
+
description:
|
|
68
|
+
'A method that is called when the transport is closed',
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'onerror',
|
|
72
|
+
type: '(error: Error) => void',
|
|
73
|
+
description:
|
|
74
|
+
'A method that is called when the transport encounters an error',
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
name: 'onmessage',
|
|
78
|
+
type: '(message: JSONRPCMessage) => void',
|
|
79
|
+
description:
|
|
80
|
+
'A method that is called when the transport receives a message',
|
|
81
|
+
},
|
|
82
|
+
],
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
type: 'MCPTransportConfig',
|
|
86
|
+
parameters: [
|
|
87
|
+
{
|
|
88
|
+
name: 'type',
|
|
89
|
+
type: "'sse' | 'http",
|
|
90
|
+
description: 'Use Server-Sent Events for communication',
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
name: 'url',
|
|
94
|
+
type: 'string',
|
|
95
|
+
description: 'URL of the MCP server',
|
|
96
|
+
},
|
|
97
|
+
{
|
|
98
|
+
name: 'headers',
|
|
99
|
+
type: 'Record<string, string>',
|
|
100
|
+
isOptional: true,
|
|
101
|
+
description:
|
|
102
|
+
'Additional HTTP headers to be sent with requests.',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
name: 'authProvider',
|
|
106
|
+
type: 'OAuthClientProvider',
|
|
107
|
+
isOptional: true,
|
|
108
|
+
description:
|
|
109
|
+
'Optional OAuth provider for authorization to access protected remote MCP servers.',
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
},
|
|
113
|
+
],
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
name: 'name',
|
|
117
|
+
type: 'string',
|
|
118
|
+
isOptional: true,
|
|
119
|
+
description: 'Client name. Defaults to "ai-sdk-mcp-client"',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
name: 'onUncaughtError',
|
|
123
|
+
type: '(error: unknown) => void',
|
|
124
|
+
isOptional: true,
|
|
125
|
+
description: 'Handler for uncaught errors',
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
name: 'capabilities',
|
|
129
|
+
type: 'ClientCapabilities',
|
|
130
|
+
isOptional: true,
|
|
131
|
+
description:
|
|
132
|
+
'Optional client capabilities to advertise during initialization. For example, set { elicitation: {} } to enable handling elicitation requests from the server.',
|
|
133
|
+
},
|
|
134
|
+
],
|
|
135
|
+
},
|
|
136
|
+
],
|
|
137
|
+
},
|
|
138
|
+
]}
|
|
139
|
+
/>
|
|
140
|
+
|
|
141
|
+
### Returns
|
|
142
|
+
|
|
143
|
+
Returns a Promise that resolves to an `MCPClient` with the following methods:
|
|
144
|
+
|
|
145
|
+
<PropertiesTable
|
|
146
|
+
content={[
|
|
147
|
+
{
|
|
148
|
+
name: 'tools',
|
|
149
|
+
type: `async (options?: {
|
|
150
|
+
schemas?: TOOL_SCHEMAS
|
|
151
|
+
}) => Promise<McpToolSet<TOOL_SCHEMAS>>`,
|
|
152
|
+
description: 'Gets the tools available from the MCP server.',
|
|
153
|
+
properties: [
|
|
154
|
+
{
|
|
155
|
+
type: 'options',
|
|
156
|
+
parameters: [
|
|
157
|
+
{
|
|
158
|
+
name: 'schemas',
|
|
159
|
+
type: 'TOOL_SCHEMAS',
|
|
160
|
+
isOptional: true,
|
|
161
|
+
description:
|
|
162
|
+
'Schema definitions for compile-time type checking. When not provided, schemas are inferred from the server. Each tool schema can include inputSchema for typed inputs, and optionally outputSchema for typed outputs when the server returns structuredContent.',
|
|
163
|
+
},
|
|
164
|
+
],
|
|
165
|
+
},
|
|
166
|
+
{
|
|
167
|
+
type: 'TOOL_SCHEMAS',
|
|
168
|
+
parameters: [
|
|
169
|
+
{
|
|
170
|
+
name: 'inputSchema',
|
|
171
|
+
type: 'FlexibleSchema',
|
|
172
|
+
description:
|
|
173
|
+
'Zod schema or JSON schema defining the expected input parameters for the tool.',
|
|
174
|
+
},
|
|
175
|
+
{
|
|
176
|
+
name: 'outputSchema',
|
|
177
|
+
type: 'FlexibleSchema',
|
|
178
|
+
isOptional: true,
|
|
179
|
+
description:
|
|
180
|
+
'Zod schema or JSON schema defining the expected output structure. When provided, the client extracts and validates structuredContent from tool results, giving you typed outputs.',
|
|
181
|
+
},
|
|
182
|
+
],
|
|
183
|
+
},
|
|
184
|
+
],
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
name: 'listResources',
|
|
188
|
+
type: `async (options?: {
|
|
189
|
+
params?: PaginatedRequest['params'];
|
|
190
|
+
options?: RequestOptions;
|
|
191
|
+
}) => Promise<ListResourcesResult>`,
|
|
192
|
+
description: 'Lists all available resources from the MCP server.',
|
|
193
|
+
properties: [
|
|
194
|
+
{
|
|
195
|
+
type: 'options',
|
|
196
|
+
parameters: [
|
|
197
|
+
{
|
|
198
|
+
name: 'params',
|
|
199
|
+
type: "PaginatedRequest['params']",
|
|
200
|
+
isOptional: true,
|
|
201
|
+
description: 'Optional pagination parameters including cursor.',
|
|
202
|
+
},
|
|
203
|
+
{
|
|
204
|
+
name: 'options',
|
|
205
|
+
type: 'RequestOptions',
|
|
206
|
+
isOptional: true,
|
|
207
|
+
description:
|
|
208
|
+
'Optional request options including signal and timeout.',
|
|
209
|
+
},
|
|
210
|
+
],
|
|
211
|
+
},
|
|
212
|
+
],
|
|
213
|
+
},
|
|
214
|
+
{
|
|
215
|
+
name: 'readResource',
|
|
216
|
+
type: `async (args: {
|
|
217
|
+
uri: string;
|
|
218
|
+
options?: RequestOptions;
|
|
219
|
+
}) => Promise<ReadResourceResult>`,
|
|
220
|
+
description: 'Reads the contents of a specific resource by URI.',
|
|
221
|
+
properties: [
|
|
222
|
+
{
|
|
223
|
+
type: 'args',
|
|
224
|
+
parameters: [
|
|
225
|
+
{
|
|
226
|
+
name: 'uri',
|
|
227
|
+
type: 'string',
|
|
228
|
+
description: 'The URI of the resource to read.',
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
name: 'options',
|
|
232
|
+
type: 'RequestOptions',
|
|
233
|
+
isOptional: true,
|
|
234
|
+
description:
|
|
235
|
+
'Optional request options including signal and timeout.',
|
|
236
|
+
},
|
|
237
|
+
],
|
|
238
|
+
},
|
|
239
|
+
],
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
name: 'listResourceTemplates',
|
|
243
|
+
type: `async (options?: {
|
|
244
|
+
options?: RequestOptions;
|
|
245
|
+
}) => Promise<ListResourceTemplatesResult>`,
|
|
246
|
+
description:
|
|
247
|
+
'Lists all available resource templates from the MCP server.',
|
|
248
|
+
properties: [
|
|
249
|
+
{
|
|
250
|
+
type: 'options',
|
|
251
|
+
parameters: [
|
|
252
|
+
{
|
|
253
|
+
name: 'options',
|
|
254
|
+
type: 'RequestOptions',
|
|
255
|
+
isOptional: true,
|
|
256
|
+
description:
|
|
257
|
+
'Optional request options including signal and timeout.',
|
|
258
|
+
},
|
|
259
|
+
],
|
|
260
|
+
},
|
|
261
|
+
],
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
name: 'experimental_listPrompts',
|
|
265
|
+
type: `async (options?: {
|
|
266
|
+
params?: PaginatedRequest['params'];
|
|
267
|
+
options?: RequestOptions;
|
|
268
|
+
}) => Promise<ListPromptsResult>`,
|
|
269
|
+
description:
|
|
270
|
+
'Lists available prompts from the MCP server. This method is experimental and may change in the future.',
|
|
271
|
+
properties: [
|
|
272
|
+
{
|
|
273
|
+
type: 'options',
|
|
274
|
+
parameters: [
|
|
275
|
+
{
|
|
276
|
+
name: 'params',
|
|
277
|
+
type: "PaginatedRequest['params']",
|
|
278
|
+
isOptional: true,
|
|
279
|
+
description: 'Optional pagination parameters including cursor.',
|
|
280
|
+
},
|
|
281
|
+
{
|
|
282
|
+
name: 'options',
|
|
283
|
+
type: 'RequestOptions',
|
|
284
|
+
isOptional: true,
|
|
285
|
+
description:
|
|
286
|
+
'Optional request options including signal and timeout.',
|
|
287
|
+
},
|
|
288
|
+
],
|
|
289
|
+
},
|
|
290
|
+
],
|
|
291
|
+
},
|
|
292
|
+
{
|
|
293
|
+
name: 'experimental_getPrompt',
|
|
294
|
+
type: `async (args: {
|
|
295
|
+
name: string;
|
|
296
|
+
arguments?: Record<string, unknown>;
|
|
297
|
+
options?: RequestOptions;
|
|
298
|
+
}) => Promise<GetPromptResult>`,
|
|
299
|
+
description:
|
|
300
|
+
'Retrieves a prompt by name, optionally passing arguments. This method is experimental and may change in the future.',
|
|
301
|
+
properties: [
|
|
302
|
+
{
|
|
303
|
+
type: 'args',
|
|
304
|
+
parameters: [
|
|
305
|
+
{
|
|
306
|
+
name: 'name',
|
|
307
|
+
type: 'string',
|
|
308
|
+
description: 'Prompt name to retrieve.',
|
|
309
|
+
},
|
|
310
|
+
{
|
|
311
|
+
name: 'arguments',
|
|
312
|
+
type: 'Record<string, unknown>',
|
|
313
|
+
isOptional: true,
|
|
314
|
+
description: 'Optional arguments to fill into the prompt.',
|
|
315
|
+
},
|
|
316
|
+
{
|
|
317
|
+
name: 'options',
|
|
318
|
+
type: 'RequestOptions',
|
|
319
|
+
isOptional: true,
|
|
320
|
+
description:
|
|
321
|
+
'Optional request options including signal and timeout.',
|
|
322
|
+
},
|
|
323
|
+
],
|
|
324
|
+
},
|
|
325
|
+
],
|
|
326
|
+
},
|
|
327
|
+
{
|
|
328
|
+
name: 'onElicitationRequest',
|
|
329
|
+
type: `(
|
|
330
|
+
schema: typeof ElicitationRequestSchema,
|
|
331
|
+
handler: (request: ElicitationRequest) => Promise<ElicitResult> | ElicitResult
|
|
332
|
+
) => void`,
|
|
333
|
+
description:
|
|
334
|
+
'Registers a handler for elicitation requests from the MCP server. The handler receives requests when the server needs additional input during tool execution.',
|
|
335
|
+
properties: [
|
|
336
|
+
{
|
|
337
|
+
type: 'parameters',
|
|
338
|
+
parameters: [
|
|
339
|
+
{
|
|
340
|
+
name: 'schema',
|
|
341
|
+
type: 'typeof ElicitationRequestSchema',
|
|
342
|
+
description:
|
|
343
|
+
'The schema to validate requests against. Must be ElicitationRequestSchema.',
|
|
344
|
+
},
|
|
345
|
+
{
|
|
346
|
+
name: 'handler',
|
|
347
|
+
type: '(request: ElicitationRequest) => Promise<ElicitResult> | ElicitResult',
|
|
348
|
+
description:
|
|
349
|
+
'A function that handles the elicitation request. The request contains a message and requestedSchema. The handler must return an object with an action ("accept", "decline", or "cancel") and optionally content when accepting.',
|
|
350
|
+
},
|
|
351
|
+
],
|
|
352
|
+
},
|
|
353
|
+
],
|
|
354
|
+
},
|
|
355
|
+
{
|
|
356
|
+
name: 'close',
|
|
357
|
+
type: 'async () => void',
|
|
358
|
+
description:
|
|
359
|
+
'Closes the connection to the MCP server and cleans up resources.',
|
|
360
|
+
},
|
|
361
|
+
]}
|
|
362
|
+
/>
|
|
363
|
+
|
|
364
|
+
## Example
|
|
365
|
+
|
|
366
|
+
```typescript
|
|
367
|
+
import { createMCPClient } from '@ai-sdk/mcp';
|
|
368
|
+
import { generateText } from 'ai';
|
|
369
|
+
import { Experimental_StdioMCPTransport } from '@ai-sdk/mcp/mcp-stdio';
|
|
370
|
+
|
|
371
|
+
let client;
|
|
372
|
+
|
|
373
|
+
try {
|
|
374
|
+
client = await createMCPClient({
|
|
375
|
+
transport: new Experimental_StdioMCPTransport({
|
|
376
|
+
command: 'node server.js',
|
|
377
|
+
}),
|
|
378
|
+
});
|
|
379
|
+
|
|
380
|
+
const tools = await client.tools();
|
|
381
|
+
|
|
382
|
+
const response = await generateText({
|
|
383
|
+
model: __MODEL__,
|
|
384
|
+
tools,
|
|
385
|
+
messages: [{ role: 'user', content: 'Query the data' }],
|
|
386
|
+
});
|
|
387
|
+
|
|
388
|
+
console.log(response);
|
|
389
|
+
} catch (error) {
|
|
390
|
+
console.error('Error:', error);
|
|
391
|
+
} finally {
|
|
392
|
+
// ensure the client is closed even if an error occurs
|
|
393
|
+
if (client) {
|
|
394
|
+
await client.close();
|
|
395
|
+
}
|
|
396
|
+
}
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
## Error Handling
|
|
400
|
+
|
|
401
|
+
The client throws `MCPClientError` for:
|
|
402
|
+
|
|
403
|
+
- Client initialization failures
|
|
404
|
+
- Protocol version mismatches
|
|
405
|
+
- Missing server capabilities
|
|
406
|
+
- Connection failures
|
|
407
|
+
|
|
408
|
+
For tool execution, errors are propagated as `CallToolError` errors.
|
|
409
|
+
|
|
410
|
+
For unknown errors, the client exposes an `onUncaughtError` callback that can be used to manually log or handle errors that are not covered by known error types.
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Experimental_StdioMCPTransport
|
|
3
|
+
description: Create a transport for Model Context Protocol (MCP) clients to communicate with MCP servers using standard input and output streams
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# `Experimental_StdioMCPTransport`
|
|
7
|
+
|
|
8
|
+
Creates a transport for Model Context Protocol (MCP) clients to communicate with MCP servers using standard input and output streams. This transport is only supported in Node.js environments.
|
|
9
|
+
|
|
10
|
+
This feature is experimental and may change or be removed in the future.
|
|
11
|
+
|
|
12
|
+
## Import
|
|
13
|
+
|
|
14
|
+
<Snippet
|
|
15
|
+
text={`import { Experimental_StdioMCPTransport } from "ai/mcp-stdio"`}
|
|
16
|
+
prompt={false}
|
|
17
|
+
/>
|
|
18
|
+
|
|
19
|
+
## API Signature
|
|
20
|
+
|
|
21
|
+
### Parameters
|
|
22
|
+
|
|
23
|
+
<PropertiesTable
|
|
24
|
+
content={[
|
|
25
|
+
{
|
|
26
|
+
name: 'config',
|
|
27
|
+
type: 'StdioConfig',
|
|
28
|
+
description: 'Configuration for the MCP client.',
|
|
29
|
+
properties: [
|
|
30
|
+
{
|
|
31
|
+
type: 'StdioConfig',
|
|
32
|
+
parameters: [
|
|
33
|
+
{
|
|
34
|
+
name: 'command',
|
|
35
|
+
type: 'string',
|
|
36
|
+
description: 'The command to run the MCP server.',
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
name: 'args',
|
|
40
|
+
type: 'string[]',
|
|
41
|
+
isOptional: true,
|
|
42
|
+
description: 'The arguments to pass to the MCP server.',
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
name: 'env',
|
|
46
|
+
type: 'Record<string, string>',
|
|
47
|
+
isOptional: true,
|
|
48
|
+
description:
|
|
49
|
+
'The environment variables to set for the MCP server.',
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: 'stderr',
|
|
53
|
+
type: 'IOType | Stream | number',
|
|
54
|
+
isOptional: true,
|
|
55
|
+
description: "The stream to write the MCP server's stderr to.",
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: 'cwd',
|
|
59
|
+
type: 'string',
|
|
60
|
+
isOptional: true,
|
|
61
|
+
description: 'The current working directory for the MCP server.',
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
},
|
|
67
|
+
]}
|
|
68
|
+
/>
|