使用说明
DigitalOcean MCP服务器
一个全面的模型上下文协议(MCP)服务器,提供对DigitalOcean的API的编程访问。此服务器公开 48工具 横跨 7大服务类别 通过MCP接口进行完整的基础设施管理。
特性
- 🖥️ 液滴管理:具有调整大小和快照功能的完整生命周期管理
- 💾 卷管理:块存储操作,包括连接/分离和快照
- 📸 快照操作:液滴和卷的备份和恢复功能
- 🖼️ 图像管理:自定义图像操作、传输和转换
- 🌐 浮动IP管理:静态IP分配、分配和管理
- ⚖️ 负载平衡器操作:具有完整CRUD操作的流量分布
- 🔥 防火墙管理:通过规则和策略管理实现完整的网络安全
- ☸️ Kubernetes操作:全面的集群和节点池管理
- 📦 容器注册表:访问和管理DigitalOcean集装箱登记处
- ✅ 连接测试:验证API连接和身份验证
先决条件
- 上涨1.19或更高
- DigitalOcean API令牌 (必填-请参阅配置部分)
安装
来源
git clone https://github.com/rohit-kaundal/digitalocean-mcp-server.git
cd digitalocean-mcp-server
go mod tidy
go build -o digitalocean-mcp-server
使用Go安装
go install github.com/rohit-kaundal/digitalocean-mcp-server@latest
配置
环境变量
必需:在运行服务器之前设置您的DigitalOcean API令牌:
export DIGITALOCEAN_ACCESS_TOKEN="your_digitalocean_api_token"
⚠️ 没有设置此环境变量,服务器将无法运行。
获取DigitalOcean API代币
- 登录到您的 数字海洋控制面板
- 导航至 API 在左侧边栏中
- 点击 生成新令牌
- 为您的令牌命名并选择适当的范围
- 复制生成的令牌(您将无法再次看到它)
用法
运行服务器
首先,确保您的DigitalOcean API令牌已设置:
export DIGITALOCEAN_ACCESS_TOKEN="your_digitalocean_api_token"
然后运行服务器:
./digitalocean-mcp-server
或者直接用Go运行:
go run main.go
服务器将启动并通过stdio传输监听MCP请求。
可用工具(共48个)
连接与测试
test_connection-测试API连接和身份验证
液滴管理(7个工具)
list_droplets-列出所有支持分页的液滴get_droplet-获取特定液滴的详细信息create_droplet-使用自定义规格创建新液滴delete_droplet-永久删除液滴resize_droplet-将液滴大小调整为不同大小(CPU/RAM/磁盘)create_droplet_snapshot-创建液滴的快照备份
卷管理(8个工具)
list_volumes-列出所有块存储卷(可选按区域)get_volume-获取详细的卷信息create_volume-创建新的块存储卷delete_volume-删除卷attach_volume-将体积附加到液滴上detach_volume-从液滴中分离体积resize_volume-扩展卷存储容量create_volume_snapshot-创建卷的快照备份
快照操作(6个工具)
list_snapshots-列出所有快照(按液滴/体积过滤)list_volume_snapshots-列出特定卷的快照list_droplet_snapshots-列出特定于液滴的快照get_snapshot-获取详细的快照信息delete_snapshot-删除快照
图像管理(6个工具)
list_images-列出可用图像(分发/应用程序/用户)get_image-通过ID或slug获取图像详细信息update_image-更新图像元数据(名称、描述)delete_image-删除自定义图像transfer_image-将图像转移到不同区域convert_image_to_snapshot-将图像转换为快照格式
浮动IP管理(6个工具)
list_floating_ips-列出所有浮动IP地址get_floating_ip-获取浮动IP详细信息和分配状态create_floating_ip-创建新的浮动IP(区域或分配)delete_floating_ip-释放浮动IPassign_floating_ip-为液滴分配浮动IPunassign_floating_ip-从液滴中取消分配浮动IP
负载平衡器操作(9个工具)
list_load_balancers-列出所有负载平衡器get_load_balancer-获取负载均衡器配置和状态create_load_balancer-使用转发规则创建新的负载平衡器update_load_balancer-更新负载平衡器配置delete_load_balancer-删除负载平衡器add_droplets_to_load_balancer-将液滴添加到负载平衡器池remove_droplets_from_load_balancer-清除水池中的水滴add_forwarding_rules_to_load_balancer-添加流量转发规则remove_forwarding_rules_from_load_balancer-删除转发规则
防火墙管理(11个工具)
list_firewalls-列出帐户中的所有防火墙get_firewall-获取详细的防火墙配置和规则create_firewall-使用入站/出站规则创建新防火墙update_firewall-更新防火墙配置和规则delete_firewall-从帐户中删除防火墙add_droplets_to_firewall-将水滴分配给防火墙保护remove_droplets_from_firewall-清除防火墙中的水滴add_tags_to_firewall-为组织的防火墙添加标签remove_tags_from_firewall-从防火墙中删除标签add_rules_to_firewall-向防火墙添加新的安全规则remove_rules_from_firewall-删除现有安全规则
Kubernetes集群(4个工具)
list_k8s_clusters-列出所有Kubernetes集群get_k8s_cluster-获取集群详细信息和状态create_k8s_cluster-创建新的Kubernetes集群delete_k8s_cluster-删除Kubernetes集群
容器注册表(2个工具)
list_registries-列出所有容器注册表get_registry-获取注册表详细信息和存储库
MCP客户端使用示例
基本操作
{
"method": "tools/call",
"params": {
"name": "list_droplets",
"arguments": {
"page": 1,
"per_page": 25
}
}
}
{
"method": "tools/call",
"params": {
"name": "create_droplet",
"arguments": {
"name": "my-server",
"region": "nyc3",
"size": "s-1vcpu-1gb",
"image": "ubuntu-22-04-x64"
}
}
}
卷管理
{
"method": "tools/call",
"params": {
"name": "create_volume",
"arguments": {
"name": "my-storage",
"region": "nyc3",
"size_gigabytes": 100,
"description": "Additional storage for applications"
}
}
}
{
"method": "tools/call",
"params": {
"name": "attach_volume",
"arguments": {
"volume_id": "volume-123",
"droplet_id": 456
}
}
}
负载平衡器设置
{
"method": "tools/call",
"params": {
"name": "create_load_balancer",
"arguments": {
"name": "web-lb",
"algorithm": "round_robin",
"region": "nyc3",
"forwarding_rules": [
{
"entry_protocol": "http",
"entry_port": 80,
"target_protocol": "http",
"target_port": 8080
}
],
"droplet_ids": [123, 456]
}
}
}
浮动IP管理
{
"method": "tools/call",
"params": {
"name": "create_floating_ip",
"arguments": {
"region": "nyc3"
}
}
}
{
"method": "tools/call",
"params": {
"name": "assign_floating_ip",
"arguments": {
"ip": "192.168.1.100",
"droplet_id": 123
}
}
}
防火墙配置
{
"method": "tools/call",
"params": {
"name": "create_firewall",
"arguments": {
"name": "web-firewall",
"inbound_rules": [
{
"protocol": "tcp",
"ports": "80",
"sources": {
"addresses": ["0.0.0.0/0"]
}
},
{
"protocol": "tcp",
"ports": "443",
"sources": {
"addresses": ["0.0.0.0/0"]
}
}
],
"outbound_rules": [
{
"protocol": "tcp",
"ports": "all",
"destinations": {
"addresses": ["0.0.0.0/0"]
}
}
],
"droplet_ids": [123, 456]
}
}
}
{
"method": "tools/call",
"params": {
"name": "add_droplets_to_firewall",
"arguments": {
"firewall_id": "firewall-123",
"droplet_ids": [789, 101112]
}
}
}
发展
项目结构
digitalocean-mcp-server/
├── main.go # Entry point
├── server/
│ ├── server.go # MCP server initialization
│ └── tools.go # Tool registration
├── client/
│ └── digitalocean.go # DigitalOcean API client
├── handlers/
│ ├── common.go # Shared handler functionality
│ ├── droplets.go # Droplet operations
│ ├── volumes.go # Volume operations
│ ├── snapshots.go # Snapshot operations
│ ├── images.go # Image operations
│ ├── floating_ips.go # Floating IP operations
│ ├── load_balancers.go # Load balancer operations
│ ├── firewalls.go # Firewall operations
│ ├── kubernetes.go # Kubernetes operations
│ └── registry.go # Registry operations
├── types/
│ └── args.go # Request argument types
└── CLAUDE.md # AI assistant instructions
开发命令
# Run the server
go run main.go
# Run tests
go test ./...
# Build binary
go build -o digitalocean-mcp-server
# Update dependencies
go mod tidy
添加新工具
- 在中定义参数类型
types/args.go - 在相应的文件中实现处理程序逻辑
handlers/ - 在中注册该工具
server/tools.go - 更新此文档
依赖项
错误处理
所有工具均返回标准化的MCP响应:
- 成功:包含请求信息的JSON格式数据
- 错误:结构化错误消息,详细说明问题所在
常见错误场景:
- API令牌无效或丢失
- 权限不足
- 资源未找到
- API速率限制
- 网络连接问题
贡献
我们欢迎捐款!请看 贡献.md 作为指导方针。
许可证
此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。
支持
- 报告问题 GitHub问题
- 检查 DigitalOcean API文档
- 审查 MCP协议规范
更新日志
v2.0.1
- 防火墙管理:通过11个防火墙工具增加了全面的网络安全
- 安全规则:完成入站/出站规则管理和配置
- 液滴保护:为飞沫分配和管理防火墙保护
- 标签管理:使用基于标签的分类来组织防火墙
- 规则修改:动态添加和删除安全规则
- 增强文档:更新了防火墙管理示例
v2.0.0版本
- 大规模扩张:在5个附加服务类别中添加了30多个新的API工具
- 卷管理:完整的块存储生命周期(8个工具)
- 快照操作:备份和恢复功能(6个工具)
- 图像管理:自定义图像操作和传输(6个工具)
- 浮动IP管理:静态IP分配和分配(6个工具)
- 负载平衡器操作:具有完整CRUD的流量分配(9个工具)
- 增强液滴:添加了调整大小和快照功能
- 综合文档:更新为详细的API覆盖范围
- 改进的体系结构:模块化处理器设计,可扩展
v1.0.0
- 初始版本
- 液滴管理工具(5个工具)
- Kubernetes集群工具(4个工具)
- 容器注册表工具(2个工具)
- 连接测试