j

jar285

virtualizationdeveloper-toolsci-cd

322 查看 · 2026-07-07 更新

🐳 Docker Explorer MCP 服务器

Docker Explorer Python License

📋 概述

Docker Explorer 是一个强大的模型上下文协议(MCP)服务器,提供了与 Docker 镜像、容器和注册表交互的工具和资源。该服务器使像 Claude 这样的 AI 助手能够通过标准化接口搜索、分析和与 Docker 资源进行交互,从而使容器管理和探索更加便捷。

✨ 特性

核心特性

  • 在注册表中搜索 Docker 镜像
  • 搜索特定标签的 Docker 镜像
  • 搜索 Docker Hub 用户/组织
  • 获取关于 Docker 镜像的详细元数据
  • 分析 Dockerfile 内容
  • 比较 Docker 镜像

高级工具

  • 🔒 安全扫描器:分析 Docker 镜像中的已知漏洞和安全问题
  • 📦 镜像大小优化器:获取减少 Docker 镜像大小的建议
  • 📄 Docker Compose 生成器:为您的应用程序生成 docker-compose.yml 文件
  • 📊 容器运行时分析器:获取有关容器运行时行为和资源使用情况的见解
  • 🔍 镜像比较工具:比较两个 Docker 镜像并突出显示它们之间的差异
  • 📜 Dockerfile 生成器:根据自然语言的应用程序描述创建 Dockerfiles

🚀 安装

前提条件

  • Python 3.10 或更高版本
  • MCP Python SDK
  • 所需的 Python 包:requests, pydantic

设置

  1. 克隆此仓库

bash git clone https://github.com/yourusername/docker-mcp-server.git cd docker-mcp-server

  1. 创建虚拟环境

bash python -m venv .venv310 source .venv310/bin/activate # 在 Windows 上: .venv310Scriptsactivate

  1. 安装依赖项

bash pip install -r requirements.txt

或者单独安装各个包:

bash pip install anthropic-mcp requests pydantic

💻 使用

运行服务器

您可以直接从命令行运行服务器:

bash python docker_explorer.py

这将在默认端口(5000)上启动 MCP 服务器。

与 Claude Desktop 集成

要将 Docker Explorer MCP 服务器与 Claude Desktop 一起使用:

  1. 更新 Claude Desktop 配置
    • 在您的 Claude Desktop 配置目录中打开或创建 claude_desktop_config.json 文件
    • 添加 Docker Explorer 服务器配置

json { "mcp_servers": [ { "name": "docker-explorer", "command": ["python", "/path/to/mcpIS421/docker_explorer.py"], "cwd": "/path/to/mcpIS421" } ] }

  1. 重启 Claude Desktop 以加载新配置

使用工具

一旦与 Claude Desktop 集成,您可以通过向 Claude 提问来使用 Docker Explorer 工具,例如:

核心工具

  1. 搜索 Docker 镜像

    你能搜索 Python 的 Docker 镜像吗?

  2. 获取镜像详情

    python:3.11-slim 镜像的详细信息是什么?

  3. 查找可用标签

    nginx 镜像有哪些可用标签?

高级工具

  1. 安全扫描器

    扫描 nginx 镜像的安全性

  2. 镜像大小优化器

    我如何减小我的 python:3.9 镜像的大小?

  3. Docker Compose 生成器

    为 nginx 生成一个 docker-compose 文件,端口映射为 8080:80

  4. 容器运行时分析器

    分析 mysql:5.7 作为数据库的运行时行为

👷 开发

项目结构

docker-explorer-mcp/ ├── docker_explorer.py # 包含所有工具的主要服务器实现 ├── requirements.txt # 项目依赖 ├── .gitignore # Git 忽略文件 └── docs/ # 文档 ├── server_guide.md # 设置和使用服务器的指南 ├── new_tools_suggestions.md # 新工具的想法 └── docker_mcp_server_project.md # 项目概述### 添加新功能

要向 Docker Explorer MCP 服务器添加新工具:

  1. docker_explorer.py 中使用 MCP 工具装饰器实现工具函数:

python @mcp.tool() def my_new_tool( param1: str = Field(description="param1 的描述"), param2: int = Field(default=10, description="param2 的描述") ) -> str: """您的工具的功能描述""" try: # 实现逻辑 result = f"您的格式化结果" return result except Exception as e: return f"my_new_tool 出错: {str(e)}"

  1. 遵循以下最佳实践进行工具实现:
    • 保持输出简洁,并为 Claude Desktop 格式化
    • 优雅地处理异常
    • 提供清晰的参数描述
    • 返回结构良好的结果

测试

  1. 手动测试

    • 运行服务器:python docker_explorer.py
    • 使用 Claude Desktop 通过提出相关问题进行测试
  2. 调试

    • 检查终端输出中的任何错误
    • 在 Claude Desktop 中验证工具响应
    • 如果 Claude 有容量限制,请调整输出格式

📚 API 文档

核心工具

search_images

  • 描述: 跨注册表搜索 Docker 镜像
  • 参数:
    • query (字符串): Docker 镜像的搜索查询
    • limit (整数, 默认=10): 返回的最大结果数量
  • 返回: 带有元数据的 Docker 镜像列表

search_tags

  • 描述: 搜索特定 Docker 镜像的标签
  • 参数:
    • image_name (字符串): Docker 镜像的名称
    • tag_pattern (字符串, 默认=""): 匹配标签的模式
    • limit (整数, 默认=25): 返回的最大结果数量
  • 返回: 匹配的标签列表

get_image_details

  • 描述: 获取有关 Docker 镜像的详细信息
  • 参数:
    • image_name (字符串): Docker 镜像的名称
    • tag (字符串, 默认="latest"): Docker 镜像的标签
  • 返回: 详细的镜像信息

高级工具

scan_security

  • 描述: 分析 Docker 镜像以查找已知漏洞和安全问题
  • 参数:
    • image_name (字符串): Docker 镜像的名称
    • tag (字符串, 默认="latest"): 要扫描的 Docker 镜像的标签
  • 返回: 安全分析报告及建议

optimize_image_size

  • 描述: 分析 Docker 镜像并提出减少其大小的方法
  • 参数:
    • repository_url (字符串): Docker Hub 仓库的完整 URL
    • tag (字符串, 默认="latest"): 要分析的 Docker 镜像的标签
  • 返回: 大小优化建议

generate_docker_compose

  • 描述: 根据镜像生成 docker-compose.yml 文件
  • 参数:
    • repository_url (字符串): Docker Hub 仓库的完整 URL
    • tag (字符串, 默认="latest"): Docker 镜像的标签
    • port_mapping (字符串, 默认=""): 可选端口映射(例如,8080:80)
    • environment_variables (字符串, 默认=""): 可选环境变量
    • include_db (布尔值, 默认=false): 是否包含数据库服务
  • 返回: 生成的 docker-compose.yml 内容

analyze_runtime

  • 描述: 分析容器在运行时的行为
  • 参数:
    • image_name (字符串): Docker 镜像的名称
    • tag (字符串, 默认="latest"): Docker 镜像的标签
    • app_type (字符串, 默认="web"): 应用程序类型(web、database、cache、api、batch)
  • 返回: 运行时分析,包括资源使用预测和建议

compare_images

  • 描述: 比较两个 Docker 镜像并突出显示差异
  • 参数:
    • image1 (字符串): 要比较的第一个 Docker 镜像(例如,nginx:1.21 或 user/repo:tag)
    • image2 (字符串): 要比较的第二个 Docker 镜像(例如,nginx:1.22 或 user/repo:tag)- 返回值: 详细的比较报告,突出显示在大小、层数、配置和兼容性方面的差异

generate_dockerfile

  • 描述: 根据用自然语言描述的应用程序需求生成Dockerfile
  • 参数:
    • app_description (字符串): 要容器化的应用程序的描述(例如,带有Redis的Python Flask Web应用)
    • app_type (字符串, 默认="web"): 应用程序类型(web, api, database, worker, static)
    • base_image (字符串, 默认=""): 可选的基础镜像(例如,python:3.9-alpine)
    • include_comments (布尔值, 默认=true): 是否在Dockerfile中包含解释性注释
  • 返回值: 生成的Dockerfile及使用说明

🔒 安全注意事项

Docker Explorer MCP服务器设计用于教育和开发目的。在使用时:

  • 不要暴露敏感凭证或API密钥
  • 在生成和运行Docker Compose文件时要谨慎
  • 实施前始终审查安全建议

📌 许可证

MIT

👥 贡献

欢迎贡献!请随时提交带有新工具或对现有功能改进的Pull Request。

来源