Skip to main content
Glama

MCP Test Server

by dannyhertz
mcp-server.js2.92 kB
import { Server } from '@modelcontextprotocol/sdk/server/index.js'; import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'; import express from 'express'; import cors from 'cors'; const app = express(); app.use(cors()); app.use(express.json()); const PORT = process.env.PORT || 3000; // Health check app.get('/health', (req, res) => { res.json({ status: 'ok', message: 'MCP server is running' }); }); // Home page app.get('/', (req, res) => { res.send(` <h1>MCP Test Server</h1> <p>This server provides image and CSV resources via MCP</p> <p>SSE Transport: Connect your MCP client to <code>${req.protocol}://${req.get('host')}/</code></p> `); }); // Create a new MCP server for each connection const sessions = new Map(); // Handle SSE connections app.post('/', async (req, res) => { console.log('New MCP connection initiated'); // Create a new MCP server instance for this connection const mcpServer = new Server({ name: 'mcp-test-server', version: '1.0.0' }, { capabilities: { resources: {} } }); // Handle list resources mcpServer.setRequestHandler('resources/list', async () => { console.log('Listing resources'); return { resources: [ { uri: 'image://red-pixel', name: 'Red Pixel', description: 'A 1x1 red pixel PNG image', mimeType: 'image/png' }, { uri: 'csv://sample-data', name: 'Sample Data', description: 'Sample CSV data with 3 rows', mimeType: 'text/csv' } ] }; }); // Handle read resource mcpServer.setRequestHandler('resources/read', async (request) => { console.log('Reading resource:', request.params.uri); const { uri } = request.params; if (uri === 'image://red-pixel') { // 1x1 red pixel PNG (base64) return { contents: [{ uri: 'image://red-pixel', mimeType: 'image/png', blob: 'iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAYAAAAfFcSJAAAADUlEQVR42mP8z8DwHwAFBQIA9l2+BgAAAABJRU5ErkJggg==' }] }; } if (uri === 'csv://sample-data') { return { contents: [{ uri: 'csv://sample-data', mimeType: 'text/csv', text: 'id,name,value\n1,Alice,100\n2,Bob,200\n3,Charlie,300' }] }; } throw new Error(`Resource not found: ${uri}`); }); try { const transport = new SSEServerTransport('/', res); await mcpServer.connect(transport); console.log('MCP connection established'); } catch (error) { console.error('Failed to establish MCP connection:', error); if (!res.headersSent) { res.status(500).json({ error: 'Failed to establish connection' }); } } }); app.listen(PORT, () => { console.log(`MCP server listening on port ${PORT}`); console.log(`Connect via: http://localhost:${PORT}/`); });

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/dannyhertz/mcp-test-server'

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