Drone CI MCP服务器

一个将Drone CI实例作为工具暴露给Claude和其他MCP客户端的MCP服务器。

  • by StanleyGoldman
  • Go
  • 本地部署
  • 更新于
在 GitHub 查看 StanleyGoldman/drone-ci-mcp-server

使用说明

无人机ci mcp服务器

一 MCP(模型上下文协议) 暴露您的服务器 无人机CI 作为Claude和其他MCP客户端的工具。

连接后,您可以问Claude以下问题:

  • “acme/widget的最新版本的状态如何?”
  • “显示build 42中失败步骤的日志”
  • “在feature/x分支上触发acme/gadget的构建”
  • “取消acme/widget的构建99”

MCP工具

工具 说明
list_repos 列出启用了Drone CI的所有存储库
get_repo 获取特定存储库的详细信息
list_builds 列出存储库的最新版本
get_build 获取构建细节,包括阶段和步骤
get_build_logs 获取特定构建步骤的日志输出
trigger_build 在分支上触发新构建
cancel_build 取消正在运行的构建
restart_build 从同一提交重新启动现有构建

发展

先决条件

  • 转到1.24+
  • Docker+Docker Compose(针对Docker目标)
  • 戈朗茨皮棉 (为 make lint)

使用开发容器(推荐)

在VS Code中打开此存储库并选择 在容器中重新打开dev容器提供Go、Docker之外的Docker以及预装的GitHub CLI。

建造和测试

# Build the binary
make build

# Run unit tests
make test

# Run unit + integration tests (full HTTP stack, no external services required)
make test-integration

# Generate an HTML coverage report (opens coverage.html)
make coverage

# Run the linter
make lint

在本地运行

cp .env.example .env
# Edit .env — set DRONE_SERVER and DRONE_TOKEN at minimum
make run

服务器启动于 http://localhost:8080 默认情况下。

部署

本地网络(克劳德桌面)

当Claude Desktop与您的Drone CI服务器位于同一网络上时,请使用此功能。

cp .env.example .env
# Fill in DRONE_SERVER and DRONE_TOKEN
docker compose up -d

MCP服务器将在 http://<host-ip>:8080.

将其添加到您的Claude Desktop配置中(claude_desktop_config.json):

{
  "mcpServers": {
    "drone-ci": {
      "type": "http",
      "url": "http://192.168.1.100:8080"
    }
  }
}

如果你设置 MCP_AUTH_TOKEN,将其作为标题包含:

{
  "mcpServers": {
    "drone-ci": {
      "type": "http",
      "url": "http://192.168.1.100:8080",
      "headers": {
        "Authorization": "Bearer your_token_here"
      }
    }
  }
}

面向互联网(claude.ai在线会话)

使用此功能允许Claude.ai上的Claude通过互联网访问您的服务器。

先决条件:

  • 带有指向此主机的A记录的域名
  • 转发到此主机的防火墙/路由器端口上的端口80和443打开
cp .env.example .env
# Fill in DRONE_SERVER, DRONE_TOKEN, MCP_AUTH_TOKEN (strongly recommended), and MCP_HOSTNAME
docker compose -f docker-compose.caddy.yml up -d

Caddy会自动从Let's Encrypt获取并更新TLS证书。

将其添加到Claude web应用程序的MCP设置中:

URL: https://drone-mcp.yourdomain.com
Authorization: Bearer your_token_here

配置参考

变量 必填 默认 描述
DRONE_SERVER 是 -- 无人机CI服务器URL(例如。 http://drone.example.com)
DRONE_TOKEN 是 -- 无人机CI个人访问令牌
MCP_PORT 没有 8080 MCP服务器监听的端口
MCP_AUTH_TOKEN 没有 -- 承载令牌来保护MCP端点。空=无身份验证
MCP_HOSTNAME 仅限Caddy -- 自动TLS域名(仅限Cady部署)

访问控制

  • 无身份验证 (MCP_AUTH_TOKEN 空):适用于端口不暴露于互联网的可信本地网络。
  • 持有者令牌 (MCP_AUTH_TOKEN set):每个请求必须包括 Authorization: Bearer <token>强烈建议用于任何面向互联网的部署。
  • 传输层安全:由Caddy在 docker-compose.caddy.yml 部署。Caddy自动获得Let's Encrypt证书。

建筑

Claude (online) ──HTTPS──► Caddy (TLS, :443) ──► MCP server (:8080)
                                                        │
Local Claude ──────────────────────────────────────────►│
                                                        │
                                                   Drone CI API

MCP服务器使用 可流式HTTP传输 (不是stdio),它支持多个并发客户端并在网络上工作。