内容
# 多数据库 SQL MCP 服务器
一个模型上下文协议(MCP)服务器,提供包括 SQLite、MySQL、PostgreSQL 和 SQL Server 在内的多种数据库类型的 SQL 数据库连接功能。
## 功能特点
- **多数据库支持**: SQLite、MySQL、PostgreSQL 和 SQL Server
- **连接管理**: 创建、管理和断开多个数据库连接
- **查询执行**: 执行 SQL 查询,支持参数化查询
- **模式检查**: 获取表和列信息
- **类型安全**: 使用 TypeScript 构建,提供更好的开发体验
## 安装
```bash
npm install
```
## 开发
```bash
# 构建项目
npm run build
```
## 🔌 MCP 服务器集成
要将此工具集集成到基于 MCP 的系统中,请修改您的配置如下:
```json
{
"mcpServers": {
"weather": {
"command": "node",
"args": [
"/ABSOLUTE/PATH/TO/PARENT/FOLDER/project/build/index.js"
]
}
}
}
```
要将此工具集集成到基于 MCP 的系统中,请更新您的配置以使用自定义 npm 脚本运行 Playwright 服务器:
```json
{
"mcpServers": {
"playwright": {
"command": "npm",
"args": [
"run",
"start:mcp"
]
}
}
}
```
> ✅ 确保您的 `package.json` 包含一个 `start:mcp` 脚本,该脚本通过 `ts-node` 指向正确的 TypeScript 入口文件。
示例 `package.json` 片段:
```json
"scripts": {
"start:mcp": "ts-node src/index.ts"
}
```
这允许您在开发过程中跳过手动的 `npm run build` 步骤,从而可以直接从 TypeScript 源代码迭代和测试 MCP 工具。
## 使用方法
服务器支持以下工具:
### 1. 连接数据库
使用指定的配置连接到数据库。
**参数:**
- `connectionId`(字符串,必填):连接的唯一标识符
- `type`(字符串,必填):数据库类型 - 'sqlite'、'mysql'、'postgresql' 或 'mssql'
- `database`(字符串,必填):数据库名称
- `host`(字符串,可选):数据库主机(SQLite 不需要)
- `port`(数字,可选):数据库端口(SQLite 不需要)
- `username`(字符串,可选):数据库用户名(SQLite 不需要)
- `password`(字符串,可选):数据库密码(SQLite 不需要)
- `filename`(字符串,可选):SQLite 数据库文件路径(SQLite 需要)
- `ssl`(布尔值,可选):启用 SSL 连接
- `trustServerCertificate`(布尔值,可选):信任服务器证书(仅限 MSSQL)
### 2. 执行查询
在已连接的数据库上执行 SQL 查询。
**参数:**
- `connectionId`(字符串,必填):连接标识符
- `query`(字符串,必填):要执行的 SQL 查询
- `parameters`(数组,可选):参数化查询的参数
### 3. 获取表模式
获取表的模式信息。
**参数:**
- `connectionId`(字符串,必填):连接标识符
- `tableName`(字符串,可选):特定的表名(如果不提供,则返回所有表)
### 4. 列出连接
列出所有活跃的数据库连接。
**参数:** 无
### 5. 断开数据库连接
从数据库断开连接。
**参数:**
- `connectionId`(字符串,必填):要断开的连接标识符
## 数据库特定说明
### SQLite
- 需要指向数据库文件的 `filename` 参数
- 不需要主机、端口、用户名或密码
- 如果文件不存在,则会创建
### MySQL
- 默认端口:3306
- 支持 SSL 连接
- 使用 mysql2 驱动程序进行基于 Promise 的操作
### PostgreSQL
- 默认端口:5432
- 支持 SSL 连接,开发环境下使用 `rejectUnauthorized: false`
- 使用 pg 驱动程序
### SQL Server (MSSQL)
- 默认端口:1433
- 支持 SSL 加密
- 自签名证书使用 `trustServerCertificate: true`
- 使用 mssql 驱动程序
## 示例连接
### SQLite
```json
{
"connectionId": "my-sqlite",
"type": "sqlite",
"database": "myapp",
"filename": "./data/myapp.db"
}
```
### MySQL
```json
{
"connectionId": "my-mysql",
"type": "mysql",
"host": "localhost",
"port": 3306,
"database": "myapp",
"username": "root",
"password": "password",
"ssl": false
}
```
### PostgreSQL
```json
{
"connectionId": "my-postgres",
"type": "postgresql",
"host": "localhost",
"port": 5432,
"database": "myapp",
"username": "postgres",
"password": "password",
"ssl": false
}
```
### SQL Server
```json
{
"connectionId": "my-mssql",
"type": "mssql",
"host": "localhost",
"port": 1433,
"database": "myapp",
"username": "sa",
"password": "YourStrong@Passw0rd",
"ssl": true,
"trustServerCertificate": true
}
```
## 错误处理
服务器包含全面的错误处理功能,涵盖:
- 数据库连接失败
- 查询执行错误
- 无效的连接 ID
- 不支持的数据库类型
- 模式检查错误
所有错误都以描述性消息返回,以帮助调试。
## 项目结构
```
src/
├── index.ts # 主服务器入口点
├── DatabaseManager.ts # 数据库连接和查询管理
├── handlers.ts # 工具调用处理程序
├── tools.ts # 工具定义
└── types.ts # TypeScript 类型定义
```
## 要求
- Node.js 18+
- TypeScript 5+
- 适用于特定数据库类型的数据库驱动程序
## 许可证
MIT
## 🤝 贡献
我们欢迎贡献!请参阅我们的 [CONTRIBUTING.md](./CONTRIBUTING.md) 获取指南。