使用说明
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.<account>.workers.dev/mcp"]
}
}
}
替换 <account> 使用您的Cloudflare帐户标识符。
连接OpenCode
使用此MCP服务器 开源代码,在OpenCode设置中配置它:
- 打开OpenCode设置→ MCP服务器
- 添加具有以下配置的新MCP服务器:
{
"name": "Arcane",
"url": "https://arcane-mcp-server.<account>.workers.dev/mcp",
"transport": "sse"
}
替换 <account> 使用您的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文件。