Skip to main content
Glama
mcp_hook.ts2.3 kB
import getRawBody from "raw-body"; import contentType from "content-type"; const MAXIMUM_MESSAGE_SIZE = "4mb";import express from 'express'; export function mcpHook_updateMessageEndpoint(req:express.Request) { const query = req.query; const queryString = Object.entries(query) .map(([key, value]) => `${key}=${value}`) .join('&'); const url = `/messages?${queryString}`; return url; } export async function mcpHook_updateMessageBody(req:express.Request) :Promise<any>{ const query = req.query as Record<string, string>; const fixedQuery = getFixedQuery(query); const ct = contentType.parse(req.headers["content-type"] ?? ""); const body = await getRawBody(req, { limit: MAXIMUM_MESSAGE_SIZE, encoding: ct.parameters.charset ?? "utf-8", }); console.log("body: "+body); const bodyJson = JSON.parse(body); if (bodyJson.method === "tools/call") { if(!bodyJson.params.arguments) { bodyJson.params.arguments = {}; } bodyJson.params.arguments = { ...bodyJson.params.arguments, ...fixedQuery }; } console.log(`bodyJson: ${JSON.stringify(bodyJson)}`); return bodyJson; } export function getFixedQuery(query: Record<string, string>) { // query may be error like this: // { // "somequery": "1234567890?sessionId=1234567890", // "somequery": "https://www.yuque.com" // } // we need to convert it to: // { // "somequery": "1234567890", // "somequery": "https://www.yuque.com", // "sessionId": "1234567890" // } const fixedQuery = {} as Record<string, string>; for (const key in query) { if (query[key] && typeof query[key] === 'string') { const value = query[key]; // if match ?sessionId= , then add sessionId to fixedQuery if (value.match(/^[^?]+?\?sessionId=([^&]+)/)) { fixedQuery[key] = value.split("?")[0]; const match = value.match(/\?sessionId=([^&]+)/); if (match && match[1]) { fixedQuery["sessionId"] = match[1]; } } else { fixedQuery[key] = value; } } } return fixedQuery; }

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/HenryHaoson/Yuque-MCP-Server'

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