🚀 MCP SQL Server
MCP SQL Server 是一個用於查詢 PostgreSQL 和 MySQL 數據庫的模型上下文協議(MCP)服務器。它能讓代碼編輯器中的 AI 助手安全地與數據庫交互,幫助開發者更高效地進行數據庫相關的開發工作。
🚀 快速開始
推薦方式:使用 npx 無需安裝即可運行:
npx postgres-mysql-mcp-server
對於 MCP 客戶端配置(如 Cursor、Windsurf 等),可使用以下配置:
{
"mcpServers": {
"sql": {
"command": "npx",
"args": ["-y", "postgres-mysql-mcp-server"],
"env": {
"DB_TYPE": "postgresql",
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_DATABASE": "mydb",
"DB_USER": "postgres",
"DB_PASSWORD": "password"
}
}
}
}
✨ 主要特性
- 可連接到 PostgreSQL 和 MySQL 數據庫。
- 執行 SQL 查詢。
- 列出數據庫中的所有表。
- 描述表結構。
- 支持參數化查詢。
- 採用連接池提高性能。
- 通過環境變量進行安全的憑證管理。
- 當設置環境變量時,服務器啟動時自動連接。
📦 安裝指南
選項 1:使用 npx(推薦 - 無需安裝)
推薦直接使用 npx 運行服務器,無需進行任何安裝。這是最簡單、最便捷的方法:
npx postgres-mysql-mcp-server
npx 會自動處理 -y 標誌,因此它將在不提示的情況下下載並運行最新版本。
選項 2:通過 npm 安裝
如果你想安裝該包,可以選擇以下方式:
全局安裝:
npm install -g postgres-mysql-mcp-server
在項目中本地安裝:
npm install postgres-mysql-mcp-server
選項 3:開發環境安裝
若要進行本地開發或貢獻代碼,請執行以下操作:
git clone https://github.com/TranChiHuu/postgres-mysql-mcp-server.git
cd postgres-mysql-mcp-server
npm install
💻 使用示例
運行服務器
服務器通過標準輸入輸出運行,並通過 MCP 協議進行通信。
推薦:使用 npx(無需安裝)
npx postgres-mysql-mcp-server
這是運行服務器的推薦方式。npx 將自動下載並運行最新版本。
替代方法:使用全局安裝的包
postgres-mysql-mcp-server
本地開發時:
npm start
可用工具
1. connect_database
連接到 PostgreSQL 或 MySQL 數據庫。參數可以直接提供、從環境變量加載,或兩者結合使用。如果設置了環境變量,服務器將在啟動時自動連接。
參數(如果使用環境變量,所有參數可選):
type(字符串,可選):數據庫類型 - "postgresql" 或 "mysql"
host(字符串,可選):數據庫主機
port(數字,可選):數據庫端口
database(字符串,可選):數據庫名稱
user(字符串,可選):數據庫用戶
password(字符串,可選):數據庫密碼
ssl(布爾值,可選):使用 SSL 連接(默認:false)
示例:
使用參數:
{
"type": "postgresql",
"host": "localhost",
"port": 5432,
"database": "mydb",
"user": "postgres",
"password": "password"
}
使用環境變量(無參數調用):
{}
參數與環境變量混合使用:
{
"type": "postgresql",
"host": "custom-host"
}
2. execute_query
在已連接的數據庫上執行 SQL 查詢。
參數:
query(字符串,必需):要執行的 SQL 查詢
params(數組,可選):參數化查詢的查詢參數
示例:
{
"query": "SELECT * FROM users WHERE id = $1",
"params": [123]
}
3. list_tables
列出已連接數據庫中的所有表。
參數:無
4. describe_table
獲取特定表的結構信息。
參數:
示例:
{
"tableName": "users"
}
5. disconnect_database
斷開與當前數據庫的連接。
參數:無
📚 詳細文檔
配置
環境變量
你可以使用環境變量來配置數據庫連接。在項目根目錄創建 .env 文件或設置環境變量:
選項 1:通用環境變量(適用於 PostgreSQL 和 MySQL)
DB_TYPE=postgresql
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=mydb
DB_USER=postgres
DB_PASSWORD=password
DB_SSL=false
選項 2:PostgreSQL 特定環境變量
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DATABASE=mydb
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
POSTGRES_SSL=false
選項 3:MySQL 特定環境變量
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_DATABASE=mydb
MYSQL_USER=root
MYSQL_PASSWORD=password
MYSQL_SSL=false
注意:如果設置了環境變量,服務器將在啟動時自動連接。你也可以在不提供參數的情況下調用 connect_database 來使用環境變量,或者提供部分參數與環境變量合併使用。
MCP 客戶端配置
此 MCP 服務器可與支持 AI 的代碼編輯器無縫集成。將其添加到你的 MCP 客戶端配置中,以啟用支持數據庫的 AI 輔助功能。
支持的編輯器
配置步驟
對於 Cursor:
- 打開 Cursor 設置。
- 導航到功能 → 模型上下文協議。
- 添加以下服務器配置。
對於 Windsurf:
- 打開設置。
- 導航到 MCP 服務器。
- 添加以下服務器配置。
對於其他支持 MCP 的編輯器:
將配置添加到你的 MCP 設置文件(通常為 ~/.config/mcp/settings.json 或編輯器特定位置)。
配置選項
選項 1:使用 npx(推薦 - 無需安裝)
這是推薦的配置方式。npx 會自動下載並運行最新版本,無需任何安裝:
{
"mcpServers": {
"sql": {
"command": "npx",
"args": ["-y", "postgres-mysql-mcp-server"],
"env": {
"DB_TYPE": "postgresql",
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_DATABASE": "mydb",
"DB_USER": "postgres",
"DB_PASSWORD": "password"
}
}
}
}
使用 npx 的好處:
- ✅ 無需安裝
- ✅ 始終使用最新版本
- ✅ 無需手動更新
- ✅ 可在不同項目中使用,無衝突
- ✅
-y 標誌會自動回答安裝提示為 "是"
選項 2:使用全局安裝的包
如果你已全局安裝該包(npm install -g postgres-mysql-mcp-server):
{
"mcpServers": {
"sql": {
"command": "postgres-mysql-mcp-server",
"env": {
"DB_TYPE": "postgresql",
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_DATABASE": "mydb",
"DB_USER": "postgres",
"DB_PASSWORD": "password"
}
}
}
}
選項 3:使用本地安裝的包
如果你已在項目中本地安裝該包(npm install postgres-mysql-mcp-server):
{
"mcpServers": {
"sql": {
"command": "node",
"args": ["./node_modules/postgres-mysql-mcp-server/index.js"],
"env": {
"DB_TYPE": "postgresql",
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_DATABASE": "mydb",
"DB_USER": "postgres",
"DB_PASSWORD": "password"
}
}
}
}
選項 4:開發環境設置(用於本地開發)
如果你正在進行本地開發並克隆了倉庫:
{
"mcpServers": {
"sql": {
"command": "npm",
"args": ["start"],
"cwd": "/path-to-source/postgres-mysql-mcp-server",
"env": {
"DB_TYPE": "postgresql",
"DB_HOST": "localhost",
"DB_PORT": "5432",
"DB_DATABASE": "mydb",
"DB_USER": "postgres",
"DB_PASSWORD": "password"
}
}
}
}
示例:與 Cursor AI 配合使用
配置完成後,你可以通過自然語言與數據庫進行交互:
你:"我的數據庫中有哪些表?"
AI:[使用 list_tables 工具] "你的數據庫包含:users、orders、products、categories"
你:"給我展示 users 表的結構"
AI:[使用 describe_table 工具] "users 表包含:id(整數)、email(可變字符)、created_at(時間戳)..."
你:"創建一個通過 ID 獲取用戶的 API 端點"
AI:[使用 describe_table 瞭解表結構,然後生成代碼]
"這是與你的 users 表結構匹配的端點..."
AI 助手會自動使用適當的 MCP 工具查詢你的數據庫,並提供準確的、支持表結構的響應。
開發
該項目使用純 JavaScript(ES 模塊),因此無需構建步驟。只需編輯 index.js 並運行 npm start。
安全注意事項
⚠️ 重要提示
- 切勿將數據庫憑證提交到版本控制中。
- 使用環境變量或安全的憑證管理方式。
- 服務器支持 SSL 連接,以實現安全的數據庫訪問。
- 在生產環境中始終驗證和清理 SQL 查詢。
要求
- Node.js 18+
- 可訪問 PostgreSQL 或 MySQL 數據庫
貢獻
歡迎貢獻代碼!請隨時提交拉取請求。
📄 許可證
本項目採用 MIT 許可證。