Skip to main content
Glama

mcp-server-neon

Official
stream.ts2.52 kB
import { Request, Response, Router } from 'express'; import { AppContext } from '../types/context.js'; import { createMcpServer } from '../server/index.js'; import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'; import { logger } from '../utils/logger.js'; import { track } from '../analytics/analytics.js'; import { requiresAuth } from '../oauth/utils.js'; export const createStreamTransport = (appContext: AppContext) => { const router = Router(); router.post('/', requiresAuth(), async (req: Request, res: Response) => { const auth = req.auth; if (!auth) { res.status(401).send('Unauthorized'); return; } try { const server = createMcpServer({ apiKey: auth.token, client: auth.extra.client, account: auth.extra.account, app: appContext, }); const transport = new StreamableHTTPServerTransport({ sessionIdGenerator: undefined, }); res.on('close', () => { void transport.close(); void server.close(); }); await server.connect(transport); await transport.handleRequest(req, res, req.body); } catch (error: unknown) { logger.error('Failed to connect to MCP server:', { message: error instanceof Error ? error.message : 'Unknown error', error, }); track({ userId: auth.extra.account.id, event: 'stream_connection_errored', properties: { error }, context: { app: appContext, client: auth.extra.client, }, }); if (!res.headersSent) { res.status(500).json({ jsonrpc: '2.0', error: { code: -32603, message: 'Internal server error', }, id: null, }); } } }); router.get('/', requiresAuth(), (req: Request, res: Response) => { logger.info('Received GET MCP request'); res.writeHead(405).end( JSON.stringify({ jsonrpc: '2.0', error: { code: -32000, message: 'Method not allowed.', }, id: null, }), ); }); router.delete('/', requiresAuth(), (req: Request, res: Response) => { logger.info('Received DELETE MCP request'); res.writeHead(405).end( JSON.stringify({ jsonrpc: '2.0', error: { code: -32000, message: 'Method not allowed.', }, id: null, }), ); }); return router; };

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/neondatabase-labs/mcp-server-neon'

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