Skip to main content
Glama
index.ts1.61 kB
#!/usr/bin/env node import "dotenv/config"; import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js"; import { z } from "zod"; import { configSchema } from "./server.js"; import { initializeContainer } from "./container.js"; import { disconnectFromDatabase } from "./services/database.service.js"; import pkg from "../package.json" with { type: "json" }; import { createMcpServer } from "./server.js"; export default function createServer({ config, }: { config: z.infer<typeof configSchema>; }) { const container = initializeContainer({ apiKey: config.youtubeApiKey, mdbMcpConnectionString: config.mdbMcpConnectionString, }); const server = createMcpServer(container); return server.server; } async function main() { const server = createServer({ config: { youtubeApiKey: process.env.YOUTUBE_API_KEY!, mdbMcpConnectionString: process.env.MDB_MCP_CONNECTION_STRING!, }, }); const transport = new StdioServerTransport(); await server.connect(transport); console.error(`YouTube MCP server (v${pkg.version}) running in stdio mode.`); // Graceful shutdown handlers for STDIO mode (e.g., Ctrl+C) const cleanup = async () => { console.error("Shutting down STDIO server..."); await disconnectFromDatabase(); console.error("Database disconnected. Exiting."); process.exit(0); }; process.on("SIGINT", () => void cleanup()); process.on("SIGTERM", () => void cleanup()); } // By default, the server starts with stdio transport main().catch((error) => { console.error("Server error:", error); process.exit(1); });

Latest Blog Posts

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/kirbah/mcp-youtube'

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