Skip to main content
Glama

MCP Auth

by rubenpenap
utils.ts1.36 kB
export function withCors<Props>({ getCorsHeaders, handler, }: { getCorsHeaders( request: Request, ): Record<string, string> | Headers | null | undefined handler: EpicMeExportedHandler<Props>['fetch'] }): EpicMeExportedHandler<Props>['fetch'] { return async (request, env, ctx) => { const corsHeaders = getCorsHeaders(request) if (!corsHeaders) { return handler(request, env, ctx) } // Handle CORS preflight requests if (request.method === 'OPTIONS') { const headers = mergeHeaders(corsHeaders, { 'Access-Control-Max-Age': '86400', }) return new Response(null, { status: 204, headers }) } // Call the original handler const response = await handler(request, env, ctx) // Add CORS headers to ALL responses, including early returns const newHeaders = mergeHeaders(response.headers, corsHeaders) return new Response(response.body, { status: response.status, statusText: response.statusText, headers: newHeaders, }) } } /** * Merge multiple headers objects into one (uses set so headers are overridden) */ export function mergeHeaders( ...headers: Array<ResponseInit['headers'] | null | undefined> ) { const merged = new Headers() for (const header of headers) { if (!header) continue for (const [key, value] of new Headers(header).entries()) { merged.set(key, value) } } return merged }

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/rubenpenap/mcp-auth'

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