@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
@@ -0,0 +1,370 @@
1
+ import { Buffer } from 'node:buffer';
2
+ import { Writable } from 'node:stream';
3
+ import { pipeline } from 'node:stream/promises';
4
+ import { config } from '../config.js';
5
+ import { createDefaultBlockList, normalizeIpForBlockList, } from '../ip-blocklist.js';
6
+ import { logWarn } from '../observability.js';
7
+ import { composeCloseHandlers } from '../session.js';
8
+ // ---------------------------------------------------------------------------
9
+ // Response helpers
10
+ // ---------------------------------------------------------------------------
11
+ export function setNoStoreHeaders(res) {
12
+ res.setHeader('X-Content-Type-Options', 'nosniff');
13
+ res.setHeader('Cache-Control', 'no-store');
14
+ }
15
+ export function sendJson(res, status, body) {
16
+ res.statusCode = status;
17
+ res.setHeader('Content-Type', 'application/json; charset=utf-8');
18
+ setNoStoreHeaders(res);
19
+ res.end(JSON.stringify(body));
20
+ }
21
+ export function sendText(res, status, body) {
22
+ res.statusCode = status;
23
+ res.setHeader('Content-Type', 'text/plain; charset=utf-8');
24
+ setNoStoreHeaders(res);
25
+ res.end(body);
26
+ }
27
+ export function sendEmpty(res, status) {
28
+ res.statusCode = status;
29
+ res.setHeader('Content-Length', '0');
30
+ res.end();
31
+ }
32
+ export function sendError(res, code, message, status = 400, id = null) {
33
+ sendJson(res, status, {
34
+ jsonrpc: '2.0',
35
+ error: { code, message },
36
+ id,
37
+ });
38
+ }
39
+ // ---------------------------------------------------------------------------
40
+ // Request helpers
41
+ // ---------------------------------------------------------------------------
42
+ export function getHeaderValue(req, name) {
43
+ const val = req.headers[name];
44
+ if (!val)
45
+ return null;
46
+ return Array.isArray(val) ? (val[0] ?? null) : val;
47
+ }
48
+ export function getMcpSessionId(req) {
49
+ return (getHeaderValue(req, 'mcp-session-id') ??
50
+ getHeaderValue(req, 'x-mcp-session-id'));
51
+ }
52
+ const SINGLE_VALUE_HEADER_NAMES = [
53
+ 'authorization',
54
+ 'x-api-key',
55
+ 'host',
56
+ 'origin',
57
+ 'content-length',
58
+ 'mcp-session-id',
59
+ 'x-mcp-session-id',
60
+ ];
61
+ function hasDuplicateHeader(req, name) {
62
+ const values = req.headersDistinct[name];
63
+ return Array.isArray(values) && values.length > 1;
64
+ }
65
+ export function findDuplicateSingleValueHeader(req) {
66
+ for (const name of SINGLE_VALUE_HEADER_NAMES) {
67
+ if (hasDuplicateHeader(req, name))
68
+ return name;
69
+ }
70
+ return null;
71
+ }
72
+ export function drainRequest(req) {
73
+ if (req.readableEnded)
74
+ return;
75
+ try {
76
+ req.resume();
77
+ }
78
+ catch {
79
+ // Best-effort only.
80
+ }
81
+ }
82
+ // ---------------------------------------------------------------------------
83
+ // Request abort signal
84
+ // ---------------------------------------------------------------------------
85
+ export function createRequestAbortSignal(req) {
86
+ const controller = new AbortController();
87
+ let cleanedUp = false;
88
+ const abortRequest = () => {
89
+ if (cleanedUp)
90
+ return;
91
+ if (!controller.signal.aborted)
92
+ controller.abort();
93
+ };
94
+ if (req.destroyed) {
95
+ abortRequest();
96
+ return {
97
+ signal: controller.signal,
98
+ cleanup: () => {
99
+ cleanedUp = true;
100
+ },
101
+ };
102
+ }
103
+ const onAborted = abortRequest;
104
+ const onClose = () => {
105
+ // A normal close after a complete body should not be treated as cancellation.
106
+ if (req.complete)
107
+ return;
108
+ abortRequest();
109
+ };
110
+ const onError = () => {
111
+ abortRequest();
112
+ };
113
+ req.once('aborted', onAborted);
114
+ req.once('close', onClose);
115
+ req.once('error', onError);
116
+ return {
117
+ signal: controller.signal,
118
+ cleanup: () => {
119
+ cleanedUp = true;
120
+ req.removeListener('aborted', onAborted);
121
+ req.removeListener('close', onClose);
122
+ req.removeListener('error', onError);
123
+ },
124
+ };
125
+ }
126
+ // ---------------------------------------------------------------------------
127
+ // IP & connection helpers
128
+ // ---------------------------------------------------------------------------
129
+ export function normalizeRemoteAddress(address) {
130
+ if (!address)
131
+ return null;
132
+ const trimmed = address.trim();
133
+ if (!trimmed)
134
+ return null;
135
+ const normalized = normalizeIpForBlockList(trimmed);
136
+ if (normalized)
137
+ return normalized.ip;
138
+ return trimmed;
139
+ }
140
+ export function registerInboundBlockList(server) {
141
+ if (!config.server.http.blockPrivateConnections)
142
+ return;
143
+ const blockList = createDefaultBlockList();
144
+ server.on('connection', (socket) => {
145
+ const remoteAddress = normalizeRemoteAddress(socket.remoteAddress);
146
+ if (!remoteAddress)
147
+ return;
148
+ const normalized = normalizeIpForBlockList(remoteAddress);
149
+ if (!normalized)
150
+ return;
151
+ if (blockList.check(normalized.ip, normalized.family)) {
152
+ logWarn('Blocked inbound connection', {
153
+ remoteAddress: normalized.ip,
154
+ family: normalized.family,
155
+ });
156
+ socket.destroy();
157
+ }
158
+ });
159
+ }
160
+ // ---------------------------------------------------------------------------
161
+ // Request context builder
162
+ // ---------------------------------------------------------------------------
163
+ export function buildRequestContext(req, res, signal) {
164
+ let url;
165
+ try {
166
+ url = new URL(req.url ?? '', 'http://localhost');
167
+ }
168
+ catch {
169
+ sendJson(res, 400, { error: 'Invalid request URL' });
170
+ return null;
171
+ }
172
+ return {
173
+ req,
174
+ res,
175
+ url,
176
+ method: req.method,
177
+ ip: normalizeRemoteAddress(req.socket.remoteAddress),
178
+ body: undefined,
179
+ ...(signal ? { signal } : {}),
180
+ };
181
+ }
182
+ // ---------------------------------------------------------------------------
183
+ // Transport / MCP helpers
184
+ // ---------------------------------------------------------------------------
185
+ export async function closeTransportBestEffort(transport, context) {
186
+ try {
187
+ await transport.close();
188
+ }
189
+ catch (error) {
190
+ logWarn('Transport close failed', { context, error });
191
+ }
192
+ }
193
+ export async function closeMcpServerBestEffort(server, context) {
194
+ try {
195
+ await server.close();
196
+ }
197
+ catch (error) {
198
+ logWarn('MCP server close failed', { context, error });
199
+ }
200
+ }
201
+ export function createTransportAdapter(transportImpl) {
202
+ const noopOnClose = () => { };
203
+ const noopOnError = () => { };
204
+ const noopOnMessage = () => { };
205
+ const baseOnClose = transportImpl.onclose;
206
+ let oncloseHandler = noopOnClose;
207
+ let onerrorHandler = noopOnError;
208
+ let onmessageHandler = noopOnMessage;
209
+ return {
210
+ start: () => transportImpl.start(),
211
+ send: (message, options) => transportImpl.send(message, options),
212
+ close: () => transportImpl.close(),
213
+ get onclose() {
214
+ return oncloseHandler;
215
+ },
216
+ set onclose(handler) {
217
+ oncloseHandler = handler;
218
+ transportImpl.onclose = composeCloseHandlers(baseOnClose, handler);
219
+ },
220
+ get onerror() {
221
+ return onerrorHandler;
222
+ },
223
+ set onerror(handler) {
224
+ onerrorHandler = handler;
225
+ transportImpl.onerror = handler;
226
+ },
227
+ get onmessage() {
228
+ return onmessageHandler;
229
+ },
230
+ set onmessage(handler) {
231
+ onmessageHandler = handler;
232
+ transportImpl.onmessage = handler;
233
+ },
234
+ };
235
+ }
236
+ export class JsonBodyError extends Error {
237
+ kind;
238
+ constructor(kind, message) {
239
+ super(message);
240
+ this.name = 'JsonBodyError';
241
+ this.kind = kind;
242
+ }
243
+ }
244
+ export const DEFAULT_BODY_LIMIT_BYTES = 1024 * 1024;
245
+ function isRequestReadAborted(req) {
246
+ return req.destroyed && !req.complete;
247
+ }
248
+ class JsonBodyReader {
249
+ async read(req, limit = DEFAULT_BODY_LIMIT_BYTES, signal) {
250
+ const contentType = getHeaderValue(req, 'content-type');
251
+ if (!contentType?.includes('application/json'))
252
+ return undefined;
253
+ const contentLengthHeader = getHeaderValue(req, 'content-length');
254
+ if (contentLengthHeader) {
255
+ const contentLength = Number.parseInt(contentLengthHeader, 10);
256
+ if (Number.isFinite(contentLength) && contentLength > limit) {
257
+ try {
258
+ req.destroy();
259
+ }
260
+ catch {
261
+ // Best-effort only.
262
+ }
263
+ throw new JsonBodyError('payload-too-large', 'Payload too large');
264
+ }
265
+ }
266
+ if (signal?.aborted || isRequestReadAborted(req)) {
267
+ throw new JsonBodyError('read-failed', 'Request aborted');
268
+ }
269
+ const body = await this.readBody(req, limit, signal);
270
+ if (!body)
271
+ return undefined;
272
+ try {
273
+ return JSON.parse(body);
274
+ }
275
+ catch (err) {
276
+ throw new JsonBodyError('invalid-json', err instanceof Error ? err.message : String(err));
277
+ }
278
+ }
279
+ async readBody(req, limit, signal) {
280
+ const abortListener = this.attachAbortListener(req, signal);
281
+ try {
282
+ const { chunks, size } = await this.collectChunks(req, limit, signal);
283
+ if (chunks.length === 0)
284
+ return undefined;
285
+ return Buffer.concat(chunks, size).toString('utf8');
286
+ }
287
+ finally {
288
+ this.detachAbortListener(signal, abortListener);
289
+ }
290
+ }
291
+ attachAbortListener(req, signal) {
292
+ if (!signal)
293
+ return null;
294
+ const listener = () => {
295
+ try {
296
+ req.destroy();
297
+ }
298
+ catch {
299
+ // Best-effort only.
300
+ }
301
+ };
302
+ if (signal.aborted) {
303
+ listener();
304
+ }
305
+ else {
306
+ signal.addEventListener('abort', listener, { once: true });
307
+ }
308
+ return listener;
309
+ }
310
+ detachAbortListener(signal, listener) {
311
+ if (!signal || !listener)
312
+ return;
313
+ try {
314
+ signal.removeEventListener('abort', listener);
315
+ }
316
+ catch {
317
+ // Best-effort cleanup.
318
+ }
319
+ }
320
+ async collectChunks(req, limit, signal) {
321
+ let size = 0;
322
+ const chunks = [];
323
+ const sink = new Writable({
324
+ write: (chunk, _encoding, callback) => {
325
+ try {
326
+ if (signal?.aborted || isRequestReadAborted(req)) {
327
+ callback(new JsonBodyError('read-failed', 'Request aborted'));
328
+ return;
329
+ }
330
+ const buf = this.normalizeChunk(chunk);
331
+ size += buf.length;
332
+ if (size > limit) {
333
+ req.destroy();
334
+ callback(new JsonBodyError('payload-too-large', 'Payload too large'));
335
+ return;
336
+ }
337
+ chunks.push(buf);
338
+ callback();
339
+ }
340
+ catch (err) {
341
+ callback(err instanceof Error ? err : new Error(String(err)));
342
+ }
343
+ },
344
+ });
345
+ try {
346
+ if (signal?.aborted || isRequestReadAborted(req)) {
347
+ throw new JsonBodyError('read-failed', 'Request aborted');
348
+ }
349
+ await pipeline(req, sink, signal ? { signal } : undefined);
350
+ return { chunks, size };
351
+ }
352
+ catch (err) {
353
+ if (err instanceof JsonBodyError)
354
+ throw err;
355
+ if (signal?.aborted || isRequestReadAborted(req)) {
356
+ throw new JsonBodyError('read-failed', 'Request aborted');
357
+ }
358
+ throw new JsonBodyError('read-failed', err instanceof Error ? err.message : String(err));
359
+ }
360
+ }
361
+ normalizeChunk(chunk) {
362
+ if (Buffer.isBuffer(chunk))
363
+ return chunk;
364
+ if (typeof chunk === 'string')
365
+ return Buffer.from(chunk, 'utf8');
366
+ return Buffer.from(chunk.buffer, chunk.byteOffset, chunk.byteLength);
367
+ }
368
+ }
369
+ export const jsonBodyReader = new JsonBodyReader();
370
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../src/http/helpers.ts"],"names":[],"mappings":"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"}
@@ -3,3 +3,4 @@ export declare function startHttpServer(): Promise<{
3
3
  port: number;
4
4
  host: string;
5
5
  }>;
6
+ //# sourceMappingURL=native.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native.d.ts","sourceRoot":"","sources":["../../src/http/native.ts"],"names":[],"mappings":"AAiyBA,wBAAsB,eAAe,IAAI,OAAO,CAAC;IAC/C,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;CACd,CAAC,CAkDD"}