🚀 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 維護和部署。