无人机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 -dMCP服务器将在 http://: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 -dCaddy会自动从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_TOKENset):每个请求必须包括Authorization: Bearer强烈建议用于任何面向互联网的部署。 - 传输层安全:由Caddy在
docker-compose.caddy.yml部署。Caddy自动获得Let's Encrypt证书。
建筑
Claude (online) ──HTTPS──► Caddy (TLS, :443) ──► MCP server (:8080)
│
Local Claude ──────────────────────────────────────────►│
│
Drone CI APIMCP服务器使用 可流式HTTP传输 (不是stdio),它支持多个并发客户端并在网络上工作。
