@ai-sdk/mcp 2.0.0-beta.5 → 2.0.0-beta.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/CHANGELOG.md CHANGED
@@ -1,5 +1,17 @@
1
1
  # @ai-sdk/mcp
2
2
 
3
+ ## 2.0.0-beta.7
4
+
5
+ ### Major Changes
6
+
7
+ - 23fa161: fix(mcp): setting redirect: error for MCP transport
8
+
9
+ ## 2.0.0-beta.6
10
+
11
+ ### Patch Changes
12
+
13
+ - 58c9eb1: feat(mcp): add `redirect` option to `MCPTransportConfig` for controlling HTTP redirect behavior
14
+
3
15
  ## 2.0.0-beta.5
4
16
 
5
17
  ### Patch Changes
package/dist/index.d.mts CHANGED
@@ -243,6 +243,13 @@ type MCPTransportConfig = {
243
243
  * An optional OAuth client provider to use for authentication for MCP servers.
244
244
  */
245
245
  authProvider?: OAuthClientProvider;
246
+ /**
247
+ * Controls how HTTP redirects are handled for transport requests.
248
+ * - `'follow'`: Follow redirects automatically (standard fetch behavior).
249
+ * - `'error'`: Reject any redirect response with an error.
250
+ * @default 'error'
251
+ */
252
+ redirect?: 'follow' | 'error';
246
253
  };
247
254
 
248
255
  /** MCP tool metadata - keys should follow MCP _meta key format specification */
package/dist/index.d.ts CHANGED
@@ -243,6 +243,13 @@ type MCPTransportConfig = {
243
243
  * An optional OAuth client provider to use for authentication for MCP servers.
244
244
  */
245
245
  authProvider?: OAuthClientProvider;
246
+ /**
247
+ * Controls how HTTP redirects are handled for transport requests.
248
+ * - `'follow'`: Follow redirects automatically (standard fetch behavior).
249
+ * - `'error'`: Reject any redirect response with an error.
250
+ * @default 'error'
251
+ */
252
+ redirect?: 'follow' | 'error';
246
253
  };
247
254
 
248
255
  /** MCP tool metadata - keys should follow MCP _meta key format specification */
package/dist/index.js CHANGED
@@ -1072,12 +1072,14 @@ var SseMCPTransport = class {
1072
1072
  constructor({
1073
1073
  url,
1074
1074
  headers,
1075
- authProvider
1075
+ authProvider,
1076
+ redirect = "error"
1076
1077
  }) {
1077
1078
  this.connected = false;
1078
1079
  this.url = new URL(url);
1079
1080
  this.headers = headers;
1080
1081
  this.authProvider = authProvider;
1082
+ this.redirectMode = redirect;
1081
1083
  }
1082
1084
  async commonHeaders(base) {
1083
1085
  const headers = {
@@ -1111,7 +1113,8 @@ var SseMCPTransport = class {
1111
1113
  });
1112
1114
  const response = await fetch(this.url.href, {
1113
1115
  headers,
1114
- signal: (_a3 = this.abortController) == null ? void 0 : _a3.signal
1116
+ signal: (_a3 = this.abortController) == null ? void 0 : _a3.signal,
1117
+ redirect: this.redirectMode
1115
1118
  });
1116
1119
  if (response.status === 401 && this.authProvider && !triedAuth) {
1117
1120
  this.resourceMetadataUrl = extractResourceMetadataUrl(response);
@@ -1230,7 +1233,8 @@ var SseMCPTransport = class {
1230
1233
  method: "POST",
1231
1234
  headers,
1232
1235
  body: JSON.stringify(message),
1233
- signal: (_a3 = this.abortController) == null ? void 0 : _a3.signal
1236
+ signal: (_a3 = this.abortController) == null ? void 0 : _a3.signal,
1237
+ redirect: this.redirectMode
1234
1238
  };
1235
1239
  const response = await fetch(endpoint, init);
1236
1240
  if (response.status === 401 && this.authProvider && !triedAuth) {
@@ -1274,7 +1278,8 @@ var HttpMCPTransport = class {
1274
1278
  constructor({
1275
1279
  url,
1276
1280
  headers,
1277
- authProvider
1281
+ authProvider,
1282
+ redirect = "error"
1278
1283
  }) {
1279
1284
  this.inboundReconnectAttempts = 0;
1280
1285
  this.reconnectionOptions = {
@@ -1286,6 +1291,7 @@ var HttpMCPTransport = class {
1286
1291
  this.url = new URL(url);
1287
1292
  this.headers = headers;
1288
1293
  this.authProvider = authProvider;
1294
+ this.redirectMode = redirect;
1289
1295
  }
1290
1296
  async commonHeaders(base) {
1291
1297
  const headers = {
@@ -1326,7 +1332,8 @@ var HttpMCPTransport = class {
1326
1332
  await fetch(this.url, {
1327
1333
  method: "DELETE",
1328
1334
  headers,
1329
- signal: this.abortController.signal
1335
+ signal: this.abortController.signal,
1336
+ redirect: this.redirectMode
1330
1337
  }).catch(() => void 0);
1331
1338
  }
1332
1339
  } catch (e) {
@@ -1346,7 +1353,8 @@ var HttpMCPTransport = class {
1346
1353
  method: "POST",
1347
1354
  headers,
1348
1355
  body: JSON.stringify(message),
1349
- signal: (_a3 = this.abortController) == null ? void 0 : _a3.signal
1356
+ signal: (_a3 = this.abortController) == null ? void 0 : _a3.signal,
1357
+ redirect: this.redirectMode
1350
1358
  };
1351
1359
  const response = await fetch(this.url, init);
1352
1360
  const sessionId = response.headers.get("mcp-session-id");
@@ -1495,7 +1503,8 @@ var HttpMCPTransport = class {
1495
1503
  const response = await fetch(this.url.href, {
1496
1504
  method: "GET",
1497
1505
  headers,
1498
- signal: (_a3 = this.abortController) == null ? void 0 : _a3.signal
1506
+ signal: (_a3 = this.abortController) == null ? void 0 : _a3.signal,
1507
+ redirect: this.redirectMode
1499
1508
  });
1500
1509
  const sessionId = response.headers.get("mcp-session-id");
1501
1510
  if (sessionId) {