Skip to main content
Glama

Rules MCP Server

mcp.ts1.91 kB
import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js"; import { toFetchResponse, toReqRes } from "fetch-to-node"; import { JSONRPCError } from "@modelcontextprotocol/sdk/types.js"; import { getServer } from "../../src/mcp-server.js"; // Netlify serverless function handler which handles all inbound requests export default async (req: Request) => { try { // for stateless MCP, we'll only use the POST requests that are sent // with event information for the init phase and resource/tool requests if (req.method === "POST") { // Convert the Request object into a Node.js Request object const { req: nodeReq, res: nodeRes } = toReqRes(req); const server = getServer(); const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined, }); await server.connect(transport); const body = await req.json(); await transport.handleRequest(nodeReq, nodeRes, body); nodeRes.on("close", () => { console.log("Request closed"); transport.close(); server.close(); }); return toFetchResponse(nodeRes); } if (req.method === "GET") { return new Response(JSON.stringify({ status: "ok", message: "MCP server is running", timestamp: new Date().toISOString() }), { status: 200, headers: { "Content-Type": "application/json" } }); } return new Response("Method not allowed", { status: 405 }); } catch (error) { console.error("MCP error:", error); return new Response( JSON.stringify({ jsonrpc: "2.0", error: { code: -32603, message: "Internal server error", }, id: '', } satisfies JSONRPCError), { status: 500, headers: { "Content-Type": "application/json" } } ); } };

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/markacianfrani/mcp-pattern-language'

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