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
| Name | Required | Description | Default |
|---|---|---|---|
| action | Yes | Action to perform on networks | |
| network | No | Network name (required for create, remove, inspect, connect, disconnect) | |
| container | No | Container name (required for connect, disconnect) | |
| driver | No | Network 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 }; } } );
- src/index.ts:1447-1501 (handler)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 }; } }
- src/index.ts:1440-1445 (schema)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)") }
- src/index.ts:383-390 (helper)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}`); } }