Token导航 LogoToken导航TokenDH.com
Docker Sandbox With MCP Terminal logo
运维云端stdio官方级别未说明来源级核验

Docker Sandbox With MCP Terminal

MCP Server

一个用于创建和管理多个Node.js Docker容器的Python应用程序,具有唯一命名和智能端口映射功能。

工具数

0

提示词数

0

GitHub Stars

0

资源数

0
Python开发工具云端部署

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Prakash2459

提供方

Prakash2459

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python api.py

详细介绍

Docker Node.js 沙盒管理器

一个Python应用程序,用于创建和管理多个带有Node.js镜像的Docker容器,每个容器都有唯一的名称和端口映射。

特点/特性

  • 🐳(海豚或鲸鱼的图案,常用于表情符号中表示可爱或俏皮) Docker 容器管理创建、列出、停止和删除容器
  • 🔢 表示“数字”或“计算器按键”,在中文中可以翻译为“数字”或根据上下文具体描述为“计算器上的数字键”等。 唯一命名每个容器都会获得一个包含时间戳和UUID的唯一名称
  • 🌐 代表“互联网”或“世界万维网”的符号。 智能端口映射自动查找可用端口并将它们映射到容器端口3000
  • 🚀 表示火箭或快速上升、前进的意思,也可以用来形容速度非常快或充满活力的事物。 Node.js 应用程序每个容器都在3000端口上运行一个简单的HTTP服务器
  • 🧪 表示“实验”或“试管”的符号。 测试测试应用程序是否正在运行并作出响应
  • 簸箕 清理移除单个容器或一次性全部清理

项目结构

docker-sandbox/
├── api.py              # Main application entry point for the Flask server
├── docker_sandbox.py   # DockerSandbox class for container management
├── menu.py             # Interactive menu system
├── config.py           # Configuration settings
├── main.py             # Original monolithic file (kept for reference)
├── pyproject.toml      # Project dependencies
└── README.md           # This file

文件描述

api.py

  • Flask服务器的主要应用程序入口点。
  • 初始化并运行Flask应用程序。
  • 包含用于管理Docker容器(创建、列出、停止、移除)的端点。

docker_sandbox.py

  • DockerSandbox 具备所有容器管理功能的类
  • 端口管理和可用性检查
  • 容器的创建、列出、停止和移除
  • 应用程序测试能力

menu.py

  • MenuManager 用于交互式菜单系统的类
  • 处理用户输入和菜单导航
  • 将操作委托给沙盒实例

config.py

  • 配置设置和常量
  • 图像、端口、命令的默认值
  • 菜单选项和应用程序元数据

API终端点

Docker沙盒管理器公开了以下API端点:

1. 健康检查

  • 终点;终端/
  • 方法GET
  • 描述检查API是否正在运行。
  • 回应
  {
    "status": "ok",
    "message": "Docker Sandbox API is running!"
  }

2. 创建容器

  • 终端节点: /containers
  • 方法POST
  • 描述创建一个新的 Node.js Docker 容器。
  • 请求体
  {
    "name": "optional-container-name"
  }

(如果 name 如果没有提供,将自动生成一个唯一名称。)

  • 响应(201 Created,即“已创建”):
  {
    "message": "Container created successfully",
    "name": "generated-or-provided-name",
    "id": "short-container-id"
  }
  • 错误响应(500 内部服务器错误)
  {
    "error": "Failed to create container"
  }

3. 列出容器

  • 终端节点/containers
  • 方法GET
  • 描述列出所有受管理的Docker容器。
  • 响应(200 OK)
  [
    {
      "id": "container-id",
      "name": "container-name",
      "image": "image-name",
      "status": "running",
      "ports": {
        "3000/tcp": host-port-3000,
        "8080/tcp": host-port-8080
      },
      "volume_name": "volume-name",
      "volume_mount_path": "mount-path"
    },
    // ... more containers
  ]
  • 错误响应(500 内部服务器错误):
  {
    "error": "Failed to list containers: An unexpected error occurred: "
  }

4. 启动容器

  • 终端(或终点)/containers//start
  • 方法POST
  • 描述启动一个已停止的容器。如果容器已经在运行,则尝试使用新的端口映射重新创建它。
  • 路径参数name (要启动的容器的名称)
  • 响应(200 OK)
  {
    "message": "Container started successfully with new ports",
    "name": "container-name",
    "id": "short-container-id",
    "ports": {
      "3000/tcp": new-host-port-3000,
      "8080/tcp": new-host-port-8080
    }
  }
  • 错误响应(404 找不到)
  {
    "error": "Container 'name' not found."
  }
  • 错误响应(500 内部服务器错误):
  {
    "error": "Container 'name': Volume information missing."
  }

5. 停止容器

  • 终端(或端点): /containers//stop
  • 方法: POST
  • 描述停止正在运行的Docker容器。
  • 路径参数name (要停止的容器的名称)
  • 响应(200 OK)
  {
    "message": "Container 'name' stopped successfully"
  }
  • 错误响应(404 未找到)
  {
    "error": "Failed to stop container 'name' or container not found"
  }

6. 移除容器

  • 终端点/终点/containers//remove
  • 方法DELETE
  • 描述删除一个 Docker 容器及其关联的卷。
  • 路径参数name (要移除的容器的名称)
  • 响应(200 OK):
  {
    "message": "Container 'name' and its volume removed successfully"
  }
  • 错误响应(404 未找到):
  {
    "error": "Failed to remove container 'name' or container not found"
  }

7. 清理所有容器

  • 终端节点: /containers/cleanup
  • 方法POST
  • 描述停止并移除沙箱管理的所有Docker容器。
  • 响应(200 OK)
  {
    "message": "Cleaned up N containers and their associated volumes"
  }
  • 错误响应(500 内部服务器错误):
  {
    "error": "An unexpected error occurred during cleanup: "
  }

8. 重启容器

  • 终端节点: /containers//restart
  • 方法POST
  • 描述重启一个Docker容器。这包括删除旧容器(保留卷)并创建一个同名但可能使用新端口的新容器。
  • 路径参数name (要重启的容器的名称)
  • 响应(200 正常):
  {
    "message": "Container restarted successfully with new ports",
    "name": "container-name",
    "id": "short-container-id",
    "ports": {
      "3000/tcp": new-host-port-3000,
      "8080/tcp": new-host-port-8080
    }
  }
  • 错误响应(404 未找到):
  {
    "error": "Container 'name' not found."
  }
  • 错误响应(500 内部服务器错误):
  {
    "error": "Container 'name': Volume information missing."
  }

9. 获取容器状态

  • 终端节点/containers//status
  • 方法GET
  • 描述获取特定Docker容器的当前状态和详细信息。
  • 路径参数: name (要获取状态的容器名称)
  • 响应(200 正常)
  {
    "id": "container-id",
    "name": "container-name",
    "image": "image-name",
    "status": "running",
    "ports": {
      "3000/tcp": host-port-3000,
      "8080/tcp": host-port-8080
    },
    "volume_name": "volume-name",
    "volume_mount_path": "mount-path"
  }
  • 错误响应(404 未找到):
  {
    "error": "Container 'name' not found."
  }

用法

运行应用程序

python api.py

它的功能/作用

  1. 连接到 Docker验证Docker是否正在运行且可访问
  2. 创建初始容器创建3个具有唯一名称和端口映射的容器
  3. 节目概要列出所有已创建的容器及其详细信息
  4. 交互式菜单提供管理容器的选项

菜单选项

  1. 创建新容器 - 创建具有自动生成名称的额外容器
  2. 列出容器 - 显示所有正在运行的容器
  3. 测试容器应用 - 测试Node.js应用程序是否响应
  4. 停止容器 - 停止特定的容器
  5. 移除容器 - 移除特定容器
  6. 清理所有容器 - 一次性移除所有容器
  7. 退出 - 退出应用程序

港口管理

  • 集装箱港口所有容器都在内部通过端口3000运行Node.js应用程序
  • 主机端口映射到从4000开始的可用端口(4000、4001、4002等)
  • 智能检测自动避开Docker或系统已使用的端口
  • 冲突解决如果首选端口已被占用,则查找下一个可用端口

示例输出

🐳 Docker Node.js Sandbox Manager
========================================
✅ Connected to Docker successfully!

📦 Creating 3 Node.js containers...

--- Creating Container 1 ---
   Using container port 3000 -> host port 4000
🚀 Creating container 'node-sandbox-20251008-074401-fd242fc8' with image 'node:18-alpine'...
✅ Container 'node-sandbox-20251008-074401-fd242fc8' created successfully!

📋 Listing all sandbox containers:
Found 3 containers:
  1. node-sandbox-20251008-074401-fd242fc8
     ID: b566d5b9ae48
     Status: running
     Image: node:18-alpine

要求

  • Python 3.10及以上版本
  • Docker正在运行且可访问
  • docker-py 库(包含在 pyproject.toml 中)

安装

# Install dependencies
pip install -e .

# Or using uv (recommended)
uv sync

测试应用程序

每个容器都运行一个简单的Node.js HTTP服务器,该服务器会响应:

  • 集装箱ID
  • 当前时间戳
  • 欢迎信息

你可以通过以下方式测试它们:

  1. 使用菜单选项3(测试容器应用)
  2. 打开浏览器以访问 http://localhost:4000http://localhost:4001等。
  3. 向映射的端口发送HTTP请求

模块化结构的优势

  • 关注点分离(或译为:职责分离)每个文件都有特定的职责
  • 可维护性更容易修改和扩展单个组件
  • 可重用性类可以在其他项目中导入并使用
  • 测试各个组件可以单独进行测试
  • 配置轻松修改设置,无需触及核心逻辑

许可证

这个项目采用MIT许可证授权——详见 许可证 详情请查阅文件。

目录标签

目录标签

Python开发工具云端部署Docker管理本地部署Node.js容器端口映射容器沙箱

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

0

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP