SQL数据库访问服务

一个为AI助手提供SQL Server数据库访问能力的模型上下文协议(MCP)服务器,支持SQL查询执行、数据库模式检查、表统计和性能监控等功能。

  • by Nebhg
  • Python
  • 本地部署
  • 更新于
在 GitHub 查看 nebhg/sql-server-mcp

使用说明

SQL Server MCP服务器

一种模型上下文协议(MCP)服务器,为AI助手提供SQL server数据库访问功能。

特性

  • 执行具有自动安全限制的SQL查询
  • 数据库模式检查和探索
  • 表统计和性能监控
  • 表和列的高级搜索功能
  • 表备份功能
  • 数据插入与冲突处理
  • 查询执行计划分析
  • 连接健康监测

快速开始

1.设置环境

# Navigate to project directory
cd C:\Users\benha\Desktop\sql-server-mcp

# Create virtual environment
python -m venv venv
venv\Scripts\activate

# Install dependencies
pip install -r requirements.txt

2.配置数据库连接

编辑 .env 包含SQL Server凭据的文件:

SQL_SERVER_HOST=192.168.1.117
SQL_SERVER_DATABASE=EM_Data
SQL_SERVER_USERNAME=benhg
SQL_SERVER_PASSWORD=your_actual_password
SQL_SERVER_PORT=1433

3.测试服务器

python -m sql_server_mcp.server

与AI工具集成

克劳德桌面

添加到您的Claude Desktop配置文件中:

位置:

  • 窗户: %APPDATA%\Claude\claude_desktop_config.json
  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

配置:

{
  "mcpServers": {
    "sql-server": {
      "command": "python",
      "args": ["-m", "sql_server_mcp.server"],
      "cwd": "C:\\Users\\benha\\Desktop\\sql-server-mcp",
      "env": {
        "SQL_SERVER_HOST": "192.168.1.117",
        "SQL_SERVER_DATABASE": "EM_Data",
        "SQL_SERVER_USERNAME": "benhg",
        "SQL_SERVER_PASSWORD": "your_password_here",
        "SQL_SERVER_PORT": "1433"
      }
    }
  }
}

VS代码

  1. 安装“模型上下文协议”扩展
  2. 添加到VS代码设置.json:
{
  "mcp.servers": {
    "sql-server": {
      "command": "python",
      "args": ["-m", "sql_server_mcp.server"],
      "cwd": "C:\\Users\\benha\\Desktop\\sql-server-mcp"
    }
  }
}

光标

添加到光标MCP配置:

{
  "mcp": {
    "servers": {
      "sql-server": {
        "command": "python",
        "args": ["-m", "sql_server_mcp.server"],
        "cwd": "C:\\Users\\benha\\Desktop\\sql-server-mcp"
      }
    }
  }
}

可用工具

  1. execute_query -运行具有安全限制的SQL查询
  2. get_schema -检查数据库结构
  3. get_table_info -带样本的详细表格信息
  4. 解释查询 -查询执行计划
  5. check_connection -数据库连接状态
  6. get_table_stats -表大小和性能指标
  7. search_tables -按名称查找表和列
  8. 备份表 -创建表备份
  9. insert_data -插入具有冲突处理功能的数据

使用示例

一旦与Claude集成,您可以问:

  • “显示SeriesRecord表的架构”
  • “执行:从源='NBP'的系列记录中选择前10个*”
  • “我的数据库中有哪些表?”
  • “创建我的SeriesRecord表的备份”
  • “搜索包含'GDP'的任何表”
  • “显示我所有表的统计信息”

安全功能

  • 自动查询限制(默认为TOP 1000)
  • 参数化查询支持
  • 基于环境的配置
  • 连接池和健康检查
  • 全面的错误处理

发展

运行测试

pip install pytest pytest-asyncio
pytest tests/

项目结构

sql-server-mcp/
├── sql_server_mcp/
│   ├── __init__.py
│   └── server.py
├── tests/
│   ├── __init__.py
│   └── test_server.py
├── requirements.txt
├── pyproject.toml
├── .env
└── README.md

故障排除

常见问题

  1. 未找到ODBC驱动程序:安装SQL Server的Microsoft ODBC驱动程序17
  2. 连接失败:验证服务器地址、凭据和网络连接
  3. 权限不足:确保数据库用户具有适当的权限

测试连接

# Test ODBC drivers
import pyodbc
print(pyodbc.drivers())

# Test basic connection
from sqlalchemy import create_engine, text
engine = create_engine('mssql+pyodbc://user@server:port/database?driver=ODBC+Driver+17+for+SQL+Server')
with engine.connect() as conn:
    result = conn.execute(text('SELECT 1'))
    print('Connection successful!')

许可证

MIT许可证-有关详细信息,请参阅许可证文件。