@j0hanz/fetch-url-mcp 1.2.0 → 1.3.1

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.
Files changed (184) hide show
  1. package/dist/cache.d.ts +9 -3
  2. package/dist/cache.d.ts.map +1 -0
  3. package/dist/cache.js +54 -119
  4. package/dist/cache.js.map +1 -0
  5. package/dist/cli.d.ts +1 -0
  6. package/dist/cli.d.ts.map +1 -0
  7. package/dist/cli.js +7 -4
  8. package/dist/cli.js.map +1 -0
  9. package/dist/config.d.ts +2 -3
  10. package/dist/config.d.ts.map +1 -0
  11. package/dist/config.js +19 -27
  12. package/dist/config.js.map +1 -0
  13. package/dist/crypto.d.ts +1 -0
  14. package/dist/crypto.d.ts.map +1 -0
  15. package/dist/crypto.js +7 -3
  16. package/dist/crypto.js.map +1 -0
  17. package/dist/dom-noise-removal.d.ts +2 -1
  18. package/dist/dom-noise-removal.d.ts.map +1 -0
  19. package/dist/dom-noise-removal.js +9 -6
  20. package/dist/dom-noise-removal.js.map +1 -0
  21. package/dist/download.d.ts +4 -0
  22. package/dist/download.d.ts.map +1 -0
  23. package/dist/download.js +106 -0
  24. package/dist/download.js.map +1 -0
  25. package/dist/errors.d.ts +1 -0
  26. package/dist/errors.d.ts.map +1 -0
  27. package/dist/errors.js +2 -1
  28. package/dist/errors.js.map +1 -0
  29. package/dist/examples/mcp-fetch-url-client.js +19 -3
  30. package/dist/examples/mcp-fetch-url-client.js.map +1 -1
  31. package/dist/fetch-content.d.ts +1 -0
  32. package/dist/fetch-content.d.ts.map +1 -0
  33. package/dist/fetch-content.js +15 -14
  34. package/dist/fetch-content.js.map +1 -0
  35. package/dist/fetch-stream.d.ts +1 -0
  36. package/dist/fetch-stream.d.ts.map +1 -0
  37. package/dist/fetch-stream.js +1 -0
  38. package/dist/fetch-stream.js.map +1 -0
  39. package/dist/fetch.d.ts +1 -0
  40. package/dist/fetch.d.ts.map +1 -0
  41. package/dist/fetch.js +123 -54
  42. package/dist/fetch.js.map +1 -0
  43. package/dist/host-normalization.d.ts +1 -0
  44. package/dist/host-normalization.d.ts.map +1 -0
  45. package/dist/host-normalization.js +22 -9
  46. package/dist/host-normalization.js.map +1 -0
  47. package/dist/http/auth.d.ts +51 -0
  48. package/dist/http/auth.d.ts.map +1 -0
  49. package/dist/http/auth.js +344 -0
  50. package/dist/http/auth.js.map +1 -0
  51. package/dist/http/health.d.ts +7 -0
  52. package/dist/http/health.d.ts.map +1 -0
  53. package/dist/http/health.js +156 -0
  54. package/dist/http/health.js.map +1 -0
  55. package/dist/http/helpers.d.ts +58 -0
  56. package/dist/http/helpers.d.ts.map +1 -0
  57. package/dist/http/helpers.js +370 -0
  58. package/dist/http/helpers.js.map +1 -0
  59. package/dist/{http-native.d.ts → http/native.d.ts} +1 -0
  60. package/dist/http/native.d.ts.map +1 -0
  61. package/dist/http/native.js +618 -0
  62. package/dist/http/native.js.map +1 -0
  63. package/dist/http/rate-limit.d.ts +13 -0
  64. package/dist/http/rate-limit.d.ts.map +1 -0
  65. package/dist/http/rate-limit.js +92 -0
  66. package/dist/http/rate-limit.js.map +1 -0
  67. package/dist/index.d.ts +1 -0
  68. package/dist/index.d.ts.map +1 -0
  69. package/dist/index.js +20 -14
  70. package/dist/index.js.map +1 -0
  71. package/dist/instructions.d.ts +2 -0
  72. package/dist/instructions.d.ts.map +1 -0
  73. package/dist/instructions.js +41 -0
  74. package/dist/instructions.js.map +1 -0
  75. package/dist/ip-blocklist.d.ts +1 -0
  76. package/dist/ip-blocklist.d.ts.map +1 -0
  77. package/dist/ip-blocklist.js +13 -8
  78. package/dist/ip-blocklist.js.map +1 -0
  79. package/dist/json.d.ts +2 -1
  80. package/dist/json.d.ts.map +1 -0
  81. package/dist/json.js +16 -6
  82. package/dist/json.js.map +1 -0
  83. package/dist/language-detection.d.ts +1 -0
  84. package/dist/language-detection.d.ts.map +1 -0
  85. package/dist/language-detection.js +2 -7
  86. package/dist/language-detection.js.map +1 -0
  87. package/dist/markdown-cleanup.d.ts +2 -1
  88. package/dist/markdown-cleanup.d.ts.map +1 -0
  89. package/dist/markdown-cleanup.js +52 -54
  90. package/dist/markdown-cleanup.js.map +1 -0
  91. package/dist/mcp-validator.d.ts +1 -0
  92. package/dist/mcp-validator.d.ts.map +1 -0
  93. package/dist/mcp-validator.js +20 -18
  94. package/dist/mcp-validator.js.map +1 -0
  95. package/dist/mcp.d.ts +2 -2
  96. package/dist/mcp.d.ts.map +1 -0
  97. package/dist/mcp.js +35 -344
  98. package/dist/mcp.js.map +1 -0
  99. package/dist/observability.d.ts +2 -0
  100. package/dist/observability.d.ts.map +1 -0
  101. package/dist/observability.js +32 -6
  102. package/dist/observability.js.map +1 -0
  103. package/dist/prompts.d.ts +1 -0
  104. package/dist/prompts.d.ts.map +1 -0
  105. package/dist/prompts.js +15 -3
  106. package/dist/prompts.js.map +1 -0
  107. package/dist/resources.d.ts +1 -0
  108. package/dist/resources.d.ts.map +1 -0
  109. package/dist/resources.js +46 -25
  110. package/dist/resources.js.map +1 -0
  111. package/dist/server-tuning.d.ts +1 -0
  112. package/dist/server-tuning.d.ts.map +1 -0
  113. package/dist/server-tuning.js +14 -17
  114. package/dist/server-tuning.js.map +1 -0
  115. package/dist/server.d.ts +1 -0
  116. package/dist/server.d.ts.map +1 -0
  117. package/dist/server.js +29 -35
  118. package/dist/server.js.map +1 -0
  119. package/dist/session.d.ts +2 -0
  120. package/dist/session.d.ts.map +1 -0
  121. package/dist/session.js +58 -29
  122. package/dist/session.js.map +1 -0
  123. package/dist/tasks/execution.d.ts +42 -0
  124. package/dist/tasks/execution.d.ts.map +1 -0
  125. package/dist/tasks/execution.js +241 -0
  126. package/dist/tasks/execution.js.map +1 -0
  127. package/dist/{tasks.d.ts → tasks/manager.d.ts} +12 -0
  128. package/dist/tasks/manager.d.ts.map +1 -0
  129. package/dist/{tasks.js → tasks/manager.js} +95 -43
  130. package/dist/tasks/manager.js.map +1 -0
  131. package/dist/tasks/owner.d.ts +32 -0
  132. package/dist/tasks/owner.d.ts.map +1 -0
  133. package/dist/tasks/owner.js +92 -0
  134. package/dist/tasks/owner.js.map +1 -0
  135. package/dist/timer-utils.d.ts +1 -0
  136. package/dist/timer-utils.d.ts.map +1 -0
  137. package/dist/timer-utils.js +8 -4
  138. package/dist/timer-utils.js.map +1 -0
  139. package/dist/tool-errors.d.ts +12 -0
  140. package/dist/tool-errors.d.ts.map +1 -0
  141. package/dist/tool-errors.js +55 -0
  142. package/dist/tool-errors.js.map +1 -0
  143. package/dist/tool-pipeline.d.ts +72 -0
  144. package/dist/tool-pipeline.d.ts.map +1 -0
  145. package/dist/tool-pipeline.js +408 -0
  146. package/dist/tool-pipeline.js.map +1 -0
  147. package/dist/tool-progress.d.ts +32 -0
  148. package/dist/tool-progress.d.ts.map +1 -0
  149. package/dist/tool-progress.js +129 -0
  150. package/dist/tool-progress.js.map +1 -0
  151. package/dist/tools.d.ts +35 -111
  152. package/dist/tools.d.ts.map +1 -0
  153. package/dist/tools.js +150 -610
  154. package/dist/tools.js.map +1 -0
  155. package/dist/{transform.d.ts → transform/transform.d.ts} +2 -1
  156. package/dist/transform/transform.d.ts.map +1 -0
  157. package/dist/{transform.js → transform/transform.js} +81 -771
  158. package/dist/transform/transform.js.map +1 -0
  159. package/dist/{transform-types.d.ts → transform/types.d.ts} +2 -0
  160. package/dist/transform/types.d.ts.map +1 -0
  161. package/dist/{transform-types.js → transform/types.js} +1 -0
  162. package/dist/transform/types.js.map +1 -0
  163. package/dist/transform/worker-pool.d.ts +93 -0
  164. package/dist/transform/worker-pool.d.ts.map +1 -0
  165. package/dist/transform/worker-pool.js +757 -0
  166. package/dist/transform/worker-pool.js.map +1 -0
  167. package/dist/transform/workers/transform-child.d.ts +2 -0
  168. package/dist/transform/workers/transform-child.d.ts.map +1 -0
  169. package/dist/{workers → transform/workers}/transform-child.js +17 -13
  170. package/dist/transform/workers/transform-child.js.map +1 -0
  171. package/dist/transform/workers/transform-worker.d.ts +2 -0
  172. package/dist/transform/workers/transform-worker.d.ts.map +1 -0
  173. package/dist/{workers → transform/workers}/transform-worker.js +16 -13
  174. package/dist/transform/workers/transform-worker.js.map +1 -0
  175. package/dist/type-guards.d.ts +1 -0
  176. package/dist/type-guards.d.ts.map +1 -0
  177. package/dist/type-guards.js +4 -4
  178. package/dist/type-guards.js.map +1 -0
  179. package/package.json +6 -7
  180. package/dist/AGENTS.md +0 -152
  181. package/dist/http-native.js +0 -1320
  182. package/dist/instructions.md +0 -113
  183. package/dist/workers/transform-child.d.ts +0 -1
  184. package/dist/workers/transform-worker.d.ts +0 -1
@@ -45,7 +45,8 @@ function getRequestContext() {
45
45
  return requestContext.getStore();
46
46
  }
47
47
  export function getRequestId() {
48
- return getRequestContext()?.requestId;
48
+ const context = getRequestContext();
49
+ return context?.requestId;
49
50
  }
50
51
  function getSessionId() {
51
52
  return getRequestContext()?.sessionId;
@@ -108,12 +109,14 @@ function formatLogEntry(level, message, meta) {
108
109
  }
109
110
  return `[${createTimestamp()}] ${level.toUpperCase()}: ${message}${formatMetadata(meta)}`;
110
111
  }
112
+ const LEVEL_PRIORITY = {
113
+ debug: 0,
114
+ info: 1,
115
+ warn: 2,
116
+ error: 3,
117
+ };
111
118
  function shouldLog(level) {
112
- // Debug logs only when LOG_LEVEL=debug
113
- if (level === 'debug')
114
- return isDebugEnabled();
115
- // All other levels always log
116
- return true;
119
+ return LEVEL_PRIORITY[level] >= LEVEL_PRIORITY[config.logging.level];
117
120
  }
118
121
  function mapToMcpLevel(level) {
119
122
  switch (level) {
@@ -161,10 +164,13 @@ function writeLog(level, message, meta) {
161
164
  : mcpServer;
162
165
  if (!server)
163
166
  return;
167
+ if (!server.isConnected())
168
+ return;
164
169
  try {
165
170
  server.server
166
171
  .sendLoggingMessage({
167
172
  level: mapToMcpLevel(level),
173
+ logger: 'fetch-url-mcp',
168
174
  // Preserve existing behavior: MCP payload includes only message + provided meta (not ALS context meta).
169
175
  data: meta ? { message, ...meta } : message,
170
176
  }, sessionId)
@@ -197,6 +203,25 @@ export function logError(message, error) {
197
203
  : (error ?? {});
198
204
  writeLog('error', message, errorMeta);
199
205
  }
206
+ export function setLogLevel(level) {
207
+ const normalized = level.toLowerCase();
208
+ // Map MCP logging levels (RFC 5424 subset) to internal levels.
209
+ if (normalized === 'debug') {
210
+ config.logging.level = 'debug';
211
+ }
212
+ else if (normalized === 'info' || normalized === 'notice') {
213
+ config.logging.level = 'info';
214
+ }
215
+ else if (normalized === 'warning' || normalized === 'warn') {
216
+ config.logging.level = 'warn';
217
+ }
218
+ else if (normalized === 'error' ||
219
+ normalized === 'critical' ||
220
+ normalized === 'alert' ||
221
+ normalized === 'emergency') {
222
+ config.logging.level = 'error';
223
+ }
224
+ }
200
225
  export function redactUrl(rawUrl) {
201
226
  try {
202
227
  const url = new URL(rawUrl);
@@ -210,3 +235,4 @@ export function redactUrl(rawUrl) {
210
235
  return rawUrl;
211
236
  }
212
237
  }
238
+ //# sourceMappingURL=observability.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observability.js","sourceRoot":"","sources":["../src/observability.ts"],"names":[],"mappings":"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"}
package/dist/prompts.d.ts CHANGED
@@ -5,3 +5,4 @@ interface IconInfo {
5
5
  }
6
6
  export declare function registerGetHelpPrompt(server: McpServer, instructions: string, iconInfo?: IconInfo): void;
7
7
  export {};
8
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AAiBD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,QAAQ,GAClB,IAAI,CAwBN"}
package/dist/prompts.js CHANGED
@@ -1,10 +1,21 @@
1
+ function buildOptionalPromptIcons(iconInfo) {
2
+ return iconInfo
3
+ ? {
4
+ icons: [
5
+ {
6
+ src: iconInfo.src,
7
+ mimeType: iconInfo.mimeType,
8
+ },
9
+ ],
10
+ }
11
+ : {};
12
+ }
1
13
  export function registerGetHelpPrompt(server, instructions, iconInfo) {
2
- const description = 'Return the Fetch URL usage instructions.';
3
- const iconConfig = iconInfo ? { icons: [{ ...iconInfo }] } : {};
14
+ const description = 'Return Fetch URL server instructions: workflows, cache usage, task mode, and error handling.';
4
15
  server.registerPrompt('get-help', {
5
16
  title: 'Get Help',
6
17
  description,
7
- ...iconConfig,
18
+ ...buildOptionalPromptIcons(iconInfo),
8
19
  }, () => ({
9
20
  description,
10
21
  messages: [
@@ -18,3 +29,4 @@ export function registerGetHelpPrompt(server, instructions, iconInfo) {
18
29
  ],
19
30
  }));
20
31
  }
32
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.js","sourceRoot":"","sources":["../src/prompts.ts"],"names":[],"mappings":"AAQA,SAAS,wBAAwB,CAC/B,QAAmB;IAEnB,OAAO,QAAQ;QACb,CAAC,CAAC;YACE,KAAK,EAAE;gBACL;oBACE,GAAG,EAAE,QAAQ,CAAC,GAAG;oBACjB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;iBAC5B;aACF;SACF;QACH,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,MAAiB,EACjB,YAAoB,EACpB,QAAmB;IAEnB,MAAM,WAAW,GACf,8FAA8F,CAAC;IAEjG,MAAM,CAAC,cAAc,CACnB,UAAU,EACV;QACE,KAAK,EAAE,UAAU;QACjB,WAAW;QACX,GAAG,wBAAwB,CAAC,QAAQ,CAAC;KACtC,EACD,GAAoB,EAAE,CAAC,CAAC;QACtB,WAAW;QACX,QAAQ,EAAE;YACR;gBACE,IAAI,EAAE,MAAM;gBACZ,OAAO,EAAE;oBACP,IAAI,EAAE,MAAM;oBACZ,IAAI,EAAE,YAAY;iBACnB;aACF;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}
@@ -6,3 +6,4 @@ interface IconInfo {
6
6
  export declare function registerInstructionResource(server: McpServer, instructions: string, iconInfo?: IconInfo): void;
7
7
  export declare function registerCacheResourceTemplate(server: McpServer, iconInfo?: IconInfo): void;
8
8
  export {};
9
+ //# sourceMappingURL=resources.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,SAAS,EAEf,MAAM,yCAAyC,CAAC;AAqBjD,UAAU,QAAQ;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;CAClB;AA8VD,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,QAAQ,GAClB,IAAI,CAwBN;AAED,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,SAAS,EACjB,QAAQ,CAAC,EAAE,QAAQ,GAClB,IAAI,CA4BN"}
package/dist/resources.js CHANGED
@@ -1,14 +1,28 @@
1
1
  import { ResourceTemplate, } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  import { ErrorCode, McpError, SubscribeRequestSchema, UnsubscribeRequestSchema, } from '@modelcontextprotocol/sdk/types.js';
3
- import { get as getCacheEntry, keys as listCacheKeys, onCacheUpdate, parseCachedPayload, parseCacheKey, resolveCachedPayloadContent, } from './cache.js';
3
+ import { get as getCacheEntry, getEntryMeta, keys as listCacheKeys, onCacheUpdate, parseCachedPayload, parseCacheKey, resolveCachedPayloadContent, } from './cache.js';
4
4
  import { logWarn } from './observability.js';
5
5
  import { isObject } from './type-guards.js';
6
6
  const CACHE_RESOURCE_TEMPLATE_URI = 'internal://cache/{namespace}/{hash}';
7
7
  const CACHE_RESOURCE_PREFIX = 'internal://cache/';
8
8
  const CACHE_NAMESPACE_PATTERN = /^[a-z0-9_-]{1,64}$/i;
9
9
  const CACHE_HASH_PATTERN = /^[a-f0-9.]{8,64}$/i;
10
+ // -32002 is the MCP extension code for resource-not-found. The SDK ErrorCode enum
11
+ // does not export this value, so it is defined locally.
10
12
  const RESOURCE_NOT_FOUND_ERROR_CODE = -32002;
11
13
  const MAX_COMPLETION_VALUES = 100;
14
+ function buildOptionalIcons(iconInfo) {
15
+ if (!iconInfo)
16
+ return {};
17
+ return {
18
+ icons: [
19
+ {
20
+ src: iconInfo.src,
21
+ mimeType: iconInfo.mimeType,
22
+ },
23
+ ],
24
+ };
25
+ }
12
26
  function isValidCacheResourceParts(parts) {
13
27
  return (CACHE_NAMESPACE_PATTERN.test(parts.namespace) &&
14
28
  CACHE_HASH_PATTERN.test(parts.hash));
@@ -115,10 +129,14 @@ function listCacheResources() {
115
129
  namespace: parts.namespace,
116
130
  hash: parts.urlHash,
117
131
  };
132
+ const cacheKey = `${parts.namespace}:${parts.urlHash}`;
133
+ const meta = getEntryMeta(cacheKey);
134
+ if (!meta)
135
+ return null; // expired between keys() and meta read — skip
118
136
  return {
119
137
  uri: toCacheResourceUri(cacheParts),
120
138
  name: `${parts.namespace}:${parts.urlHash}`,
121
- title: 'Cached Markdown',
139
+ title: meta.title ?? 'Cached Markdown',
122
140
  description: 'Cached markdown output generated by fetch-url',
123
141
  mimeType: 'text/markdown',
124
142
  annotations: {
@@ -126,7 +144,8 @@ function listCacheResources() {
126
144
  priority: 0.6,
127
145
  },
128
146
  };
129
- });
147
+ })
148
+ .filter((r) => r !== null);
130
149
  return { resources };
131
150
  }
132
151
  function normalizeSubscriptionUri(uri) {
@@ -141,12 +160,21 @@ function normalizeSubscriptionUri(uri) {
141
160
  }
142
161
  function registerCacheResourceNotifications(server) {
143
162
  const subscribedResourceUris = new Set();
163
+ const setSubscription = (uri, subscribed) => {
164
+ const normalized = normalizeSubscriptionUri(uri);
165
+ if (subscribed) {
166
+ subscribedResourceUris.add(normalized);
167
+ }
168
+ else {
169
+ subscribedResourceUris.delete(normalized);
170
+ }
171
+ };
144
172
  server.server.setRequestHandler(SubscribeRequestSchema, async (request) => {
145
- subscribedResourceUris.add(normalizeSubscriptionUri(request.params.uri));
173
+ setSubscription(request.params.uri, true);
146
174
  return Promise.resolve({});
147
175
  });
148
176
  server.server.setRequestHandler(UnsubscribeRequestSchema, async (request) => {
149
- subscribedResourceUris.delete(normalizeSubscriptionUri(request.params.uri));
177
+ setSubscription(request.params.uri, false);
150
178
  return Promise.resolve({});
151
179
  });
152
180
  const unsubscribe = onCacheUpdate((event) => {
@@ -182,11 +210,21 @@ function registerCacheResourceNotifications(server) {
182
210
  cleanedUp = true;
183
211
  unsubscribe();
184
212
  };
213
+ // Both patches are intentional and handle distinct disconnection scenarios:
214
+ // • `server.server.onclose` fires when the transport closes unexpectedly
215
+ // (e.g., client drops the connection) — the SDK calls it directly from
216
+ // `_onclose()` without going through `server.close()`.
217
+ // • `server.close()` fires when the application shuts the server down
218
+ // gracefully. The `server.close()` path also eventually triggers `onclose`,
219
+ // so the `cleanedUp` guard below prevents double-invocation.
185
220
  const originalOnClose = server.server.onclose;
186
221
  server.server.onclose = () => {
187
222
  cleanup();
188
223
  originalOnClose?.();
189
224
  };
225
+ // FIXME: Monkey-patching server.close is fragile if other modules wrap it.
226
+ // A proper fix requires a first-class lifecycle hook or cleanup registration API
227
+ // in the SDK. Until then, the cleanedUp guard prevents double-invocation.
190
228
  const originalClose = server.close.bind(server);
191
229
  server.close = async () => {
192
230
  cleanup();
@@ -248,16 +286,7 @@ export function registerInstructionResource(server, instructions, iconInfo) {
248
286
  audience: ['assistant'],
249
287
  priority: 0.9,
250
288
  },
251
- ...(iconInfo
252
- ? {
253
- icons: [
254
- {
255
- src: iconInfo.src,
256
- mimeType: iconInfo.mimeType,
257
- },
258
- ],
259
- }
260
- : {}),
289
+ ...buildOptionalIcons(iconInfo),
261
290
  }, (uri) => ({
262
291
  contents: [
263
292
  {
@@ -284,16 +313,8 @@ export function registerCacheResourceTemplate(server, iconInfo) {
284
313
  audience: ['assistant'],
285
314
  priority: 0.6,
286
315
  },
287
- ...(iconInfo
288
- ? {
289
- icons: [
290
- {
291
- src: iconInfo.src,
292
- mimeType: iconInfo.mimeType,
293
- },
294
- ],
295
- }
296
- : {}),
316
+ ...buildOptionalIcons(iconInfo),
297
317
  }, (uri, variables) => readCacheResource(uri, normalizeTemplateVariables(variables)));
298
318
  registerCacheResourceNotifications(server);
299
319
  }
320
+ //# sourceMappingURL=resources.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../src/resources.ts"],"names":[],"mappings":"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"}
@@ -12,3 +12,4 @@ interface HttpServerTuningTarget {
12
12
  export declare function applyHttpServerTuning(server: HttpServerTuningTarget): void;
13
13
  export declare function drainConnectionsOnShutdown(server: HttpServerTuningTarget): void;
14
14
  export {};
15
+ //# sourceMappingURL=server-tuning.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-tuning.d.ts","sourceRoot":"","sources":["../src/server-tuning.ts"],"names":[],"mappings":"AAGA,UAAU,sBAAsB;IAC9B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,EAAE,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,IAAI,KAAK,IAAI,CAAC;IACrE,oBAAoB,CAAC,EAAE,MAAM,IAAI,CAAC;IAClC,mBAAmB,CAAC,EAAE,MAAM,IAAI,CAAC;CAClC;AAsBD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAyC1E;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,sBAAsB,GAC7B,IAAI,CAKN"}
@@ -6,29 +6,24 @@ function setIfDefined(value, setter) {
6
6
  return;
7
7
  setter(value);
8
8
  }
9
+ function assignServerValue(server, key, value) {
10
+ setIfDefined(value, (resolved) => {
11
+ server[key] = resolved;
12
+ });
13
+ }
9
14
  export function applyHttpServerTuning(server) {
10
15
  const { headersTimeoutMs, requestTimeoutMs, keepAliveTimeoutMs, keepAliveTimeoutBufferMs, maxHeadersCount, maxConnections, } = config.server.http;
11
- setIfDefined(headersTimeoutMs, (value) => {
12
- server.headersTimeout = value;
13
- });
14
- setIfDefined(requestTimeoutMs, (value) => {
15
- server.requestTimeout = value;
16
- });
17
- setIfDefined(keepAliveTimeoutMs, (value) => {
18
- server.keepAliveTimeout = value;
19
- });
20
- setIfDefined(keepAliveTimeoutBufferMs, (value) => {
21
- server.keepAliveTimeoutBuffer = value;
22
- });
23
- setIfDefined(maxHeadersCount, (value) => {
24
- server.maxHeadersCount = value;
25
- });
16
+ assignServerValue(server, 'headersTimeout', headersTimeoutMs);
17
+ assignServerValue(server, 'requestTimeout', requestTimeoutMs);
18
+ assignServerValue(server, 'keepAliveTimeout', keepAliveTimeoutMs);
19
+ assignServerValue(server, 'keepAliveTimeoutBuffer', keepAliveTimeoutBufferMs);
20
+ assignServerValue(server, 'maxHeadersCount', maxHeadersCount);
26
21
  if (typeof maxConnections === 'number' && maxConnections > 0) {
27
22
  server.maxConnections = maxConnections;
28
23
  if (typeof server.on === 'function') {
29
24
  let lastLoggedAt = 0;
30
25
  let droppedSinceLastLog = 0;
31
- server.on('drop', (data) => {
26
+ const onDrop = (data) => {
32
27
  droppedSinceLastLog += 1;
33
28
  const now = Date.now();
34
29
  if (now - lastLoggedAt < DROP_LOG_INTERVAL_MS)
@@ -40,7 +35,8 @@ export function applyHttpServerTuning(server) {
40
35
  });
41
36
  lastLoggedAt = now;
42
37
  droppedSinceLastLog = 0;
43
- });
38
+ };
39
+ server.on('drop', onDrop);
44
40
  }
45
41
  }
46
42
  }
@@ -50,3 +46,4 @@ export function drainConnectionsOnShutdown(server) {
50
46
  logDebug('Closed idle HTTP connections during shutdown');
51
47
  }
52
48
  }
49
+ //# sourceMappingURL=server-tuning.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server-tuning.js","sourceRoot":"","sources":["../src/server-tuning.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAcvD,MAAM,oBAAoB,GAAG,MAAM,CAAC;AAEpC,SAAS,YAAY,CACnB,KAAoB,EACpB,MAA6B;IAE7B,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO;IAChC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CACxB,MAA8B,EAC9B,GAAM,EACN,KAA4C;IAE5C,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;QAC/B,MAAM,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC;IACzB,CAAC,CAAC,CAAC;AACL,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,MAA8B;IAClE,MAAM,EACJ,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,cAAc,GACf,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IAEvB,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAC9D,iBAAiB,CAAC,MAAM,EAAE,gBAAgB,EAAE,gBAAgB,CAAC,CAAC;IAC9D,iBAAiB,CAAC,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAC;IAClE,iBAAiB,CAAC,MAAM,EAAE,wBAAwB,EAAE,wBAAwB,CAAC,CAAC;IAC9E,iBAAiB,CAAC,MAAM,EAAE,iBAAiB,EAAE,eAAe,CAAC,CAAC;IAE9D,IAAI,OAAO,cAAc,KAAK,QAAQ,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;QAC7D,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;QAEvC,IAAI,OAAO,MAAM,CAAC,EAAE,KAAK,UAAU,EAAE,CAAC;YACpC,IAAI,YAAY,GAAG,CAAC,CAAC;YACrB,IAAI,mBAAmB,GAAG,CAAC,CAAC;YAE5B,MAAM,MAAM,GAAG,CAAC,IAAa,EAAQ,EAAE;gBACrC,mBAAmB,IAAI,CAAC,CAAC;gBACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACvB,IAAI,GAAG,GAAG,YAAY,GAAG,oBAAoB;oBAAE,OAAO;gBAEtD,OAAO,CAAC,sDAAsD,EAAE;oBAC9D,cAAc;oBACd,OAAO,EAAE,mBAAmB;oBAC5B,IAAI;iBACL,CAAC,CAAC;gBAEH,YAAY,GAAG,GAAG,CAAC;gBACnB,mBAAmB,GAAG,CAAC,CAAC;YAC1B,CAAC,CAAC;YAEF,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,UAAU,0BAA0B,CACxC,MAA8B;IAE9B,IAAI,OAAO,MAAM,CAAC,oBAAoB,KAAK,UAAU,EAAE,CAAC;QACtD,MAAM,CAAC,oBAAoB,EAAE,CAAC;QAC9B,QAAQ,CAAC,8CAA8C,CAAC,CAAC;IAC3D,CAAC;AACH,CAAC"}
package/dist/server.d.ts CHANGED
@@ -2,3 +2,4 @@ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
2
  export declare function createMcpServer(): Promise<McpServer>;
3
3
  export declare function createMcpServerForHttpSession(): Promise<McpServer>;
4
4
  export declare function startStdioServer(): Promise<void>;
5
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAsGpE,wBAAsB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,CAE1D;AAoCD,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,SAAS,CAAC,CAExE;AAyFD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAMtD"}
package/dist/server.js CHANGED
@@ -1,18 +1,16 @@
1
- import * as fs from 'node:fs/promises';
2
- import * as path from 'node:path';
3
- import process from 'node:process';
4
- import { fileURLToPath } from 'node:url';
5
- import { InMemoryTaskMessageQueue, InMemoryTaskStore, } from '@modelcontextprotocol/sdk/experimental/tasks/stores/in-memory.js';
6
1
  import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
7
2
  import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
3
+ import * as fs from 'node:fs/promises';
4
+ import process from 'node:process';
5
+ import { z } from 'zod';
8
6
  import { config } from './config.js';
9
- import { getErrorMessage } from './errors.js';
7
+ import { buildServerInstructions } from './instructions.js';
10
8
  import { abortAllTaskExecutions, registerTaskHandlers } from './mcp.js';
11
- import { logError, logInfo, setMcpServer } from './observability.js';
9
+ import { logError, logInfo, setLogLevel, setMcpServer, } from './observability.js';
12
10
  import { registerGetHelpPrompt } from './prompts.js';
13
11
  import { registerCacheResourceTemplate, registerInstructionResource, } from './resources.js';
14
12
  import { registerTools } from './tools.js';
15
- import { shutdownTransformWorkerPool } from './transform.js';
13
+ import { shutdownTransformWorkerPool } from './transform/transform.js';
16
14
  async function getLocalIconInfo() {
17
15
  const name = 'logo.svg';
18
16
  const mime = 'image/svg+xml';
@@ -28,17 +26,7 @@ async function getLocalIconInfo() {
28
26
  return undefined;
29
27
  }
30
28
  }
31
- const currentDir = path.dirname(fileURLToPath(import.meta.url));
32
- let serverInstructions = `
33
- Fetch URL MCP Instructions
34
- (Detailed instructions failed to load - check logs)
35
- `;
36
- try {
37
- serverInstructions = await fs.readFile(path.join(currentDir, 'instructions.md'), 'utf-8');
38
- }
39
- catch (error) {
40
- console.error('[WARNING] Failed to load instructions.md:', getErrorMessage(error));
41
- }
29
+ const serverInstructions = buildServerInstructions();
42
30
  function createServerCapabilities() {
43
31
  return {
44
32
  logging: {},
@@ -70,9 +58,6 @@ function createServerInfo(icons) {
70
58
  ...(icons ? { icons } : {}),
71
59
  };
72
60
  }
73
- function toIconList(icon) {
74
- return icon ? [icon] : undefined;
75
- }
76
61
  /* -------------------------------------------------------------------------------------------------
77
62
  * Server lifecycle
78
63
  * ------------------------------------------------------------------------------------------------- */
@@ -81,17 +66,13 @@ export async function createMcpServer() {
81
66
  }
82
67
  async function createMcpServerWithOptions(options) {
83
68
  const localIcon = await getLocalIconInfo();
84
- const taskStore = new InMemoryTaskStore();
85
- const taskMessageQueue = new InMemoryTaskMessageQueue();
86
69
  const serverConfig = {
87
70
  capabilities: createServerCapabilities(),
88
- taskStore,
89
- taskMessageQueue,
90
71
  };
91
72
  if (serverInstructions) {
92
73
  serverConfig.instructions = serverInstructions;
93
74
  }
94
- const serverInfo = createServerInfo(toIconList(localIcon));
75
+ const serverInfo = createServerInfo(localIcon ? [localIcon] : undefined);
95
76
  const server = new McpServer(serverInfo, serverConfig);
96
77
  if (options?.registerObservabilityServer ?? true) {
97
78
  setMcpServer(server);
@@ -101,11 +82,25 @@ async function createMcpServerWithOptions(options) {
101
82
  registerInstructionResource(server, serverInstructions, localIcon);
102
83
  registerCacheResourceTemplate(server, localIcon);
103
84
  registerTaskHandlers(server);
85
+ registerLoggingSetLevelHandler(server);
86
+ attachServerErrorHandler(server);
104
87
  return server;
105
88
  }
106
89
  export async function createMcpServerForHttpSession() {
107
90
  return createMcpServerWithOptions({ registerObservabilityServer: false });
108
91
  }
92
+ function registerLoggingSetLevelHandler(server) {
93
+ const SetLevelRequestSchema = z
94
+ .object({
95
+ method: z.literal('logging/setLevel'),
96
+ params: z.object({ level: z.string() }).loose(),
97
+ })
98
+ .loose();
99
+ server.server.setRequestHandler(SetLevelRequestSchema, async (request) => {
100
+ setLogLevel(request.params.level);
101
+ return Promise.resolve({});
102
+ });
103
+ }
109
104
  function attachServerErrorHandler(server) {
110
105
  server.server.onerror = (error) => {
111
106
  logError('[MCP Error]', error instanceof Error ? error : { error });
@@ -145,12 +140,11 @@ function createShutdownHandler(server) {
145
140
  };
146
141
  }
147
142
  function registerSignalHandlers(handler) {
148
- process.once('SIGINT', () => {
149
- handler('SIGINT');
150
- });
151
- process.once('SIGTERM', () => {
152
- handler('SIGTERM');
153
- });
143
+ for (const signal of ['SIGINT', 'SIGTERM']) {
144
+ process.once(signal, () => {
145
+ handler(signal);
146
+ });
147
+ }
154
148
  }
155
149
  async function connectStdioServer(server, transport) {
156
150
  try {
@@ -160,14 +154,14 @@ async function connectStdioServer(server, transport) {
160
154
  catch (error) {
161
155
  const err = error instanceof Error ? error : new Error(String(error));
162
156
  throw new Error(`Failed to start stdio server: ${err.message}`, {
163
- cause: err,
157
+ cause: error,
164
158
  });
165
159
  }
166
160
  }
167
161
  export async function startStdioServer() {
168
162
  const server = await createMcpServer();
169
163
  const transport = new StdioServerTransport();
170
- attachServerErrorHandler(server);
171
164
  registerSignalHandlers(createShutdownHandler(server));
172
165
  await connectStdioServer(server, transport);
173
166
  }
167
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
package/dist/session.d.ts CHANGED
@@ -6,6 +6,7 @@ export interface SessionEntry {
6
6
  createdAt: number;
7
7
  lastSeen: number;
8
8
  protocolInitialized: boolean;
9
+ negotiatedProtocolVersion: string;
9
10
  authFingerprint: string;
10
11
  }
11
12
  export interface SessionStore {
@@ -38,3 +39,4 @@ export declare function ensureSessionCapacity({ store, maxSessions, evictOldest,
38
39
  evictOldest: (store: SessionStore) => boolean;
39
40
  }): boolean;
40
41
  export {};
42
+ //# sourceMappingURL=session.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AAUxG,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,6BAA6B,CAAC;IAClD,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,yBAAyB,EAAE,MAAM,CAAC;IAClC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;IACrD,KAAK,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,GAAG,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,KAAK,IAAI,CAAC;IACtD,MAAM,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,YAAY,GAAG,SAAS,CAAC;IACxD,IAAI,EAAE,MAAM,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,IAAI,CAAC;IAC9B,KAAK,EAAE,MAAM,YAAY,EAAE,CAAC;IAC5B,YAAY,EAAE,MAAM,YAAY,EAAE,CAAC;IACnC,WAAW,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC;CAC7C;AAED,UAAU,WAAW;IACnB,QAAQ,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC;IACjC,QAAQ,CAAC,eAAe,EAAE,MAAM,IAAI,CAAC;IACrC,QAAQ,CAAC,aAAa,EAAE,MAAM,OAAO,CAAC;CACvC;AAED,KAAK,YAAY,GAAG,CAAC,MAAM,IAAI,CAAC,GAAG,SAAS,CAAC;AAE7C,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,YAAY,EACnB,MAAM,EAAE,YAAY,GACnB,YAAY,CAWd;AA4ID,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,YAAY,EACnB,YAAY,EAAE,MAAM,GACnB,eAAe,CAEjB;AAmGD,wBAAgB,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAErE;AAuBD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,YAAY,GAAG,WAAW,CAElE;AAMD,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAMT;AAMD,wBAAgB,qBAAqB,CAAC,EACpC,KAAK,EACL,WAAW,EACX,WAAW,GACZ,EAAE;IACD,KAAK,EAAE,YAAY,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,OAAO,CAAC;CAC/C,GAAG,OAAO,CAeV"}