victor HF Staff commited on
Commit
a147d66
·
1 Parent(s): ca1ef7b

Revert "trying a MCP fix"

Browse files

This reverts commit efa904667a5df27223f8f74b11a186a711c8987a.

src/lib/server/textGeneration/mcp/runMcpFlow.ts CHANGED
@@ -43,10 +43,6 @@ export async function* runMcpFlow({
43
  > {
44
  // Start from env-configured servers
45
  let servers = getMcpServers();
46
- logger.debug(
47
- { servers: servers.map((s) => ({ name: s.name, url: s.url })) },
48
- "[mcp] loaded servers from env"
49
- );
50
 
51
  // Merge in request-provided custom servers (if any)
52
  try {
@@ -72,53 +68,27 @@ export async function* runMcpFlow({
72
  servers = [...byName.values()];
73
  }
74
 
75
- // If the client specified a non-empty selection by name, filter to those
76
  const names = Array.isArray(reqMcp?.selectedServerNames)
77
  ? reqMcp?.selectedServerNames
78
  : undefined;
79
- if (Array.isArray(names) && names.length > 0) {
80
- logger.debug(
81
- { selectedNames: names, beforeFilter: servers.length },
82
- "[mcp] filtering servers by name"
83
- );
84
  servers = servers.filter((s) => names.includes(s.name));
85
- logger.debug({ afterFilter: servers.length }, "[mcp] servers after name filter");
86
- } else if (Array.isArray(names) && names.length === 0) {
87
- // Be resilient: an empty array means "no explicit selection"; do not filter.
88
- logger.debug("[mcp] empty selectedServerNames provided; skipping name filter");
89
  }
90
  } catch {
91
  // ignore selection merge errors and proceed with env servers
92
  }
93
 
94
- // If no servers remain after selection/merge, exit early with an accurate message
95
- if (servers.length === 0) {
96
- logger.warn("[mcp] no MCP servers available after selection; skipping MCP flow");
97
- return false;
98
- }
99
-
100
  // Enforce server-side safety (public HTTPS only, no private ranges)
101
- const beforeFilter = servers.length;
102
  servers = servers.filter((s) => {
103
  try {
104
- const isValid = isValidUrl(s.url);
105
- if (!isValid) {
106
- logger.warn({ name: s.name, url: s.url }, "[mcp] server rejected by URL safety");
107
- }
108
- return isValid;
109
- } catch (err) {
110
- logger.warn(
111
- { name: s.name, url: s.url, error: String(err) },
112
- "[mcp] server URL validation error"
113
- );
114
  return false;
115
  }
116
  });
117
  if (servers.length === 0) {
118
- logger.warn(
119
- { beforeFilter, afterFilter: servers.length },
120
- "[mcp] all servers rejected by URL safety guard"
121
- );
122
  return false;
123
  }
124
 
 
43
  > {
44
  // Start from env-configured servers
45
  let servers = getMcpServers();
 
 
 
 
46
 
47
  // Merge in request-provided custom servers (if any)
48
  try {
 
68
  servers = [...byName.values()];
69
  }
70
 
71
+ // If the client specified a selection by name, filter to those
72
  const names = Array.isArray(reqMcp?.selectedServerNames)
73
  ? reqMcp?.selectedServerNames
74
  : undefined;
75
+ if (Array.isArray(names)) {
 
 
 
 
76
  servers = servers.filter((s) => names.includes(s.name));
 
 
 
 
77
  }
78
  } catch {
79
  // ignore selection merge errors and proceed with env servers
80
  }
81
 
 
 
 
 
 
 
82
  // Enforce server-side safety (public HTTPS only, no private ranges)
 
83
  servers = servers.filter((s) => {
84
  try {
85
+ return isValidUrl(s.url);
86
+ } catch {
 
 
 
 
 
 
 
 
87
  return false;
88
  }
89
  });
90
  if (servers.length === 0) {
91
+ logger.warn("[mcp] all selected servers rejected by URL safety guard");
 
 
 
92
  return false;
93
  }
94
 
src/lib/utils/messageUpdates.ts CHANGED
@@ -13,7 +13,7 @@ import {
13
  import { page } from "$app/state";
14
  import type { KeyValuePair } from "$lib/types/Tool";
15
 
16
- export type MessageUpdateRequestOptions = {
17
  base: string;
18
  inputs?: string;
19
  messageId?: string;
 
13
  import { page } from "$app/state";
14
  import type { KeyValuePair } from "$lib/types/Tool";
15
 
16
+ type MessageUpdateRequestOptions = {
17
  base: string;
18
  inputs?: string;
19
  messageId?: string;
src/routes/conversation/[id]/+page.svelte CHANGED
@@ -7,8 +7,7 @@
7
  import { beforeNavigate, invalidateAll } from "$app/navigation";
8
  import { base } from "$app/paths";
9
  import { ERROR_MESSAGES, error } from "$lib/stores/errors";
10
- import { findCurrentModel } from "$lib/utils/models";
11
- import type { MessageUpdateRequestOptions } from "$lib/utils/messageUpdates";
12
  import type { Message } from "$lib/types/Message";
13
  import { MessageUpdateStatus, MessageUpdateType } from "$lib/types/MessageUpdate";
14
  import titleUpdate from "$lib/stores/titleUpdate";
@@ -213,23 +212,21 @@
213
 
214
  const messageUpdatesAbortController = new AbortController();
215
 
216
- // Build payload and only include selectedMcpServerNames when non-empty
217
- const enabled = $enabledServers;
218
- const payload: MessageUpdateRequestOptions = {
219
- base,
220
- inputs: prompt,
221
- messageId,
222
- isRetry,
223
- files: isRetry ? userMessage?.files : base64Files,
224
- selectedMcpServers: enabled.map((s) => ({ name: s.name, url: s.url, headers: s.headers })),
225
- };
226
- if (enabled.length > 0) {
227
- payload.selectedMcpServerNames = enabled.map((s) => s.name);
228
- }
229
-
230
  const messageUpdatesIterator = await fetchMessageUpdates(
231
  page.params.id,
232
- payload,
 
 
 
 
 
 
 
 
 
 
 
 
233
  messageUpdatesAbortController.signal
234
  ).catch((err) => {
235
  error.set(err.message);
 
7
  import { beforeNavigate, invalidateAll } from "$app/navigation";
8
  import { base } from "$app/paths";
9
  import { ERROR_MESSAGES, error } from "$lib/stores/errors";
10
+ import { findCurrentModel } from "$lib/utils/models";
 
11
  import type { Message } from "$lib/types/Message";
12
  import { MessageUpdateStatus, MessageUpdateType } from "$lib/types/MessageUpdate";
13
  import titleUpdate from "$lib/stores/titleUpdate";
 
212
 
213
  const messageUpdatesAbortController = new AbortController();
214
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
215
  const messageUpdatesIterator = await fetchMessageUpdates(
216
  page.params.id,
217
+ {
218
+ base,
219
+ inputs: prompt,
220
+ messageId,
221
+ isRetry,
222
+ files: isRetry ? userMessage?.files : base64Files,
223
+ selectedMcpServerNames: $enabledServers.map((s) => s.name),
224
+ selectedMcpServers: $enabledServers.map((s) => ({
225
+ name: s.name,
226
+ url: s.url,
227
+ headers: s.headers,
228
+ })),
229
+ },
230
  messageUpdatesAbortController.signal
231
  ).catch((err) => {
232
  error.set(err.message);