UNPKG

pollo-mcp

Version:

Pollo AI Model Context Protocol (MCP) Server for video generation

98 lines 4.67 kB
#!/usr/bin/env node var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } return new (P || (P = Promise))(function (resolve, reject) { function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } step((generator = generator.apply(thisArg, _arguments || [])).next()); }); }; import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'; import { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'; import { program } from 'commander'; import express from 'express'; import MCPServerFactory from './lib/index.js'; const SERVER_NAME = 'pollo-mcp'; const SERVER_VERSION = '1.1.0'; function startStdIOServer(createServer) { return __awaiter(this, void 0, void 0, function* () { console.error('Starting default (STDIO) server...'); const transport = new StdioServerTransport(); const server = createServer(); yield server.connect(transport); }); } function startServerSSE(host, port, createServer) { return __awaiter(this, void 0, void 0, function* () { console.error('Starting SSE server...'); const app = express(); const transports = new Map(); app.get('/sse', (req, res) => __awaiter(this, void 0, void 0, function* () { var _a, _b; let transport; const server = createServer(); if ((_a = req === null || req === void 0 ? void 0 : req.query) === null || _a === void 0 ? void 0 : _a.sessionId) { const sessionId = (_b = req === null || req === void 0 ? void 0 : req.query) === null || _b === void 0 ? void 0 : _b.sessionId; transport = transports.get(sessionId); console.error("Client Reconnecting? This shouldn't happen; when client has a sessionId, GET /sse should not be called again.", transport.sessionId); } else { // Create and store transport for new session transport = new SSEServerTransport('/message', res); transports.set(transport.sessionId, transport); // Connect server to transport yield server.connect(transport); console.error('Client Connected: ', transport.sessionId); // Handle close of connection server.onclose = () => __awaiter(this, void 0, void 0, function* () { console.error('Client Disconnected: ', transport.sessionId); transports.delete(transport.sessionId); }); } })); app.post('/message', (req, res) => __awaiter(this, void 0, void 0, function* () { var _a; const sessionId = (_a = req === null || req === void 0 ? void 0 : req.query) === null || _a === void 0 ? void 0 : _a.sessionId; const transport = transports.get(sessionId); if (transport) { console.error('Client Message from', sessionId); yield transport.handlePostMessage(req, res); } else { console.error(`No transport found for sessionId ${sessionId}`); } })); app.listen(port, host, () => { console.error(`Server is running on ${host}:${port}`); }); }); } function main() { return __awaiter(this, void 0, void 0, function* () { program .option('--sse', 'Start SSE Server') .option('-h, --host <host>', 'The host of the mcp server', '127.0.0.1') .option('-p, --port <port>', 'The port of the mcp server', '5000') .parse(); const createServer = yield MCPServerFactory(SERVER_NAME, SERVER_VERSION); const options = program.opts(); try { if (options.sse) { yield startServerSSE(options.host, Number(options.port), createServer); } else { yield startStdIOServer(createServer); } } catch (error) { console.error('Error during server startup:', error); process.exit(1); } }); } main().catch((error) => { console.error('Fatal error in main execution:', error); process.exit(1); }); //# sourceMappingURL=index.js.map