@mastra/mcp-docs-server 0.13.37 → 0.13.38
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/.docs/organized/changelogs/%40internal%2Fchangeset-cli.md +2 -0
- package/.docs/organized/changelogs/%40internal%2Fexternal-types.md +2 -0
- package/.docs/organized/changelogs/%40internal%2Fstorage-test-utils.md +8 -8
- package/.docs/organized/changelogs/%40internal%2Ftypes-builder.md +2 -0
- package/.docs/organized/changelogs/%40mastra%2Fclient-js.md +23 -23
- package/.docs/organized/changelogs/%40mastra%2Fcore.md +69 -69
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloud.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-cloudflare.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-netlify.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer-vercel.md +17 -17
- package/.docs/organized/changelogs/%40mastra%2Fdeployer.md +25 -25
- package/.docs/organized/changelogs/%40mastra%2Fmcp-docs-server.md +15 -15
- package/.docs/organized/changelogs/%40mastra%2Fplayground-ui.md +27 -27
- package/.docs/organized/changelogs/%40mastra%2Freact.md +15 -15
- package/.docs/organized/changelogs/%40mastra%2Fserver.md +23 -23
- package/.docs/organized/changelogs/create-mastra.md +5 -5
- package/.docs/organized/changelogs/mastra.md +17 -17
- package/.docs/raw/agents/adding-voice.mdx +20 -9
- package/.docs/raw/agents/agent-memory.mdx +55 -39
- package/.docs/raw/agents/guardrails.mdx +68 -61
- package/.docs/raw/agents/networks.mdx +50 -46
- package/.docs/raw/agents/overview.mdx +125 -88
- package/.docs/raw/agents/using-tools.mdx +14 -15
- package/.docs/raw/auth/auth0.mdx +28 -27
- package/.docs/raw/auth/clerk.mdx +22 -20
- package/.docs/raw/auth/firebase.mdx +42 -39
- package/.docs/raw/auth/index.mdx +1 -1
- package/.docs/raw/auth/jwt.mdx +18 -16
- package/.docs/raw/auth/supabase.mdx +20 -18
- package/.docs/raw/auth/workos.mdx +32 -26
- package/.docs/raw/community/contributing-templates.mdx +7 -7
- package/.docs/raw/community/discord.mdx +2 -2
- package/.docs/raw/community/licensing.mdx +1 -1
- package/.docs/raw/course/03-agent-memory/26-updating-mastra-export-comprehensive.md +0 -32
- package/.docs/raw/deployment/cloud-providers/amazon-ec2.mdx +41 -22
- package/.docs/raw/deployment/cloud-providers/aws-lambda.mdx +48 -29
- package/.docs/raw/deployment/cloud-providers/azure-app-services.mdx +52 -24
- package/.docs/raw/deployment/cloud-providers/digital-ocean.mdx +86 -55
- package/.docs/raw/deployment/cloud-providers/index.mdx +16 -13
- package/.docs/raw/deployment/monorepo.mdx +32 -42
- package/.docs/raw/deployment/overview.mdx +15 -15
- package/.docs/raw/deployment/server-deployment.mdx +18 -23
- package/.docs/raw/deployment/serverless-platforms/cloudflare-deployer.mdx +16 -17
- package/.docs/raw/deployment/serverless-platforms/index.mdx +15 -12
- package/.docs/raw/deployment/serverless-platforms/netlify-deployer.mdx +14 -23
- package/.docs/raw/deployment/serverless-platforms/vercel-deployer.mdx +16 -23
- package/.docs/raw/deployment/web-framework.mdx +14 -14
- package/.docs/raw/frameworks/agentic-uis/ai-sdk.mdx +138 -145
- package/.docs/raw/frameworks/agentic-uis/assistant-ui.mdx +54 -43
- package/.docs/raw/frameworks/agentic-uis/cedar-os.mdx +51 -36
- package/.docs/raw/frameworks/agentic-uis/copilotkit.mdx +161 -120
- package/.docs/raw/frameworks/agentic-uis/openrouter.mdx +59 -48
- package/.docs/raw/frameworks/servers/express.mdx +45 -44
- package/.docs/raw/frameworks/web-frameworks/astro.mdx +245 -162
- package/.docs/raw/frameworks/web-frameworks/next-js.mdx +112 -69
- package/.docs/raw/frameworks/web-frameworks/sveltekit.mdx +189 -164
- package/.docs/raw/frameworks/web-frameworks/vite-react.mdx +94 -81
- package/.docs/raw/getting-started/installation.mdx +164 -133
- package/.docs/raw/getting-started/mcp-docs-server.mdx +36 -39
- package/.docs/raw/getting-started/project-structure.mdx +34 -42
- package/.docs/raw/getting-started/studio.mdx +40 -58
- package/.docs/raw/getting-started/templates.mdx +22 -27
- package/.docs/raw/index.mdx +9 -9
- package/.docs/raw/mastra-cloud/dashboard.mdx +10 -10
- package/.docs/raw/mastra-cloud/observability.mdx +7 -8
- package/.docs/raw/mastra-cloud/overview.mdx +16 -22
- package/.docs/raw/mastra-cloud/setting-up.mdx +33 -20
- package/.docs/raw/memory/conversation-history.mdx +2 -2
- package/.docs/raw/memory/overview.mdx +21 -23
- package/.docs/raw/memory/semantic-recall.mdx +14 -13
- package/.docs/raw/memory/storage/memory-with-libsql.mdx +27 -28
- package/.docs/raw/memory/storage/memory-with-pg.mdx +26 -26
- package/.docs/raw/memory/storage/memory-with-upstash.mdx +26 -27
- package/.docs/raw/memory/threads-and-resources.mdx +23 -20
- package/.docs/raw/memory/working-memory.mdx +27 -38
- package/.docs/raw/observability/ai-tracing/exporters/arize.mdx +30 -29
- package/.docs/raw/observability/ai-tracing/exporters/braintrust.mdx +8 -9
- package/.docs/raw/observability/ai-tracing/exporters/cloud.mdx +17 -16
- package/.docs/raw/observability/ai-tracing/exporters/default.mdx +31 -32
- package/.docs/raw/observability/ai-tracing/exporters/langfuse.mdx +18 -17
- package/.docs/raw/observability/ai-tracing/exporters/langsmith.mdx +14 -14
- package/.docs/raw/observability/ai-tracing/exporters/otel.mdx +56 -46
- package/.docs/raw/observability/ai-tracing/overview.mdx +145 -122
- package/.docs/raw/observability/ai-tracing/processors/sensitive-data-filter.mdx +57 -36
- package/.docs/raw/observability/logging.mdx +14 -17
- package/.docs/raw/observability/nextjs-tracing.mdx +5 -5
- package/.docs/raw/observability/otel-tracing.mdx +17 -18
- package/.docs/raw/observability/overview.mdx +14 -10
- package/.docs/raw/rag/chunking-and-embedding.mdx +10 -8
- package/.docs/raw/rag/overview.mdx +5 -5
- package/.docs/raw/rag/retrieval.mdx +125 -107
- package/.docs/raw/rag/vector-databases.mdx +232 -223
- package/.docs/raw/reference/agents/agent.mdx +54 -41
- package/.docs/raw/reference/agents/generate.mdx +367 -261
- package/.docs/raw/reference/agents/generateLegacy.mdx +260 -178
- package/.docs/raw/reference/agents/getDefaultGenerateOptions.mdx +7 -5
- package/.docs/raw/reference/agents/getDefaultStreamOptions.mdx +7 -5
- package/.docs/raw/reference/agents/getDescription.mdx +3 -2
- package/.docs/raw/reference/agents/getInstructions.mdx +7 -5
- package/.docs/raw/reference/agents/getLLM.mdx +11 -7
- package/.docs/raw/reference/agents/getMemory.mdx +7 -5
- package/.docs/raw/reference/agents/getModel.mdx +7 -5
- package/.docs/raw/reference/agents/getScorers.mdx +7 -5
- package/.docs/raw/reference/agents/getTools.mdx +7 -5
- package/.docs/raw/reference/agents/getVoice.mdx +7 -5
- package/.docs/raw/reference/agents/getWorkflows.mdx +7 -5
- package/.docs/raw/reference/agents/listAgents.mdx +6 -4
- package/.docs/raw/reference/agents/network.mdx +171 -116
- package/.docs/raw/reference/auth/auth0.mdx +18 -14
- package/.docs/raw/reference/auth/clerk.mdx +15 -12
- package/.docs/raw/reference/auth/firebase.mdx +23 -16
- package/.docs/raw/reference/auth/jwt.mdx +7 -6
- package/.docs/raw/reference/auth/supabase.mdx +13 -10
- package/.docs/raw/reference/auth/workos.mdx +17 -13
- package/.docs/raw/reference/cli/create-mastra.mdx +61 -44
- package/.docs/raw/reference/cli/mastra.mdx +11 -11
- package/.docs/raw/reference/client-js/agents.mdx +40 -43
- package/.docs/raw/reference/client-js/error-handling.mdx +1 -1
- package/.docs/raw/reference/client-js/logs.mdx +1 -1
- package/.docs/raw/reference/client-js/mastra-client.mdx +21 -13
- package/.docs/raw/reference/client-js/memory.mdx +6 -2
- package/.docs/raw/reference/client-js/observability.mdx +10 -9
- package/.docs/raw/reference/client-js/telemetry.mdx +1 -1
- package/.docs/raw/reference/client-js/tools.mdx +1 -1
- package/.docs/raw/reference/client-js/vectors.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows-legacy.mdx +1 -1
- package/.docs/raw/reference/client-js/workflows.mdx +7 -7
- package/.docs/raw/reference/core/getAgent.mdx +6 -5
- package/.docs/raw/reference/core/getAgentById.mdx +5 -4
- package/.docs/raw/reference/core/getAgents.mdx +3 -3
- package/.docs/raw/reference/core/getDeployer.mdx +4 -3
- package/.docs/raw/reference/core/getLogger.mdx +4 -3
- package/.docs/raw/reference/core/getLogs.mdx +10 -6
- package/.docs/raw/reference/core/getLogsByRunId.mdx +8 -5
- package/.docs/raw/reference/core/getMCPServer.mdx +8 -5
- package/.docs/raw/reference/core/getMCPServers.mdx +4 -3
- package/.docs/raw/reference/core/getMemory.mdx +4 -3
- package/.docs/raw/reference/core/getScorer.mdx +15 -12
- package/.docs/raw/reference/core/getScorerByName.mdx +12 -9
- package/.docs/raw/reference/core/getScorers.mdx +3 -2
- package/.docs/raw/reference/core/getServer.mdx +4 -3
- package/.docs/raw/reference/core/getStorage.mdx +4 -3
- package/.docs/raw/reference/core/getTelemetry.mdx +4 -3
- package/.docs/raw/reference/core/getVector.mdx +6 -4
- package/.docs/raw/reference/core/getVectors.mdx +4 -3
- package/.docs/raw/reference/core/getWorkflow.mdx +7 -4
- package/.docs/raw/reference/core/getWorkflows.mdx +5 -3
- package/.docs/raw/reference/core/mastra-class.mdx +16 -16
- package/.docs/raw/reference/core/setLogger.mdx +6 -4
- package/.docs/raw/reference/core/setStorage.mdx +4 -4
- package/.docs/raw/reference/core/setTelemetry.mdx +4 -3
- package/.docs/raw/reference/deployer/cloudflare.mdx +11 -7
- package/.docs/raw/reference/deployer/deployer.mdx +2 -1
- package/.docs/raw/reference/deployer/netlify.mdx +4 -4
- package/.docs/raw/reference/deployer/vercel.mdx +6 -6
- package/.docs/raw/reference/evals/answer-relevancy.mdx +4 -5
- package/.docs/raw/reference/evals/bias.mdx +4 -5
- package/.docs/raw/reference/evals/completeness.mdx +4 -5
- package/.docs/raw/reference/evals/content-similarity.mdx +4 -5
- package/.docs/raw/reference/evals/context-position.mdx +4 -5
- package/.docs/raw/reference/evals/context-precision.mdx +4 -5
- package/.docs/raw/reference/evals/context-relevancy.mdx +4 -5
- package/.docs/raw/reference/evals/contextual-recall.mdx +4 -5
- package/.docs/raw/reference/evals/faithfulness.mdx +4 -5
- package/.docs/raw/reference/evals/hallucination.mdx +4 -6
- package/.docs/raw/reference/evals/keyword-coverage.mdx +4 -5
- package/.docs/raw/reference/evals/prompt-alignment.mdx +4 -6
- package/.docs/raw/reference/evals/summarization.mdx +4 -6
- package/.docs/raw/reference/evals/textual-difference.mdx +4 -5
- package/.docs/raw/reference/evals/tone-consistency.mdx +4 -7
- package/.docs/raw/reference/evals/toxicity.mdx +4 -5
- package/.docs/raw/reference/index.mdx +3 -3
- package/.docs/raw/reference/legacyWorkflows/after.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/afterEvent.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/commit.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/createRun.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/else.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/events.mdx +7 -7
- package/.docs/raw/reference/legacyWorkflows/execute.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/if.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/resume.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/resumeWithEvent.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/snapshots.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/start.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/step-class.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/step-condition.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/step-function.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/step-options.mdx +6 -6
- package/.docs/raw/reference/legacyWorkflows/step-retries.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/suspend.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/then.mdx +5 -5
- package/.docs/raw/reference/legacyWorkflows/until.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/watch.mdx +3 -3
- package/.docs/raw/reference/legacyWorkflows/while.mdx +4 -4
- package/.docs/raw/reference/legacyWorkflows/workflow.mdx +7 -7
- package/.docs/raw/reference/memory/createThread.mdx +10 -10
- package/.docs/raw/reference/memory/deleteMessages.mdx +7 -5
- package/.docs/raw/reference/memory/getThreadById.mdx +6 -5
- package/.docs/raw/reference/memory/getThreadsByResourceId.mdx +11 -10
- package/.docs/raw/reference/memory/getThreadsByResourceIdPaginated.mdx +10 -9
- package/.docs/raw/reference/memory/{Memory.mdx → memory-class.mdx} +53 -46
- package/.docs/raw/reference/memory/query.mdx +39 -25
- package/.docs/raw/reference/observability/ai-tracing/ai-tracing.mdx +9 -5
- package/.docs/raw/reference/observability/ai-tracing/configuration.mdx +26 -22
- package/.docs/raw/reference/observability/ai-tracing/exporters/arize.mdx +16 -12
- package/.docs/raw/reference/observability/ai-tracing/exporters/braintrust.mdx +14 -14
- package/.docs/raw/reference/observability/ai-tracing/exporters/cloud-exporter.mdx +16 -11
- package/.docs/raw/reference/observability/ai-tracing/exporters/console-exporter.mdx +10 -6
- package/.docs/raw/reference/observability/ai-tracing/exporters/default-exporter.mdx +23 -15
- package/.docs/raw/reference/observability/ai-tracing/exporters/langfuse.mdx +6 -6
- package/.docs/raw/reference/observability/ai-tracing/exporters/langsmith.mdx +13 -13
- package/.docs/raw/reference/observability/ai-tracing/exporters/otel.mdx +44 -36
- package/.docs/raw/reference/observability/ai-tracing/interfaces.mdx +115 -106
- package/.docs/raw/reference/observability/ai-tracing/processors/sensitive-data-filter.mdx +37 -32
- package/.docs/raw/reference/observability/ai-tracing/span.mdx +29 -26
- package/.docs/raw/reference/observability/logging/pino-logger.mdx +13 -15
- package/.docs/raw/reference/observability/otel-tracing/otel-config.mdx +2 -2
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-ax.mdx +3 -3
- package/.docs/raw/reference/observability/otel-tracing/providers/arize-phoenix.mdx +2 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/dash0.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/index.mdx +12 -14
- package/.docs/raw/reference/observability/otel-tracing/providers/keywordsai.mdx +3 -3
- package/.docs/raw/reference/observability/otel-tracing/providers/laminar.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/langfuse.mdx +4 -4
- package/.docs/raw/reference/observability/otel-tracing/providers/langsmith.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/langwatch.mdx +2 -2
- package/.docs/raw/reference/observability/otel-tracing/providers/new-relic.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/signoz.mdx +1 -1
- package/.docs/raw/reference/observability/otel-tracing/providers/traceloop.mdx +1 -1
- package/.docs/raw/reference/processors/batch-parts-processor.mdx +13 -10
- package/.docs/raw/reference/processors/language-detector.mdx +27 -17
- package/.docs/raw/reference/processors/moderation-processor.mdx +26 -17
- package/.docs/raw/reference/processors/pii-detector.mdx +28 -18
- package/.docs/raw/reference/processors/prompt-injection-detector.mdx +25 -17
- package/.docs/raw/reference/processors/system-prompt-scrubber.mdx +26 -17
- package/.docs/raw/reference/processors/token-limiter-processor.mdx +22 -15
- package/.docs/raw/reference/processors/unicode-normalizer.mdx +13 -12
- package/.docs/raw/reference/rag/chunk.mdx +41 -23
- package/.docs/raw/reference/rag/database-config.mdx +56 -38
- package/.docs/raw/reference/rag/document.mdx +1 -1
- package/.docs/raw/reference/rag/embeddings.mdx +1 -1
- package/.docs/raw/reference/rag/extract-params.mdx +1 -1
- package/.docs/raw/reference/rag/graph-rag.mdx +1 -1
- package/.docs/raw/reference/rag/metadata-filters.mdx +23 -26
- package/.docs/raw/reference/rag/rerank.mdx +1 -1
- package/.docs/raw/reference/rag/rerankWithScorer.mdx +2 -2
- package/.docs/raw/reference/scorers/answer-relevancy.mdx +35 -17
- package/.docs/raw/reference/scorers/answer-similarity.mdx +84 -68
- package/.docs/raw/reference/scorers/bias.mdx +22 -19
- package/.docs/raw/reference/scorers/completeness.mdx +21 -16
- package/.docs/raw/reference/scorers/content-similarity.mdx +12 -10
- package/.docs/raw/reference/scorers/context-precision.mdx +73 -64
- package/.docs/raw/reference/scorers/context-relevance.mdx +142 -126
- package/.docs/raw/reference/scorers/create-scorer.mdx +93 -61
- package/.docs/raw/reference/scorers/faithfulness.mdx +21 -13
- package/.docs/raw/reference/scorers/hallucination.mdx +17 -12
- package/.docs/raw/reference/scorers/keyword-coverage.mdx +32 -27
- package/.docs/raw/reference/scorers/mastra-scorer.mdx +39 -33
- package/.docs/raw/reference/scorers/noise-sensitivity.mdx +203 -152
- package/.docs/raw/reference/scorers/prompt-alignment.mdx +186 -132
- package/.docs/raw/reference/scorers/run-experiment.mdx +40 -31
- package/.docs/raw/reference/scorers/textual-difference.mdx +25 -26
- package/.docs/raw/reference/scorers/tone-consistency.mdx +29 -26
- package/.docs/raw/reference/scorers/tool-call-accuracy.mdx +180 -176
- package/.docs/raw/reference/scorers/toxicity.mdx +35 -31
- package/.docs/raw/reference/storage/cloudflare-d1.mdx +1 -1
- package/.docs/raw/reference/storage/cloudflare.mdx +1 -1
- package/.docs/raw/reference/storage/dynamodb.mdx +1 -1
- package/.docs/raw/reference/storage/lance.mdx +1 -1
- package/.docs/raw/reference/storage/libsql.mdx +2 -2
- package/.docs/raw/reference/storage/mongodb.mdx +4 -5
- package/.docs/raw/reference/storage/mssql.mdx +5 -4
- package/.docs/raw/reference/storage/postgresql.mdx +35 -33
- package/.docs/raw/reference/storage/upstash.mdx +6 -5
- package/.docs/raw/reference/streaming/ChunkType.mdx +788 -314
- package/.docs/raw/reference/streaming/agents/MastraModelOutput.mdx +265 -109
- package/.docs/raw/reference/streaming/agents/stream.mdx +375 -266
- package/.docs/raw/reference/streaming/agents/streamLegacy.mdx +233 -162
- package/.docs/raw/reference/streaming/workflows/observeStream.mdx +4 -4
- package/.docs/raw/reference/streaming/workflows/observeStreamVNext.mdx +5 -5
- package/.docs/raw/reference/streaming/workflows/resumeStreamVNext.mdx +24 -20
- package/.docs/raw/reference/streaming/workflows/stream.mdx +35 -26
- package/.docs/raw/reference/streaming/workflows/streamVNext.mdx +36 -27
- package/.docs/raw/reference/templates/overview.mdx +16 -39
- package/.docs/raw/reference/tools/client.mdx +1 -1
- package/.docs/raw/reference/tools/create-tool.mdx +45 -35
- package/.docs/raw/reference/tools/document-chunker-tool.mdx +2 -2
- package/.docs/raw/reference/tools/graph-rag-tool.mdx +12 -12
- package/.docs/raw/reference/tools/mcp-client.mdx +70 -64
- package/.docs/raw/reference/tools/mcp-server.mdx +91 -78
- package/.docs/raw/reference/tools/vector-query-tool.mdx +48 -38
- package/.docs/raw/reference/vectors/astra.mdx +1 -1
- package/.docs/raw/reference/vectors/chroma.mdx +25 -19
- package/.docs/raw/reference/vectors/couchbase.mdx +4 -4
- package/.docs/raw/reference/vectors/lance.mdx +5 -6
- package/.docs/raw/reference/vectors/libsql.mdx +1 -1
- package/.docs/raw/reference/vectors/mongodb.mdx +1 -1
- package/.docs/raw/reference/vectors/opensearch.mdx +1 -1
- package/.docs/raw/reference/vectors/pg.mdx +8 -4
- package/.docs/raw/reference/vectors/pinecone.mdx +1 -1
- package/.docs/raw/reference/vectors/qdrant.mdx +1 -1
- package/.docs/raw/reference/vectors/s3vectors.mdx +35 -27
- package/.docs/raw/reference/vectors/turbopuffer.mdx +1 -1
- package/.docs/raw/reference/vectors/upstash.mdx +33 -25
- package/.docs/raw/reference/vectors/vectorize.mdx +1 -1
- package/.docs/raw/reference/voice/azure.mdx +1 -1
- package/.docs/raw/reference/voice/cloudflare.mdx +1 -1
- package/.docs/raw/reference/voice/composite-voice.mdx +1 -1
- package/.docs/raw/reference/voice/deepgram.mdx +1 -1
- package/.docs/raw/reference/voice/elevenlabs.mdx +1 -1
- package/.docs/raw/reference/voice/google-gemini-live.mdx +6 -4
- package/.docs/raw/reference/voice/google.mdx +1 -1
- package/.docs/raw/reference/voice/mastra-voice.mdx +1 -1
- package/.docs/raw/reference/voice/murf.mdx +1 -1
- package/.docs/raw/reference/voice/openai-realtime.mdx +1 -1
- package/.docs/raw/reference/voice/openai.mdx +1 -1
- package/.docs/raw/reference/voice/playai.mdx +1 -1
- package/.docs/raw/reference/voice/sarvam.mdx +1 -1
- package/.docs/raw/reference/voice/speechify.mdx +1 -1
- package/.docs/raw/reference/voice/voice.addInstructions.mdx +1 -1
- package/.docs/raw/reference/voice/voice.addTools.mdx +1 -1
- package/.docs/raw/reference/voice/voice.answer.mdx +1 -1
- package/.docs/raw/reference/voice/voice.close.mdx +1 -1
- package/.docs/raw/reference/voice/voice.connect.mdx +1 -1
- package/.docs/raw/reference/voice/voice.events.mdx +1 -1
- package/.docs/raw/reference/voice/voice.getSpeakers.mdx +23 -30
- package/.docs/raw/reference/voice/voice.listen.mdx +1 -1
- package/.docs/raw/reference/voice/voice.off.mdx +1 -1
- package/.docs/raw/reference/voice/voice.on.mdx +1 -1
- package/.docs/raw/reference/voice/voice.send.mdx +1 -1
- package/.docs/raw/reference/voice/voice.speak.mdx +1 -1
- package/.docs/raw/reference/voice/voice.updateConfig.mdx +1 -1
- package/.docs/raw/reference/workflows/run-methods/cancel.mdx +4 -3
- package/.docs/raw/reference/workflows/run-methods/resume.mdx +49 -34
- package/.docs/raw/reference/workflows/run-methods/start.mdx +43 -31
- package/.docs/raw/reference/workflows/run-methods/watch.mdx +7 -8
- package/.docs/raw/reference/workflows/run.mdx +7 -10
- package/.docs/raw/reference/workflows/step.mdx +15 -12
- package/.docs/raw/reference/workflows/workflow-methods/branch.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/commit.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/create-run.mdx +7 -7
- package/.docs/raw/reference/workflows/workflow-methods/dountil.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/dowhile.mdx +2 -2
- package/.docs/raw/reference/workflows/workflow-methods/foreach.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/map.mdx +3 -2
- package/.docs/raw/reference/workflows/workflow-methods/parallel.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/sendEvent.mdx +5 -5
- package/.docs/raw/reference/workflows/workflow-methods/sleep.mdx +3 -2
- package/.docs/raw/reference/workflows/workflow-methods/sleepUntil.mdx +3 -2
- package/.docs/raw/reference/workflows/workflow-methods/then.mdx +1 -1
- package/.docs/raw/reference/workflows/workflow-methods/waitForEvent.mdx +3 -3
- package/.docs/raw/reference/workflows/workflow.mdx +13 -10
- package/.docs/raw/scorers/custom-scorers.mdx +58 -48
- package/.docs/raw/scorers/evals-old-api/custom-eval.mdx +6 -8
- package/.docs/raw/scorers/evals-old-api/overview.mdx +8 -8
- package/.docs/raw/scorers/evals-old-api/running-in-ci.mdx +9 -9
- package/.docs/raw/scorers/evals-old-api/textual-evals.mdx +5 -5
- package/.docs/raw/scorers/off-the-shelf-scorers.mdx +3 -1
- package/.docs/raw/scorers/overview.mdx +20 -19
- package/.docs/raw/server-db/custom-api-routes.mdx +8 -8
- package/.docs/raw/server-db/mastra-client.mdx +56 -54
- package/.docs/raw/server-db/middleware.mdx +11 -7
- package/.docs/raw/server-db/production-server.mdx +5 -7
- package/.docs/raw/server-db/runtime-context.mdx +41 -38
- package/.docs/raw/server-db/storage.mdx +82 -87
- package/.docs/raw/streaming/events.mdx +24 -16
- package/.docs/raw/streaming/overview.mdx +17 -18
- package/.docs/raw/streaming/tool-streaming.mdx +9 -10
- package/.docs/raw/streaming/workflow-streaming.mdx +14 -12
- package/.docs/raw/tools-mcp/advanced-usage.mdx +2 -2
- package/.docs/raw/tools-mcp/mcp-overview.mdx +92 -102
- package/.docs/raw/tools-mcp/overview.mdx +9 -14
- package/.docs/raw/voice/overview.mdx +273 -250
- package/.docs/raw/voice/speech-to-speech.mdx +14 -12
- package/.docs/raw/voice/speech-to-text.mdx +2 -2
- package/.docs/raw/voice/text-to-speech.mdx +2 -2
- package/.docs/raw/workflows/agents-and-tools.mdx +29 -28
- package/.docs/raw/workflows/control-flow.mdx +24 -24
- package/.docs/raw/workflows/error-handling.mdx +15 -17
- package/.docs/raw/workflows/human-in-the-loop.mdx +39 -39
- package/.docs/raw/workflows/inngest-workflow.mdx +33 -29
- package/.docs/raw/workflows/input-data-mapping.mdx +9 -9
- package/.docs/raw/workflows/overview.mdx +60 -60
- package/.docs/raw/workflows/snapshots.mdx +54 -36
- package/.docs/raw/workflows/suspend-and-resume.mdx +52 -57
- package/.docs/raw/workflows-legacy/control-flow.mdx +15 -17
- package/.docs/raw/workflows-legacy/dynamic-workflows.mdx +3 -1
- package/.docs/raw/workflows-legacy/error-handling.mdx +8 -6
- package/.docs/raw/workflows-legacy/nested-workflows.mdx +6 -0
- package/.docs/raw/workflows-legacy/overview.mdx +28 -26
- package/.docs/raw/workflows-legacy/runtime-variables.mdx +4 -2
- package/.docs/raw/workflows-legacy/steps.mdx +5 -3
- package/.docs/raw/workflows-legacy/suspend-and-resume.mdx +10 -8
- package/.docs/raw/workflows-legacy/variables.mdx +10 -8
- package/CHANGELOG.md +14 -0
- package/package.json +5 -5
- package/.docs/raw/memory/storage/memory-with-mongodb.mdx +0 -148
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Reference: MCPClient |
|
|
2
|
+
title: "Reference: MCPClient | Tools & MCP | Mastra Docs"
|
|
3
3
|
description: API Reference for MCPClient - A class for managing multiple Model Context Protocol servers and their tools.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -318,15 +318,15 @@ const mcpClient = new MCPClient({
|
|
|
318
318
|
});
|
|
319
319
|
|
|
320
320
|
// Set up elicitation handler
|
|
321
|
-
mcpClient.elicitation.onRequest(
|
|
321
|
+
mcpClient.elicitation.onRequest("serverName", async (request) => {
|
|
322
322
|
// Handle elicitation request from server
|
|
323
|
-
console.log(
|
|
324
|
-
console.log(
|
|
325
|
-
|
|
323
|
+
console.log("Server requests:", request.message);
|
|
324
|
+
console.log("Schema:", request.requestedSchema);
|
|
325
|
+
|
|
326
326
|
// Return user response
|
|
327
327
|
return {
|
|
328
|
-
action:
|
|
329
|
-
content: { name:
|
|
328
|
+
action: "accept",
|
|
329
|
+
content: { name: "John Doe", email: "john@example.com" },
|
|
330
330
|
};
|
|
331
331
|
});
|
|
332
332
|
```
|
|
@@ -338,41 +338,43 @@ Sets up a handler function that will be called when any connected MCP server sen
|
|
|
338
338
|
**ElicitationHandler Function:**
|
|
339
339
|
|
|
340
340
|
The handler function receives a request object with:
|
|
341
|
+
|
|
341
342
|
- `message`: A human-readable message describing what information is needed
|
|
342
343
|
- `requestedSchema`: A JSON schema defining the structure of the expected response
|
|
343
344
|
|
|
344
345
|
The handler must return an `ElicitResult` with:
|
|
346
|
+
|
|
345
347
|
- `action`: One of `'accept'`, `'decline'`, or `'cancel'`
|
|
346
348
|
- `content`: The user's data (only when action is `'accept'`)
|
|
347
349
|
|
|
348
350
|
**Example:**
|
|
349
351
|
|
|
350
352
|
```typescript
|
|
351
|
-
mcpClient.elicitation.onRequest(
|
|
353
|
+
mcpClient.elicitation.onRequest("serverName", async (request) => {
|
|
352
354
|
console.log(`Server requests: ${request.message}`);
|
|
353
|
-
|
|
355
|
+
|
|
354
356
|
// Example: Simple user input collection
|
|
355
357
|
if (request.requestedSchema.properties.name) {
|
|
356
358
|
// Simulate user accepting and providing data
|
|
357
359
|
return {
|
|
358
|
-
action:
|
|
360
|
+
action: "accept",
|
|
359
361
|
content: {
|
|
360
|
-
name:
|
|
361
|
-
email:
|
|
362
|
-
}
|
|
362
|
+
name: "Alice Smith",
|
|
363
|
+
email: "alice@example.com",
|
|
364
|
+
},
|
|
363
365
|
};
|
|
364
366
|
}
|
|
365
|
-
|
|
367
|
+
|
|
366
368
|
// Simulate user declining the request
|
|
367
|
-
return { action:
|
|
369
|
+
return { action: "decline" };
|
|
368
370
|
});
|
|
369
371
|
```
|
|
370
372
|
|
|
371
373
|
**Complete Interactive Example:**
|
|
372
374
|
|
|
373
375
|
```typescript
|
|
374
|
-
import { MCPClient } from
|
|
375
|
-
import { createInterface } from
|
|
376
|
+
import { MCPClient } from "@mastra/mcp";
|
|
377
|
+
import { createInterface } from "readline";
|
|
376
378
|
|
|
377
379
|
const readline = createInterface({
|
|
378
380
|
input: process.stdin,
|
|
@@ -380,69 +382,71 @@ const readline = createInterface({
|
|
|
380
382
|
});
|
|
381
383
|
|
|
382
384
|
function askQuestion(question: string): Promise<string> {
|
|
383
|
-
return new Promise(resolve => {
|
|
384
|
-
readline.question(question, answer => resolve(answer.trim()));
|
|
385
|
+
return new Promise((resolve) => {
|
|
386
|
+
readline.question(question, (answer) => resolve(answer.trim()));
|
|
385
387
|
});
|
|
386
388
|
}
|
|
387
389
|
|
|
388
390
|
const mcpClient = new MCPClient({
|
|
389
391
|
servers: {
|
|
390
392
|
interactiveServer: {
|
|
391
|
-
url: new URL(
|
|
393
|
+
url: new URL("http://localhost:3000/mcp"),
|
|
392
394
|
},
|
|
393
395
|
},
|
|
394
396
|
});
|
|
395
397
|
|
|
396
398
|
// Set up interactive elicitation handler
|
|
397
|
-
await mcpClient.elicitation.onRequest(
|
|
399
|
+
await mcpClient.elicitation.onRequest("interactiveServer", async (request) => {
|
|
398
400
|
console.log(`\n📋 Server Request: ${request.message}`);
|
|
399
|
-
console.log(
|
|
400
|
-
|
|
401
|
+
console.log("Required information:");
|
|
402
|
+
|
|
401
403
|
const schema = request.requestedSchema;
|
|
402
404
|
const properties = schema.properties || {};
|
|
403
405
|
const required = schema.required || [];
|
|
404
406
|
const content: Record<string, any> = {};
|
|
405
|
-
|
|
407
|
+
|
|
406
408
|
// Collect input for each field
|
|
407
409
|
for (const [fieldName, fieldSchema] of Object.entries(properties)) {
|
|
408
410
|
const field = fieldSchema as any;
|
|
409
411
|
const isRequired = required.includes(fieldName);
|
|
410
|
-
|
|
412
|
+
|
|
411
413
|
let prompt = `${field.title || fieldName}`;
|
|
412
414
|
if (field.description) prompt += ` (${field.description})`;
|
|
413
|
-
if (isRequired) prompt +=
|
|
414
|
-
prompt +=
|
|
415
|
-
|
|
415
|
+
if (isRequired) prompt += " *required*";
|
|
416
|
+
prompt += ": ";
|
|
417
|
+
|
|
416
418
|
const answer = await askQuestion(prompt);
|
|
417
|
-
|
|
419
|
+
|
|
418
420
|
// Handle cancellation
|
|
419
|
-
if (answer.toLowerCase() ===
|
|
420
|
-
return { action:
|
|
421
|
+
if (answer.toLowerCase() === "cancel") {
|
|
422
|
+
return { action: "cancel" };
|
|
421
423
|
}
|
|
422
|
-
|
|
424
|
+
|
|
423
425
|
// Validate required fields
|
|
424
|
-
if (answer ===
|
|
426
|
+
if (answer === "" && isRequired) {
|
|
425
427
|
console.log(`❌ ${fieldName} is required`);
|
|
426
|
-
return { action:
|
|
428
|
+
return { action: "decline" };
|
|
427
429
|
}
|
|
428
|
-
|
|
429
|
-
if (answer !==
|
|
430
|
+
|
|
431
|
+
if (answer !== "") {
|
|
430
432
|
content[fieldName] = answer;
|
|
431
433
|
}
|
|
432
434
|
}
|
|
433
|
-
|
|
435
|
+
|
|
434
436
|
// Confirm submission
|
|
435
|
-
console.log(
|
|
437
|
+
console.log("\n📝 You provided:");
|
|
436
438
|
console.log(JSON.stringify(content, null, 2));
|
|
437
|
-
|
|
438
|
-
const confirm = await askQuestion(
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
return { action:
|
|
439
|
+
|
|
440
|
+
const confirm = await askQuestion(
|
|
441
|
+
"\nSubmit this information? (yes/no/cancel): ",
|
|
442
|
+
);
|
|
443
|
+
|
|
444
|
+
if (confirm.toLowerCase() === "yes" || confirm.toLowerCase() === "y") {
|
|
445
|
+
return { action: "accept", content };
|
|
446
|
+
} else if (confirm.toLowerCase() === "cancel") {
|
|
447
|
+
return { action: "cancel" };
|
|
444
448
|
} else {
|
|
445
|
-
return { action:
|
|
449
|
+
return { action: "decline" };
|
|
446
450
|
}
|
|
447
451
|
});
|
|
448
452
|
```
|
|
@@ -529,27 +533,27 @@ Elicitation is a feature that allows MCP servers to request structured informati
|
|
|
529
533
|
You must set up an elicitation handler before tools that use elicitation are called:
|
|
530
534
|
|
|
531
535
|
```typescript
|
|
532
|
-
import { MCPClient } from
|
|
536
|
+
import { MCPClient } from "@mastra/mcp";
|
|
533
537
|
|
|
534
538
|
const mcpClient = new MCPClient({
|
|
535
539
|
servers: {
|
|
536
540
|
interactiveServer: {
|
|
537
|
-
url: new URL(
|
|
541
|
+
url: new URL("http://localhost:3000/mcp"),
|
|
538
542
|
},
|
|
539
543
|
},
|
|
540
544
|
});
|
|
541
545
|
|
|
542
546
|
// Set up elicitation handler
|
|
543
|
-
mcpClient.elicitation.onRequest(
|
|
547
|
+
mcpClient.elicitation.onRequest("interactiveServer", async (request) => {
|
|
544
548
|
// Handle the server's request for user input
|
|
545
549
|
console.log(`Server needs: ${request.message}`);
|
|
546
|
-
|
|
550
|
+
|
|
547
551
|
// Your logic to collect user input
|
|
548
552
|
const userData = await collectUserInput(request.requestedSchema);
|
|
549
|
-
|
|
553
|
+
|
|
550
554
|
return {
|
|
551
|
-
action:
|
|
552
|
-
content: userData
|
|
555
|
+
action: "accept",
|
|
556
|
+
content: userData,
|
|
553
557
|
};
|
|
554
558
|
});
|
|
555
559
|
```
|
|
@@ -559,21 +563,23 @@ mcpClient.elicitation.onRequest('interactiveServer', async (request) => {
|
|
|
559
563
|
Your elicitation handler must return one of three response types:
|
|
560
564
|
|
|
561
565
|
- **Accept**: User provided data and confirmed submission
|
|
566
|
+
|
|
562
567
|
```typescript
|
|
563
568
|
return {
|
|
564
|
-
action:
|
|
565
|
-
content: { name:
|
|
569
|
+
action: "accept",
|
|
570
|
+
content: { name: "John Doe", email: "john@example.com" },
|
|
566
571
|
};
|
|
567
572
|
```
|
|
568
573
|
|
|
569
574
|
- **Decline**: User explicitly declined to provide the information
|
|
575
|
+
|
|
570
576
|
```typescript
|
|
571
|
-
return { action:
|
|
577
|
+
return { action: "decline" };
|
|
572
578
|
```
|
|
573
579
|
|
|
574
580
|
- **Cancel**: User dismissed or cancelled the request
|
|
575
581
|
```typescript
|
|
576
|
-
return { action:
|
|
582
|
+
return { action: "cancel" };
|
|
577
583
|
```
|
|
578
584
|
|
|
579
585
|
### Schema-Based Input Collection
|
|
@@ -581,14 +587,14 @@ Your elicitation handler must return one of three response types:
|
|
|
581
587
|
The `requestedSchema` provides structure for the data the server needs:
|
|
582
588
|
|
|
583
589
|
```typescript
|
|
584
|
-
await mcpClient.elicitation.onRequest(
|
|
590
|
+
await mcpClient.elicitation.onRequest("interactiveServer", async (request) => {
|
|
585
591
|
const { properties, required = [] } = request.requestedSchema;
|
|
586
592
|
const content: Record<string, any> = {};
|
|
587
|
-
|
|
593
|
+
|
|
588
594
|
for (const [fieldName, fieldSchema] of Object.entries(properties || {})) {
|
|
589
595
|
const field = fieldSchema as any;
|
|
590
596
|
const isRequired = required.includes(fieldName);
|
|
591
|
-
|
|
597
|
+
|
|
592
598
|
// Collect input based on field type and requirements
|
|
593
599
|
const value = await promptUser({
|
|
594
600
|
name: fieldName,
|
|
@@ -599,13 +605,13 @@ await mcpClient.elicitation.onRequest('interactiveServer', async (request) => {
|
|
|
599
605
|
format: field.format,
|
|
600
606
|
enum: field.enum,
|
|
601
607
|
});
|
|
602
|
-
|
|
608
|
+
|
|
603
609
|
if (value !== null) {
|
|
604
610
|
content[fieldName] = value;
|
|
605
611
|
}
|
|
606
612
|
}
|
|
607
|
-
|
|
608
|
-
return { action:
|
|
613
|
+
|
|
614
|
+
return { action: "accept", content };
|
|
609
615
|
});
|
|
610
616
|
```
|
|
611
617
|
|
|
@@ -679,7 +685,7 @@ async function checkWeatherPrompt() {
|
|
|
679
685
|
const weatherPrompts = await mcp.prompts.list();
|
|
680
686
|
if (weatherPrompts.weather && weatherPrompts.weather.length > 0) {
|
|
681
687
|
const currentWeatherPrompt = weatherPrompts.weather.find(
|
|
682
|
-
(p) => p.name === "current"
|
|
688
|
+
(p) => p.name === "current",
|
|
683
689
|
);
|
|
684
690
|
if (currentWeatherPrompt) {
|
|
685
691
|
console.log("Weather prompt:", currentWeatherPrompt);
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
title: "Reference: MCPServer |
|
|
2
|
+
title: "Reference: MCPServer | Tools & MCP | Mastra Docs"
|
|
3
3
|
description: API Reference for MCPServer - A class for exposing Mastra tools and capabilities as a Model Context Protocol server.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -165,7 +165,6 @@ A powerful feature of `MCPServer` is its ability to automatically expose your Ma
|
|
|
165
165
|
- **Tool Naming**: Each agent is converted into a tool named `ask_<agentKey>`, where `<agentKey>` is the key you used for that agent in the `agents` object. For instance, if you configure `agents: { myAgentKey: myAgentInstance }`, a tool named `ask_myAgentKey` will be created.
|
|
166
166
|
|
|
167
167
|
- **Tool Functionality**:
|
|
168
|
-
|
|
169
168
|
- **Description**: The generated tool's description will be in the format: "Ask agent `<AgentName>` a question. Original agent instructions: `<agent description>`".
|
|
170
169
|
- **Input**: The tool expects a single object argument with a `message` property (string): `{ message: "Your question for the agent" }`.
|
|
171
170
|
- **Execution**: When this tool is called, it invokes the `generate()` method of the corresponding agent, passing the provided `query`.
|
|
@@ -383,7 +382,7 @@ import http from "http";
|
|
|
383
382
|
|
|
384
383
|
const httpServer = http.createServer(async (req, res) => {
|
|
385
384
|
await server.startHTTP({
|
|
386
|
-
url: new URL(req.url ||
|
|
385
|
+
url: new URL(req.url || "", "http://localhost:1234"),
|
|
387
386
|
httpPath: `/mcp`,
|
|
388
387
|
req,
|
|
389
388
|
res,
|
|
@@ -403,32 +402,32 @@ Here are the details for the values needed by the `startHTTP` method:
|
|
|
403
402
|
<PropertiesTable
|
|
404
403
|
content={[
|
|
405
404
|
{
|
|
406
|
-
name:
|
|
407
|
-
type:
|
|
408
|
-
description:
|
|
405
|
+
name: "url",
|
|
406
|
+
type: "URL",
|
|
407
|
+
description: "The web address the user is requesting.",
|
|
409
408
|
},
|
|
410
409
|
{
|
|
411
|
-
name:
|
|
412
|
-
type:
|
|
410
|
+
name: "httpPath",
|
|
411
|
+
type: "string",
|
|
413
412
|
description:
|
|
414
413
|
"The specific part of the URL where the MCP server will handle HTTP requests (e.g., '/mcp').",
|
|
415
414
|
},
|
|
416
415
|
{
|
|
417
|
-
name:
|
|
418
|
-
type:
|
|
419
|
-
description:
|
|
416
|
+
name: "req",
|
|
417
|
+
type: "http.IncomingMessage",
|
|
418
|
+
description: "The incoming request object from your web server.",
|
|
420
419
|
},
|
|
421
420
|
{
|
|
422
|
-
name:
|
|
423
|
-
type:
|
|
421
|
+
name: "res",
|
|
422
|
+
type: "http.ServerResponse",
|
|
424
423
|
description:
|
|
425
|
-
|
|
424
|
+
"The response object from your web server, used to send data back.",
|
|
426
425
|
},
|
|
427
426
|
{
|
|
428
|
-
name:
|
|
429
|
-
type:
|
|
427
|
+
name: "options",
|
|
428
|
+
type: "StreamableHTTPServerTransportOptions",
|
|
430
429
|
description:
|
|
431
|
-
|
|
430
|
+
"Optional configuration for the HTTP transport. See the options table below for more details.",
|
|
432
431
|
optional: true,
|
|
433
432
|
},
|
|
434
433
|
]}
|
|
@@ -439,30 +438,30 @@ The `StreamableHTTPServerTransportOptions` object allows you to customize the be
|
|
|
439
438
|
<PropertiesTable
|
|
440
439
|
content={[
|
|
441
440
|
{
|
|
442
|
-
name:
|
|
443
|
-
type:
|
|
441
|
+
name: "sessionIdGenerator",
|
|
442
|
+
type: "(() => string) | undefined",
|
|
444
443
|
description:
|
|
445
|
-
|
|
444
|
+
"A function that generates a unique session ID. This should be a cryptographically secure, globally unique string. Return `undefined` to disable session management.",
|
|
446
445
|
},
|
|
447
446
|
{
|
|
448
|
-
name:
|
|
449
|
-
type:
|
|
447
|
+
name: "onsessioninitialized",
|
|
448
|
+
type: "(sessionId: string) => void",
|
|
450
449
|
description:
|
|
451
|
-
|
|
450
|
+
"A callback that is invoked when a new session is initialized. This is useful for tracking active MCP sessions.",
|
|
452
451
|
optional: true,
|
|
453
452
|
},
|
|
454
453
|
{
|
|
455
|
-
name:
|
|
456
|
-
type:
|
|
454
|
+
name: "enableJsonResponse",
|
|
455
|
+
type: "boolean",
|
|
457
456
|
description:
|
|
458
|
-
|
|
457
|
+
"If `true`, the server will return plain JSON responses instead of using Server-Sent Events (SSE) for streaming. Defaults to `false`.",
|
|
459
458
|
optional: true,
|
|
460
459
|
},
|
|
461
460
|
{
|
|
462
|
-
name:
|
|
463
|
-
type:
|
|
461
|
+
name: "eventStore",
|
|
462
|
+
type: "EventStore",
|
|
464
463
|
description:
|
|
465
|
-
|
|
464
|
+
"An event store for message resumability. Providing this enables clients to reconnect and resume message streams.",
|
|
466
465
|
optional: true,
|
|
467
466
|
},
|
|
468
467
|
]}
|
|
@@ -752,13 +751,13 @@ const prompts: Prompt[] = [
|
|
|
752
751
|
{
|
|
753
752
|
name: "analyze-code",
|
|
754
753
|
description: "Analyze code for improvements",
|
|
755
|
-
version: "v1"
|
|
754
|
+
version: "v1",
|
|
756
755
|
},
|
|
757
756
|
{
|
|
758
757
|
name: "analyze-code",
|
|
759
758
|
description: "Analyze code for improvements (new logic)",
|
|
760
|
-
version: "v2"
|
|
761
|
-
}
|
|
759
|
+
version: "v2",
|
|
760
|
+
},
|
|
762
761
|
];
|
|
763
762
|
|
|
764
763
|
const myPromptHandlers: MCPServerPrompts = {
|
|
@@ -766,39 +765,46 @@ const myPromptHandlers: MCPServerPrompts = {
|
|
|
766
765
|
getPromptMessages: async ({ name, version, args }) => {
|
|
767
766
|
if (name === "analyze-code") {
|
|
768
767
|
if (version === "v2") {
|
|
769
|
-
const prompt = prompts.find(
|
|
768
|
+
const prompt = prompts.find(
|
|
769
|
+
(p) => p.name === name && p.version === "v2",
|
|
770
|
+
);
|
|
770
771
|
if (!prompt) throw new Error("Prompt version not found");
|
|
771
772
|
return {
|
|
772
773
|
prompt,
|
|
773
774
|
messages: [
|
|
774
775
|
{
|
|
775
776
|
role: "user",
|
|
776
|
-
content: {
|
|
777
|
-
|
|
778
|
-
|
|
777
|
+
content: {
|
|
778
|
+
type: "text",
|
|
779
|
+
text: `Analyze this code with the new logic: ${args.code}`,
|
|
780
|
+
},
|
|
781
|
+
},
|
|
782
|
+
],
|
|
779
783
|
};
|
|
780
784
|
}
|
|
781
785
|
// Default or v1
|
|
782
|
-
const prompt = prompts.find(p => p.name === name && p.version === "v1");
|
|
786
|
+
const prompt = prompts.find((p) => p.name === name && p.version === "v1");
|
|
783
787
|
if (!prompt) throw new Error("Prompt version not found");
|
|
784
788
|
return {
|
|
785
789
|
prompt,
|
|
786
790
|
messages: [
|
|
787
791
|
{
|
|
788
792
|
role: "user",
|
|
789
|
-
content: { type: "text", text: `Analyze this code: ${args.code}` }
|
|
790
|
-
}
|
|
791
|
-
]
|
|
793
|
+
content: { type: "text", text: `Analyze this code: ${args.code}` },
|
|
794
|
+
},
|
|
795
|
+
],
|
|
792
796
|
};
|
|
793
797
|
}
|
|
794
798
|
throw new Error("Prompt not found");
|
|
795
|
-
}
|
|
799
|
+
},
|
|
796
800
|
};
|
|
797
801
|
|
|
798
802
|
const serverWithPrompts = new MCPServer({
|
|
799
803
|
name: "Promptful Server",
|
|
800
804
|
version: "1.0.0",
|
|
801
|
-
tools: {
|
|
805
|
+
tools: {
|
|
806
|
+
/* ... */
|
|
807
|
+
},
|
|
802
808
|
prompts: myPromptHandlers,
|
|
803
809
|
});
|
|
804
810
|
```
|
|
@@ -849,20 +855,22 @@ When tools are executed within an MCP server context, they receive an additional
|
|
|
849
855
|
execute: async ({ context }, options) => {
|
|
850
856
|
// context contains the tool's input parameters
|
|
851
857
|
// options contains server capabilities like elicitation and authentication info
|
|
852
|
-
|
|
858
|
+
|
|
853
859
|
// Access authentication information (when available)
|
|
854
860
|
if (options.extra?.authInfo) {
|
|
855
|
-
console.log(
|
|
861
|
+
console.log("Authenticated request from:", options.extra.authInfo.clientId);
|
|
856
862
|
}
|
|
857
|
-
|
|
863
|
+
|
|
858
864
|
// Use elicitation capabilities
|
|
859
865
|
const result = await options.elicitation.sendRequest({
|
|
860
866
|
message: "Please provide information",
|
|
861
|
-
requestedSchema: {
|
|
867
|
+
requestedSchema: {
|
|
868
|
+
/* schema */
|
|
869
|
+
},
|
|
862
870
|
});
|
|
863
|
-
|
|
871
|
+
|
|
864
872
|
return result;
|
|
865
|
-
}
|
|
873
|
+
};
|
|
866
874
|
```
|
|
867
875
|
|
|
868
876
|
### How Elicitation Works
|
|
@@ -893,51 +901,54 @@ const server = new MCPServer({
|
|
|
893
901
|
id: "collectContactInfo",
|
|
894
902
|
description: "Collects user contact information through elicitation",
|
|
895
903
|
inputSchema: z.object({
|
|
896
|
-
reason: z
|
|
904
|
+
reason: z
|
|
905
|
+
.string()
|
|
906
|
+
.optional()
|
|
907
|
+
.describe("Reason for collecting contact info"),
|
|
897
908
|
}),
|
|
898
909
|
execute: async ({ context }, options) => {
|
|
899
910
|
const { reason } = context;
|
|
900
|
-
|
|
911
|
+
|
|
901
912
|
// Log session info if available
|
|
902
|
-
console.log(
|
|
913
|
+
console.log("Request from session:", options.extra?.sessionId);
|
|
903
914
|
|
|
904
915
|
try {
|
|
905
916
|
// Request user input via elicitation
|
|
906
917
|
const result = await options.elicitation.sendRequest({
|
|
907
|
-
message: reason
|
|
918
|
+
message: reason
|
|
908
919
|
? `Please provide your contact information. ${reason}`
|
|
909
|
-
:
|
|
920
|
+
: "Please provide your contact information",
|
|
910
921
|
requestedSchema: {
|
|
911
|
-
type:
|
|
922
|
+
type: "object",
|
|
912
923
|
properties: {
|
|
913
924
|
name: {
|
|
914
|
-
type:
|
|
915
|
-
title:
|
|
916
|
-
description:
|
|
925
|
+
type: "string",
|
|
926
|
+
title: "Full Name",
|
|
927
|
+
description: "Your full name",
|
|
917
928
|
},
|
|
918
929
|
email: {
|
|
919
|
-
type:
|
|
920
|
-
title:
|
|
921
|
-
description:
|
|
922
|
-
format:
|
|
930
|
+
type: "string",
|
|
931
|
+
title: "Email Address",
|
|
932
|
+
description: "Your email address",
|
|
933
|
+
format: "email",
|
|
923
934
|
},
|
|
924
935
|
phone: {
|
|
925
|
-
type:
|
|
926
|
-
title:
|
|
927
|
-
description:
|
|
936
|
+
type: "string",
|
|
937
|
+
title: "Phone Number",
|
|
938
|
+
description: "Your phone number (optional)",
|
|
928
939
|
},
|
|
929
940
|
},
|
|
930
|
-
required: [
|
|
941
|
+
required: ["name", "email"],
|
|
931
942
|
},
|
|
932
943
|
});
|
|
933
944
|
|
|
934
945
|
// Handle the user's response
|
|
935
|
-
if (result.action ===
|
|
946
|
+
if (result.action === "accept") {
|
|
936
947
|
return `Contact information collected: ${JSON.stringify(result.content, null, 2)}`;
|
|
937
|
-
} else if (result.action ===
|
|
938
|
-
return
|
|
948
|
+
} else if (result.action === "decline") {
|
|
949
|
+
return "Contact information collection was declined by the user.";
|
|
939
950
|
} else {
|
|
940
|
-
return
|
|
951
|
+
return "Contact information collection was cancelled by the user.";
|
|
941
952
|
}
|
|
942
953
|
} catch (error) {
|
|
943
954
|
return `Error collecting contact information: ${error}`;
|
|
@@ -1017,7 +1028,7 @@ execute: async ({ context }, options) => {
|
|
|
1017
1028
|
message: string, // Message to display to user
|
|
1018
1029
|
requestedSchema: object // JSON schema defining expected response structure
|
|
1019
1030
|
}): Promise<ElicitResult>
|
|
1020
|
-
|
|
1031
|
+
|
|
1021
1032
|
// Access authentication info if needed
|
|
1022
1033
|
if (options.extra?.authInfo) {
|
|
1023
1034
|
// Use options.extra.authInfo.token, etc.
|
|
@@ -1031,9 +1042,9 @@ The `ElicitResult` type:
|
|
|
1031
1042
|
|
|
1032
1043
|
```typescript
|
|
1033
1044
|
type ElicitResult = {
|
|
1034
|
-
action:
|
|
1045
|
+
action: "accept" | "decline" | "cancel";
|
|
1035
1046
|
content?: any; // Only present when action is 'accept'
|
|
1036
|
-
}
|
|
1047
|
+
};
|
|
1037
1048
|
```
|
|
1038
1049
|
|
|
1039
1050
|
## Authentication Context
|
|
@@ -1045,29 +1056,31 @@ execute: async ({ context }, options) => {
|
|
|
1045
1056
|
if (!options.extra?.authInfo?.token) {
|
|
1046
1057
|
return "Authentication required";
|
|
1047
1058
|
}
|
|
1048
|
-
|
|
1059
|
+
|
|
1049
1060
|
// Use the auth token
|
|
1050
|
-
const response = await fetch(
|
|
1061
|
+
const response = await fetch("/api/data", {
|
|
1051
1062
|
headers: { Authorization: `Bearer ${options.extra.authInfo.token}` },
|
|
1052
1063
|
signal: options.extra.signal,
|
|
1053
1064
|
});
|
|
1054
|
-
|
|
1065
|
+
|
|
1055
1066
|
return response.json();
|
|
1056
|
-
}
|
|
1067
|
+
};
|
|
1057
1068
|
```
|
|
1058
1069
|
|
|
1059
1070
|
The `extra` object contains:
|
|
1071
|
+
|
|
1060
1072
|
- `authInfo`: Authentication info (when provided by server middleware)
|
|
1061
|
-
- `sessionId`: Session identifier
|
|
1073
|
+
- `sessionId`: Session identifier
|
|
1062
1074
|
- `signal`: AbortSignal for cancellation
|
|
1063
1075
|
- `sendNotification`/`sendRequest`: MCP protocol functions
|
|
1064
1076
|
|
|
1065
1077
|
> Note: To enable authentication, your HTTP server needs middleware that populates `req.auth` before calling `server.startHTTP()`. For example:
|
|
1078
|
+
>
|
|
1066
1079
|
> ```typescript
|
|
1067
1080
|
> httpServer.createServer((req, res) => {
|
|
1068
1081
|
> // Add auth middleware
|
|
1069
1082
|
> req.auth = validateAuthToken(req.headers.authorization);
|
|
1070
|
-
>
|
|
1083
|
+
>
|
|
1071
1084
|
> // Then pass to MCP server
|
|
1072
1085
|
> await server.startHTTP({ url, httpPath, req, res });
|
|
1073
1086
|
> });
|