@mastra/server 1.68.0-alpha.5 → 1.68.0-alpha.7
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/dist/{agent-versions-f5zi5A-V.js → agent-versions-CiV6tT74.js} +2 -2
- package/dist/{agent-versions-f5zi5A-V.js.map → agent-versions-CiV6tT74.js.map} +1 -1
- package/dist/{agent-versions-DisdqzzB.cjs → agent-versions-D2QdSbFn.cjs} +2 -2
- package/dist/{agent-versions-DisdqzzB.cjs.map → agent-versions-D2QdSbFn.cjs.map} +1 -1
- package/dist/{agents-B9H0fBkm.cjs → agents-BN8QmLxk.cjs} +2 -2
- package/dist/{agents-B9H0fBkm.cjs.map → agents-BN8QmLxk.cjs.map} +1 -1
- package/dist/{agents-Bic13NAO.js → agents-DCYUhwHn.js} +2 -2
- package/dist/{agents-Bic13NAO.js.map → agents-DCYUhwHn.js.map} +1 -1
- package/dist/{api-schema-manifest-Wh8dZzaC.cjs → api-schema-manifest-CroMayrL.cjs} +2 -2
- package/dist/{api-schema-manifest-Wh8dZzaC.cjs.map → api-schema-manifest-CroMayrL.cjs.map} +1 -1
- package/dist/{api-schema-manifest-DDpGD3_2.js → api-schema-manifest-Do3IMTk8.js} +2 -2
- package/dist/{api-schema-manifest-DDpGD3_2.js.map → api-schema-manifest-Do3IMTk8.js.map} +1 -1
- package/dist/{datasets-zlaJQ9D0.cjs → datasets-DOZwJ68z.cjs} +5 -1
- package/dist/datasets-DOZwJ68z.cjs.map +1 -0
- package/dist/{datasets-CCC2huR0.js → datasets-DfMv5GX5.js} +5 -1
- package/dist/datasets-DfMv5GX5.js.map +1 -0
- package/dist/{dist-BAojQuHp.cjs → dist-B0uCWZUF.cjs} +4 -4
- package/dist/{dist-BAojQuHp.cjs.map → dist-B0uCWZUF.cjs.map} +1 -1
- package/dist/{dist-BoTiXJuB.cjs → dist-BQ0VOLA9.cjs} +3 -3
- package/dist/{dist-BoTiXJuB.cjs.map → dist-BQ0VOLA9.cjs.map} +1 -1
- package/dist/{dist-BMjWLpRz.js → dist-Bl3UrwJs.js} +3 -3
- package/dist/{dist-BMjWLpRz.js.map → dist-Bl3UrwJs.js.map} +1 -1
- package/dist/{dist-Diq8iAfv.cjs → dist-C2u5Kqxy.cjs} +3 -3
- package/dist/{dist-Diq8iAfv.cjs.map → dist-C2u5Kqxy.cjs.map} +1 -1
- package/dist/{dist-B4HiqHgK.cjs → dist-CF1rK7oZ.cjs} +8 -8
- package/dist/{dist-B4HiqHgK.cjs.map → dist-CF1rK7oZ.cjs.map} +1 -1
- package/dist/{dist-BNvS3nzI.cjs → dist-CkFmsB2E.cjs} +3 -3
- package/dist/{dist-BNvS3nzI.cjs.map → dist-CkFmsB2E.cjs.map} +1 -1
- package/dist/{dist-ByqJiZWY.js → dist-D1rb-p2Y.js} +4 -4
- package/dist/{dist-ByqJiZWY.js.map → dist-D1rb-p2Y.js.map} +1 -1
- package/dist/{dist-DANO75MK.js → dist-DD1mFVAc.js} +3 -3
- package/dist/{dist-DANO75MK.js.map → dist-DD1mFVAc.js.map} +1 -1
- package/dist/{dist-C0MIGUJb.js → dist-DJ7t3yBx.js} +3 -3
- package/dist/{dist-C0MIGUJb.js.map → dist-DJ7t3yBx.js.map} +1 -1
- package/dist/{dist-CAeHwEQg.cjs → dist-DO5NHh-t.cjs} +3 -3
- package/dist/{dist-CAeHwEQg.cjs.map → dist-DO5NHh-t.cjs.map} +1 -1
- package/dist/{dist-DazAtske.js → dist-DiEECrlS.js} +3 -3
- package/dist/{dist-DazAtske.js.map → dist-DiEECrlS.js.map} +1 -1
- package/dist/{dist-Cdj_Yiml.js → dist-Dx2Qp8Rj.js} +3 -3
- package/dist/{dist-Cdj_Yiml.js.map → dist-Dx2Qp8Rj.js.map} +1 -1
- package/dist/{dist-C3lMsO1Z.js → dist-dfcZRhcQ.js} +8 -8
- package/dist/{dist-C3lMsO1Z.js.map → dist-dfcZRhcQ.js.map} +1 -1
- package/dist/{dist-DrjjAvjG.cjs → dist-vM0zJcP5.cjs} +3 -3
- package/dist/{dist-DrjjAvjG.cjs.map → dist-vM0zJcP5.cjs.map} +1 -1
- package/dist/docs/SKILL.md +1 -1
- package/dist/docs/assets/SOURCE_MAP.json +1 -1
- package/dist/{editor-builder-D2gMZkny.js → editor-builder-Blheim55.js} +2 -2
- package/dist/{editor-builder-D2gMZkny.js.map → editor-builder-Blheim55.js.map} +1 -1
- package/dist/{editor-builder-BRRYGWMU.js → editor-builder-D287Qf1k.js} +2 -2
- package/dist/{editor-builder-BRRYGWMU.js.map → editor-builder-D287Qf1k.js.map} +1 -1
- package/dist/{editor-builder-DZAS7tNU.cjs → editor-builder-D85orYra.cjs} +2 -2
- package/dist/{editor-builder-DZAS7tNU.cjs.map → editor-builder-D85orYra.cjs.map} +1 -1
- package/dist/{editor-builder-ITPZxpzq.cjs → editor-builder-DhUUVbQ-.cjs} +2 -2
- package/dist/{editor-builder-ITPZxpzq.cjs.map → editor-builder-DhUUVbQ-.cjs.map} +1 -1
- package/dist/{routes-gccKFI1D.js → routes-BiWaSmd-.js} +3 -3
- package/dist/{routes-gccKFI1D.js.map → routes-BiWaSmd-.js.map} +1 -1
- package/dist/{routes-7alDuT9Q.cjs → routes-lrn-E0Lg.cjs} +3 -3
- package/dist/{routes-7alDuT9Q.cjs.map → routes-lrn-E0Lg.cjs.map} +1 -1
- package/dist/{scorer-versions-C8xZh_o9.cjs → scorer-versions-DAsYq5b3.cjs} +2 -2
- package/dist/{scorer-versions-C8xZh_o9.cjs.map → scorer-versions-DAsYq5b3.cjs.map} +1 -1
- package/dist/{scorer-versions-hHzTJTa-.js → scorer-versions-VpbcaDi8.js} +2 -2
- package/dist/{scorer-versions-hHzTJTa-.js.map → scorer-versions-VpbcaDi8.js.map} +1 -1
- package/dist/server/handlers/agent-builder.cjs +2 -2
- package/dist/server/handlers/agent-builder.js +2 -2
- package/dist/server/handlers/agent-versions.cjs +1 -1
- package/dist/server/handlers/agent-versions.d.ts +48 -16
- package/dist/server/handlers/agent-versions.d.ts.map +1 -1
- package/dist/server/handlers/agent-versions.js +1 -1
- package/dist/server/handlers/agents.cjs +5 -4
- package/dist/server/handlers/agents.cjs.map +1 -1
- package/dist/server/handlers/agents.d.ts +14 -4
- package/dist/server/handlers/agents.d.ts.map +1 -1
- package/dist/server/handlers/agents.js +5 -4
- package/dist/server/handlers/agents.js.map +1 -1
- package/dist/server/handlers/datasets.cjs +1 -1
- package/dist/server/handlers/datasets.d.ts +8 -0
- package/dist/server/handlers/datasets.d.ts.map +1 -1
- package/dist/server/handlers/datasets.js +1 -1
- package/dist/server/handlers/editor-builder.cjs +1 -1
- package/dist/server/handlers/editor-builder.js +1 -1
- package/dist/server/handlers/favorites-enrichment.cjs +1 -1
- package/dist/server/handlers/favorites-enrichment.js +1 -1
- package/dist/server/handlers/mcp.cjs +15 -5
- package/dist/server/handlers/mcp.cjs.map +1 -1
- package/dist/server/handlers/mcp.d.ts.map +1 -1
- package/dist/server/handlers/mcp.js +15 -5
- package/dist/server/handlers/mcp.js.map +1 -1
- package/dist/server/handlers/plans.cjs +1 -1
- package/dist/server/handlers/plans.js +1 -1
- package/dist/server/handlers/scorer-versions.cjs +1 -1
- package/dist/server/handlers/scorer-versions.js +1 -1
- package/dist/server/handlers/stored-agent-favorites.cjs +2 -2
- package/dist/server/handlers/stored-agent-favorites.js +2 -2
- package/dist/server/handlers/stored-agents.cjs +2 -2
- package/dist/server/handlers/stored-agents.d.ts +48 -16
- package/dist/server/handlers/stored-agents.d.ts.map +1 -1
- package/dist/server/handlers/stored-agents.js +2 -2
- package/dist/server/handlers/stored-scorers.cjs +1 -1
- package/dist/server/handlers/stored-scorers.js +1 -1
- package/dist/server/handlers/stored-skill-favorites.cjs +1 -1
- package/dist/server/handlers/stored-skill-favorites.js +1 -1
- package/dist/server/handlers/stored-skills.cjs +1 -1
- package/dist/server/handlers/stored-skills.js +1 -1
- package/dist/server/handlers/system.cjs +1 -1
- package/dist/server/handlers/system.js +1 -1
- package/dist/server/handlers/tools.cjs +1 -1
- package/dist/server/handlers/tools.js +1 -1
- package/dist/server/handlers/workflow-builder.cjs +1 -1
- package/dist/server/handlers/workflow-builder.js +1 -1
- package/dist/server/handlers/workflows.cjs +1 -1
- package/dist/server/handlers/workflows.js +1 -1
- package/dist/server/schemas/agent-versions.d.ts +30 -10
- package/dist/server/schemas/agent-versions.d.ts.map +1 -1
- package/dist/server/schemas/agents.d.ts +1 -0
- package/dist/server/schemas/agents.d.ts.map +1 -1
- package/dist/server/schemas/datasets.d.ts +4 -0
- package/dist/server/schemas/datasets.d.ts.map +1 -1
- package/dist/server/schemas/index.cjs +7 -7
- package/dist/server/schemas/index.js +7 -7
- package/dist/server/schemas/memory-config.d.ts +6 -2
- package/dist/server/schemas/memory-config.d.ts.map +1 -1
- package/dist/server/schemas/stored-agents.d.ts +60 -20
- package/dist/server/schemas/stored-agents.d.ts.map +1 -1
- package/dist/server/server-adapter/index.cjs +1 -1
- package/dist/server/server-adapter/index.js +1 -1
- package/dist/server/server-adapter/routes/datasets.d.ts +8 -0
- package/dist/server/server-adapter/routes/datasets.d.ts.map +1 -1
- package/dist/{stored-agents-CN9E52bJ.cjs → stored-agents-61cRlWax.cjs} +5 -3
- package/dist/stored-agents-61cRlWax.cjs.map +1 -0
- package/dist/{stored-agents-Bp76o0XY.js → stored-agents-CuEn_6cd.js} +5 -3
- package/dist/stored-agents-CuEn_6cd.js.map +1 -0
- package/dist/{stored-scorers-DSZRCvM3.cjs → stored-scorers-BLj27wz5.cjs} +2 -2
- package/dist/{stored-scorers-DSZRCvM3.cjs.map → stored-scorers-BLj27wz5.cjs.map} +1 -1
- package/dist/{stored-scorers-vssJQZiO.js → stored-scorers-D7dAXnFk.js} +2 -2
- package/dist/{stored-scorers-vssJQZiO.js.map → stored-scorers-D7dAXnFk.js.map} +1 -1
- package/dist/{workflow-builder-B6FVVlj_.cjs → workflow-builder-ZEU0Rafo.cjs} +3 -3
- package/dist/{workflow-builder-B6FVVlj_.cjs.map → workflow-builder-ZEU0Rafo.cjs.map} +1 -1
- package/dist/{workflow-builder-Cu0uWpzj.js → workflow-builder-fkwRyZUG.js} +3 -3
- package/dist/{workflow-builder-Cu0uWpzj.js.map → workflow-builder-fkwRyZUG.js.map} +1 -1
- package/package.json +5 -5
- package/dist/datasets-CCC2huR0.js.map +0 -1
- package/dist/datasets-zlaJQ9D0.cjs.map +0 -1
- package/dist/stored-agents-Bp76o0XY.js.map +0 -1
- package/dist/stored-agents-CN9E52bJ.cjs.map +0 -1
|
@@ -5,7 +5,7 @@ const require_common = require("../../common-BPjna_b6.cjs");
|
|
|
5
5
|
const require_route_builder = require("../../route-builder-CbCx1upL.cjs");
|
|
6
6
|
const require_constants = require("../../constants-4IJp_uzj.cjs");
|
|
7
7
|
const require_server_handlers_error = require("./error.cjs");
|
|
8
|
-
const require_datasets = require("../../datasets-
|
|
8
|
+
const require_datasets = require("../../datasets-DOZwJ68z.cjs");
|
|
9
9
|
let zod = require("zod");
|
|
10
10
|
let _mastra_core_agent = require("@mastra/core/agent");
|
|
11
11
|
let _mastra_core_error = require("@mastra/core/error");
|
|
@@ -2080,6 +2080,10 @@ export declare const RUN_EXPERIMENT_ITEM_ROUTE: Omit<import("@mastra/core/server
|
|
|
2080
2080
|
score: number | null;
|
|
2081
2081
|
reason: string | null;
|
|
2082
2082
|
error: string | null;
|
|
2083
|
+
notScorable?: {
|
|
2084
|
+
step: string;
|
|
2085
|
+
reason?: string | undefined;
|
|
2086
|
+
} | undefined;
|
|
2083
2087
|
failedStep?: string | undefined;
|
|
2084
2088
|
completedSteps?: string[] | undefined;
|
|
2085
2089
|
targetScope?: "span" | "trajectory" | undefined;
|
|
@@ -2164,6 +2168,10 @@ export declare const RUN_EXPERIMENT_ITEM_ROUTE: Omit<import("@mastra/core/server
|
|
|
2164
2168
|
score: z.ZodNullable<z.ZodNumber>;
|
|
2165
2169
|
reason: z.ZodNullable<z.ZodString>;
|
|
2166
2170
|
error: z.ZodNullable<z.ZodString>;
|
|
2171
|
+
notScorable: z.ZodOptional<z.ZodObject<{
|
|
2172
|
+
step: z.ZodString;
|
|
2173
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
2174
|
+
}, z.core.$strip>>;
|
|
2167
2175
|
failedStep: z.ZodOptional<z.ZodString>;
|
|
2168
2176
|
completedSteps: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
2169
2177
|
targetScope: z.ZodOptional<z.ZodEnum<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasets.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/datasets.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"datasets.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/datasets.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@ import { f as successResponseSchema } from "../../common-C7NBaaQu.js";
|
|
|
3
3
|
import { n as createRoute } from "../../route-builder-DDOjv0sM.js";
|
|
4
4
|
import { p as isReservedRequestContextKey } from "../../constants-0jFCWoex.js";
|
|
5
5
|
import { handleError } from "./error.js";
|
|
6
|
-
import { A as listDatasetsQuerySchema, B as reviewSummaryResponseSchema, E as generateItemsResponseSchema, F as listExperimentsResponseSchema, G as tenancyQuerySchema, H as runExperimentItemResponseSchema, I as listItemVersionsResponseSchema, J as updateExperimentBodySchema, K as triggerExperimentBodySchema, L as listItemsQuerySchema, M as listExperimentResultsQuerySchema, N as listExperimentResultsResponseSchema, P as listExperimentsQuerySchema, R as listItemsResponseSchema, S as experimentResultResponseSchema, T as generateItemsBodySchema, V as runExperimentItemBodySchema, W as submitExperimentResultBodySchema, X as updateItemBodySchema, Y as updateExperimentResultBodySchema, _ as datasetResponseSchema, a as batchInsertItemsResponseSchema, b as experimentResponseSchema, c as compareExperimentsBodySchema, d as datasetAndExperimentIdPathParams, f as datasetAndItemIdPathParams, g as datasetItemVersionPathParams, h as datasetItemResponseSchema, i as batchInsertItemsBodySchema, j as listDatasetsResponseSchema, k as listDatasetVersionsResponseSchema, l as comparisonResponseSchema, m as datasetIdPathParams, n as batchDeleteItemsBodySchema, o as clusterFailuresBodySchema, p as datasetExperimentAndItemIdPathParams, q as updateDatasetBodySchema, r as batchDeleteItemsResponseSchema, s as clusterFailuresResponseSchema, t as addItemBodySchema, u as createDatasetBodySchema, w as experimentSummaryResponseSchema, x as experimentResultIdPathParams, y as experimentIdPathParams, z as paginationQuerySchema } from "../../datasets-
|
|
6
|
+
import { A as listDatasetsQuerySchema, B as reviewSummaryResponseSchema, E as generateItemsResponseSchema, F as listExperimentsResponseSchema, G as tenancyQuerySchema, H as runExperimentItemResponseSchema, I as listItemVersionsResponseSchema, J as updateExperimentBodySchema, K as triggerExperimentBodySchema, L as listItemsQuerySchema, M as listExperimentResultsQuerySchema, N as listExperimentResultsResponseSchema, P as listExperimentsQuerySchema, R as listItemsResponseSchema, S as experimentResultResponseSchema, T as generateItemsBodySchema, V as runExperimentItemBodySchema, W as submitExperimentResultBodySchema, X as updateItemBodySchema, Y as updateExperimentResultBodySchema, _ as datasetResponseSchema, a as batchInsertItemsResponseSchema, b as experimentResponseSchema, c as compareExperimentsBodySchema, d as datasetAndExperimentIdPathParams, f as datasetAndItemIdPathParams, g as datasetItemVersionPathParams, h as datasetItemResponseSchema, i as batchInsertItemsBodySchema, j as listDatasetsResponseSchema, k as listDatasetVersionsResponseSchema, l as comparisonResponseSchema, m as datasetIdPathParams, n as batchDeleteItemsBodySchema, o as clusterFailuresBodySchema, p as datasetExperimentAndItemIdPathParams, q as updateDatasetBodySchema, r as batchDeleteItemsResponseSchema, s as clusterFailuresResponseSchema, t as addItemBodySchema, u as createDatasetBodySchema, w as experimentSummaryResponseSchema, x as experimentResultIdPathParams, y as experimentIdPathParams, z as paginationQuerySchema } from "../../datasets-DfMv5GX5.js";
|
|
7
7
|
import { z as z$1 } from "zod";
|
|
8
8
|
import { Agent } from "@mastra/core/agent";
|
|
9
9
|
import { MastraError } from "@mastra/core/error";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
require("../../rolldown-runtime-Bd6kNlEP.cjs");
|
|
3
|
-
const require_editor_builder = require("../../editor-builder-
|
|
3
|
+
const require_editor_builder = require("../../editor-builder-D85orYra.cjs");
|
|
4
4
|
exports.GET_EDITOR_BUILDER_AVAILABLE_MODELS_ROUTE = require_editor_builder.GET_EDITOR_BUILDER_AVAILABLE_MODELS_ROUTE;
|
|
5
5
|
exports.GET_EDITOR_BUILDER_SETTINGS_ROUTE = require_editor_builder.GET_EDITOR_BUILDER_SETTINGS_ROUTE;
|
|
6
6
|
exports.GET_INFRASTRUCTURE_STATUS_ROUTE = require_editor_builder.GET_INFRASTRUCTURE_STATUS_ROUTE;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { a as requireBuilderFeature, i as isBuilderFeatureEnabled, n as GET_EDITOR_BUILDER_SETTINGS_ROUTE, r as GET_INFRASTRUCTURE_STATUS_ROUTE, t as GET_EDITOR_BUILDER_AVAILABLE_MODELS_ROUTE } from "../../editor-builder-
|
|
1
|
+
import { a as requireBuilderFeature, i as isBuilderFeatureEnabled, n as GET_EDITOR_BUILDER_SETTINGS_ROUTE, r as GET_INFRASTRUCTURE_STATUS_ROUTE, t as GET_EDITOR_BUILDER_AVAILABLE_MODELS_ROUTE } from "../../editor-builder-D287Qf1k.js";
|
|
2
2
|
export { GET_EDITOR_BUILDER_AVAILABLE_MODELS_ROUTE, GET_EDITOR_BUILDER_SETTINGS_ROUTE, GET_INFRASTRUCTURE_STATUS_ROUTE, isBuilderFeatureEnabled, requireBuilderFeature };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
require("../../rolldown-runtime-Bd6kNlEP.cjs");
|
|
3
3
|
const require_server_handlers_authorship = require("./authorship.cjs");
|
|
4
|
-
const require_editor_builder = require("../../editor-builder-
|
|
4
|
+
const require_editor_builder = require("../../editor-builder-D85orYra.cjs");
|
|
5
5
|
//#region src/server/handlers/favorites-enrichment.ts
|
|
6
6
|
/**
|
|
7
7
|
* Resolve the EE feature flag plus the caller's favorited set for a list of
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { getCallerAuthorId } from "./authorship.js";
|
|
2
|
-
import { i as isBuilderFeatureEnabled } from "../../editor-builder-
|
|
2
|
+
import { i as isBuilderFeatureEnabled } from "../../editor-builder-D287Qf1k.js";
|
|
3
3
|
//#region src/server/handlers/favorites-enrichment.ts
|
|
4
4
|
/**
|
|
5
5
|
* Resolve the EE feature flag plus the caller's favorited set for a list of
|
|
@@ -3,6 +3,7 @@ const require_rolldown_runtime = require("../../rolldown-runtime-Bd6kNlEP.cjs");
|
|
|
3
3
|
const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
|
|
4
4
|
const require_route_builder = require("../../route-builder-CbCx1upL.cjs");
|
|
5
5
|
const require_mcp = require("../../mcp-CdZzch5c.cjs");
|
|
6
|
+
let _mastra_core_error = require("@mastra/core/error");
|
|
6
7
|
//#region src/server/handlers/mcp.ts
|
|
7
8
|
var mcp_exports = /* @__PURE__ */ require_rolldown_runtime.__exportAll({
|
|
8
9
|
EXECUTE_MCP_SERVER_TOOL_ROUTE: () => EXECUTE_MCP_SERVER_TOOL_ROUTE,
|
|
@@ -141,11 +142,20 @@ const EXECUTE_MCP_SERVER_TOOL_ROUTE = require_route_builder.createRoute({
|
|
|
141
142
|
if (!server) throw new require_http_exception.HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });
|
|
142
143
|
if (typeof server.executeTool !== "function") throw new require_http_exception.HTTPException(501, { message: `Server '${serverId}' cannot execute tools in this way.` });
|
|
143
144
|
if (server.mcpVersion === 2) {
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
145
|
+
let execution;
|
|
146
|
+
try {
|
|
147
|
+
execution = await server.executeTool(toolId, data, {
|
|
148
|
+
requestContext,
|
|
149
|
+
resumeData,
|
|
150
|
+
suspendPayload
|
|
151
|
+
});
|
|
152
|
+
} catch (error) {
|
|
153
|
+
if (error instanceof _mastra_core_error.MastraError && error.id === "MCP_SERVER_TOOL_INVALID_INPUT") throw new require_http_exception.HTTPException(400, {
|
|
154
|
+
message: error.message,
|
|
155
|
+
cause: error
|
|
156
|
+
});
|
|
157
|
+
throw error;
|
|
158
|
+
}
|
|
149
159
|
if (execution.status === "suspended") return {
|
|
150
160
|
status: "suspended",
|
|
151
161
|
suspendPayload: execution.suspendPayload,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.cjs","names":["createRoute","listMcpServersQuerySchema","listMcpServersResponseSchema","HTTPException","mcpServerDetailPathParams","getMcpServerDetailQuerySchema","serverDetailSchema","mcpServerIdPathParams","listMcpServerToolsResponseSchema","mcpServerToolPathParams","mcpToolInfoSchema","executeToolBodySchema","executeToolResponseSchema","mcpServerResourcePathParams","listResourcesResponseSchema","readResourceBodySchema","readResourceResponseSchema"],"sources":["../../../src/server/handlers/mcp.ts"],"sourcesContent":["import type {\n MCPServerBase as MastraMCPServerImplementation,\n MCPToolExecutionResultV2,\n ServerInfo,\n} from '@mastra/core/mcp';\nimport { HTTPException } from '../http-exception';\nimport {\n mcpServerDetailPathParams,\n mcpServerToolPathParams,\n executeToolBodySchema,\n listMcpServersQuerySchema,\n getMcpServerDetailQuerySchema,\n listMcpServersResponseSchema,\n serverDetailSchema,\n mcpServerIdPathParams,\n listMcpServerToolsResponseSchema,\n mcpToolInfoSchema,\n executeToolResponseSchema,\n mcpServerResourcePathParams,\n readResourceBodySchema,\n readResourceResponseSchema,\n listResourcesResponseSchema,\n} from '../schemas/mcp';\nimport type { ServerContext } from '../server-adapter';\nimport type { SetMcpRequestAuth } from '../server-adapter/mcp-auth';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\n// ============================================================================\n// Route Definitions (createRoute pattern for server adapters)\n// ============================================================================\n\n/**\n * Only `@mastra/mcp` 1.x servers implement the standalone HTTP+SSE transport; on a\n * 2026-07-28 server the inherited `startSSE`/`startHonoSSE` throw.\n */\nfunction hasSSETransport(server: MastraMCPServerImplementation): boolean {\n return server.mcpVersion !== 2;\n}\n\nexport const LIST_MCP_SERVERS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers',\n responseType: 'json',\n queryParamSchema: listMcpServersQuerySchema,\n responseSchema: listMcpServersResponseSchema,\n summary: 'List MCP servers',\n description: 'Returns a list of registered MCP servers with pagination support',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n routePrefix,\n page,\n perPage,\n limit,\n offset,\n }: ServerContext & { page?: number; perPage?: number; limit?: number; offset?: number }) => {\n if (!mastra || typeof mastra.listMCPServers !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or listMCPServers method not available' });\n }\n\n const servers = mastra.listMCPServers();\n\n if (!servers) {\n return { servers: [], total_count: 0, next: null };\n }\n\n const serverList = Object.values(servers);\n const totalCount = serverList.length;\n\n // Support both page/perPage and limit/offset for backwards compatibility\n // Detect which format user is using - prefer page/perPage if both provided\n const useLegacyFormat =\n (limit !== undefined || offset !== undefined) && page === undefined && perPage === undefined;\n\n // If perPage provided, use it; otherwise fall back to limit\n const finalPerPage = perPage ?? limit;\n // If page provided, use it; otherwise convert from offset\n let finalPage = page;\n if (finalPage === undefined && offset !== undefined && finalPerPage !== undefined && finalPerPage > 0) {\n finalPage = Math.floor(offset / finalPerPage);\n }\n\n // Calculate offset from page/perPage\n const actualOffset = finalPage !== undefined && finalPerPage !== undefined ? finalPage * finalPerPage : 0;\n\n // Apply pagination\n let paginatedServers = serverList;\n let nextUrl: string | null = null;\n\n if (finalPerPage !== undefined) {\n paginatedServers = serverList.slice(actualOffset, actualOffset + finalPerPage);\n\n // Calculate next URL if there are more results\n if (actualOffset + finalPerPage < totalCount) {\n const nextPage = (finalPage ?? 0) + 1;\n // Return next URL in same format as request (legacy limit/offset or page/perPage)\n const prefix = routePrefix ?? '';\n if (useLegacyFormat) {\n const nextOffset = actualOffset + finalPerPage;\n nextUrl = `${prefix}/mcp/v0/servers?limit=${finalPerPage}&offset=${nextOffset}`;\n } else {\n nextUrl = `${prefix}/mcp/v0/servers?perPage=${finalPerPage}&page=${nextPage}`;\n }\n }\n }\n\n // Get server info for each server\n const serverInfoList: ServerInfo[] = paginatedServers.map(server => server.getServerInfo());\n\n return {\n servers: serverInfoList,\n total_count: totalCount,\n next: nextUrl,\n };\n },\n});\n\nexport const GET_MCP_SERVER_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers/:id',\n responseType: 'json',\n pathParamSchema: mcpServerDetailPathParams,\n queryParamSchema: getMcpServerDetailQuerySchema,\n responseSchema: serverDetailSchema,\n summary: 'Get MCP server details',\n description: 'Returns detailed information about a specific MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, id, version }: ServerContext & { id: string; version?: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(id);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${id}' not found` });\n }\n\n const serverDetail = server.getServerDetail();\n\n // If a specific version was requested, check if it matches\n if (version && serverDetail.version_detail.version !== version) {\n throw new HTTPException(404, {\n message: `MCP server with ID '${id}' found, but not version '${version}'. Available version: ${serverDetail.version_detail.version}`,\n });\n }\n\n return serverDetail;\n },\n});\n\nexport const LIST_MCP_SERVER_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n responseSchema: listMcpServerToolsResponseSchema,\n summary: 'List MCP server tools',\n description: 'Returns a list of tools available on the specified MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, requestContext }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolListInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot list tools in this way.` });\n }\n\n return await server.getToolListInfo(requestContext);\n },\n});\n\nexport const GET_MCP_SERVER_TOOL_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n responseSchema: mcpToolInfoSchema,\n summary: 'Get MCP server tool details',\n description: 'Returns detailed information about a specific tool on the MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, toolId }: ServerContext & { serverId: string; toolId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot provide tool details in this way.` });\n }\n\n const toolInfo = await server.getToolInfo(toolId);\n if (!toolInfo) {\n throw new HTTPException(404, { message: `Tool with ID '${toolId}' not found on MCP server '${serverId}'` });\n }\n\n return toolInfo;\n },\n});\n\nexport const EXECUTE_MCP_SERVER_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute MCP server tool',\n description: 'Executes a tool on the specified MCP server with the provided arguments',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n toolId,\n data,\n resumeData,\n suspendPayload,\n requestContext,\n }: ServerContext & {\n serverId: string;\n toolId: string;\n data?: unknown;\n resumeData?: unknown;\n suspendPayload?: unknown;\n }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.executeTool !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot execute tools in this way.` });\n }\n\n if (server.mcpVersion === 2) {\n // A 2026-07-28 server runs the tool with no protocol client attached: a tool\n // that suspends for input is reported as such instead of pretending it finished, and\n // the caller answers by sending the same args with `resumeData` and `suspendPayload`.\n const execution: MCPToolExecutionResultV2 = await server.executeTool(toolId, data, {\n requestContext,\n resumeData,\n suspendPayload,\n });\n if (execution.status === 'suspended') {\n return {\n status: 'suspended' as const,\n suspendPayload: execution.suspendPayload,\n resumeSchema: execution.resumeSchema,\n };\n }\n return { result: execution.output };\n }\n\n const result = await server.executeTool(toolId, data, { requestContext });\n return { result };\n },\n});\n\n// ============================================================================\n// MCP Resource Routes\n// ============================================================================\n\nexport const LIST_MCP_SERVER_RESOURCES_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/resources',\n responseType: 'json',\n pathParamSchema: mcpServerResourcePathParams,\n responseSchema: listResourcesResponseSchema,\n summary: 'List MCP server resources',\n description: 'Returns a list of resources available on the MCP server, including ui:// app resources',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.listResources !== 'function') {\n return { resources: [] };\n }\n\n return server.listResources();\n },\n});\n\nexport const READ_MCP_SERVER_RESOURCE_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/resources/read',\n responseType: 'json',\n pathParamSchema: mcpServerResourcePathParams,\n bodySchema: readResourceBodySchema,\n responseSchema: readResourceResponseSchema,\n summary: 'Read MCP server resource content',\n description: 'Reads the content of a resource by URI, used for rendering MCP App ui:// resources',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, uri }: ServerContext & { serverId: string; uri: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.readResource !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' does not support reading resources` });\n }\n\n try {\n return await server.readResource(uri);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (message.includes('not found') || message.includes('not configured')) {\n throw new HTTPException(404, { message: `Resource '${uri}' not found on server '${serverId}'` });\n }\n throw error;\n }\n },\n});\n\n// ============================================================================\n// MCP Transport Routes (Streamable HTTP and SSE)\n// ============================================================================\n\n/**\n * MCP transport options that can be passed to startHTTP() or startSSE().\n * Includes serverless mode for running in stateless environments like Cloudflare Workers or Vercel Edge.\n */\nexport interface MCPTransportOptions {\n /**\n * When true, runs in stateless mode without session management.\n * Ideal for serverless environments where you can't maintain persistent connections.\n */\n serverless?: boolean;\n /**\n * Custom session ID generator function.\n */\n sessionIdGenerator?: () => string;\n /**\n * Sets `req.auth` before the MCP transport reads it. Overrides the default\n * bridge that forwards the principal resolved by `server.auth`.\n */\n setRequestAuth?: SetMcpRequestAuth;\n}\n\n/**\n * MCP HTTP Transport response type.\n * Adapters use this to set up the HTTP transport via MCPServer.startHTTP()\n */\nexport interface MCPHttpTransportResult {\n server: MastraMCPServerImplementation;\n httpPath: string;\n /**\n * Optional MCP transport options for this specific route.\n * These override any class-level mcpOptions configured on the adapter.\n */\n mcpOptions?: MCPTransportOptions;\n}\n\n/**\n * MCP SSE Transport response type.\n * Adapters use this to set up the SSE transport via MCPServer.startSSE() or startHonoSSE()\n *\n * Note: SSE transport is inherently stateful and doesn't support serverless mode.\n */\nexport interface MCPSseTransportResult {\n /** A 1.x server: the SSE route only resolves servers that still implement the transport. */\n server: MastraMCPServerImplementation;\n ssePath: string;\n messagePath: string;\n}\n\nexport const MCP_HTTP_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/mcp',\n responseType: 'mcp-http',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP HTTP Transport',\n description: 'Streamable HTTP transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPHttpTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n return {\n server,\n httpPath: `/mcp/${serverId}/mcp`,\n };\n },\n});\n\nexport const MCP_SSE_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/sse',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Transport',\n description: 'SSE transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPSseTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n if (!hasSSETransport(server)) {\n throw new HTTPException(404, { message: 'Legacy SSE transport is unavailable for MCP v2 servers' });\n }\n\n return {\n server,\n ssePath: `/mcp/${serverId}/sse`,\n messagePath: `/mcp/${serverId}/messages`,\n };\n },\n});\n\nexport const MCP_SSE_MESSAGES_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/messages',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Messages',\n description: 'Message endpoint for SSE transport (posts messages to active SSE streams)',\n tags: ['MCP'],\n requiresAuth: true,\n handler: MCP_SSE_TRANSPORT_ROUTE.handler,\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp.cjs","names":["createRoute","listMcpServersQuerySchema","listMcpServersResponseSchema","HTTPException","mcpServerDetailPathParams","getMcpServerDetailQuerySchema","serverDetailSchema","mcpServerIdPathParams","listMcpServerToolsResponseSchema","mcpServerToolPathParams","mcpToolInfoSchema","executeToolBodySchema","executeToolResponseSchema","MastraError","mcpServerResourcePathParams","listResourcesResponseSchema","readResourceBodySchema","readResourceResponseSchema"],"sources":["../../../src/server/handlers/mcp.ts"],"sourcesContent":["import { MastraError } from '@mastra/core/error';\nimport type {\n MCPServerBase as MastraMCPServerImplementation,\n MCPToolExecutionResultV2,\n ServerInfo,\n} from '@mastra/core/mcp';\nimport { HTTPException } from '../http-exception';\nimport {\n mcpServerDetailPathParams,\n mcpServerToolPathParams,\n executeToolBodySchema,\n listMcpServersQuerySchema,\n getMcpServerDetailQuerySchema,\n listMcpServersResponseSchema,\n serverDetailSchema,\n mcpServerIdPathParams,\n listMcpServerToolsResponseSchema,\n mcpToolInfoSchema,\n executeToolResponseSchema,\n mcpServerResourcePathParams,\n readResourceBodySchema,\n readResourceResponseSchema,\n listResourcesResponseSchema,\n} from '../schemas/mcp';\nimport type { ServerContext } from '../server-adapter';\nimport type { SetMcpRequestAuth } from '../server-adapter/mcp-auth';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\n// ============================================================================\n// Route Definitions (createRoute pattern for server adapters)\n// ============================================================================\n\n/**\n * Only `@mastra/mcp` 1.x servers implement the standalone HTTP+SSE transport; on a\n * 2026-07-28 server the inherited `startSSE`/`startHonoSSE` throw.\n */\nfunction hasSSETransport(server: MastraMCPServerImplementation): boolean {\n return server.mcpVersion !== 2;\n}\n\nexport const LIST_MCP_SERVERS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers',\n responseType: 'json',\n queryParamSchema: listMcpServersQuerySchema,\n responseSchema: listMcpServersResponseSchema,\n summary: 'List MCP servers',\n description: 'Returns a list of registered MCP servers with pagination support',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n routePrefix,\n page,\n perPage,\n limit,\n offset,\n }: ServerContext & { page?: number; perPage?: number; limit?: number; offset?: number }) => {\n if (!mastra || typeof mastra.listMCPServers !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or listMCPServers method not available' });\n }\n\n const servers = mastra.listMCPServers();\n\n if (!servers) {\n return { servers: [], total_count: 0, next: null };\n }\n\n const serverList = Object.values(servers);\n const totalCount = serverList.length;\n\n // Support both page/perPage and limit/offset for backwards compatibility\n // Detect which format user is using - prefer page/perPage if both provided\n const useLegacyFormat =\n (limit !== undefined || offset !== undefined) && page === undefined && perPage === undefined;\n\n // If perPage provided, use it; otherwise fall back to limit\n const finalPerPage = perPage ?? limit;\n // If page provided, use it; otherwise convert from offset\n let finalPage = page;\n if (finalPage === undefined && offset !== undefined && finalPerPage !== undefined && finalPerPage > 0) {\n finalPage = Math.floor(offset / finalPerPage);\n }\n\n // Calculate offset from page/perPage\n const actualOffset = finalPage !== undefined && finalPerPage !== undefined ? finalPage * finalPerPage : 0;\n\n // Apply pagination\n let paginatedServers = serverList;\n let nextUrl: string | null = null;\n\n if (finalPerPage !== undefined) {\n paginatedServers = serverList.slice(actualOffset, actualOffset + finalPerPage);\n\n // Calculate next URL if there are more results\n if (actualOffset + finalPerPage < totalCount) {\n const nextPage = (finalPage ?? 0) + 1;\n // Return next URL in same format as request (legacy limit/offset or page/perPage)\n const prefix = routePrefix ?? '';\n if (useLegacyFormat) {\n const nextOffset = actualOffset + finalPerPage;\n nextUrl = `${prefix}/mcp/v0/servers?limit=${finalPerPage}&offset=${nextOffset}`;\n } else {\n nextUrl = `${prefix}/mcp/v0/servers?perPage=${finalPerPage}&page=${nextPage}`;\n }\n }\n }\n\n // Get server info for each server\n const serverInfoList: ServerInfo[] = paginatedServers.map(server => server.getServerInfo());\n\n return {\n servers: serverInfoList,\n total_count: totalCount,\n next: nextUrl,\n };\n },\n});\n\nexport const GET_MCP_SERVER_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers/:id',\n responseType: 'json',\n pathParamSchema: mcpServerDetailPathParams,\n queryParamSchema: getMcpServerDetailQuerySchema,\n responseSchema: serverDetailSchema,\n summary: 'Get MCP server details',\n description: 'Returns detailed information about a specific MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, id, version }: ServerContext & { id: string; version?: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(id);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${id}' not found` });\n }\n\n const serverDetail = server.getServerDetail();\n\n // If a specific version was requested, check if it matches\n if (version && serverDetail.version_detail.version !== version) {\n throw new HTTPException(404, {\n message: `MCP server with ID '${id}' found, but not version '${version}'. Available version: ${serverDetail.version_detail.version}`,\n });\n }\n\n return serverDetail;\n },\n});\n\nexport const LIST_MCP_SERVER_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n responseSchema: listMcpServerToolsResponseSchema,\n summary: 'List MCP server tools',\n description: 'Returns a list of tools available on the specified MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, requestContext }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolListInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot list tools in this way.` });\n }\n\n return await server.getToolListInfo(requestContext);\n },\n});\n\nexport const GET_MCP_SERVER_TOOL_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n responseSchema: mcpToolInfoSchema,\n summary: 'Get MCP server tool details',\n description: 'Returns detailed information about a specific tool on the MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, toolId }: ServerContext & { serverId: string; toolId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot provide tool details in this way.` });\n }\n\n const toolInfo = await server.getToolInfo(toolId);\n if (!toolInfo) {\n throw new HTTPException(404, { message: `Tool with ID '${toolId}' not found on MCP server '${serverId}'` });\n }\n\n return toolInfo;\n },\n});\n\nexport const EXECUTE_MCP_SERVER_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute MCP server tool',\n description: 'Executes a tool on the specified MCP server with the provided arguments',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n toolId,\n data,\n resumeData,\n suspendPayload,\n requestContext,\n }: ServerContext & {\n serverId: string;\n toolId: string;\n data?: unknown;\n resumeData?: unknown;\n suspendPayload?: unknown;\n }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.executeTool !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot execute tools in this way.` });\n }\n\n if (server.mcpVersion === 2) {\n // A 2026-07-28 server runs the tool with no protocol client attached: a tool\n // that suspends for input is reported as such instead of pretending it finished, and\n // the caller answers by sending the same args with `resumeData` and `suspendPayload`.\n let execution: MCPToolExecutionResultV2;\n try {\n execution = await server.executeTool(toolId, data, { requestContext, resumeData, suspendPayload });\n } catch (error) {\n if (error instanceof MastraError && error.id === 'MCP_SERVER_TOOL_INVALID_INPUT') {\n throw new HTTPException(400, { message: error.message, cause: error });\n }\n throw error;\n }\n if (execution.status === 'suspended') {\n return {\n status: 'suspended' as const,\n suspendPayload: execution.suspendPayload,\n resumeSchema: execution.resumeSchema,\n };\n }\n return { result: execution.output };\n }\n\n const result = await server.executeTool(toolId, data, { requestContext });\n return { result };\n },\n});\n\n// ============================================================================\n// MCP Resource Routes\n// ============================================================================\n\nexport const LIST_MCP_SERVER_RESOURCES_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/resources',\n responseType: 'json',\n pathParamSchema: mcpServerResourcePathParams,\n responseSchema: listResourcesResponseSchema,\n summary: 'List MCP server resources',\n description: 'Returns a list of resources available on the MCP server, including ui:// app resources',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.listResources !== 'function') {\n return { resources: [] };\n }\n\n return server.listResources();\n },\n});\n\nexport const READ_MCP_SERVER_RESOURCE_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/resources/read',\n responseType: 'json',\n pathParamSchema: mcpServerResourcePathParams,\n bodySchema: readResourceBodySchema,\n responseSchema: readResourceResponseSchema,\n summary: 'Read MCP server resource content',\n description: 'Reads the content of a resource by URI, used for rendering MCP App ui:// resources',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, uri }: ServerContext & { serverId: string; uri: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.readResource !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' does not support reading resources` });\n }\n\n try {\n return await server.readResource(uri);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (message.includes('not found') || message.includes('not configured')) {\n throw new HTTPException(404, { message: `Resource '${uri}' not found on server '${serverId}'` });\n }\n throw error;\n }\n },\n});\n\n// ============================================================================\n// MCP Transport Routes (Streamable HTTP and SSE)\n// ============================================================================\n\n/**\n * MCP transport options that can be passed to startHTTP() or startSSE().\n * Includes serverless mode for running in stateless environments like Cloudflare Workers or Vercel Edge.\n */\nexport interface MCPTransportOptions {\n /**\n * When true, runs in stateless mode without session management.\n * Ideal for serverless environments where you can't maintain persistent connections.\n */\n serverless?: boolean;\n /**\n * Custom session ID generator function.\n */\n sessionIdGenerator?: () => string;\n /**\n * Sets `req.auth` before the MCP transport reads it. Overrides the default\n * bridge that forwards the principal resolved by `server.auth`.\n */\n setRequestAuth?: SetMcpRequestAuth;\n}\n\n/**\n * MCP HTTP Transport response type.\n * Adapters use this to set up the HTTP transport via MCPServer.startHTTP()\n */\nexport interface MCPHttpTransportResult {\n server: MastraMCPServerImplementation;\n httpPath: string;\n /**\n * Optional MCP transport options for this specific route.\n * These override any class-level mcpOptions configured on the adapter.\n */\n mcpOptions?: MCPTransportOptions;\n}\n\n/**\n * MCP SSE Transport response type.\n * Adapters use this to set up the SSE transport via MCPServer.startSSE() or startHonoSSE()\n *\n * Note: SSE transport is inherently stateful and doesn't support serverless mode.\n */\nexport interface MCPSseTransportResult {\n /** A 1.x server: the SSE route only resolves servers that still implement the transport. */\n server: MastraMCPServerImplementation;\n ssePath: string;\n messagePath: string;\n}\n\nexport const MCP_HTTP_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/mcp',\n responseType: 'mcp-http',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP HTTP Transport',\n description: 'Streamable HTTP transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPHttpTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n return {\n server,\n httpPath: `/mcp/${serverId}/mcp`,\n };\n },\n});\n\nexport const MCP_SSE_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/sse',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Transport',\n description: 'SSE transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPSseTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n if (!hasSSETransport(server)) {\n throw new HTTPException(404, { message: 'Legacy SSE transport is unavailable for MCP v2 servers' });\n }\n\n return {\n server,\n ssePath: `/mcp/${serverId}/sse`,\n messagePath: `/mcp/${serverId}/messages`,\n };\n },\n});\n\nexport const MCP_SSE_MESSAGES_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/messages',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Messages',\n description: 'Message endpoint for SSE transport (posts messages to active SSE streams)',\n tags: ['MCP'],\n requiresAuth: true,\n handler: MCP_SSE_TRANSPORT_ROUTE.handler,\n});\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;AAoCA,SAAS,gBAAgB,QAAgD;CACvE,OAAO,OAAO,eAAe;AAC/B;AAEA,MAAa,yBAAyBA,sBAAAA,YAAY;CAChD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,kBAAkBC,YAAAA;CAClB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EACd,QACA,aACA,MACA,SACA,OACA,aAC0F;EAC1F,IAAI,CAAC,UAAU,OAAO,OAAO,mBAAmB,YAC9C,MAAM,IAAIC,uBAAAA,cAAc,KAAK,EAAE,SAAS,yDAAyD,CAAC;EAGpG,MAAM,UAAU,OAAO,eAAe;EAEtC,IAAI,CAAC,SACH,OAAO;GAAE,SAAS,CAAC;GAAG,aAAa;GAAG,MAAM;EAAK;EAGnD,MAAM,aAAa,OAAO,OAAO,OAAO;EACxC,MAAM,aAAa,WAAW;EAI9B,MAAM,mBACH,UAAU,KAAA,KAAa,WAAW,KAAA,MAAc,SAAS,KAAA,KAAa,YAAY,KAAA;EAGrF,MAAM,eAAe,WAAW;EAEhC,IAAI,YAAY;EAChB,IAAI,cAAc,KAAA,KAAa,WAAW,KAAA,KAAa,iBAAiB,KAAA,KAAa,eAAe,GAClG,YAAY,KAAK,MAAM,SAAS,YAAY;EAI9C,MAAM,eAAe,cAAc,KAAA,KAAa,iBAAiB,KAAA,IAAY,YAAY,eAAe;EAGxG,IAAI,mBAAmB;EACvB,IAAI,UAAyB;EAE7B,IAAI,iBAAiB,KAAA,GAAW;GAC9B,mBAAmB,WAAW,MAAM,cAAc,eAAe,YAAY;GAG7E,IAAI,eAAe,eAAe,YAAY;IAC5C,MAAM,YAAY,aAAa,KAAK;IAEpC,MAAM,SAAS,eAAe;IAC9B,IAAI,iBAEF,UAAU,GAAG,OAAO,wBAAwB,aAAa,UADtC,eAAe;SAGlC,UAAU,GAAG,OAAO,0BAA0B,aAAa,QAAQ;GAEvE;EACF;EAKA,OAAO;GACL,SAHmC,iBAAiB,KAAI,WAAU,OAAO,cAAc,CAGjE;GACtB,aAAa;GACb,MAAM;EACR;CACF;AACF,CAAC;AAED,MAAa,8BAA8BH,sBAAAA,YAAY;CACrD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBI,YAAAA;CACjB,kBAAkBC,YAAAA;CAClB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,IAAI,cAAgE;EAC5F,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIH,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,EAAE;EAEzC,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,GAAG,aAAa,CAAC;EAGlF,MAAM,eAAe,OAAO,gBAAgB;EAG5C,IAAI,WAAW,aAAa,eAAe,YAAY,SACrD,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAC3B,SAAS,uBAAuB,GAAG,4BAA4B,QAAQ,wBAAwB,aAAa,eAAe,UAC7H,CAAC;EAGH,OAAO;CACT;AACF,CAAC;AAED,MAAa,8BAA8BH,sBAAAA,YAAY;CACrD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBO,YAAAA;CACjB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,UAAU,qBAA2D;EAC7F,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIL,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,SAAS,aAAa,CAAC;EAGxF,IAAI,OAAO,OAAO,oBAAoB,YACpC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,WAAW,SAAS,kCAAkC,CAAC;EAGjG,OAAO,MAAM,OAAO,gBAAgB,cAAc;CACpD;AACF,CAAC;AAED,MAAa,mCAAmCH,sBAAAA,YAAY;CAC1D,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBS,YAAAA;CACjB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,UAAU,aAAmE;EACrG,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIP,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,SAAS,aAAa,CAAC;EAGxF,IAAI,OAAO,OAAO,gBAAgB,YAChC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,WAAW,SAAS,4CAA4C,CAAC;EAG3G,MAAM,WAAW,MAAM,OAAO,YAAY,MAAM;EAChD,IAAI,CAAC,UACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,iBAAiB,OAAO,6BAA6B,SAAS,GAAG,CAAC;EAG5G,OAAO;CACT;AACF,CAAC;AAED,MAAa,gCAAgCH,sBAAAA,YAAY;CACvD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBS,YAAAA;CACjB,YAAYE,YAAAA;CACZ,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EACd,QACA,UACA,QACA,MACA,YACA,gBACA,qBAOI;EACJ,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIT,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,SAAS,aAAa,CAAC;EAGxF,IAAI,OAAO,OAAO,gBAAgB,YAChC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,WAAW,SAAS,qCAAqC,CAAC;EAGpG,IAAI,OAAO,eAAe,GAAG;GAI3B,IAAI;GACJ,IAAI;IACF,YAAY,MAAM,OAAO,YAAY,QAAQ,MAAM;KAAE;KAAgB;KAAY;IAAe,CAAC;GACnG,SAAS,OAAO;IACd,IAAI,iBAAiBU,mBAAAA,eAAe,MAAM,OAAO,iCAC/C,MAAM,IAAIV,uBAAAA,cAAc,KAAK;KAAE,SAAS,MAAM;KAAS,OAAO;IAAM,CAAC;IAEvE,MAAM;GACR;GACA,IAAI,UAAU,WAAW,aACvB,OAAO;IACL,QAAQ;IACR,gBAAgB,UAAU;IAC1B,cAAc,UAAU;GAC1B;GAEF,OAAO,EAAE,QAAQ,UAAU,OAAO;EACpC;EAGA,OAAO,EAAE,QAAA,MADY,OAAO,YAAY,QAAQ,MAAM,EAAE,eAAe,CAAC,EACxD;CAClB;AACF,CAAC;AAMD,MAAa,kCAAkCH,sBAAAA,YAAY;CACzD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBc,YAAAA;CACjB,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,eAAqD;EAC7E,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIZ,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,SAAS,aAAa,CAAC;EAGxF,IAAI,OAAO,OAAO,kBAAkB,YAClC,OAAO,EAAE,WAAW,CAAC,EAAE;EAGzB,OAAO,OAAO,cAAc;CAC9B;AACF,CAAC;AAED,MAAa,iCAAiCH,sBAAAA,YAAY;CACxD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBc,YAAAA;CACjB,YAAYE,YAAAA;CACZ,gBAAgBC,YAAAA;CAChB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,UAAU,UAA6D;EAC/F,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAId,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,uBAAuB,SAAS,aAAa,CAAC;EAGxF,IAAI,OAAO,OAAO,iBAAiB,YACjC,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,WAAW,SAAS,sCAAsC,CAAC;EAGrG,IAAI;GACF,OAAO,MAAM,OAAO,aAAa,GAAG;EACtC,SAAS,OAAO;GACd,MAAM,UAAU,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;GACrE,IAAI,QAAQ,SAAS,WAAW,KAAK,QAAQ,SAAS,gBAAgB,GACpE,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,aAAa,IAAI,yBAAyB,SAAS,GAAG,CAAC;GAEjG,MAAM;EACR;CACF;AACF,CAAC;AAsDD,MAAa,2BAA2BH,sBAAAA,YAAY;CAClD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBO,YAAAA;CACjB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,eAAsF;EAC9G,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIJ,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,eAAe,SAAS,aAAa,CAAC;EAGhF,OAAO;GACL;GACA,UAAU,QAAQ,SAAS;EAC7B;CACF;AACF,CAAC;AAED,MAAa,0BAA0BH,sBAAAA,YAAY;CACjD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBO,YAAAA;CACjB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,OAAO,EAAE,QAAQ,eAAqF;EAC7G,IAAI,CAAC,UAAU,OAAO,OAAO,qBAAqB,YAChD,MAAM,IAAIJ,uBAAAA,cAAc,KAAK,EAAE,SAAS,2DAA2D,CAAC;EAGtG,MAAM,SAAS,OAAO,iBAAiB,QAAQ;EAE/C,IAAI,CAAC,QACH,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,eAAe,SAAS,aAAa,CAAC;EAGhF,IAAI,CAAC,gBAAgB,MAAM,GACzB,MAAM,IAAIA,uBAAAA,cAAc,KAAK,EAAE,SAAS,yDAAyD,CAAC;EAGpG,OAAO;GACL;GACA,SAAS,QAAQ,SAAS;GAC1B,aAAa,QAAQ,SAAS;EAChC;CACF;AACF,CAAC;AAED,MAAa,yBAAyBH,sBAAAA,YAAY;CAChD,QAAQ;CACR,MAAM;CACN,cAAc;CACd,iBAAiBO,YAAAA;CACjB,SAAS;CACT,aAAa;CACb,MAAM,CAAC,KAAK;CACZ,cAAc;CACd,SAAS,wBAAwB;AACnC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/mcp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/server/handlers/mcp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,IAAI,6BAA6B,EAG/C,MAAM,kBAAkB,CAAC;AAmB1B,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAepE,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6EjC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiCtC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BtC,CAAC;AAEH,eAAO,MAAM,gCAAgC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgC3C,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkExC,CAAC;AAMH,eAAO,MAAM,+BAA+B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B1C,CAAC;AAEH,eAAO,MAAM,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCzC,CAAC;AAMH;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;OAEG;IACH,kBAAkB,CAAC,EAAE,MAAM,MAAM,CAAC;IAClC;;;OAGG;IACH,cAAc,CAAC,EAAE,iBAAiB,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,MAAM,EAAE,6BAA6B,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,mBAAmB,CAAC;CAClC;AAED;;;;;GAKG;AACH,MAAM,WAAW,qBAAqB;IACpC,4FAA4F;IAC5F,MAAM,EAAE,6BAA6B,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;CAyBnC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;CA8BlC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;CAUjC,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { r as __exportAll } from "../../rolldown-runtime-maW3aOIk.js";
|
|
|
2
2
|
import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
|
|
3
3
|
import { n as createRoute } from "../../route-builder-DDOjv0sM.js";
|
|
4
4
|
import { a as listMcpServerToolsResponseSchema, c as listResourcesResponseSchema, d as mcpServerResourcePathParams, f as mcpServerToolPathParams, g as serverDetailSchema, h as readResourceResponseSchema, l as mcpServerDetailPathParams, m as readResourceBodySchema, n as executeToolResponseSchema, o as listMcpServersQuerySchema, p as mcpToolInfoSchema, r as getMcpServerDetailQuerySchema, s as listMcpServersResponseSchema, t as executeToolBodySchema, u as mcpServerIdPathParams } from "../../mcp-ea7f_n2D.js";
|
|
5
|
+
import { MastraError } from "@mastra/core/error";
|
|
5
6
|
//#region src/server/handlers/mcp.ts
|
|
6
7
|
var mcp_exports = /* @__PURE__ */ __exportAll({
|
|
7
8
|
EXECUTE_MCP_SERVER_TOOL_ROUTE: () => EXECUTE_MCP_SERVER_TOOL_ROUTE,
|
|
@@ -140,11 +141,20 @@ const EXECUTE_MCP_SERVER_TOOL_ROUTE = createRoute({
|
|
|
140
141
|
if (!server) throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });
|
|
141
142
|
if (typeof server.executeTool !== "function") throw new HTTPException(501, { message: `Server '${serverId}' cannot execute tools in this way.` });
|
|
142
143
|
if (server.mcpVersion === 2) {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
144
|
+
let execution;
|
|
145
|
+
try {
|
|
146
|
+
execution = await server.executeTool(toolId, data, {
|
|
147
|
+
requestContext,
|
|
148
|
+
resumeData,
|
|
149
|
+
suspendPayload
|
|
150
|
+
});
|
|
151
|
+
} catch (error) {
|
|
152
|
+
if (error instanceof MastraError && error.id === "MCP_SERVER_TOOL_INVALID_INPUT") throw new HTTPException(400, {
|
|
153
|
+
message: error.message,
|
|
154
|
+
cause: error
|
|
155
|
+
});
|
|
156
|
+
throw error;
|
|
157
|
+
}
|
|
148
158
|
if (execution.status === "suspended") return {
|
|
149
159
|
status: "suspended",
|
|
150
160
|
suspendPayload: execution.suspendPayload,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","names":[],"sources":["../../../src/server/handlers/mcp.ts"],"sourcesContent":["import type {\n MCPServerBase as MastraMCPServerImplementation,\n MCPToolExecutionResultV2,\n ServerInfo,\n} from '@mastra/core/mcp';\nimport { HTTPException } from '../http-exception';\nimport {\n mcpServerDetailPathParams,\n mcpServerToolPathParams,\n executeToolBodySchema,\n listMcpServersQuerySchema,\n getMcpServerDetailQuerySchema,\n listMcpServersResponseSchema,\n serverDetailSchema,\n mcpServerIdPathParams,\n listMcpServerToolsResponseSchema,\n mcpToolInfoSchema,\n executeToolResponseSchema,\n mcpServerResourcePathParams,\n readResourceBodySchema,\n readResourceResponseSchema,\n listResourcesResponseSchema,\n} from '../schemas/mcp';\nimport type { ServerContext } from '../server-adapter';\nimport type { SetMcpRequestAuth } from '../server-adapter/mcp-auth';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\n// ============================================================================\n// Route Definitions (createRoute pattern for server adapters)\n// ============================================================================\n\n/**\n * Only `@mastra/mcp` 1.x servers implement the standalone HTTP+SSE transport; on a\n * 2026-07-28 server the inherited `startSSE`/`startHonoSSE` throw.\n */\nfunction hasSSETransport(server: MastraMCPServerImplementation): boolean {\n return server.mcpVersion !== 2;\n}\n\nexport const LIST_MCP_SERVERS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers',\n responseType: 'json',\n queryParamSchema: listMcpServersQuerySchema,\n responseSchema: listMcpServersResponseSchema,\n summary: 'List MCP servers',\n description: 'Returns a list of registered MCP servers with pagination support',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n routePrefix,\n page,\n perPage,\n limit,\n offset,\n }: ServerContext & { page?: number; perPage?: number; limit?: number; offset?: number }) => {\n if (!mastra || typeof mastra.listMCPServers !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or listMCPServers method not available' });\n }\n\n const servers = mastra.listMCPServers();\n\n if (!servers) {\n return { servers: [], total_count: 0, next: null };\n }\n\n const serverList = Object.values(servers);\n const totalCount = serverList.length;\n\n // Support both page/perPage and limit/offset for backwards compatibility\n // Detect which format user is using - prefer page/perPage if both provided\n const useLegacyFormat =\n (limit !== undefined || offset !== undefined) && page === undefined && perPage === undefined;\n\n // If perPage provided, use it; otherwise fall back to limit\n const finalPerPage = perPage ?? limit;\n // If page provided, use it; otherwise convert from offset\n let finalPage = page;\n if (finalPage === undefined && offset !== undefined && finalPerPage !== undefined && finalPerPage > 0) {\n finalPage = Math.floor(offset / finalPerPage);\n }\n\n // Calculate offset from page/perPage\n const actualOffset = finalPage !== undefined && finalPerPage !== undefined ? finalPage * finalPerPage : 0;\n\n // Apply pagination\n let paginatedServers = serverList;\n let nextUrl: string | null = null;\n\n if (finalPerPage !== undefined) {\n paginatedServers = serverList.slice(actualOffset, actualOffset + finalPerPage);\n\n // Calculate next URL if there are more results\n if (actualOffset + finalPerPage < totalCount) {\n const nextPage = (finalPage ?? 0) + 1;\n // Return next URL in same format as request (legacy limit/offset or page/perPage)\n const prefix = routePrefix ?? '';\n if (useLegacyFormat) {\n const nextOffset = actualOffset + finalPerPage;\n nextUrl = `${prefix}/mcp/v0/servers?limit=${finalPerPage}&offset=${nextOffset}`;\n } else {\n nextUrl = `${prefix}/mcp/v0/servers?perPage=${finalPerPage}&page=${nextPage}`;\n }\n }\n }\n\n // Get server info for each server\n const serverInfoList: ServerInfo[] = paginatedServers.map(server => server.getServerInfo());\n\n return {\n servers: serverInfoList,\n total_count: totalCount,\n next: nextUrl,\n };\n },\n});\n\nexport const GET_MCP_SERVER_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers/:id',\n responseType: 'json',\n pathParamSchema: mcpServerDetailPathParams,\n queryParamSchema: getMcpServerDetailQuerySchema,\n responseSchema: serverDetailSchema,\n summary: 'Get MCP server details',\n description: 'Returns detailed information about a specific MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, id, version }: ServerContext & { id: string; version?: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(id);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${id}' not found` });\n }\n\n const serverDetail = server.getServerDetail();\n\n // If a specific version was requested, check if it matches\n if (version && serverDetail.version_detail.version !== version) {\n throw new HTTPException(404, {\n message: `MCP server with ID '${id}' found, but not version '${version}'. Available version: ${serverDetail.version_detail.version}`,\n });\n }\n\n return serverDetail;\n },\n});\n\nexport const LIST_MCP_SERVER_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n responseSchema: listMcpServerToolsResponseSchema,\n summary: 'List MCP server tools',\n description: 'Returns a list of tools available on the specified MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, requestContext }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolListInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot list tools in this way.` });\n }\n\n return await server.getToolListInfo(requestContext);\n },\n});\n\nexport const GET_MCP_SERVER_TOOL_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n responseSchema: mcpToolInfoSchema,\n summary: 'Get MCP server tool details',\n description: 'Returns detailed information about a specific tool on the MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, toolId }: ServerContext & { serverId: string; toolId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot provide tool details in this way.` });\n }\n\n const toolInfo = await server.getToolInfo(toolId);\n if (!toolInfo) {\n throw new HTTPException(404, { message: `Tool with ID '${toolId}' not found on MCP server '${serverId}'` });\n }\n\n return toolInfo;\n },\n});\n\nexport const EXECUTE_MCP_SERVER_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute MCP server tool',\n description: 'Executes a tool on the specified MCP server with the provided arguments',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n toolId,\n data,\n resumeData,\n suspendPayload,\n requestContext,\n }: ServerContext & {\n serverId: string;\n toolId: string;\n data?: unknown;\n resumeData?: unknown;\n suspendPayload?: unknown;\n }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.executeTool !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot execute tools in this way.` });\n }\n\n if (server.mcpVersion === 2) {\n // A 2026-07-28 server runs the tool with no protocol client attached: a tool\n // that suspends for input is reported as such instead of pretending it finished, and\n // the caller answers by sending the same args with `resumeData` and `suspendPayload`.\n const execution: MCPToolExecutionResultV2 = await server.executeTool(toolId, data, {\n requestContext,\n resumeData,\n suspendPayload,\n });\n if (execution.status === 'suspended') {\n return {\n status: 'suspended' as const,\n suspendPayload: execution.suspendPayload,\n resumeSchema: execution.resumeSchema,\n };\n }\n return { result: execution.output };\n }\n\n const result = await server.executeTool(toolId, data, { requestContext });\n return { result };\n },\n});\n\n// ============================================================================\n// MCP Resource Routes\n// ============================================================================\n\nexport const LIST_MCP_SERVER_RESOURCES_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/resources',\n responseType: 'json',\n pathParamSchema: mcpServerResourcePathParams,\n responseSchema: listResourcesResponseSchema,\n summary: 'List MCP server resources',\n description: 'Returns a list of resources available on the MCP server, including ui:// app resources',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.listResources !== 'function') {\n return { resources: [] };\n }\n\n return server.listResources();\n },\n});\n\nexport const READ_MCP_SERVER_RESOURCE_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/resources/read',\n responseType: 'json',\n pathParamSchema: mcpServerResourcePathParams,\n bodySchema: readResourceBodySchema,\n responseSchema: readResourceResponseSchema,\n summary: 'Read MCP server resource content',\n description: 'Reads the content of a resource by URI, used for rendering MCP App ui:// resources',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, uri }: ServerContext & { serverId: string; uri: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.readResource !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' does not support reading resources` });\n }\n\n try {\n return await server.readResource(uri);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (message.includes('not found') || message.includes('not configured')) {\n throw new HTTPException(404, { message: `Resource '${uri}' not found on server '${serverId}'` });\n }\n throw error;\n }\n },\n});\n\n// ============================================================================\n// MCP Transport Routes (Streamable HTTP and SSE)\n// ============================================================================\n\n/**\n * MCP transport options that can be passed to startHTTP() or startSSE().\n * Includes serverless mode for running in stateless environments like Cloudflare Workers or Vercel Edge.\n */\nexport interface MCPTransportOptions {\n /**\n * When true, runs in stateless mode without session management.\n * Ideal for serverless environments where you can't maintain persistent connections.\n */\n serverless?: boolean;\n /**\n * Custom session ID generator function.\n */\n sessionIdGenerator?: () => string;\n /**\n * Sets `req.auth` before the MCP transport reads it. Overrides the default\n * bridge that forwards the principal resolved by `server.auth`.\n */\n setRequestAuth?: SetMcpRequestAuth;\n}\n\n/**\n * MCP HTTP Transport response type.\n * Adapters use this to set up the HTTP transport via MCPServer.startHTTP()\n */\nexport interface MCPHttpTransportResult {\n server: MastraMCPServerImplementation;\n httpPath: string;\n /**\n * Optional MCP transport options for this specific route.\n * These override any class-level mcpOptions configured on the adapter.\n */\n mcpOptions?: MCPTransportOptions;\n}\n\n/**\n * MCP SSE Transport response type.\n * Adapters use this to set up the SSE transport via MCPServer.startSSE() or startHonoSSE()\n *\n * Note: SSE transport is inherently stateful and doesn't support serverless mode.\n */\nexport interface MCPSseTransportResult {\n /** A 1.x server: the SSE route only resolves servers that still implement the transport. */\n server: MastraMCPServerImplementation;\n ssePath: string;\n messagePath: string;\n}\n\nexport const MCP_HTTP_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/mcp',\n responseType: 'mcp-http',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP HTTP Transport',\n description: 'Streamable HTTP transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPHttpTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n return {\n server,\n httpPath: `/mcp/${serverId}/mcp`,\n };\n },\n});\n\nexport const MCP_SSE_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/sse',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Transport',\n description: 'SSE transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPSseTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n if (!hasSSETransport(server)) {\n throw new HTTPException(404, { message: 'Legacy SSE transport is unavailable for MCP v2 servers' });\n }\n\n return {\n server,\n ssePath: `/mcp/${serverId}/sse`,\n messagePath: `/mcp/${serverId}/messages`,\n };\n },\n});\n\nexport const MCP_SSE_MESSAGES_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/messages',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Messages',\n description: 'Message endpoint for SSE transport (posts messages to active SSE streams)',\n tags: ['MCP'],\n requiresAuth: true,\n handler: MCP_SSE_TRANSPORT_ROUTE.handler,\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mcp.js","names":[],"sources":["../../../src/server/handlers/mcp.ts"],"sourcesContent":["import { MastraError } from '@mastra/core/error';\nimport type {\n MCPServerBase as MastraMCPServerImplementation,\n MCPToolExecutionResultV2,\n ServerInfo,\n} from '@mastra/core/mcp';\nimport { HTTPException } from '../http-exception';\nimport {\n mcpServerDetailPathParams,\n mcpServerToolPathParams,\n executeToolBodySchema,\n listMcpServersQuerySchema,\n getMcpServerDetailQuerySchema,\n listMcpServersResponseSchema,\n serverDetailSchema,\n mcpServerIdPathParams,\n listMcpServerToolsResponseSchema,\n mcpToolInfoSchema,\n executeToolResponseSchema,\n mcpServerResourcePathParams,\n readResourceBodySchema,\n readResourceResponseSchema,\n listResourcesResponseSchema,\n} from '../schemas/mcp';\nimport type { ServerContext } from '../server-adapter';\nimport type { SetMcpRequestAuth } from '../server-adapter/mcp-auth';\nimport { createRoute } from '../server-adapter/routes/route-builder';\n\n// ============================================================================\n// Route Definitions (createRoute pattern for server adapters)\n// ============================================================================\n\n/**\n * Only `@mastra/mcp` 1.x servers implement the standalone HTTP+SSE transport; on a\n * 2026-07-28 server the inherited `startSSE`/`startHonoSSE` throw.\n */\nfunction hasSSETransport(server: MastraMCPServerImplementation): boolean {\n return server.mcpVersion !== 2;\n}\n\nexport const LIST_MCP_SERVERS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers',\n responseType: 'json',\n queryParamSchema: listMcpServersQuerySchema,\n responseSchema: listMcpServersResponseSchema,\n summary: 'List MCP servers',\n description: 'Returns a list of registered MCP servers with pagination support',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n routePrefix,\n page,\n perPage,\n limit,\n offset,\n }: ServerContext & { page?: number; perPage?: number; limit?: number; offset?: number }) => {\n if (!mastra || typeof mastra.listMCPServers !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or listMCPServers method not available' });\n }\n\n const servers = mastra.listMCPServers();\n\n if (!servers) {\n return { servers: [], total_count: 0, next: null };\n }\n\n const serverList = Object.values(servers);\n const totalCount = serverList.length;\n\n // Support both page/perPage and limit/offset for backwards compatibility\n // Detect which format user is using - prefer page/perPage if both provided\n const useLegacyFormat =\n (limit !== undefined || offset !== undefined) && page === undefined && perPage === undefined;\n\n // If perPage provided, use it; otherwise fall back to limit\n const finalPerPage = perPage ?? limit;\n // If page provided, use it; otherwise convert from offset\n let finalPage = page;\n if (finalPage === undefined && offset !== undefined && finalPerPage !== undefined && finalPerPage > 0) {\n finalPage = Math.floor(offset / finalPerPage);\n }\n\n // Calculate offset from page/perPage\n const actualOffset = finalPage !== undefined && finalPerPage !== undefined ? finalPage * finalPerPage : 0;\n\n // Apply pagination\n let paginatedServers = serverList;\n let nextUrl: string | null = null;\n\n if (finalPerPage !== undefined) {\n paginatedServers = serverList.slice(actualOffset, actualOffset + finalPerPage);\n\n // Calculate next URL if there are more results\n if (actualOffset + finalPerPage < totalCount) {\n const nextPage = (finalPage ?? 0) + 1;\n // Return next URL in same format as request (legacy limit/offset or page/perPage)\n const prefix = routePrefix ?? '';\n if (useLegacyFormat) {\n const nextOffset = actualOffset + finalPerPage;\n nextUrl = `${prefix}/mcp/v0/servers?limit=${finalPerPage}&offset=${nextOffset}`;\n } else {\n nextUrl = `${prefix}/mcp/v0/servers?perPage=${finalPerPage}&page=${nextPage}`;\n }\n }\n }\n\n // Get server info for each server\n const serverInfoList: ServerInfo[] = paginatedServers.map(server => server.getServerInfo());\n\n return {\n servers: serverInfoList,\n total_count: totalCount,\n next: nextUrl,\n };\n },\n});\n\nexport const GET_MCP_SERVER_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/v0/servers/:id',\n responseType: 'json',\n pathParamSchema: mcpServerDetailPathParams,\n queryParamSchema: getMcpServerDetailQuerySchema,\n responseSchema: serverDetailSchema,\n summary: 'Get MCP server details',\n description: 'Returns detailed information about a specific MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, id, version }: ServerContext & { id: string; version?: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(id);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${id}' not found` });\n }\n\n const serverDetail = server.getServerDetail();\n\n // If a specific version was requested, check if it matches\n if (version && serverDetail.version_detail.version !== version) {\n throw new HTTPException(404, {\n message: `MCP server with ID '${id}' found, but not version '${version}'. Available version: ${serverDetail.version_detail.version}`,\n });\n }\n\n return serverDetail;\n },\n});\n\nexport const LIST_MCP_SERVER_TOOLS_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools',\n responseType: 'json',\n pathParamSchema: mcpServerIdPathParams,\n responseSchema: listMcpServerToolsResponseSchema,\n summary: 'List MCP server tools',\n description: 'Returns a list of tools available on the specified MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, requestContext }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolListInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot list tools in this way.` });\n }\n\n return await server.getToolListInfo(requestContext);\n },\n});\n\nexport const GET_MCP_SERVER_TOOL_DETAIL_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/tools/:toolId',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n responseSchema: mcpToolInfoSchema,\n summary: 'Get MCP server tool details',\n description: 'Returns detailed information about a specific tool on the MCP server',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, toolId }: ServerContext & { serverId: string; toolId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.getToolInfo !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot provide tool details in this way.` });\n }\n\n const toolInfo = await server.getToolInfo(toolId);\n if (!toolInfo) {\n throw new HTTPException(404, { message: `Tool with ID '${toolId}' not found on MCP server '${serverId}'` });\n }\n\n return toolInfo;\n },\n});\n\nexport const EXECUTE_MCP_SERVER_TOOL_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/tools/:toolId/execute',\n responseType: 'json',\n pathParamSchema: mcpServerToolPathParams,\n bodySchema: executeToolBodySchema,\n responseSchema: executeToolResponseSchema,\n summary: 'Execute MCP server tool',\n description: 'Executes a tool on the specified MCP server with the provided arguments',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({\n mastra,\n serverId,\n toolId,\n data,\n resumeData,\n suspendPayload,\n requestContext,\n }: ServerContext & {\n serverId: string;\n toolId: string;\n data?: unknown;\n resumeData?: unknown;\n suspendPayload?: unknown;\n }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.executeTool !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' cannot execute tools in this way.` });\n }\n\n if (server.mcpVersion === 2) {\n // A 2026-07-28 server runs the tool with no protocol client attached: a tool\n // that suspends for input is reported as such instead of pretending it finished, and\n // the caller answers by sending the same args with `resumeData` and `suspendPayload`.\n let execution: MCPToolExecutionResultV2;\n try {\n execution = await server.executeTool(toolId, data, { requestContext, resumeData, suspendPayload });\n } catch (error) {\n if (error instanceof MastraError && error.id === 'MCP_SERVER_TOOL_INVALID_INPUT') {\n throw new HTTPException(400, { message: error.message, cause: error });\n }\n throw error;\n }\n if (execution.status === 'suspended') {\n return {\n status: 'suspended' as const,\n suspendPayload: execution.suspendPayload,\n resumeSchema: execution.resumeSchema,\n };\n }\n return { result: execution.output };\n }\n\n const result = await server.executeTool(toolId, data, { requestContext });\n return { result };\n },\n});\n\n// ============================================================================\n// MCP Resource Routes\n// ============================================================================\n\nexport const LIST_MCP_SERVER_RESOURCES_ROUTE = createRoute({\n method: 'GET',\n path: '/mcp/:serverId/resources',\n responseType: 'json',\n pathParamSchema: mcpServerResourcePathParams,\n responseSchema: listResourcesResponseSchema,\n summary: 'List MCP server resources',\n description: 'Returns a list of resources available on the MCP server, including ui:// app resources',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.listResources !== 'function') {\n return { resources: [] };\n }\n\n return server.listResources();\n },\n});\n\nexport const READ_MCP_SERVER_RESOURCE_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/resources/read',\n responseType: 'json',\n pathParamSchema: mcpServerResourcePathParams,\n bodySchema: readResourceBodySchema,\n responseSchema: readResourceResponseSchema,\n summary: 'Read MCP server resource content',\n description: 'Reads the content of a resource by URI, used for rendering MCP App ui:// resources',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId, uri }: ServerContext & { serverId: string; uri: string }) => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server with ID '${serverId}' not found` });\n }\n\n if (typeof server.readResource !== 'function') {\n throw new HTTPException(501, { message: `Server '${serverId}' does not support reading resources` });\n }\n\n try {\n return await server.readResource(uri);\n } catch (error) {\n const message = error instanceof Error ? error.message : String(error);\n if (message.includes('not found') || message.includes('not configured')) {\n throw new HTTPException(404, { message: `Resource '${uri}' not found on server '${serverId}'` });\n }\n throw error;\n }\n },\n});\n\n// ============================================================================\n// MCP Transport Routes (Streamable HTTP and SSE)\n// ============================================================================\n\n/**\n * MCP transport options that can be passed to startHTTP() or startSSE().\n * Includes serverless mode for running in stateless environments like Cloudflare Workers or Vercel Edge.\n */\nexport interface MCPTransportOptions {\n /**\n * When true, runs in stateless mode without session management.\n * Ideal for serverless environments where you can't maintain persistent connections.\n */\n serverless?: boolean;\n /**\n * Custom session ID generator function.\n */\n sessionIdGenerator?: () => string;\n /**\n * Sets `req.auth` before the MCP transport reads it. Overrides the default\n * bridge that forwards the principal resolved by `server.auth`.\n */\n setRequestAuth?: SetMcpRequestAuth;\n}\n\n/**\n * MCP HTTP Transport response type.\n * Adapters use this to set up the HTTP transport via MCPServer.startHTTP()\n */\nexport interface MCPHttpTransportResult {\n server: MastraMCPServerImplementation;\n httpPath: string;\n /**\n * Optional MCP transport options for this specific route.\n * These override any class-level mcpOptions configured on the adapter.\n */\n mcpOptions?: MCPTransportOptions;\n}\n\n/**\n * MCP SSE Transport response type.\n * Adapters use this to set up the SSE transport via MCPServer.startSSE() or startHonoSSE()\n *\n * Note: SSE transport is inherently stateful and doesn't support serverless mode.\n */\nexport interface MCPSseTransportResult {\n /** A 1.x server: the SSE route only resolves servers that still implement the transport. */\n server: MastraMCPServerImplementation;\n ssePath: string;\n messagePath: string;\n}\n\nexport const MCP_HTTP_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/mcp',\n responseType: 'mcp-http',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP HTTP Transport',\n description: 'Streamable HTTP transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPHttpTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n return {\n server,\n httpPath: `/mcp/${serverId}/mcp`,\n };\n },\n});\n\nexport const MCP_SSE_TRANSPORT_ROUTE = createRoute({\n method: 'ALL',\n path: '/mcp/:serverId/sse',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Transport',\n description: 'SSE transport endpoint for MCP protocol communication',\n tags: ['MCP'],\n requiresAuth: true,\n handler: async ({ mastra, serverId }: ServerContext & { serverId: string }): Promise<MCPSseTransportResult> => {\n if (!mastra || typeof mastra.getMCPServerById !== 'function') {\n throw new HTTPException(500, { message: 'Mastra instance or getMCPServerById method not available' });\n }\n\n const server = mastra.getMCPServerById(serverId);\n\n if (!server) {\n throw new HTTPException(404, { message: `MCP server '${serverId}' not found` });\n }\n\n if (!hasSSETransport(server)) {\n throw new HTTPException(404, { message: 'Legacy SSE transport is unavailable for MCP v2 servers' });\n }\n\n return {\n server,\n ssePath: `/mcp/${serverId}/sse`,\n messagePath: `/mcp/${serverId}/messages`,\n };\n },\n});\n\nexport const MCP_SSE_MESSAGES_ROUTE = createRoute({\n method: 'POST',\n path: '/mcp/:serverId/messages',\n responseType: 'mcp-sse',\n pathParamSchema: mcpServerIdPathParams,\n summary: 'MCP SSE Messages',\n description: 'Message endpoint for SSE transport (posts messages to active SSE streams)',\n tags: ['MCP'],\n requiresAuth: true,\n handler: MCP_SSE_TRANSPORT_ROUTE.handler,\n});\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_rolldown_runtime = require("../../rolldown-runtime-Bd6kNlEP.cjs");
|
|
3
3
|
const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
|
|
4
|
-
const require_agents = require("../../agents-
|
|
4
|
+
const require_agents = require("../../agents-BN8QmLxk.cjs");
|
|
5
5
|
const require_route_builder = require("../../route-builder-CbCx1upL.cjs");
|
|
6
6
|
const require_server_handlers_error = require("./error.cjs");
|
|
7
7
|
const require_utils = require("../../utils-aIu3gkhJ.cjs");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { r as __exportAll } from "../../rolldown-runtime-maW3aOIk.js";
|
|
2
2
|
import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
|
|
3
|
-
import { a as agentIdPathParams, o as agentPlanQuerySchema, s as agentPlanResponseSchema } from "../../agents-
|
|
3
|
+
import { a as agentIdPathParams, o as agentPlanQuerySchema, s as agentPlanResponseSchema } from "../../agents-DCYUhwHn.js";
|
|
4
4
|
import { n as createRoute } from "../../route-builder-DDOjv0sM.js";
|
|
5
5
|
import { handleError } from "./error.js";
|
|
6
6
|
import { p as MastraFGAPermissions } from "../../utils-KsERfbhc.js";
|
|
@@ -5,7 +5,7 @@ const require_route_builder = require("../../route-builder-CbCx1upL.cjs");
|
|
|
5
5
|
const require_utils = require("../../utils-DbHFc3hG.cjs");
|
|
6
6
|
const require_server_handlers_error = require("./error.cjs");
|
|
7
7
|
const require_server_handlers_version_helpers = require("./version-helpers.cjs");
|
|
8
|
-
const require_scorer_versions = require("../../scorer-versions-
|
|
8
|
+
const require_scorer_versions = require("../../scorer-versions-DAsYq5b3.cjs");
|
|
9
9
|
//#region src/server/handlers/scorer-versions.ts
|
|
10
10
|
const SNAPSHOT_CONFIG_FIELDS = [
|
|
11
11
|
"name",
|
|
@@ -3,7 +3,7 @@ import { n as createRoute } from "../../route-builder-DDOjv0sM.js";
|
|
|
3
3
|
import { i as getStoredResourceScope, n as assertStoredResourceScope } from "../../utils-mRt04Bqa.js";
|
|
4
4
|
import { handleError } from "./error.js";
|
|
5
5
|
import { calculateChangedFields, computeVersionDiffs, createVersionWithRetry, enforceRetentionLimit, extractConfigFromVersion } from "./version-helpers.js";
|
|
6
|
-
import { a as createScorerVersionResponseSchema, c as listScorerVersionsQuerySchema, d as scorerVersionIdPathParams, f as scorerVersionPathParams, i as createScorerVersionBodySchema, l as listScorerVersionsResponseSchema, n as compareScorerVersionsQuerySchema, o as deleteScorerVersionResponseSchema, r as compareScorerVersionsResponseSchema, s as getScorerVersionResponseSchema, t as activateScorerVersionResponseSchema, u as restoreScorerVersionResponseSchema } from "../../scorer-versions-
|
|
6
|
+
import { a as createScorerVersionResponseSchema, c as listScorerVersionsQuerySchema, d as scorerVersionIdPathParams, f as scorerVersionPathParams, i as createScorerVersionBodySchema, l as listScorerVersionsResponseSchema, n as compareScorerVersionsQuerySchema, o as deleteScorerVersionResponseSchema, r as compareScorerVersionsResponseSchema, s as getScorerVersionResponseSchema, t as activateScorerVersionResponseSchema, u as restoreScorerVersionResponseSchema } from "../../scorer-versions-VpbcaDi8.js";
|
|
7
7
|
//#region src/server/handlers/scorer-versions.ts
|
|
8
8
|
const SNAPSHOT_CONFIG_FIELDS = [
|
|
9
9
|
"name",
|
|
@@ -4,9 +4,9 @@ const require_http_exception = require("../../http-exception-CKDHupKw.cjs");
|
|
|
4
4
|
const require_route_builder = require("../../route-builder-CbCx1upL.cjs");
|
|
5
5
|
const require_utils = require("../../utils-DbHFc3hG.cjs");
|
|
6
6
|
const require_server_handlers_error = require("./error.cjs");
|
|
7
|
-
const require_stored_agents = require("../../stored-agents-
|
|
7
|
+
const require_stored_agents = require("../../stored-agents-61cRlWax.cjs");
|
|
8
8
|
const require_server_handlers_authorship = require("./authorship.cjs");
|
|
9
|
-
const require_editor_builder = require("../../editor-builder-
|
|
9
|
+
const require_editor_builder = require("../../editor-builder-D85orYra.cjs");
|
|
10
10
|
const require_favorites = require("../../favorites-D1-AzGsK.cjs");
|
|
11
11
|
//#region src/server/handlers/stored-agent-favorites.ts
|
|
12
12
|
/**
|
|
@@ -2,9 +2,9 @@ import { t as HTTPException } from "../../http-exception-CyfxZB6W.js";
|
|
|
2
2
|
import { n as createRoute } from "../../route-builder-DDOjv0sM.js";
|
|
3
3
|
import { i as getStoredResourceScope, n as assertStoredResourceScope } from "../../utils-mRt04Bqa.js";
|
|
4
4
|
import { handleError } from "./error.js";
|
|
5
|
-
import { C as storedAgentIdPathParams } from "../../stored-agents-
|
|
5
|
+
import { C as storedAgentIdPathParams } from "../../stored-agents-CuEn_6cd.js";
|
|
6
6
|
import { assertReadAccess, getCallerAuthorId } from "./authorship.js";
|
|
7
|
-
import { a as requireBuilderFeature } from "../../editor-builder-
|
|
7
|
+
import { a as requireBuilderFeature } from "../../editor-builder-D287Qf1k.js";
|
|
8
8
|
import { t as favoriteToggleResponseSchema } from "../../favorites-DWDyKxts.js";
|
|
9
9
|
//#region src/server/handlers/stored-agent-favorites.ts
|
|
10
10
|
/**
|
|
@@ -5,12 +5,12 @@ const require_common = require("../../common-BPjna_b6.cjs");
|
|
|
5
5
|
const require_route_builder = require("../../route-builder-CbCx1upL.cjs");
|
|
6
6
|
const require_utils = require("../../utils-DbHFc3hG.cjs");
|
|
7
7
|
const require_server_handlers_error = require("./error.cjs");
|
|
8
|
-
const require_stored_agents = require("../../stored-agents-
|
|
8
|
+
const require_stored_agents = require("../../stored-agents-61cRlWax.cjs");
|
|
9
9
|
const require_server_handlers_author_enrichment = require("./author-enrichment.cjs");
|
|
10
10
|
const require_server_handlers_validate_agent_instructions = require("./validate-agent-instructions.cjs");
|
|
11
11
|
const require_server_handlers_version_helpers = require("./version-helpers.cjs");
|
|
12
12
|
const require_server_handlers_authorship = require("./authorship.cjs");
|
|
13
|
-
const require_editor_builder = require("../../editor-builder-
|
|
13
|
+
const require_editor_builder = require("../../editor-builder-D85orYra.cjs");
|
|
14
14
|
const require_server_handlers_favorites_enrichment = require("./favorites-enrichment.cjs");
|
|
15
15
|
const require_server_handlers_validate_avatar = require("./validate-avatar.cjs");
|
|
16
16
|
//#region src/server/handlers/stored-agents.ts
|