Skip to main content
Glama

manage_networks

Manage Docker networks by listing, creating, removing, inspecting, connecting, or disconnecting containers from networks.

Instructions

Manage Docker networks (list, create, remove, inspect, connect, disconnect)

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
actionYesAction to perform on networks
networkNoNetwork name (required for create, remove, inspect, connect, disconnect)
containerNoContainer name (required for connect, disconnect)
driverNoNetwork driver (bridge, overlay, host, none)

Implementation Reference

  • src/index.ts:1435-1503 (registration)
    Registration of the 'manage_networks' MCP tool, including title, description, input schema using Zod, and the inline async handler function that implements the tool logic.
    server.registerTool( "manage_networks", { title: "Docker Network Management", description: "Manage Docker networks (list, create, remove, inspect, connect, disconnect)", inputSchema: { action: z.enum(["list", "create", "remove", "inspect", "connect", "disconnect", "prune"]).describe("Action to perform on networks"), network: z.string().optional().describe("Network name (required for create, remove, inspect, connect, disconnect)"), container: z.string().optional().describe("Container name (required for connect, disconnect)"), driver: z.string().optional().describe("Network driver (bridge, overlay, host, none)") } }, async ({ action, network, container, driver }) => { try { let command: string; switch (action) { case "list": command = "docker network ls"; break; case "create": if (!network) throw new Error("Network name is required for create action"); command = `docker network create${driver ? ` --driver ${driver}` : ""} ${network}`; break; case "remove": if (!network) throw new Error("Network name is required for remove action"); command = `docker network rm ${network}`; break; case "inspect": if (!network) throw new Error("Network name is required for inspect action"); command = `docker network inspect ${network}`; break; case "connect": if (!network || !container) throw new Error("Network and container names are required for connect action"); command = `docker network connect ${network} ${container}`; break; case "disconnect": if (!network || !container) throw new Error("Network and container names are required for disconnect action"); command = `docker network disconnect ${network} ${container}`; break; case "prune": command = "docker network prune -f"; break; } const result = await executeDockerCommand(command); return { content: [ { type: "text", text: `Network ${action} completed:\n\n${result.stdout}${result.stderr ? `\nWarnings:\n${result.stderr}` : ""}` } ] }; } catch (error) { return { content: [ { type: "text", text: `Error managing networks: ${error instanceof Error ? error.message : String(error)}` } ], isError: true }; } } );
  • Core handler logic for 'manage_networks' tool. Maps input actions to specific Docker CLI commands for network management (list, create, rm, inspect, connect, disconnect, prune), executes via executeDockerCommand, and formats response.
    async ({ action, network, container, driver }) => { try { let command: string; switch (action) { case "list": command = "docker network ls"; break; case "create": if (!network) throw new Error("Network name is required for create action"); command = `docker network create${driver ? ` --driver ${driver}` : ""} ${network}`; break; case "remove": if (!network) throw new Error("Network name is required for remove action"); command = `docker network rm ${network}`; break; case "inspect": if (!network) throw new Error("Network name is required for inspect action"); command = `docker network inspect ${network}`; break; case "connect": if (!network || !container) throw new Error("Network and container names are required for connect action"); command = `docker network connect ${network} ${container}`; break; case "disconnect": if (!network || !container) throw new Error("Network and container names are required for disconnect action"); command = `docker network disconnect ${network} ${container}`; break; case "prune": command = "docker network prune -f"; break; } const result = await executeDockerCommand(command); return { content: [ { type: "text", text: `Network ${action} completed:\n\n${result.stdout}${result.stderr ? `\nWarnings:\n${result.stderr}` : ""}` } ] }; } catch (error) { return { content: [ { type: "text", text: `Error managing networks: ${error instanceof Error ? error.message : String(error)}` } ], isError: true }; } }
  • Zod input schema defining parameters for the manage_networks tool: action (enum of operations), optional network/container names, and driver.
    inputSchema: { action: z.enum(["list", "create", "remove", "inspect", "connect", "disconnect", "prune"]).describe("Action to perform on networks"), network: z.string().optional().describe("Network name (required for create, remove, inspect, connect, disconnect)"), container: z.string().optional().describe("Container name (required for connect, disconnect)"), driver: z.string().optional().describe("Network driver (bridge, overlay, host, none)") }
  • Utility helper function used by the manage_networks handler (and others) to execute Docker CLI commands asynchronously using child_process.exec, returning stdout/stderr or throwing errors.
    async function executeDockerCommand(command: string): Promise<{ stdout: string; stderr: string }> { try { const result = await execAsync(command); return result; } catch (error: any) { throw new Error(`Docker command failed: ${error.message}`); } }

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/TauqeerAhmad5201/docker-mcp-extension'

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