Arcane Docker MCP服务器
用于通过以下方式管理Docker环境的模型上下文协议(MCP)服务器 奥术,部署在Cloudflare Workers上。
该MCP服务器为Claude Desktop和其他MCP客户端提供了通过Arcane的REST API管理Docker容器、图像、卷、网络和Docker Compose堆栈的工具。
这个项目是什么
Arcane是一个Docker管理平台,为管理多个Docker环境提供了统一的API。此MCP服务器将Arcane的功能作为MCP工具公开,允许您通过与Claude的自然语言对话与Docker基础设施进行交互。
基于Cloudflare Workers构建,使用官方Cloudflare agents 这个服务器提供了一种可扩展的、全局分布式的方式来管理你的Docker资源。
可用工具
| 工具名称 | 描述 | 所需输入 |
|---|---|---|
arcane_environment_list | 列出Arcane管理的所有Docker环境 | search?, limit? |
arcane_environment_get | 获取特定环境的详细信息 | environmentId?, environmentName? |
arcane_environment_create | 创建一个新的Docker环境 | name, apiUrl, accessToken?, enabled?, isEdge? |
arcane_environment_update | 更新现有环境 | environmentId?/environmentName?, name?, apiUrl?等等。 |
arcane_environment_delete | 删除Docker环境 | environmentId?/environmentName? |
arcane_stack_list | 列出环境中的Docker Compose堆栈 | environmentId?/environmentName?, search? |
arcane_stack_get | 获取特定堆栈的详细信息 | environmentId?/environmentName?, stackId?/stackName? |
arcane_stack_deploy | 部署新的Docker Compose堆栈 | environmentId?/environmentName?, name, composeContent |
arcane_stack_update | 更新现有堆栈 | environmentId?/environmentName?, stackId?/stackName? |
arcane_stack_start | 启动Docker Compose堆栈 | environmentId?/environmentName?, stackId?/stackName? |
arcane_stack_stop | 停止Docker Compose堆栈 | environmentId?/environmentName?, stackId?/stackName? |
arcane_stack_restart | 重新启动Docker Compose堆栈 | environmentId?/environmentName?, stackId?/stackName? |
arcane_stack_pull | 为堆栈拉取图像 | environmentId?/environmentName?, stackId?/stackName? |
arcane_stack_delete | 删除Docker Compose堆栈 | environmentId?/environmentName?, stackId?/stackName? |
arcane_container_list | 列出环境中的所有容器 | environmentId?/environmentName? |
arcane_container_get | 获取特定容器的详细信息 | environmentId?/environmentName?, containerId?/containerName? |
arcane_container_start | 启动容器 | environmentId?/environmentName?, containerId?/containerName? |
arcane_container_stop | 停止容器 | environmentId?/environmentName?, containerId?/containerName? |
arcane_container_restart | 重新启动容器 | environmentId?/environmentName?, containerId?/containerName? |
arcane_container_kill | 强行杀死一个容器 | environmentId?/environmentName?, containerId?/containerName? |
arcane_image_list | 列出环境中的所有Docker镜像 | environmentId?/environmentName? |
arcane_image_pull | 拉取Docker镜像 | environmentId?/environmentName?, imageName |
arcane_image_remove | 删除Docker镜像 | environmentId?/environmentName?, imageId |
arcane_image_prune | 删除未使用的Docker镜像 | environmentId?/environmentName? |
arcane_volume_list | 列出环境中的所有Docker卷 | environmentId?/environmentName? |
arcane_volume_inspect | 获取特定卷的详细信息 | environmentId?/environmentName?, volumeName |
arcane_volume_remove | 删除Docker卷 | environmentId?/environmentName?, volumeName |
arcane_volume_prune | 删除未使用的Docker卷 | environmentId?/environmentName? |
arcane_network_list | 列出一个环境中的所有Docker网络 | environmentId?/environmentName? |
arcane_network_inspect | 获取特定网络的详细信息 | environmentId?/environmentName?, networkId |
arcane_network_remove | 删除Docker网络 | environmentId?/environmentName?, networkId |
arcane_network_prune | 删除未使用的Docker网络 | environmentId?/environmentName? |
arcane_template_list | 列出所有Docker Compose模板 | search?, limit? |
arcane_template_get | 获取特定模板的详细信息 | templateId |
arcane_template_create | 创建新模板 | name, composeContent, description?等等。 |
arcane_template_update | 更新现有模板 | templateId, name?, composeContent?等等。 |
arcane_template_delete | 删除模板 | templateId |
arcane_version | 获取Arcane服务器版本 | - |
注: 适用于同时接受这两种功能的工具 *Id 和 *Name 参数(例如。, environmentId 对比 environmentName),你只需要提供一个。服务器将通过API调用自动将名称解析为ID。
地方发展设置
先决条件
- 包子 运行时
- 在端口3552(或任何可访问的端口)上运行的Arcane实例
- 奥术API钥匙
设置步骤
- 克隆存储库
git clone https://github.com/your-username/arcane-mcp-server.git
cd arcane-mcp-server- 安装依赖项
bun install- 配置本地机密
复制示例环境文件并填写您的值:
cp .dev.vars.example .dev.vars编辑 .dev.vars 使用Arcane API密钥:
ARCANE_API_KEY=your-api-key-here- 启动开发服务器
bun run dev服务器将于启动 http://localhost:8788.
- 与MCP检查员联系
在第二个终端中:
bunx @modelcontextprotocol/inspector@latest将检查器连接到 http://localhost:8788/mcp 验证:
- 所有工具显示在 列出工具
arcane_environment_list从Arcane实例返回真实数据arcane_stack_list随着environmentName(非ID)通过名称解析工作arcane_container_logs返回日志内容- 无效的工具输入返回正确的错误响应
通过mcp-remote连接克劳德桌面
要将此MCP服务器与Claude Desktop一起使用,请在Claude Desktop设置中进行配置:
- 安装
mcp-remote客户,如果你还没有:
bunx @modelcontextprotocol/inspector@latest- 将以下内容添加到您的Claude Desktop配置文件中:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json 窗户: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"arcane": {
"command": "bunx",
"args": ["mcp-remote", "https://arcane-mcp-server..workers.dev/mcp"]
}
}
}替换 `` 使用您的Cloudflare帐户标识符。
连接OpenCode
使用此MCP服务器 开源代码,在OpenCode设置中配置它:
- 打开OpenCode设置→ MCP服务器
- 添加具有以下配置的新MCP服务器:
{
"name": "Arcane",
"url": "https://arcane-mcp-server..workers.dev/mcp",
"transport": "sse"
}替换 `` 使用您的Cloudflare帐户标识符。
OpenCode使用示例
连接后,您可以通过OpenCode中的自然语言对话与Arcane Docker基础设施进行交互:
示例1:列出环境
User: Show me all my Docker environments
OpenCode: [Calls arcane_environment_list]
Here are your Docker environments:
- production (connected)
- staging (connected)
- dev (connected)示例2:使用模板部署堆栈
User: Deploy a WordPress stack to my production environment
OpenCode: [Calls arcane_template_list, then arcane_stack_deploy]
Deploying WordPress to production...
Stack 'wordpress' deployed successfully in environment 'production'示例3:启动/停止容器
User: Stop the database container in staging
OpenCode: [Calls arcane_environment_list, arcane_container_list, then arcane_container_stop]
Container 'db' stopped successfully in environment 'staging'示例4:拉取和修剪图像
User: Pull the latest nginx image and clean up unused images
OpenCode: [Calls arcane_image_pull, then arcane_image_prune]
Pulled nginx:latest...
Pruned 3 unused images, reclaimed 1.2GB示例5:检查体积
User: Show me details of the data volume
OpenCode: [Calls arcane_volume_inspect]
Volume 'data' details:
- Driver: local
- Mountpoint: /var/lib/docker/volumes/data
- Created: 2024-01-15T10:30:00Z
- Size: 5.2GB机密设置
秘密通过Cloudflare仪表板进行管理:
- 导航至 Cloudflare仪表板 → 工人和页面
- 选择您的
arcane-mcp-server工人 - 首选 设置 → 变量与机密
- 添加以下密钥(类型: 秘密):
| 名称 | 描述 |
|---|---|
ARCANE_API_KEY | 您的Arcane API密钥 |
Arcane主机和端口通过Cloudflare VPC服务绑定进行配置(service_id 在 wrangler.jsonc)并且不需要在这里设置。
通过Cloudflare Workers构建进行部署
此项目使用Cloudflare Workers Builds从Git进行持续部署。
初始设置
- 连接您的存储库
Cloudflare仪表板→ 工人和页面 → 创建应用程序 → 导入存储库 → 选择您的GitHub仓库。
- 配置构建设置
- 构建命令: bun run type-check - 部署命令: bunx wrangler deploy
- 设置秘密
跟随 机密设置 上面的说明。
- 验证工人姓名
这 name 在 wrangler.jsonc 必须与Cloudflare仪表板中的Worker名称完全匹配。如果不匹配,构建将失败。
部署
只需推到您的 main 分支:
git push origin main监控构建:仪表板→ 工人和页面→ 你的工人→ 建筑 → 查看构建历史记录。
运行测试
运行测试套件:
bun test在监视模式下运行测试:
bun run test:watch在推送到存储库之前,所有测试都必须通过。
建筑
该项目遵循Cloudflare agents 包装图案:
- ArcaneAgent (持久对象):使用WebSocket休眠管理MCP会话
- Arcane客户端:Arcane REST API的类型化HTTP客户端
- 工具注册:按域(环境、堆栈、容器等)组织的MCP工具
- 名称解析:资源名称自动解析为ID,便于用户交互
持久对象模式是必需的 agents 包装和手柄:
- WebSocket会话管理
- 会话状态持久化
- SSE和流式HTTP传输都是自动的
- 冷启动和重新连接无缝衔接
许可证
有关详细信息,请参阅LICENSE文件。
