web_fetch
Fetch web content from URLs to retrieve HTML, JSON, or text data for processing and analysis within LLM applications.
Instructions
Alias of web.fetch
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| url | Yes | ||
| timeout | No | ||
| max_bytes | No | ||
| headers | No |
Implementation Reference
- src/tools/webFetch.ts:4-22 (handler)Core implementation of the webFetch function that executes the HTTP fetch logic with limits, content type detection, and response formatting for text or binary data.export async function webFetch(url: string) { const res = await fetchWithLimits(url, CONFIG.fetchTimeoutMs, CONFIG.maxFetchBytes); if (!res || !res.body) { return { finalUrl: url, status: res?.status || 0, contentType: res?.contentType || 'application/octet-stream', bodyText: null, bytesB64: null, fetchedAt: new Date().toISOString() }; } const ct = (res.contentType || '').toLowerCase(); const isText = ct.startsWith('text/') || ct.includes('html') || ct.includes('xml') || ct.includes('json'); return { finalUrl: res.finalUrl || url, status: res.status, contentType: res.contentType, bodyText: isText ? res.body.toString('utf-8') : null, bytesB64: isText ? null : res.body.toString('base64'), fetchedAt: new Date().toISOString() }; }
- src/server.ts:65-70 (schema)Zod schema defining the input parameters (url, optional timeout, max_bytes, headers) for the web_fetch tool.const webFetchShape = { url: z.string().url(), timeout: z.number().int().optional(), max_bytes: z.number().int().optional(), headers: z.record(z.string()).optional() };
- src/server.ts:78-84 (registration)Registration of the 'web_fetch' MCP tool, providing a handler that calls the core webFetch function and formats the response.server.tool('web_fetch', 'Alias of web.fetch', webFetchShape, OPEN, async ({ url, timeout, max_bytes }) => { const res = await webFetch(url); return { content: [{ type: 'text', text: JSON.stringify(res) }] }; } );