Token导航 LogoToken导航TokenDH.com
MCP Sqlserver Pro logo
数据服务stdio官方级别未说明来源级核验

MCP Sqlserver Pro

MCP Server

一个提供对Microsoft SQL Server数据库全面访问的MCP服务器,支持数据库模式检查、查询执行、数据库对象管理和高级数据库操作。

工具数

23

提示词数

0

GitHub Stars

8

资源数

0
数据分析数据操作PythonClaude数据库工具Claude DesktopClaudeCursor

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

jensenloke

提供方

jensenloke

最后核验

2026/5/17 20:22

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

python3 -m venv venv

详细介绍

MSSQL MCP服务器

一种模型上下文协议(MCP)服务器,提供对Microsoft SQL server数据库的全面访问。这个增强的服务器使语言模型能够通过标准化的接口检查数据库模式、执行查询、管理数据库对象和执行高级数据库操作。

🚀 增强功能

完成数据库架构遍历

  • 23个全面的数据库管理工具 (从5个基本操作扩展)
  • 完整的数据库对象层次结构探索 -表、视图、存储过程、索引、模式
  • 高级数据库对象管理 -创建、修改、删除操作
  • 智能资源访问 -所有可用作MCP资源的表和视图
  • 大型内容处理 -在不截断的情况下检索完整的存储过程(1400+行)

核心能力

  • 数据库连接:通过灵活的身份验证连接到MSSQL Server实例
  • 架构检查:完成数据库对象探索和管理
  • 查询执行:执行SELECT、INSERT、UPDATE、DELETE和DDL查询
  • 存储过程管理:创建、修改、执行和管理存储过程
  • 视图管理:创建、修改、删除和描述视图
  • 索引管理:创建、删除和分析索引
  • 资源访问:将表和数据作为MCP资源浏览
  • 安全:只读和写入操作已正确分离和验证

⚠️ 工程团队重要使用指南

数据库限制

🔴 关键:每个MCP服务器实例限制为一个数据库

  • 此增强的MCP服务器创建 每个数据库23个工具
  • 光标有一个 40刀具限制 跨所有MCP服务器
  • 使用多个数据库实例将超过Cursor的工具限制
  • 对于多个数据库,在不同的项目中使用单独的MCP服务器实例

大内容限制

⚠️ 重要提示:聊天环境中不支持文件操作

  • 可以在聊天中检索和查看大型存储过程(1400多行)
  • 然而,由于令牌限制,通过MCP工具将大量内容保存到文件是不可靠的
  • 用于批量数据提取:使用具有直接数据库连接的独立Python脚本
  • 推荐方法:从聊天中复制粘贴较小的程序,对较大的程序使用外部脚本

工具分发

  • 核心工具:5(read_query、write_query、list_tables、describe_table、create_table)
  • 存储过程:6个工具(创建、修改、删除、列出、描述、执行、获取参数)
  • 视图:5个工具(创建、修改、删除、列出、描述)
  • 索引:4个工具(创建、删除、列出、描述)
  • 模式管理:2个工具(list_schemas、list_all_objects)
  • 总计:23个工具+增强的write_query,支持所有数据库对象操作

安装

先决条件

  • Python 3.10或更高版本
  • SQL Server的ODBC驱动程序17
  • 访问MSSQL服务器实例

快速设置

  1. 克隆或创建项目目录:
   mkdir mcp-sqlserver && cd mcp-sqlserver
  1. 运行安装脚本:
   chmod +x install.sh
   ./install.sh
  1. 配置数据库连接:
   cp env.example .env
   # Edit .env with your database details

手动安装

  1. 创建虚拟环境:
   python3 -m venv venv
   source venv/bin/activate
  1. 安装依赖项:
   pip install -r requirements.txt
  1. 安装ODBC驱动程序(macOS):
   brew tap microsoft/mssql-release
   brew install msodbcsql17 mssql-tools

配置

创建一个 .env 包含数据库配置的文件:

MSSQL_DRIVER={ODBC Driver 17 for SQL Server}
MSSQL_SERVER=your-server-address
MSSQL_DATABASE=your-database-name
MSSQL_USER=your-username
MSSQL_PASSWORD=your-password
MSSQL_PORT=1433
TrustServerCertificate=yes

配置选项

  • MSSQL_SERVER:服务器主机名或IP地址(必填)
  • MSSQL_DATABASE:要连接的数据库名称(必需)
  • MSSQL_USER:身份验证用户名
  • MSSQL_PASSWORD:身份验证密码
  • MSSQL_PORT:端口号(默认值:1433)
  • MSSQL_DRIVER:ODBC驱动程序名称(默认值:{SQL Server的ODBC驱动程序17})
  • TrustServerCertificate:信任服务器证书(默认:是)
  • Trusted_Connection:使用Windows身份验证(默认:否)

用法

了解MCP服务器

MCP(模型上下文协议)服务器旨在与AI助手和语言模型协同工作。它们使用JSON-RPC协议通过stdin/stdout进行通信,而不是传统的web服务。

运行服务器

对于AI助手集成:

python3 src/server.py

服务器将启动并等待stdin上的MCP协议消息。这就是像Claude Desktop或其他MCP客户端这样的AI助手将如何与之通信。

测试和开发:

  1. 测试数据库连接:
   python3 test_connection.py
  1. 检查服务器状态:
   ./status.sh
  1. 查看可用表格:
   # The server provides tools that can be called by MCP clients
   # Direct testing requires an MCP client or testing framework

可用工具(共23个)

增强型服务器提供全面的数据库管理工具:

核心数据库操作(5个工具)

  1. read_query -执行SELECT查询以读取数据
  2. write_query -执行INSERT、UPDATE、DELETE和DDL查询
  3. list_tables -列出数据库中的所有表
  4. describe_table -获取特定表的架构信息
  5. create_table -创建新表

存储过程管理(6个工具)

  1. create_procedure -创建新的存储过程
  2. modify_procedure -修改现有存储过程
  3. delete_procedure -删除存储过程
  4. list_procedures -列出所有包含元数据的存储过程
  5. describe_procedure -获取完整的程序定义
  6. execute_procedure -使用参数执行程序
  7. get_procedure_parameters -获取详细的参数信息

视图管理(5个工具)

  1. create_view -创建新视图
  2. modify_view -修改现有视图
  3. delete_view -删除视图
  4. list_views -列出数据库中的所有视图
  5. describe_view -获取视图定义和架构

索引管理(4个工具)

  1. create_index -创建新索引
  2. delete_index -删除索引
  3. list_indexes -列出所有索引(可选按表)
  4. describe_index -获取详细的索引信息

模式探索(2个工具)

  1. list_schemas -列出数据库中的所有架构
  2. list_all_objects -列出按架构组织的所有数据库对象

可用资源

表和视图都以MCP资源的形式公开,URI如下:

  • mssql://table_name/data -访问CSV格式的表数据
  • mssql://view_name/data -访问CSV格式的视图数据

资源以CSV格式提供前100行数据,用于快速数据探索。

数据库模式遍历示例

1.探索数据库结构

# Start with schemas
list_schemas

# Get all objects in a specific schema
list_all_objects(schema_name: "dbo")

# Or get all objects across all schemas
list_all_objects()

2.表勘探

# List all tables
list_tables

# Get detailed table information
describe_table(table_name: "YourTableName")

# Access table data as MCP resource
# URI: mssql://YourTableName/data

3.视图管理

# List all views
list_views

# Get view definition
describe_view(view_name: "YourViewName")

# Create a new view
create_view(view_script: "CREATE VIEW MyView AS SELECT * FROM MyTable WHERE Active = 1")

# Access view data as MCP resource
# URI: mssql://YourViewName/data

4.存储过程操作

# List all procedures
list_procedures

# Get complete procedure definition (handles large procedures like wmPostPurchase)
describe_procedure(procedure_name: "YourProcedureName")

# Save large procedures to file for analysis
write_file(file_path: "procedure_name.sql", content: "procedure_definition")

# Get parameter details
get_procedure_parameters(procedure_name: "YourProcedureName")

# Execute procedure
execute_procedure(procedure_name: "YourProcedureName", parameters: ["param1", "param2"])

5.指标管理

# List all indexes
list_indexes()

# List indexes for specific table
list_indexes(table_name: "YourTableName")

# Get index details
describe_index(index_name: "IX_YourIndex", table_name: "YourTableName")

# Create new index
create_index(index_script: "CREATE INDEX IX_NewIndex ON MyTable (Column1, Column2)")

存储过程管理示例

创建简单存储过程

CREATE PROCEDURE GetEmployeeCount
AS
BEGIN
    SELECT COUNT(*) AS TotalEmployees FROM Employees
END

创建带有参数的存储过程

CREATE PROCEDURE GetEmployeesByDepartment
    @DepartmentId INT,
    @MinSalary DECIMAL(10,2) = 0
AS
BEGIN
    SELECT 
        EmployeeId,
        FirstName,
        LastName,
        Salary,
        DepartmentId
    FROM Employees 
    WHERE DepartmentId = @DepartmentId 
    AND Salary >= @MinSalary
    ORDER BY LastName, FirstName
END

创建具有输出参数的存储过程

CREATE PROCEDURE GetDepartmentStats
    @DepartmentId INT,
    @EmployeeCount INT OUTPUT,
    @AverageSalary DECIMAL(10,2) OUTPUT
AS
BEGIN
    SELECT 
        @EmployeeCount = COUNT(*),
        @AverageSalary = AVG(Salary)
    FROM Employees 
    WHERE DepartmentId = @DepartmentId
END

修改现有存储过程

ALTER PROCEDURE GetEmployeesByDepartment
    @DepartmentId INT,
    @MinSalary DECIMAL(10,2) = 0,
    @MaxSalary DECIMAL(10,2) = 999999.99
AS
BEGIN
    SELECT 
        EmployeeId,
        FirstName,
        LastName,
        Salary,
        DepartmentId,
        HireDate
    FROM Employees 
    WHERE DepartmentId = @DepartmentId 
    AND Salary BETWEEN @MinSalary AND @MaxSalary
    ORDER BY Salary DESC, LastName, FirstName
END

大型内容处理

运作原理

服务器高效地处理大型数据库对象,如存储过程:

  1. 直接检索:直接从SQL Server获取完整内容
  2. 无截断:返回完整的过程定义,无论大小如何
  3. 聊天显示:大型程序可以在聊天界面中完整查看
  4. 内存效率高:通过数据库连接流处理内容

使用示例

# Describe a large procedure (gets complete definition)
describe_procedure(procedure_name: "wmPostPurchase")

# Works with procedures of any size (tested with 1400+ line procedures)
# Content is displayed in chat for viewing and copy-paste operations

文件操作的限制

⚠️ 重要:虽然可以在聊天中检索和显示大型程序,但由于推理令牌的限制,通过MCP工具将它们保存到文件中是不可靠的。对于批量数据提取:

  1. 小程序:从聊天界面复制粘贴
  2. 大型程序:使用具有直接数据库连接的独立Python脚本
  3. 批量操作:在MCP上下文之外创建专用提取脚本

与AI助手集成

克劳德桌面

将此服务器添加到您的Claude Desktop配置中:

{
  "mcpServers": {
    "mssql": {
      "command": "python3",
      "args": ["/path/to/mcp-sqlserver/src/server.py"],
      "cwd": "/path/to/mcp-sqlserver",
      "env": {
        "MSSQL_SERVER": "your-server",
        "MSSQL_DATABASE": "your-database",
        "MSSQL_USER": "your-username",
        "MSSQL_PASSWORD": "your-password"
      }
    }
  }
}

其他MCP客户端

服务器遵循标准MCP协议,应与任何兼容的MCP客户端一起工作。

发展

项目结构

mcp-sqlserver/
├── src/
│   └── server.py          # Main MCP server implementation with chunking system
├── tests/
│   └── test_server.py     # Unit tests
├── requirements.txt       # Python dependencies
├── .env                   # Database configuration (create from env.example)
├── env.example           # Configuration template
├── install.sh            # Installation script
├── start.sh              # Server startup script (for development)
├── stop.sh               # Server shutdown script
├── status.sh             # Server status script
└── README.md             # This file

测试

运行测试套件:

python -m pytest tests/

测试数据库连接:

python3 test_connection.py

日志记录

服务器使用Python的日志模块。通过修改日志级别来设置日志级别 logging.basicConfig() 打电话 src/server.py.

安全考虑

  • 认证:始终使用强密码和安全身份验证
  • 网络:确保您的数据库服务器得到适当保护
  • 权限:仅向用户帐户授予必要的数据库权限
  • SSL/TLS:尽可能使用加密连接
  • 查询验证:服务器验证查询类型并防止未经授权的操作
  • DDL操作:数据库对象的创建/修改/删除操作已正确验证
  • 存储过程执行:安全处理参数以防止注射攻击
  • 大型内容处理:无需截断即可高效检索大型程序
  • 文件操作:写入操作已验证并沙盒化
  • 阅读第一种方法:出于安全生产考虑,勘探工具默认为只读

故障排除

常见问题

  1. 连接失败:检查数据库服务器地址、凭据和网络连接
  2. 未找到ODBC驱动程序:安装SQL Server的Microsoft ODBC驱动程序17
  3. 权限不足:确保数据库用户具有适当的权限
  4. 港口问题:验证正确的端口号和防火墙设置
  5. 大型内容问题:聊天中显示大型程序,但无法通过MCP工具保存到文件中
  6. 内存问题:大型内容从数据库高效地流式传输

调试模式

在中通过将日志级别设置为debug来启用调试日志记录 src/server.py:

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

大内容故障排除

如果您遇到大量内容的问题:

  1. 复制粘贴方法:使用聊天界面查看和复制大型程序
  2. 外部脚本:创建用于批量数据提取的独立Python脚本
  3. 检查内存:数据库连接可高效处理大型过程
  4. 验证权限:确保数据库用户可以访问过程定义
  5. 用较小的程序进行测试:首先验证基本功能

获取帮助

  1. 检查服务器日志以获取详细的错误消息
  2. 验证您的 .env 配置
  3. 独立测试数据库连接
  4. 确保所有依赖项都已正确安装
  5. 对于大型内容问题,请使用从聊天中复制粘贴或创建外部提取脚本

最近的增强功能

大型内容处理(最新)

  • 验证了无截断的大型存储过程的完整检索
  • 通过以下程序成功测试 wmPostPurchase (1400+行,57KB)
  • 大型程序完全显示在聊天界面中,可供查看和复制粘贴
  • 通过数据库连接流高效处理内存
  • 备注:由于令牌限制,通过MCP工具进行的文件操作对于大型内容不可靠

完整的数据库对象管理

  • 从5个扩展到23个综合数据库管理工具
  • 为所有主要数据库对象添加了完整的CRUD操作
  • 实现了与Contoso功能匹配的架构遍历功能
  • 为表和视图添加了MCP资源访问权限
  • 通过正确的操作验证增强安全性

许可证

这个项目是开源的。有关详细信息,请参阅许可证文件。

贡献

欢迎投稿!请随时提交pull请求或打开bug和功能请求的问题。

目录标签

目录标签

数据分析数据操作PythonClaude数据库工具数据库管理本地部署SQLServerMCP协议

支持客户端

Claude DesktopClaudeCursor

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

23

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP