MCP SQL Server
用于查询PostgreSQL和MySQL数据库的模型上下文协议(MCP)服务器。
快速开始
推荐: 使用npx无需安装即可运行:
npx postgres-mysql-mcp-server对于MCP客户端配置(游标、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"
}
}
}
}什么是MCP,为什么使用它?
模型上下文协议(MCP) 是一种标准化的协议,使AI助手能够在代码编辑器中使用,如 光标, 帆板运动,以及其他人工智能驱动的开发工具,以安全地与外部系统和数据源进行交互。
此MCP服务器弥合了您的AI编码助手和数据库之间的差距,使AI能够:
- 了解您的数据库模式 -AI可以探索表、列和关系
- 编写准确的SQL查询 -根据您的实际数据库结构生成查询
- 调试数据库问题 -查询数据以了解问题并验证修复
- 生成数据库感知代码 -创建与数据库架构匹配的应用程序代码
- 回答有关数据的问题 -查询数据库以提供准确的信息
非常适合AI驱动的编辑
当与AI编辑器集成时,如 光标 或 帆板运动,此MCP服务器将您的AI助手转换为数据库感知编码伴侣:
示例用例:
- 模式感知代码生成
- *你:* “创建用户注册API终结点” - *人工智能:* 自动查询数据库模式,了解 users 表结构,并生成与您的列名和类型完全匹配的代码
- 智能查询编写
- *你:* “显示过去30天的所有活动用户” - *人工智能:* 连接到数据库,检查模式,并使用实际的表名和列名编写正确的SQL查询
- 数据库调试
- *你:* “为什么我的用户登录失败?” - *人工智能:* 查询数据库以检查用户记录、验证表结构并识别潜在问题
- 数据驱动开发
- *你:* “创建显示用户统计信息的仪表板” - *人工智能:* 探索数据库模式,理解关系,并生成准确的查询和代码
- 迁移和重构
- *你:* “重构此代码以使用新的数据库架构” - *人工智能:* 将代码与实际数据库架构进行比较,并建议准确的更改
运作原理
- 配置 AI编辑器中的MCP服务器(Cursor、Windsurf等)
- 连接 到您的PostgreSQL或MySQL数据库
- 问 您的AI助手会提问或请求代码生成
- AI使用 MCP服务器查询数据库模式和数据
- 获取 准确、数据库感知的响应和代码
AI助手现在可以“看到”您的数据库结构和数据,使其在生成数据库相关代码时更加有用和准确。
特性
- 连接到PostgreSQL和MySQL数据库
- 执行SQL查询
- 列出数据库表
- 描述表模式
- 参数化查询支持
- 连接池以获得更好的性能
- 通过环境变量实现安全的凭据管理
- 设置环境变量后启动时自动连接
安装
选项1:与npx一起使用(推荐-无需安装)
推荐: 直接使用npx运行服务器,无需任何安装。这是最简单、最方便的方法:
npx postgres-mysql-mcp-server这 -y 标志由npx自动处理,因此它将在没有提示的情况下下载并运行最新版本。
选项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用法
运行服务器
服务器在stdio上运行,并通过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(string,必填):要描述的表的名称
例子:
{
"tableName": "users"
}5. disconnect_database
断开与当前数据库的连接。
参数: 无
配置
环境变量
您可以使用环境变量配置数据库连接。创建一个 .env 在项目根目录中创建文件或设置环境变量:
选项1:通用环境变量(适用于PostgreSQL和MySQL)
DB_TYPE=postgresql # or "mysql"
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=mydb
DB_USER=postgres
DB_PASSWORD=password
DB_SSL=false # optional, set to "true" for SSL选项2:PostgreSQL特定的环境变量
POSTGRES_HOST=localhost
POSTGRES_PORT=5432
POSTGRES_DATABASE=mydb
POSTGRES_USER=postgres
POSTGRES_PASSWORD=password
POSTGRES_SSL=false # optional选项3:MySQL特定的环境变量
MYSQL_HOST=localhost
MYSQL_PORT=3306
MYSQL_DATABASE=mydb
MYSQL_USER=root
MYSQL_PASSWORD=password
MYSQL_SSL=false # optional注: 如果设置了环境变量,服务器将在启动时自动连接。您也可以致电 connect_database 没有参数来使用环境变量或提供将与环境变量合并的部分参数。
MCP客户端配置
此MCP服务器与AI驱动的代码编辑器无缝集成。将其添加到MCP客户端配置中,以启用数据库感知AI辅助。
支持的编辑器
配置步骤
对于光标:
- 打开光标设置
- 导航到功能→ 模型上下文协议
- 在下面添加服务器配置
对于风帆:
- 打开设置
- 导航到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一起使用
配置后,您可以通过自然语言与数据库交互:
对话示例:
You: "What tables are in my database?"
AI: [Uses list_tables tool] "Your database contains: users, orders, products, categories"
You: "Show me the structure of the users table"
AI: [Uses describe_table tool] "The users table has: id (integer), email (varchar), created_at (timestamp)..."
You: "Create an API endpoint to get user by ID"
AI: [Uses describe_table to understand schema, then generates code]
"Here's the endpoint matching your users table structure..."AI助手会自动使用适当的MCP工具查询您的数据库,并提供准确的、模式感知的响应。
发展
该项目使用纯JavaScript(ES模块),因此不需要构建步骤。只需编辑 index.js 然后跑 npm start.
安全说明
- 从不将数据库凭据提交到版本控制
- 使用环境变量或安全凭据管理
- 服务器支持SSL连接以实现安全的数据库访问
- 始终在生产环境中验证和清理SQL查询
需求
- Node.js 18+
- PostgreSQL或MySQL数据库访问
贡献
欢迎投稿!请随时提交拉取请求。
许可证
麻省理工学院
