Skip to main content
Glama

Mobile Next MCP

index.ts1.64 kB
#!/usr/bin/env node import { SSEServerTransport } from "@modelcontextprotocol/sdk/server/sse.js"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { createMcpServer, getAgentVersion } from "./server"; import { error } from "./logger"; import express from "express"; import { program } from "commander"; const startSseServer = async (port: number) => { const app = express(); const server = createMcpServer(); let transport: SSEServerTransport | null = null; app.post("/mcp", (req, res) => { if (transport) { transport.handlePostMessage(req, res); } }); app.get("/mcp", (req, res) => { if (transport) { transport.close(); } transport = new SSEServerTransport("/mcp", res); server.connect(transport); }); app.listen(port, () => { error(`mobile-mcp ${getAgentVersion()} sse server listening on http://localhost:${port}/mcp`); }); }; const startStdioServer = async () => { try { const transport = new StdioServerTransport(); const server = createMcpServer(); await server.connect(transport); error("mobile-mcp server running on stdio"); } catch (err: any) { console.error("Fatal error in main():", err); error("Fatal error in main(): " + JSON.stringify(err.stack)); process.exit(1); } }; const main = async () => { program .version(getAgentVersion()) .option("--port <port>", "Start SSE server on this port") .option("--stdio", "Start stdio server (default)") .parse(process.argv); const options = program.opts(); if (options.port) { await startSseServer(+options.port); } else { await startStdioServer(); } }; main().then();

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/EmpathySlainLovers/MCP'

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