mcpField
S
Sql Server Mcp

Sql Server Mcp

本地服务
github.com/hendrickcastro数据库1539 周前更新

关于 Sql Server Mcp

MCPQL 是面向 SQL Server 的 MCP 服务,供数据库分析和开发工作使用。它提供表与存储过程分析、数据查询和对象发现,并以默认关闭修改及存储过程执行作为安全控制。

主要功能

  1. 01分析表结构与存储过程
  2. 02预览数据并获取列统计
  3. 03执行 SQL 查询和存储过程
  4. 04搜索数据库对象及依赖
  5. 05检查数据库安全状态
  6. 06支持多种身份验证方式

适用场景

  1. 01检查表结构、索引和约束
  2. 02统计列数据并查看样本值
  3. 03查找数据库对象及其依赖
  4. 04在启用权限后执行修改操作

MCP 相关

该服务通过 MCP 向兼容客户端提供 SQL Server 操作工具,包括结构分析、数据查询、对象搜索和依赖检查。修改操作和存储过程执行默认禁用。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"MCPQL": {
"command": "npx",
"args": [
"-y",
"hendrickcastro/mcpql"
],
"env": {
"DB_AUTHENTICATION_TYPE": "<DB_AUTHENTICATION_TYPE>",
"DB_SERVER": "<DB_SERVER>",
"DB_NAME": "<DB_NAME>",
"DB_USER": "<DB_USER>",
"DB_PASSWORD": "<DB_PASSWORD>",
"DB_PORT": "<DB_PORT>",
"DB_ENCRYPT": "<DB_ENCRYPT>",
"DB_TRUST_SERVER_CERTIFICATE": "<DB_TRUST_SERVER_CERTIFICATE>"
}
}
}
}
启动命令npx -y hendrickcastro/mcpql
需要配置的环境变量
DB_AUTHENTICATION_TYPE密钥
DB_SERVER
DB_NAME
DB_USER
DB_PASSWORD密钥
DB_PORT
DB_ENCRYPT
DB_TRUST_SERVER_CERTIFICATE

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npmhendrickcastro/mcpql

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCPQL - SQL Server MCP

License: MIT Node.js Version TypeScript npm version Downloads GitHub stars GitHub issues GitHub forks Build Status Coverage Status SQL Server Azure SQL MCP Protocol Claude Desktop Cursor IDE Trae AI Docker Security Maintenance

一个功能全面的 Model Context Protocol (MCP) 服务,用于执行 SQL Server 数据库操作。该服务通过 MCP 协议提供 10 个强大的工具,用于数据库分析、对象发现和数据处理。

🚀 快速开始

前提条件
  • Node.js 18+ 和 npm
  • SQL Server 数据库及相应的连接凭据
  • 兼容 MCP 的客户端(如 Claude Desktop、Cursor IDE 或任意 MCP 客户端)
安装与配置
选项 1:通过 GitHub 使用 npx(推荐)

无需安装!只需配置 MCP 客户端:

Claude Desktop 配置文件(claude_desktop_config.json):

{
  "mcpServers": {
    "mcpql": {
      "command": "npx",
      "args": ["-y", "hendrickcastro/mcpql"],
      "env": {
        "DB_AUTHENTICATION_TYPE": "sql",
        "DB_SERVER": "your_server",
        "DB_NAME": "your_database",
        "DB_USER": "your_username",
        "DB_PASSWORD": "your_password",
        "DB_PORT": "1433",
        "DB_ENCRYPT": "false",
        "DB_TRUST_SERVER_CERTIFICATE": "true"
      }
    }
  }
}

Cursor IDE:

{
  "mcpServers": {
    "mcpql": {
      "command": "npx",
      "args": ["-y", "hendrickcastro/mcpql"],
      "env": {
        "DB_AUTHENTICATION_TYPE": "sql",
        "DB_SERVER": "your_server",
        "DB_NAME": "your_database",
        "DB_USER": "your_username",
        "DB_PASSWORD": "your_password",
        "DB_PORT": "1433",
        "DB_ENCRYPT": "false",
        "DB_TRUST_SERVER_CERTIFICATE": "true"
      }
    }
  }
}
选项 2:本地开发安装
  1. 克隆并设置:
git clone https://github.com/hendrickcastro/MCPQL.git
cd MCPQL
npm install
npm run build
  1. 配置数据库连接: 创建 .env 文件并填写数据库凭据:
# Basic SQL Server connection
DB_AUTHENTICATION_TYPE=sql
DB_SERVER=localhost
DB_NAME=MyDatabase
DB_USER=sa
DB_PASSWORD=YourPassword123!
DB_PORT=1433
DB_ENCRYPT=false
DB_TRUST_SERVER_CERTIFICATE=true
  1. 使用本地路径配置 MCP 客户端:
{
  "mcpServers": {
    "mcpql": {
      "command": "node",
      "args": ["path/to/MCPQL/dist/server.js"]
    }
  }
}

🛠️ 可用工具

MCPQL 提供 11 个全面的 SQL Server 数据库操作工具:

1. 🏗️ 表分析 - mcp_table_analysis

全面分析表结构,包括列、键、索引和约束。

2. 📋 存储过程分析 - mcp_sp_structure

分析存储过程结构,包括参数、依赖项和源代码。

3. 👀 数据预览 - mcp_preview_data

预览表数据,可选筛选条件和行数限制。

4. 📊 列统计信息 - mcp_get_column_stats

获取特定列的全面统计信息。

5. ⚙️ 执行存储过程 - mcp_execute_procedure

使用参数执行存储过程并返回结果。

6. 🔍 执行 SQL 查询 - mcp_execute_query

执行自定义 SQL 查询,并提供完整的错误处理。

7. ⚡ 快速数据分析 - mcp_quick_data_analysis

快速统计分析,包括行数、列分布和高频值。

8. 🔎 综合搜索 - mcp_search_comprehensive

根据可配置的条件,按名称和定义搜索数据库对象。

9. 🔗 对象依赖关系 - mcp_get_dependencies

获取数据库对象(表、视图、存储过程等)的依赖关系。

10. 🎯 示例值 - mcp_get_sample_values

获取表中特定列的示例值。

11. 🔒 安全状态 - mcp_get_security_status

获取数据库操作当前的安全配置和状态。

📋 使用示例

分析表
// Get complete table structure
const analysis = await mcp_table_analysis({ 
  table_name: "dbo.Users" 
});

// Get quick data overview
const overview = await mcp_quick_data_analysis({ 
  table_name: "dbo.Users",
  sample_size: 500
});

// Preview table data with filters
const data = await mcp_preview_data({
  table_name: "dbo.Users",
  filters: { "Status": "Active", "Department": "IT" },
  limit: 25
});
查找数据库对象
// Find all objects containing "User"
const objects = await mcp_search_comprehensive({ 
  pattern: "User",
  search_in_names: true,
  search_in_definitions: false
});

// Find procedures that query a specific table
const procedures = await mcp_search_comprehensive({ 
  pattern: "FROM Users",
  object_types: ["PROCEDURE"],
  search_in_definitions: true
});
分析存储过程
// Get complete stored procedure analysis
const spAnalysis = await mcp_sp_structure({ 
  sp_name: "dbo.usp_GetUserData" 
});

// Execute a stored procedure
const result = await mcp_execute_procedure({
  sp_name: "dbo.usp_GetUserById",
  params: { "UserId": 123, "IncludeDetails": true }
});
数据分析
// Get column statistics
const stats = await mcp_get_column_stats({
  table_name: "dbo.Users",
  column_name: "Age"
});

// Get sample values from a column
const samples = await mcp_get_sample_values({
  table_name: "dbo.Users",
  column_name: "Department",
  limit: 15
});

🔧 环境变量和连接类型

MCPQL 支持多种 SQL Server 连接类型,并提供全面的配置选项:

🔐 身份验证类型

将 DB_AUTHENTICATION_TYPE 设置为以下值之一:

  • sql - SQL Server 身份验证(默认)
  • windows - Windows 身份验证
  • azure-ad - Azure Active Directory 身份验证
📋 完整环境变量
变量描述默认值适用场景
基本连接
DB_AUTHENTICATION_TYPE身份验证类型(sql/windows/azure-ad)sql全部
DB_SERVERSQL Server 主机名/IP-全部
DB_NAME数据库名称-全部
DB_PORTSQL Server 端口1433全部
DB_TIMEOUT连接超时时间(ms)30000全部
DB_REQUEST_TIMEOUT请求超时时间(ms)30000全部
SQL Server 身份验证
DB_USERSQL Server 用户名-SQL 身份验证
DB_PASSWORDSQL Server 密码-SQL 身份验证
Windows 身份验证
DB_DOMAINWindows 域-Windows 身份验证
DB_USERWindows 用户名当前用户Windows 身份验证
DB_PASSWORDWindows 密码-Windows 身份验证
Azure AD 身份验证
DB_USERAzure AD 用户名-Azure AD(密码)
DB_PASSWORDAzure AD 密码-Azure AD(密码)
DB_AZURE_CLIENT_IDAzure AD 应用客户端 ID-Azure AD(服务主体)
DB_AZURE_CLIENT_SECRETAzure AD 应用客户端密钥-Azure AD(服务主体)
DB_AZURE_TENANT_IDAzure AD 租户 ID-Azure AD(服务主体)
SQL Server Express
DB_INSTANCE_NAME命名实例(例如 SQLEXPRESS)-Express 实例
安全设置
DB_ENCRYPT启用加密false全部
DB_TRUST_SERVER_CERTIFICATE信任服务器证书false全部
DB_ENABLE_ARITH_ABORT启用算术中止true全部
DB_USE_UTC日期使用 UTCtrue全部
连接池
DB_POOL_MAX最大连接数10全部
DB_POOL_MIN最小连接数0全部
DB_POOL_IDLE_TIMEOUT空闲超时时间(ms)30000全部
高级设置
DB_CANCEL_TIMEOUT取消超时时间(ms)5000全部
DB_PACKET_SIZE数据包大小(字节)4096全部
DB_CONNECTION_STRING完整连接字符串-可替代单独设置
安全控制
DB_ALLOW_MODIFICATIONS允许 DML/DDL 操作false全部
DB_ALLOW_STORED_PROCEDURES允许执行存储过程false全部

🔧 连接配置示例

1. 🏠 本地 SQL Server(SQL 身份验证)
{
  "mcpServers": {
    "mcpql": {
      "command": "npx",
      "args": ["-y", "hendrickcastro/mcpql"],
      "env": {
        "DB_AUTHENTICATION_TYPE": "sql",
        "DB_SERVER": "localhost",
        "DB_NAME": "MyDatabase",
        "DB_USER": "sa",
        "DB_PASSWORD": "YourPassword123!",
        "DB_PORT": "1433",
        "DB_ENCRYPT": "false",
        "DB_TRUST_SERVER_CERTIFICATE": "true"
      }
    }
  }
}
2. 🏢 SQL Server Express(命名实例)
{
  "mcpServers": {
    "mcpql": {
      "command": "npx",
      "args": ["-y", "hendrickcastro/mcpql"],
      "env": {
        "DB_AUTHENTICATION_TYPE": "sql",
        "DB_SERVER": "localhost",
        "DB_INSTANCE_NAME": "SQLEXPRESS",
        "DB_NAME": "MyDatabase",
        "DB_USER": "sa",
        "DB_PASSWORD": "YourPassword123!",
        "DB_ENCRYPT": "false",
        "DB_TRUST_SERVER_CERTIFICATE": "true"
      }
    }
  }
}
3. 🪟 Windows 身份验证
{
  "mcpServers": {
    "mcpql": {
      "command": "npx",
      "args": ["-y", "hendrickcastro/mcpql"],
      "env": {
        "DB_AUTHENTICATION_TYPE": "windows",
        "DB_SERVER": "MYSERVER",
        "DB_NAME": "MyDatabase",
        "DB_DOMAIN": "MYDOMAIN",
        "DB_USER": "myuser",
        "DB_PASSWORD": "mypassword",
        "DB_ENCRYPT": "false",
        "DB_TRUST_SERVER_CERTIFICATE": "true"
      }
    }
  }
}
4. ☁️ Azure SQL Database(Azure AD 密码)
{
  "mcpServers": {
    "mcpql": {
      "command": "npx",
      "args": ["-y", "hendrickcastro/mcpql"],
      "env": {
        "DB_AUTHENTICATION_TYPE": "azure-ad",
        "DB_SERVER": "myserver.database.windows.net",
        "DB_NAME": "MyDatabase",
        "DB_USER": "[email protected]",
        "DB_PASSWORD": "userpassword",
        "DB_PORT": "1433",
        "DB_ENCRYPT": "true",
        "DB_TRUST_SERVER_CERTIFICATE": "false"
      }
    }
  }
}
5. 🔐 Azure SQL Database(服务主体)
{
  "mcpServers": {
    "mcpql": {
      "command": "npx",
      "args": ["-y", "hendrickcastro/mcpql"],
      "env": {
        "DB_AUTHENTICATION_TYPE": "azure-ad",
        "DB_SERVER": "myserver.database.windows.net",
        "DB_NAME": "MyDatabase",
        "DB_AZURE_CLIENT_ID": "your-client-id",
        "DB_AZURE_CLIENT_SECRET": "your-client-secret",
        "DB_AZURE_TENANT_ID": "your-tenant-id",
        "DB_PORT": "1433",
        "DB_ENCRYPT": "true",
        "DB_TRUST_SERVER_CERTIFICATE": "false"
      }
    }
  }
}
6. 🔗 使用连接字符串
{
  "mcpServers": {
    "mcpql": {
      "command": "npx",
      "args": ["-y", "hendrickcastro/mcpql"],
      "env": {
        "DB_CONNECTION_STRING": "Server=localhost;Database=MyDatabase;User Id=sa;Password=YourPassword123!;Encrypt=false;TrustServerCertificate=true;"
      }
    }
  }
}

🔒 安全功能

MCPQL 包含全面的安全控制,可防止意外修改数据库,这在生产环境中尤为重要。

🛡️ 安全控制
数据库修改保护
  • DB_ALLOW_MODIFICATIONS:控制 DML/DDL 操作(INSERT、UPDATE、DELETE、ALTER、DROP、CREATE)
  • DB_ALLOW_STORED_PROCEDURES:控制存储过程执行
  • 默认值:为最大限度保障安全,这两个变量的默认值均为 false
安全状态工具

使用 mcp_get_security_status 检查当前安全配置:

const status = await mcp_get_security_status({});
🔧 启用操作
开发环境
{
  "mcpServers": {
    "mcpql": {
      "command": "npx",
      "args": ["-y", "hendrickcastro/mcpql"],
      "env": {
        "DB_SERVER": "localhost",
        "DB_NAME": "MyDatabase",
        "DB_USER": "sa",
        "DB_PASSWORD": "YourPassword123!",
        "DB_ALLOW_MODIFICATIONS": "true",
        "DB_ALLOW_STORED_PROCEDURES": "true"
      }
    }
  }
}
生产环境(推荐)
{
  "mcpServers": {
    "mcpql": {
      "command": "npx",
      "args": ["-y", "hendrickcastro/mcpql"],
      "env": {
        "DB_SERVER": "prod-server",
        "DB_NAME": "ProductionDB",
        "DB_USER": "readonly_user",
        "DB_PASSWORD": "secure_password",
        "DB_ALLOW_MODIFICATIONS": "false",
        "DB_ALLOW_STORED_PROCEDURES": "false"
      }
    }
  }
}
🚨 安全错误消息

操作被阻止时,MCPQL 会提供明确的指导:

Error: Modification operations are disabled for security.
To enable modifications, configure: DB_ALLOW_MODIFICATIONS=true

Error: Stored procedure execution is disabled for security.
To enable stored procedures, configure: DB_ALLOW_STORED_PROCEDURES=true
📋 始终允许的操作

无论安全设置如何,以下操作始终允许:

  • SELECT 查询
  • 表分析和架构检查
  • 列统计和数据预览
  • 对象搜索和依赖关系分析
  • 数据库元数据操作

完整的安全文档请参阅 SECURITY.md。

🚨 常见问题排查

连接问题
  • “登录失败”:检查用户名和密码。对于 Windows 身份验证,请确保设置了 DB_AUTHENTICATION_TYPE=windows
  • “找不到服务器”:确认服务器名称和端口。对于 SQL Express,请添加 DB_INSTANCE_NAME
  • “证书”错误:对于本地开发,请设置 DB_TRUST_SERVER_CERTIFICATE=true
  • 超时错误:增大 DB_TIMEOUT 或检查网络连接
SQL Server Express 设置
  1. 在 SQL Server Configuration Manager 中启用 TCP/IP 协议
  2. 设置静态端口(通常为 1433),或通过 Browser Service 使用动态端口
  3. 配置 Windows 防火墙以允许 SQL Server 流量
  4. 对于默认的 Express 安装,请使用 DB_INSTANCE_NAME=SQLEXPRESS
Azure SQL Database 设置
  1. 创建服务器防火墙规则以允许客户端 IP
  2. 服务器名称使用以下格式:server.database.windows.net
  3. 始终设置 DB_ENCRYPT=true 和 DB_TRUST_SERVER_CERTIFICATE=false
  4. 对于 Service Principal 身份验证,请在 Azure AD 中注册应用并分配权限

🧪 测试

运行完整测试套件:

npm test

测试套件包含对全部 10 个工具的全面测试,涵盖真实数据库测试并实现完整覆盖。

🏗️ 架构

项目结构
MCPQL/
├── src/
│   ├── __tests__/          # Comprehensive test suite
│   ├── tools/              # Modular tool implementations
│   │   ├── tableAnalysis.ts      # Table analysis tools
│   │   ├── storedProcedureAnalysis.ts  # SP analysis tools
│   │   ├── dataOperations.ts     # Data operation tools
│   │   ├── objectSearch.ts       # Search and discovery tools
│   │   ├── types.ts              # Type definitions
│   │   └── index.ts              # Tool exports
│   ├── db.ts               # Database connection management
│   ├── server.ts           # MCP server setup and handlers
│   ├── tools.ts            # Tool definitions and schemas
│   └── mcp-server.ts       # Tool re-exports
├── dist/                   # Compiled JavaScript output
└── package.json           # Dependencies and scripts
主要功能
  • ⚡ 连接池:高效管理数据库连接
  • 🛡️ 健壮的错误处理:全面的错误处理和验证
  • 📋 丰富的元数据:提供详细结果和全面的数据库信息
  • 🔧 灵活的配置:基于环境的配置
  • 📊 优化的查询:为所有操作提供高效的 SQL 查询

📝 重要说明

  • 对象名称:始终使用带架构限定的名称(例如,dbo.Users、api.Idiomas)
  • 错误处理:所有工具都会返回带有成功/错误标识的结构化响应
  • 类型安全:全面支持 TypeScript,并提供正确的类型定义
  • 连接管理:自动进行连接池管理和重试
  • 安全性:使用参数化查询防止 SQL 注入

🤝 参与贡献

  1. Fork 此仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 进行更改并添加测试
  4. 确保所有测试通过(npm test)
  5. 提交更改(git commit -m 'Add amazing feature')
  6. 推送到分支(git push origin feature/amazing-feature)
  7. 发起 Pull Request

📄 许可证

本项目采用 MIT License 许可,详情请参阅 LICENSE 文件。

🙏 致谢

🏷️ 标签与关键词

数据库: sql-server azure-sql database-analysis database-tools mssql t-sql database-management database-administration database-operations data-analysis

MCP 与 AI: model-context-protocol mcp-server mcp-tools ai-tools claude-desktop cursor-ide anthropic llm-integration ai-database intelligent-database

技术: typescript nodejs npm-package cli-tool database-client sql-client database-sdk rest-api json-api database-connector

功能: table-analysis stored-procedures data-preview column-statistics query-execution database-search object-dependencies schema-analysis data-exploration database-insights

部署: docker azure-deployment cloud-ready enterprise-ready production-ready scalable secure authenticated encrypted configurable

使用场景: database-development data-science business-intelligence database-migration schema-documentation performance-analysis data-governance database-monitoring troubleshooting automation


🎯 MCPQL 通过 Model Context Protocol 提供全面的 SQL Server 数据库分析与操作能力。非常适合数据库管理员、开发者以及所有使用 SQL Server 数据库的人员! 🚀

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。