Skip to main content
Glama
index.js2.8 kB
#!/usr/bin/env node /** * Docker MCP Server - Wrapper for mcp-docker package * * This script serves as a launcher for the mcp-docker server, * loading environment variables and providing additional logging. */ import { spawn } from 'child_process'; import { fileURLToPath } from 'url'; import { dirname, join } from 'path'; import * as dotenv from 'dotenv'; import fs from 'fs'; // Load environment variables dotenv.config(); const __filename = fileURLToPath(import.meta.url); const __dirname = dirname(__filename); const projectRoot = dirname(__dirname); // Log startup information console.error('🐳 Starting Docker MCP Server...'); console.error(`📁 Project root: ${projectRoot}`); // Check Docker socket access const dockerSocket = process.env.DOCKER_SOCKET || '/var/run/docker.sock'; if (dockerSocket && !dockerSocket.startsWith('tcp://') && !dockerSocket.startsWith('http')) { try { fs.accessSync(dockerSocket, fs.constants.R_OK | fs.constants.W_OK); console.error(`✅ Docker socket accessible: ${dockerSocket}`); } catch (error) { console.error(`❌ Warning: Cannot access Docker socket at ${dockerSocket}`); console.error(` Make sure Docker is running and user has permissions`); } } // Display configuration console.error('⚙️ Configuration:'); if (process.env.DOCKER_SOCKET) { console.error(` Socket: ${process.env.DOCKER_SOCKET}`); } if (process.env.DOCKER_HOST) { console.error(` Host: ${process.env.DOCKER_HOST}:${process.env.DOCKER_PORT || 2375}`); } if (process.env.DOCKER_SERVERS) { console.error(` Multiple servers: ${process.env.DOCKER_SERVERS}`); } // Path to the actual mcp-docker server const mcpDockerPath = join(projectRoot, 'node_modules', 'mcp-docker', 'build', 'index.js'); // Check if mcp-docker is installed if (!fs.existsSync(mcpDockerPath)) { console.error(`❌ Error: mcp-docker not found at ${mcpDockerPath}`); console.error(' Run: npm install mcp-docker'); process.exit(1); } console.error(`🚀 Launching mcp-docker from: ${mcpDockerPath}`); console.error('---'); // Launch the actual mcp-docker server const child = spawn('node', [mcpDockerPath], { stdio: 'inherit', env: process.env }); // Handle process termination child.on('exit', (code) => { console.error(`📊 Docker MCP Server exited with code: ${code}`); process.exit(code); }); child.on('error', (error) => { console.error(`❌ Failed to start Docker MCP Server: ${error.message}`); process.exit(1); }); // Handle graceful shutdown process.on('SIGTERM', () => { console.error('🛑 Received SIGTERM, shutting down...'); child.kill('SIGTERM'); }); process.on('SIGINT', () => { console.error('🛑 Received SIGINT, shutting down...'); child.kill('SIGINT'); });

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/marcelofmatos/mcp-docker-server'

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