Skip to main content
Glama

Fetch MCP

by jae-jae
server.ts2.68 kB
import { Server } from "@modelcontextprotocol/sdk/server/index.js"; import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextprotocol/sdk/types.js"; import { tools, toolHandlers } from "./tools/index.js"; import { TransportProvider } from "./transports/types.js"; import { logger } from "./utils/logger.js"; /** * Create MCP server instance * @returns MCP server instance */ function createServer() { const server = new Server( { name: "browser-mcp", version: "0.1.0", }, { capabilities: { tools: {}, }, } ); server.setRequestHandler(ListToolsRequestSchema, async () => { logger.info("[Tools] Listing available tools"); return { tools, }; }); /** * Handle tool call requests * Dispatch to the appropriate tool implementation */ server.setRequestHandler(CallToolRequestSchema, async (request) => { const toolName = request.params.name; const handler = toolHandlers[toolName]; if (!handler) { throw new Error(`Unknown tool: ${toolName}`); } return handler(request.params.arguments); }); return server; } /** * Set up process signal handlers * @param transportProvider Transport provider */ function setupProcessHandlers(transportProvider: TransportProvider): void { // Handle SIGINT signal (Ctrl+C) process.on("SIGINT", async () => { logger.info("[Server] Received SIGINT signal, gracefully shutting down..."); await transportProvider.close(); process.exit(0); }); // Handle SIGTERM signal process.on("SIGTERM", async () => { logger.info( "[Server] Received SIGTERM signal, gracefully shutting down..." ); await transportProvider.close(); process.exit(0); }); // Handle uncaught exceptions process.on("uncaughtException", async (error) => { logger.error(`[Server] Uncaught exception: ${error.message}`); if (error.stack) { logger.error(error.stack); } await transportProvider.close(); process.exit(1); }); } /** * Start MCP server using the specified transport provider * @param transportProvider Transport provider */ export async function startServer( transportProvider: TransportProvider ): Promise<void> { try { const server = createServer(); logger.info("[Server] Starting MCP server..."); // Connect to transport await transportProvider.connect(server); logger.info("[Server] MCP server started"); // Set up process termination handlers setupProcessHandlers(transportProvider); } catch (error: any) { logger.error(`[Server] Failed to start MCP server: ${error.message}`); throw error; } }

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/jae-jae/fetcher-mcp'

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