Docker-MCP quickstart

项目概述

Docker-MCP 是一个 支持mcp的Docker 管理服务器,它允许 客户端 通过 MCP(Model Control Protocol)接口直接与 Docker 进行交互。该项目提供了一套工具,使 AI 助手能够创建容器、部署 Docker Compose 、获取容器日志以及列出所有容器。

项目结构

.
├── .gitignore
├── .python-version
├── LICENSE
├── README.md
├── pyproject.toml
├── src/
│   └── docker_mcp/
│       ├── __init__.py
│       ├── docker_executor.py
│       ├── handlers.py
│       └── server.py
└── uv.lock

流程图

在这里插入图片描述

核心文件功能解析

1. pyproject.toml

这是项目的配置文件,定义了项目的元数据和依赖项:

  • 项目名称:docker-mcp
  • 版本:0.1.0
  • 描述:A docker MCP server
  • Python 版本要求:>=3.12
  • 主要依赖:
    • httpx
    • mcp
    • python-dotenv
    • python-on-whales
    • pyyaml
  • 入口点:docker_mcp:main

2. src/docker_mcp/init.py

这是包的初始化文件,定义了包的入口点:

from . import server
import asynciodef main():"""Main entry point for the package."""asyncio.run(server.main())# 在包级别暴露重要项
__all__ = ['main', 'server']

这个文件导入了 server 模块并定义了 main 函数作为包的主入口点,它会运行 server.main() 函数。

3. src/docker_mcp/server.py

这是项目的核心服务器文件,负责设置和运行 MCP 服务器:

  • 创建 MCP 服务器实例
  • 定义可用的提示(prompts)
  • 定义可用的工具(tools)
  • 处理工具调用
  • 设置信号处理(用于优雅关闭)
  • 运行服务器的主函数

服务器提供了四个主要工具:

  • create-container:创建独立的 Docker 容器
  • deploy-compose:部署 Docker Compose 堆栈
  • get-logs:获取特定容器的日志
  • list-containers:列出所有 Docker 容器

4. src/docker_mcp/handlers.py

这个文件包含处理各种 Docker 操作的类和函数:

  • DockerHandlers 类:实现了服务器提供的所有工具功能
    • handle_create_container:创建和运行 Docker 容器
    • handle_deploy_compose:部署 Docker Compose 堆栈
    • handle_get_logs:获取容器日志
    • handle_list_containers:列出所有容器
  • 辅助函数:
    • parse_port_mapping:解析端口映射配置
    • _process_yaml:处理 YAML 配置
    • _save_compose_file:保存 Docker Compose 文件
    • _deploy_stack:部署 Docker Compose 堆栈
    • _cleanup_files:清理临时文件

5. src/docker_mcp/docker_executor.py

这个文件提供了与 Docker 命令行交互的执行器类:

  • CommandExecutor 协议:定义命令执行接口
  • WindowsExecutor 和 UnixExecutor 类:针对不同操作系统的命令执行实现
  • DockerExecutorBase 抽象类:Docker 执行器的基类
  • DockerComposeExecutor 类:专门用于执行 Docker Compose 命令
    • 提供 down、pull、up、ps 等方法
    • 根据操作系统构建适当的命令

使用示例

1、启动docker
在这里插入图片描述

2、在trae中安装与配置mcp
marketspace安装
在这里插入图片描述

配置mcp

在这里插入图片描述

3、测试
列出当前有多少个镜像
在这里插入图片描述

查看正在运行的docker
在这里插入图片描述

总结

Docker-MCP 是一个精心设计的项目,它通过 MCP 协议将 Docker 功能暴露给 Claude AI,使 AI 能够直接管理 Docker 容器和 Compose 堆栈。该项目采用了现代 Python 异步编程技术,并具有良好的模块化设计,为 AI 与容器化应用的交互提供了一个强大的接口。

github链接:docker-mcp

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.pswp.cn/news/909561.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

git 的变基操作(适合一个功能进行了多次commit提交,提交记录过多不美观)

git提交的 commit 的记录很多,想多个 commit 进行合并,对代码进行整理,帮助更好的阅读代码 IDEA 的操作步骤: 这里,给出你想进行合并的记录 hash 值,完了点击“Rebase”进行合并 点击后,会进行…

【完整源码+数据集+部署教程】路边广告牌实例分割系统源码和数据集:改进yolo11-SEAMHead

研究背景与意义 研究背景与意义 随着城市化进程的加快,路边广告牌作为重要的商业宣传媒介,越来越多地出现在城市的各个角落。它们不仅承担着信息传播的功能,还对城市的视觉环境产生了深远的影响。然而,随着广告牌数量的激增&…

C++ 中文件 IO 操作详解

在C中,文件操作是通过流(stream)来实现的。标准库提供了三种主要的文件流类来处理文件IO操作: ofstream:用于写入文件(output file stream)ifstream:用于读取文件(input file stream&#xff0…

第32节 Node.js 全局对象

在Node.js中我们可以直接访问到全局对象。 这些对象在所有模块里都是可用的,有些对象不是在全局作用域而是在模块作用域里,这些情况将在本文的内容中进行介绍。 global {Object} 全局命名空间对象。 在浏览器中,全局作用域就是顶级域。如…

Linux文件属性和权限概述-linux026

Linux文件属性和权限概述 Linux 系统作为多用户操作系统,通过文件属性和权限机制来控制不同用户对文件和目录的访问,从而保证系统的安全性。不同的用户对同一文件可以有不同的访问权限,这些权限包括 读取(read)、写入…

nuScenes介绍

目标检测指标 指标内容mAP(mean Average Precision)bev下2d中心点的距离来评价,而不是像2d检测里用iou来评价mATE(Average Translation Error)中心点的2D欧式距离mASE(Average Scale Error)中心…

带中断计数器的UART接收中断程序 (8259@400H/402H)

1.程序功能 在中断服务程序中增加了中断计数器,并在主循环中通过串口输出中断次数。 2.验证 2.1手动触发8259的IR1,高电平有效 2.2串口接收 3.测试程序 ; You may customize this and other start-up templates; ; The location of this template is…

在Postgresql中跟踪SQL语句

文章说明 本文主要说明如何在Postgresql中跟踪实际执行的SQL语句。 本文内容有如下应用场景: 在系统中执行了一系列的操作,需要将这些操作转化成SQL在正式环境上一次性执行,省下重新执行一遍的操作时间。最近系统数据被人或被程序修改导致…

【信创-k8s】重磅-鲲鹏arm+麒麟V10离线部署k8s1.30+kubesphere4.1.3

随着信创产业的推进,鲲鹏arm64架构得以快速发展。而由于信创领域的主要客户通常部署在内网环境中,这使得离线部署成为该架构方案实施过程中不可或缺的关键环节。 **环境涉及软件版本信息** 服务器芯片: **鲲鹏920/飞腾2000(arm64)** 操作系统&#xff…

第11章:Neo4j实际应用案例

理论知识和技术细节固然重要,但真正理解Neo4j的价值在于了解它如何解决实际业务问题。本章将探讨Neo4j在各个领域的实际应用案例,包括社交网络分析、推荐系统、知识图谱以及欺诈检测与安全分析。通过这些案例,读者可以了解如何将前面章节学到…

数字图像处理与OpenCV初探

什么是数字图像处理? 当今时代,数字图像无处不在。手机拍照、安防监控、医疗检查、地图导航、工业质检……我们每天都在接收、分析和处理大量图像信息。对于计算机而言,图像并不是一张“看得懂”的照片,而是由数值组成的矩阵。如何…

ubuntu网络连接失败 + mobaxterm拖拽文件出错等问题解决方法

网络连接问题&#xff0c;表现在不能通过源下载以及更新 终端问题显示【通过 ip a 命令获得】 kejiubuntu:~/Desktop$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00…

C# CS_Prj01 串口通信控制台程序

一直以来&#xff0c;玩8088单板机&#xff0c;上位机都是使用的绿色现成的串口软件。 今天&#xff0c;感觉8088单板机的各部分测试都基本完成了。 本着玩的精神&#xff0c;自己写一个上位机的简单串口程序&#xff0c;与自己的8088单板机通讯。 功能&#xff1a;一个完整…

40套精品大气黑金系列行业PPT模版分享

黑金系列PPT模版&#xff0c;优秀员工颁奖典礼PPT模版&#xff0c;消费订货会PPT模版&#xff0c;共赢未来PPT模版&#xff0c;投资类PPT模版&#xff0c;双12年终盛典PPT模版&#xff0c;商业计划书PPT模版&#xff0c;高端通用企业文化PPT模版&#xff0c;公司喜报企业捷报PP…

SAP学习笔记 - 开发31 - 前端Fiori开发 Device Adaptation(设备自适应)

上一章讲了Fiori开发中的 Responsiveness&#xff08;响应式设计&#xff09;。 SAP学习笔记 - 开发30 - 前端Fiori开发 Responsiveness&#xff08;响应式设计&#xff09;-CSDN博客 本章继续学习Fiori 开发中的知识。 目录 1&#xff0c;Device Adaptation&#xff08;设备…

网络的那些事——初级——OSPF(2)

前面说了OSPF的状态机和一起简单的OSPF配合&#xff0c;接下这章继续写OSPFV2 IP frr和OSPFV3. 什么是OSPF IP FRR? OSPF IP FRR&#xff08;Fast Reroute&#xff09;利用全网链路状态数据库&#xff0c;预先计算出备份路径保存在转发表中&#xff0c;以备在故障时提供流量保…

C++(初阶)(二十一)——unordered_set和unordered_map

二十二&#xff0c;unordered_set和unordered_map的使用 1.unordered_set 1.1介绍 c11 template<class Key,class Hash std::hash<Key>,class KeyEqual std::equal_to<Key>,class Allocator std::allocator<Key> > class unordered_set;c17 na…

Java面试题:分布式ID时钟回拨怎么处理?序列号耗尽了怎么办?

欢迎来到啾啾的博客&#x1f431;。 记录学习点滴。分享工作思考和实用技巧&#xff0c;偶尔也分享一些杂谈&#x1f4ac;。 有很多很多不足的地方&#xff0c;欢迎评论交流&#xff0c;感谢您的阅读和评论&#x1f604;。 目录 引言1 分布式ID2 问题2.1 时钟回拨2.1.1 毫秒级时…

影视剧学经典系列-梁祝-陶渊明《感士不遇赋并序》

1、背景 《感士不遇赋并序》是东晋诗人陶渊明创作的一篇抒发怀才不遇之慨的辞赋作品。受董仲舒《士不遇赋》和司马迁《悲士不遇赋》启发&#xff0c;陶渊明借古喻今&#xff0c;批判“真风告逝&#xff0c;大伪斯兴”的乱世。社会批判‌以“密网裁而鱼骇&#xff0c;宏罗制而鸟…

Spring Cloud Gateway 全面学习指南

Spring Cloud Gateway 全面学习指南 学习目录 第一部分&#xff1a;基础概念与核心架构 API网关概述与Spring Cloud Gateway简介Spring Cloud Gateway核心架构与工作原理Spring Cloud Gateway与Zuul的对比分析Spring Cloud Gateway核心组件详解 第二部分&#xff1a;基础配…