322 查看 · 2026-07-07 更新
🐳 Docker Explorer MCP 服务器
📋 概述
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
设置
- 克隆此仓库:
bash git clone https://github.com/yourusername/docker-mcp-server.git cd docker-mcp-server
- 创建虚拟环境:
bash python -m venv .venv310 source .venv310/bin/activate # 在 Windows 上: .venv310Scriptsactivate
- 安装依赖项:
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 一起使用:
- 更新 Claude Desktop 配置:
- 在您的 Claude Desktop 配置目录中打开或创建
claude_desktop_config.json文件 - 添加 Docker Explorer 服务器配置
- 在您的 Claude Desktop 配置目录中打开或创建
json { "mcp_servers": [ { "name": "docker-explorer", "command": ["python", "/path/to/mcpIS421/docker_explorer.py"], "cwd": "/path/to/mcpIS421" } ] }
- 重启 Claude Desktop 以加载新配置
使用工具
一旦与 Claude Desktop 集成,您可以通过向 Claude 提问来使用 Docker Explorer 工具,例如:
核心工具
-
搜索 Docker 镜像:
你能搜索 Python 的 Docker 镜像吗?
-
获取镜像详情:
python:3.11-slim 镜像的详细信息是什么?
-
查找可用标签:
nginx 镜像有哪些可用标签?
高级工具
-
安全扫描器:
扫描 nginx 镜像的安全性
-
镜像大小优化器:
我如何减小我的 python:3.9 镜像的大小?
-
Docker Compose 生成器:
为 nginx 生成一个 docker-compose 文件,端口映射为 8080:80
-
容器运行时分析器:
分析 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 服务器添加新工具:
- 在
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)}"
- 遵循以下最佳实践进行工具实现:
- 保持输出简洁,并为 Claude Desktop 格式化
- 优雅地处理异常
- 提供清晰的参数描述
- 返回结构良好的结果
测试
-
手动测试:
- 运行服务器:
python docker_explorer.py - 使用 Claude Desktop 通过提出相关问题进行测试
- 运行服务器:
-
调试:
- 检查终端输出中的任何错误
- 在 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 仓库的完整 URLtag(字符串, 默认="latest"): 要分析的 Docker 镜像的标签
- 返回: 大小优化建议
generate_docker_compose
- 描述: 根据镜像生成 docker-compose.yml 文件
- 参数:
repository_url(字符串): Docker Hub 仓库的完整 URLtag(字符串, 默认="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。
来源
- 来源:github
- 链接:https://github.com/jar285/mcp-docker