🚀 DigitalOcean數據庫MCP服務器
本項目可讓你僅使用API令牌,就能將支持AI的集成開發環境(IDE)連接到DigitalOcean數據庫!它兼容多種流行的IDE和AI工具,如Cursor AI、Claude Desktop、Windsurf等。
🚀 快速開始
本模型上下文協議(MCP)服務器可實現支持AI的開發環境與你的DigitalOcean託管數據庫之間的無縫集成。它適用於Cursor AI、Claude Desktop、Windsurf、帶有AI擴展的VS Code以及任何其他支持MCP的IDE。你無需手動管理數據庫憑證,只需使用DigitalOcean API令牌即可自動發現並連接到你的任何數據庫集群。
✨ 主要特性
- 🔑 基於令牌的身份驗證 - 使用你的DigitalOcean API令牌,無需管理數據庫憑證
- 🔍 自動發現 - 自動列出你所有的數據庫集群
- 🎯 按名稱連接 - 只需指定集群名稱,無需複雜的連接字符串
- 🗄️ 多數據庫支持 - 支持PostgreSQL和MySQL集群
- 🔒 安全連接 - 默認啟用SSL支持
- 🛠️ 完整的SQL支持 - 執行查詢、管理模式、分析數據
- 🔄 連接池 - 通過自動連接管理優化性能
🎯 你可以做的事情
連接後,你可以通過自然語言與數據庫進行交互:
- "Show me all my database clusters"
- "Connect to my production database"
- "List all tables and describe the users table"
- "Run this analytics query and explain the results"
- "Create a new table for storing blog posts"
- "Show me the top 10 customers by revenue"
🔧 兼容的IDE和AI工具
📦 安裝指南
1. 克隆倉庫
git clone https://github.com/oladejibidmus/DigitalOcean-Database-MCP-Server.git
cd digitalocean-database-mcp
2. 安裝依賴
npm install
3. 構建項目
npm run build
4. 獲取你的DigitalOcean API令牌
- 訪問 DigitalOcean API Tokens
- 點擊 "Generate New Token"
- 命名為類似 "Cursor Database MCP" 的名稱
- 選擇 "Read" 權限(或 "Read & Write" 以獲得完全訪問權限)
- 複製令牌(你只會看到一次!)
5. 配置你的IDE
選擇你的開發環境並按照相應的設置進行操作:
🎯 Cursor AI
- 打開Cursor設置:按下
Ctrl+Shift+P
(在Mac上為 Cmd+Shift+P
)並搜索 "Cursor Settings"
- 找到MCP服務器:在側邊欄中查找MCP選項並啟用它
- 添加新的MCP服務器:點擊 "Add New MCP Server"
- 配置服務器:
- 名稱:
digitalocean-database
- 命令:
node
- 參數:
/absolute/path/to/digitalocean-database-mcp/dist/index.js
- 啟用:將服務器切換為活動狀態(應出現綠色圓點)
或者,在你的項目目錄中創建一個 .cursor/mcp.json
文件:
{
"mcpServers": {
"digitalocean-database": {
"command": "node",
"args": ["/absolute/path/to/digitalocean-database-mcp/dist/index.js"]
}
}
}
🤖 Claude Desktop
- 打開Claude Desktop設置:轉到設置 → 開發者
- 點擊 "Edit Config":這將打開
claude_desktop_config.json
- 添加服務器配置:
{
"mcpServers": {
"digitalocean-database": {
"command": "node",
"args": ["/absolute/path/to/digitalocean-database-mcp/dist/index.js"]
}
}
}
- 保存並重啟 Claude Desktop
🌊 Windsurf
- 打開Windsurf設置:點擊 "Windsurf - Settings" 按鈕(右下角)或按下
Ctrl+Shift+P
並搜索 "Open Windsurf Settings"
- 導航到Cascade:在高級設置中找到 "Cascade" 部分
- 啟用MCP:查找 "Model Context Protocol" 選項並啟用它
- 點擊Cascade工具欄中的錘子圖標
- 配置MCP:點擊 "Configure" 打開MCP配置文件
- 添加你的服務器:
{
"mcpServers": {
"digitalocean-database": {
"command": "node",
"args": ["/absolute/path/to/digitalocean-database-mcp/dist/index.js"]
}
}
}
- 刷新:點擊刷新按鈕啟動服務器
💻 VS Code
對於GitHub Copilot Agent模式(內置):
- 啟用MCP支持:轉到設置並啟用
chat.mcp.enabled
- 創建MCP配置:在你的工作區中添加一個
.vscode/mcp.json
文件:
{
"servers": {
"digitalocean-database": {
"type": "stdio",
"command": "node",
"args": ["/absolute/path/to/digitalocean-database-mcp/dist/index.js"]
}
}
}
- 使用Agent模式:從聊天模式下拉菜單中選擇 "Agent"
對於Continue.dev擴展:
- 從市場安裝Continue.dev擴展
- 配置MCP:創建
.continue/mcpServers/digitalocean-db.yaml
:
name: DigitalOcean Database
mcpServer:
version: 0.0.1
schema: v1
mcpServers:
- name: DigitalOcean DB
command: node
args:
- "/absolute/path/to/digitalocean-database-mcp/dist/index.js"
⚡ Zed
- 打開Zed:啟動Zed編輯器
- 訪問代理面板設置:轉到代理面板並點擊設置齒輪
- 添加上下文服務器:點擊 "Add Context Server" 或手動編輯設置
- 在settings.json中配置:
{
"context_servers": {
"digitalocean-database": {
"source": "custom",
"command": {
"path": "node",
"args": ["/absolute/path/to/digitalocean-database-mcp/dist/index.js"],
"env": {}
}
}
}
}
🔧 通用MCP客戶端設置
對於任何其他支持MCP的客戶端,使用以下標準參數:
- 傳輸類型:
stdio
- 命令:
node
- 參數:
["/absolute/path/to/digitalocean-database-mcp/dist/index.js"]
- 工作目錄:你的項目目錄
- 環境變量:可選的
DO_API_TOKEN
用於預設置身份驗證
6. 驗證安裝
配置完成後:
- 重啟你的IDE/編輯器
- 查找MCP指示器:大多數IDE在MCP服務器活動時會顯示工具/服務器圖標
- 測試連接:嘗試說 "Set my DigitalOcean API token" 以驗證服務器是否響應
注意:將 /absolute/path/to/digitalocean-database-mcp
替換為你克隆的倉庫的實際完整路徑。
💻 使用示例
基礎用法
步驟1:設置你的API令牌
在你的AI助手(Cursor、Claude Desktop、Windsurf等)中,只需說:
Set my DigitalOcean API token: dop_v1_your_actual_token_here
步驟2:發現你的數據庫
Show me all my database clusters
步驟3:連接到數據庫
Connect to my database cluster named "production-api"
步驟4:開始查詢!
Show me all tables in this database
Execute this query: SELECT COUNT(*) FROM users WHERE created_at > '2024-01-01'
Describe the structure of the orders table
高級用法
基本數據分析
"Connect to my cluster named 'analytics-prod'"
"Show me all tables and describe the events table"
"SELECT DATE(created_at) as date, COUNT(*) as events
FROM events
WHERE created_at >= CURRENT_DATE - INTERVAL '30 days'
GROUP BY DATE(created_at)
ORDER BY date"
模式管理
"List all tables and their row counts"
"CREATE TABLE blog_posts (
id SERIAL PRIMARY KEY,
title VARCHAR(255) NOT NULL,
content TEXT,
author_id INTEGER,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
)"
"Describe the blog_posts table"
IDE特定的使用提示
Cursor AI
- 使用自然語言進行復雜查詢
- 請求在數據庫上下文中生成代碼
- 請求數據可視化建議
Claude Desktop
- 非常適合數據分析和報告
- 請求解釋查詢結果
- 請求數據庫優化建議
Windsurf
- 非常適合協作數據庫工作
- 用於實時查詢調試
- 利用AI結對編程進行模式設計
VS Code
- 與現有的數據庫工作流程集成
- 與數據庫擴展工具一起使用
- 非常適合生成遷移腳本
📋 可用命令
🔐 身份驗證和發現
set_api_token
- 設置你的DigitalOcean API令牌
list_database_clusters
- 列出你所有的數據庫集群
connect_by_name
- 按名稱連接到集群
🗄️ 數據庫操作
execute_query
- 運行帶有可選參數的SQL查詢
list_tables
- 顯示數據庫中的所有表
describe_table
- 獲取詳細的表模式
get_database_info
- 獲取數據庫版本和集群信息
disconnect_database
- 關閉當前連接
🔧 手動連接(可選)
connect_database
- 如果需要,使用手動憑證進行連接
🏗️ 架構
┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐
│ AI Assistant │◄──►│ MCP Server │◄──►│ DigitalOcean DB │
│ │ │ │ │ Clusters │
│ • Cursor AI │ │ • API Client │ │ • PostgreSQL │
│ • Claude Desktop│ │ • DB Connectors │ │ • MySQL │
│ • Windsurf │ │ • Query Engine │ │ • SSL Enabled │
│ • VS Code │ │ • Pool Manager │ │ • Auto-scaling │
│ • Any MCP Client│ │ │ │ │
└─────────────────┘ └─────────────────┘ └─────────────────┘
🔒 安全最佳實踐
- ✅ API令牌權限 - 儘可能使用只讀令牌
- ✅ SSL連接 - 所有連接默認啟用SSL
- ✅ 不存儲憑證 - 令牌僅在會話期間存儲在內存中
- ✅ 連接池 - 自動清理和資源管理
- ✅ 參數綁定 - 預編譯語句可防止SQL注入
🔧 技術細節
項目結構
digitalocean-database-mcp/
├── src/
│ └── index.ts # 主要的MCP服務器實現
├── dist/ # 編譯後的JavaScript輸出
├── package.json # 依賴項和腳本
├── tsconfig.json # TypeScript配置
└── README.md # 本文件
開發腳本
npm run dev
npm run build
npm start
添加新功能
- 分叉倉庫
- 創建一個功能分支:
git checkout -b feature/new-feature
- 在
src/index.ts
中進行更改
- 使用你的DigitalOcean數據庫進行徹底測試
- 提交拉取請求
🚨 故障排除
連接問題
"Invalid API token"
- 驗證你的令牌是否正確且未過期
- 檢查令牌是否具有足夠的權限
- 確保你使用的是包含
dop_v1_
前綴的完整令牌
"Database cluster not found"
- 運行
list_database_clusters
查看可用的集群
- 檢查集群名稱的拼寫是否正確
- 驗證集群是否處於運行狀態
"SSL connection failed"
- DigitalOcean要求託管數據庫使用SSL
- 服務器會自動處理SSL,但請檢查防火牆設置
- 驗證你的集群是否允許從你的IP地址進行連接
MCP集成問題
"MCP server not found"
- 檢查你在IDE配置中的路徑是否為絕對路徑且正確
- 驗證Node.js是否已安裝並可在系統路徑中訪問
- 嘗試手動運行服務器:
node dist/index.js
- 配置更改後重啟你的IDE
"Server not responding"
- 確保MCP服務器進程正在運行
- 檢查特定於IDE的MCP日誌:
- Cursor:檢查輸出面板中的MCP服務器日誌
- Claude Desktop:查看應用程序日誌
- Windsurf:檢查開發者工具控制檯
- VS Code:檢查擴展輸出面板
"Connection timeout"
- 增加你的數據庫設置中的連接超時時間
- 檢查你的集群是否過載
- 驗證與DigitalOcean的網絡連接
🤝 貢獻
我們歡迎貢獻!請參閱我們的貢獻指南:
- 分叉 倉庫
- 創建 一個功能分支
- 進行 更改
- 徹底測試
- 提交 拉取請求
開發環境
- Node.js 18+
- TypeScript 5+
- 訪問DigitalOcean數據庫進行測試
📄 許可證
本項目採用MIT許可證 - 有關詳細信息,請參閱 LICENSE 文件。
🙏 致謝
📞 支持
Made with ❤️ for the AI-powered development community
GitHub star badge: https://github.com/oladejibidmus/DigitalOcean-Database-MCP-Server
🌟 Star this repo on GitHub
Works with: 🎯 Cursor AI • 🤖 Claude Desktop • 🌊 Windsurf • 💻 VS Code • ⚡ Zed • 🔧 Any MCP Client