🚀 Redshift MCP 服務器
Redshift MCP 服務器是一款即插即用的模型上下文協議(MCP)服務器,專為 Amazon Redshift 設計。它能讓大語言模型(LLM)和 AI 智能體(如 Claude、ChatGPT 等)安全、便捷地連接到你的 Redshift 數據。
🚀 快速開始
1. 克隆並安裝
git clone <repo-url>
cd my-redshift-mcp
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
2. 配置(推薦:創建一個 .env 文件)
REDSHIFT_HOST=your-cluster.region.redshift.amazonaws.com
REDSHIFT_DATABASE=mydb
REDSHIFT_USER=myuser
REDSHIFT_PASSWORD=mypassword
REDSHIFT_PORT=5439
DB_MCP_MODE=readonly
3. 運行服務器
./scripts/run_server.sh
4. 從你的 LLM/MCP 客戶端連接(例如,Claude Desktop)
✨ 主要特性
- 生產就緒:安全、穩定且易於部署。
- 遵循 MCP 標準:將 Redshift 作為標準化工具提供給大語言模型和 AI。
- 嚴格的訪問模式:支持 readonly、readwrite、admin三種模式(通過環境變量強制實施)。
- 自動連接:使用環境變量或 .env文件實現無縫啟動。
- 無需代碼更改:只需配置並運行即可。
- 可擴展:輕鬆添加新工具或業務邏輯。
- 兼容性強:可與 Claude Desktop、ChatGPT 以及任何 MCP 客戶端配合使用。
📦 安裝指南
- 克隆或下載此倉庫。
- 安裝依賴項:
pip install -r requirements.txt
💻 使用示例
基礎用法
1. connect_db
連接到 Redshift 數據庫集群。如果設置了環境變量,則參數可選。
{
  "tool": "connect_db",
  "arguments": {
    "host": "your-cluster.region.redshift.amazonaws.com",
    "database": "mydb",
    "user": "myuser",
    "password": "mypassword",
    "port": 5439
  }
}
{
  "tool": "connect_db",
  "arguments": {}
}
2. query
執行 SELECT 查詢以檢索數據。
{
  "tool": "query",
  "arguments": {
    "sql": "SELECT * FROM users WHERE created_at > %s",
    "params": ["2024-01-01"]
  }
}
3. execute
執行數據修改或 DDL 語句。
{
  "tool": "execute",
  "arguments": {
    "sql": "INSERT INTO users (name, email) VALUES (%s, %s)",
    "params": ["John Doe", "john@example.com"]
  }
}
4. list_schemas
列出所有用戶創建的模式。
{
  "tool": "list_schemas",
  "arguments": {}
}
5. list_tables
列出特定模式中的表。
{
  "tool": "list_tables",
  "arguments": {
    "schema": "public"
  }
}
6. describe_table
獲取表結構的詳細信息。
{
  "tool": "describe_table",
  "arguments": {
    "table": "users",
    "schema": "public"
  }
}
7. disconnect
關閉數據庫連接。
{
  "tool": "disconnect",
  "arguments": {}
}
📚 詳細文檔
關於 Redshift MCP 服務器
Redshift MCP 服務器是 Amazon Redshift 和現代 AI 助手之間的開源橋樑。它允許大語言模型使用 模型上下文協議(MCP) 安全地查詢、探索並(可選)修改你的 Redshift 數據。適用於:
- 希望啟用 AI 驅動分析的數據團隊。
- 構建 AI 工作流和自動化。
- 讓大語言模型安全、可審計地訪問生產數據。
項目概述
本倉庫使用 FastMCP 框架提供了一個適用於 Amazon Redshift 的最小化、生產就緒的 MCP 服務器。它允許大語言模型和 AI 智能體:
- 查詢 Redshift 數據庫(具有嚴格的訪問控制)。
- 列出模式和表。
- 描述表結構。
- (可選)根據配置的模式插入/更新數據。
訪問模式和查詢安全
服務器支持三種訪問模式,由 DB_MCP_MODE 環境變量控制:
1. 只讀模式(默認)
- 允許操作:SELECT、SHOW、DESCRIBE等。
- 禁止操作:INSERT、UPDATE、DELETE、DROP、TRUNCATE、ALTER、CREATE、GRANT、REVOKE、COMMENT、SET、COPY、UNLOAD、VACUUM、ANALYZE、MERGE。
2. 讀寫模式
- 允許操作:SELECT、INSERT、UPDATE、CREATE等。
- 禁止操作:DELETE、DROP、TRUNCATE、ALTER、GRANT、REVOKE、COMMENT、SET、COPY、UNLOAD、VACUUM、ANALYZE、MERGE。
3. 管理員模式
如果檢測到禁止的語句,服務器將返回清晰的錯誤消息。
設置訪問模式的方法
- 環境變量:DB_MCP_MODE=readonly(或readwrite、admin)。
- Claude Desktop 配置:
"env": {
  "DB_MCP_MODE": "readwrite",
  ...
}
export DB_MCP_MODE=readonly
./run_server.sh
運行服務器
直接運行服務器:
python src/redshift_mcp_server.py
或者使用提供的腳本:
./scripts/run_server.sh
scripts\run_server.bat
默認情況下,服務器使用 STDIO 傳輸,適用於與 Claude Desktop 等 MCP 客戶端集成。
Claude Desktop 配置
要在 Claude Desktop 中使用此服務器,請在你的 Claude Desktop 配置文件中添加以下配置:
- macOS:~/Library/Application Support/Claude/claude_desktop_config.json
- Windows:%APPDATA%/Claude/claude_desktop_config.json
選項 1:使用環境變量(推薦)
{
  "mcpServers": {
    "redshift": {
      "command": "/Users/anshulpatre/Desktop/DB-mcp/my-redshift-mcp/venv/bin/python",
      "args": ["/Users/anshulpatre/Desktop/DB-mcp/my-redshift-mcp/src/redshift_mcp_server.py"],
      "env": {
        "REDSHIFT_HOST": "your-cluster.region.redshift.amazonaws.com",
        "REDSHIFT_DATABASE": "mydb",
        "REDSHIFT_USER": "myuser",
        "REDSHIFT_PASSWORD": "mypassword",
        "REDSHIFT_PORT": "5439",
        "DB_MCP_MODE": "readonly"
      }
    }
  }
}
使用此配置,服務器將在啟動時自動連接到你的 Redshift 數據庫。你無需手動使用 connect_db 工具。
選項 2:不使用環境變量
{
  "mcpServers": {
    "redshift": {
      "command": "/Users/anshulpatre/Desktop/DB-mcp/my-redshift-mcp/venv/bin/python",
      "args": ["/Users/anshulpatre/Desktop/DB-mcp/my-redshift-mcp/src/redshift_mcp_server.py"]
    }
  }
}
使用此配置,你需要使用 connect_db 工具建立連接。
環境變量
服務器支持以下環境變量:
- REDSHIFT_HOST:Redshift 集群端點。
- REDSHIFT_DATABASE:數據庫名稱。
- REDSHIFT_USER:用戶名。
- REDSHIFT_PASSWORD:密碼。
- REDSHIFT_PORT:端口號(默認:5439)。
- DB_MCP_MODE:訪問模式(- readonly、- readwrite、- admin)。
當設置這些環境變量時,服務器將:
- 在啟動時自動連接。
- 如果未提供參數,則將其用作 connect_db工具的默認值。
- 根據所選模式強制實施查詢/語句限制。
🔧 技術細節
安全考慮
- 憑證管理:推薦在 MCP 配置文件中使用環境變量,這樣可以避免將憑證暴露在代碼和工具調用中。
- 權限設置:使用具有最小必要權限的數據庫用戶。
- 查詢安全:服務器使用參數化查詢來防止 SQL 注入。根據所選模式檢查並阻止查詢/語句類型。
- 網絡安全:確保你的 Redshift 集群通過 VPC 和安全組進行了適當的安全配置。
開發擴展
要擴展此服務器:
- 使用 @mcp.tool()裝飾器添加新工具。
- 遵循 FastMCP 文檔以使用高級功能。
- 使用你的 Redshift 集群進行全面測試。
故障排除
連接問題
- 驗證你的 Redshift 集群端點和憑證。
- 檢查網絡連接和安全組設置。
- 確保集群處於活動狀態並接受連接。
導入錯誤
- 如果 redshift-connector不可用,服務器將回退到psycopg2。
- 根據你的需求安裝適當的連接器。
📄 許可證
本項目採用 MIT 許可證。
貢獻說明
歡迎提交問題或拉取請求,以改進此 MCP 服務器。
👤 維護者
此 Redshift MCP 服務器由 Anshul 維護和部署。