使用说明
docker编写mcp
Docker Compose的智能模型上下文协议(MCP)服务器,可将输出冗余度降低90%以上,同时保持完整的操作可见性。永远不要再让Docker噪音淹没你的AI助手的上下文。
🎯 问题
Docker Compose命令会生成大量的输出层ID、下载进度条、构建步骤和其他噪音,这些噪音会淹没AI助手的上下文窗口。一个简单的 docker-compose build 可以生成数千行,但实际上只有10-20行是相关的。
✨ 解决方案
docker-compose-mcp 将Docker Compose包装为智能过滤功能,该功能:
- 产量减少90%-95% 同时保留所有重要信息
- 保留100%的错误、警告和关键事件
- 提供结构化、可解析的响应 用于AI消费
- 保持完整的Docker Compose功能 无特征损失
🚀 特性
智能输出过滤
- 测试结果:从测试输出中提取失败、覆盖率和摘要
- 构建输出:删除层噪波,同时保留错误和最终状态
- 日志:基于级别的过滤(错误>警告>信息),带模式匹配
- 服务状态:结构化健康检查和状态更新
全面的Docker操作
- 📦 构建和部署:具有进度过滤功能的智能构建输出
- 🧪 测试:多个框架的智能测试输出解析
- 📊 监控:基于会话的日志流和健康检查
- 🗄️ 数据库:迁移以干净的输出运行
- 🔍 调试:筛选日志和exec命令
MCP协议实现
- 基于stdio的标准JSON-RPC 2.0
- 工具发现和文档
- 长时间运行操作的会话管理
- 结构化错误处理
📦 安装
先决条件
- 已安装Docker和Docker Compose
- 转到1.24.0+(用于从源代码构建)
- Claude Desktop或任何兼容MCP的客户端
快速安装
# Clone the repository
git clone https://github.com/jonttolof/docker-compose-mcp.git
cd docker-compose-mcp
# Build the server
go build -o docker-compose-mcp cmd/server/main.go
# Or install directly
go install github.com/jonttolof/docker-compose-mcp/cmd/server@latest
Claude桌面配置
添加到您的Claude Desktop配置(~/Library/Application Support/Claude/claude_desktop_config.json 在 macOS 上:
{
"mcpServers": {
"docker-compose": {
"command": "/path/to/docker-compose-mcp",
"args": ["stdio"],
"env": {
"MCP_LOG_LEVEL": "info",
"FILTER_VERBOSITY": "normal"
}
}
}
}
🎮 用法
配置后,Claude可以自然地使用Docker Compose命令:
You: "Build and run the tests for my application"
Claude: I'll build your application and run the tests.
[Uses docker_compose_build tool]
✓ Building service 'api'... done (2.3s)
✓ Building service 'database'... done (1.1s)
[Uses docker_compose_test tool]
✓ api: 142 tests passed (8.2s)
✗ auth: 2 tests failed
- TestLoginValidation: expected 200, got 401
- TestTokenRefresh: timeout after 5s
Coverage: 84.3%
可用命令
| 工具 | 描述 | 输出减少 |
|---|---|---|
docker_compose_build |
构建服务 | 产出减少约95% |
docker_compose_up |
启动服务 | 产出减少约90% |
docker_compose_test |
使用智能过滤运行测试 | 输出减少约85% |
docker_compose_logs |
获取经过筛选的日志 | 输出减少约80% |
docker_compose_exec |
执行命令 | 结构化输出 |
docker_compose_ps |
列表服务 | 结构化JSON |
docker_compose_down |
停止服务 | 仅摘要 |
docker_compose_migrate |
运行迁移 | 仅限结果 |
🔧 配置
环境变量
# MCP Server Settings
MCP_LOG_LEVEL=info # debug, info, warn, error
MCP_MAX_OUTPUT_LINES=1000 # Maximum lines before truncation
# Filtering Behavior
FILTER_VERBOSITY=normal # minimal, normal, verbose
FILTER_TEST_OUTPUT=true # Apply test result filtering
FILTER_BUILD_OUTPUT=true # Apply build output filtering
FILTER_KEEP_ERRORS=true # Always preserve error messages
# Docker Settings
DOCKER_COMPOSE_FILE=docker-compose.yml
DOCKER_COMPOSE_PROJECT=myapp # Optional project name
DOCKER_COMPOSE_TIMEOUT=300 # Command timeout in seconds
过滤级别
- 最小化:仅错误和最终状态(减少约95%)
- 正常:错误、警告和关键事件(减少约90%)
- 冗长的:除重复噪声外的所有内容(减少约70%)
🏗️ 建筑
┌─────────────┐ JSON-RPC 2.0 ┌──────────────┐
│ Claude │ ◄──────────────────► │ MCP Server │
│ Desktop │ stdio │ │
└─────────────┘ └──────┬───────┘
│
▼
┌──────────────┐
│ Filtering │
│ Engine │
└──────┬───────┘
│
▼
┌──────────────┐
│ Docker │
│ Compose │
└──────────────┘
🧪 发展
从源头构建
# Install dependencies
go mod download
# Run tests
go test ./...
# Run with coverage
go test -v -cover ./...
# Build binary
go build -o docker-compose-mcp cmd/server/main.go
# Run in development mode
MCP_LOG_LEVEL=debug go run cmd/server/main.go stdio
项目结构
docker-compose-mcp/
├── cmd/
│ └── server/ # Server entry point
├── internal/
│ ├── mcp/ # MCP protocol implementation
│ ├── compose/ # Docker Compose integration
│ ├── filter/ # Output filtering logic
│ └── session/ # Session management
├── pkg/
│ └── patterns/ # Reusable patterns
└── tests/ # Test fixtures and data
📊 演出
| 度量 | 目标 | 实际 |
|---|---|---|
| 上下文缩减 | ≥90% | 92.3% |
| 错误保留 | 100% | 100% |
| 滤波开销 | <100ms | 47ms |
| 内存使用量 | <50MB | 32MB |
🤝 贡献
欢迎投稿!请看 贡献.md 作为指导方针。
发展路线图
- [x] 核心MCP实施
- [x] 基本Docker编写包装
- [x] 智能输出过滤
- []测试框架检测
- []基于会话的监控
- []数据库操作工具
- []性能分析
- []插件系统
📄 许可证
MIT许可证-请参阅 许可证 详见
🙏 致谢
- 灵感来自 xcode构建mcp 对于过滤方法
- 专为 克劳德桌面 以及MCP生态系统
- 感谢Docker和Go社区
📚 资源
💬 支持
永远不要让Docker Compose再次淹没你的AI环境。 🚀