内容
# 面向生产的MCP服务器,用于Microsoft SQL Server,向MCP客户端(Claude Desktop,VS Code Copilot,Cursor和兼容的主机)公开数据库操作。
## 功能特点
- 查询执行(`SELECT`,`INSERT`,`UPDATE`,`DELETE`)
- 数据库发现和模式 introspection
- 表元数据检查(列,类型,可空性,默认值,主键)
- 索引和外键发现
- 环境驱动的配置,用于安全部署
## 可用工具
| 工具 | 描述 |
|---|---|
| `execute_query` | 执行SQL语句并返回记录集或受影响的行 |
| `list_tables` | 列出 `INFORMATION_SCHEMA.TABLES` 中的表(可选模式筛选) |
| `describe_table` | 返回表列元数据和主键标记 |
| `list_databases` | 列出所有SQL Server数据库 |
| `get_table_indexes` | 列出表索引,类型,唯一性,主键和索引列 |
| `get_foreign_keys` | 列出表外键和引用的目标 |
## 要求
- Node.js 18+
- 访问Microsoft SQL Server实例
- 从MCP主机到SQL Server的网络连接(`主机:端口`)
## 配置
使用环境变量设置连接设置:
| 变量 | 是否必需 | 默认值 | 描述 |
|---|---|---|---|
| `MSSQL_HOST` | 否 | `localhost` | SQL Server主机或IP地址 |
| `MSSQL_PORT` | 否 | `1433` | SQL Server TCP端口 |
| `MSSQL_DATABASE` | 是 | - | 默认数据库 |
| `MSSQL_AUTH_MODE` | 否 | `sql` | 身份验证模式:`sql` 或 `windows` |
| `MSSQL_USER` | 是\* | - | SQL登录用户(仅在`sql`中需要) |
| `MSSQL_PASSWORD` | 是\* | - | SQL登录密码(仅在`sql`中需要) |
| `MSSQL_ENCRYPT` | 否 | `false` | 启用加密连接 |
| `MSSQL_TRUST_SERVER_CERTIFICATE` | 否 | `true` | 在启用加密时信任服务器证书 |
\* 当 `MSSQL_AUTH_MODE=sql` 时需要。
## 用法
### 直接从GitHub运行
```bash
npx github:ferronicardoso/mcp-mssqlserver
```
### Claude Desktop 配置
`%APPDATA%\\Claude\\claude_desktop_config.json`:
```json
{
"mcpServers": {
"mssqlserver": {
"command": "npx",
"args": ["github:ferronicardoso/mcp-mssqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_PORT": "1433",
"MSSQL_DATABASE": "master",
"MSSQL_AUTH_MODE": "sql",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "your-password"
}
}
}
}
```
### VS Code MCP 配置
`.vscode/mcp.json`:
```json
{
"servers": {
"mssqlserver": {
"command": "npx",
"args": ["github:ferronicardoso/mcp-mssqlserver"],
"env": {
"MSSQL_HOST": "localhost",
"MSSQL_PORT": "1433",
"MSSQL_DATABASE": "master",
"MSSQL_AUTH_MODE": "sql",
"MSSQL_USER": "sa",
"MSSQL_PASSWORD": "your-password"
}
}
}
}
```
## 本地开发
```bash
git clone https://github.com/ferronicardoso/mcp-mssqlserver
cd mcp-mssqlserver
npm install
npm run build
```
启动编译后的服务器:
```bash
npm start
```
## 构建和提交工作流程
此仓库有意跟踪 `dist/` 以支持 `npx github:user/repo` 用法。
项目使用Husky `pre-commit` 钩子:
1. 构建TypeScript(`npm run build`)
2. 暂存生成的工件(`git add dist`)
手动回退:
```bash
npm run build
git add dist
```
## 安全注意事项
- 永远不要提交真实的凭证或 `.env` 文件。
- 优先使用生产环境中权限最低的SQL用户。
- 对于公共或不受信任的网络,启用加密(`MSSQL_ENCRYPT=true`)并适当地配置证书。
## Windows身份验证(集成安全)
要使用Windows身份验证和集成安全(进程帐户),请配置:
```bash
MSSQL_AUTH_MODE=windows
MSSQL_HOST=sqlserver.company.local
MSSQL_PORT=1433
MSSQL_DATABASE=master
```