Skip to main content
Glama
jethroHuang

Fetch API MCP Server

by jethroHuang
handler.js2.2 kB
/** * Fetch API处理器 * 处理API请求并返回结果 */ export async function fetchApiHandler({ url, method, headers = {}, formData, jsonData, cookies }) { try { // 准备请求选项 const options = { method, headers: { ...headers }, }; // 处理cookies if (cookies && Object.keys(cookies).length > 0) { const cookieString = Object.entries(cookies) .map(([key, value]) => `${key}=${value}`) .join('; '); options.headers.Cookie = cookieString; } // 处理请求体 if (method !== 'GET' && method !== 'HEAD') { if (formData && Object.keys(formData).length > 0) { // 处理表单数据 const form = new URLSearchParams(); Object.entries(formData).forEach(([key, value]) => { form.append(key, value); }); options.body = form.toString(); options.headers['Content-Type'] = 'application/x-www-form-urlencoded'; } else if (jsonData) { // 处理JSON数据 options.body = JSON.stringify(jsonData); options.headers['Content-Type'] = 'application/json'; } } // 发送请求 const response = await fetch(url, options); // 获取响应头 const responseHeaders = {}; response.headers.forEach((value, key) => { responseHeaders[key] = value; }); // 尝试解析响应体 let data; const contentType = response.headers.get('content-type'); if (contentType?.includes('application/json')) { data = await response.json(); } else if (contentType?.includes('text/')) { data = await response.text(); } else { // 对于二进制数据,转换为base64字符串 const buffer = await response.arrayBuffer(); data = Buffer.from(buffer).toString('base64'); } // 返回结果 return { status: response.status, statusText: response.statusText, headers: responseHeaders, data, }; } catch (error) { // 处理错误 return { status: 500, statusText: 'Internal Server Error', headers: {}, data: { error: error.message, stack: error.stack, }, }; } }

Implementation Reference

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/jethroHuang/fetch-api-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server