一个全面的模型上下文协议(MCP)服务器,用于SQL Server数据库操作。此服务器通过MCP协议提供了10个强大的工具,用于数据库分析、对象发现和数据操作。
无需安装!只需配置您的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"
}
}
}
}
git clone https://github.com/hendrickcastro/MCPQL.git
cd MCPQL
npm install
npm run build
.env文件,包含您的数据库凭证:# 基本的SQL Server连接
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
{
"mcpServers": {
"mcpql": {
"command": "node",
"args": ["path/to/MCPQL/dist/server.js"]
}
}
}
MCPQL提供了11个全面的工具,用于SQL Server数据库操作:
mcp_table_analysis完整的表结构分析,包括列、键、索引和约束。
mcp_sp_structure分析存储过程结构,包括参数、依赖项和源代码。
mcp_preview_data预览表数据,可选过滤和行限制。
mcp_get_column_stats获取特定列的综合统计信息。
mcp_execute_procedure执行带有参数的存储过程,并返回结果。
mcp_execute_query执行自定义SQL查询,并进行完整的错误处理。
mcp_quick_data_analysis快速统计分析,包括行数、列分布和顶级值。
mcp_search_comprehensive根据名称和定义搜索数据库对象,具有可配置的标准。
mcp_get_dependencies获取数据库对象(表、视图、存储过程等)的依赖关系。
mcp_get_sample_values从表中的特定列获取样本值。
mcp_get_security_status获取数据库操作的安全配置和状态。
// 获取完整的表结构
const analysis = await mcp_table_analysis({
table_name: "dbo.Users"
});
// 获取快速数据概览
const overview = await mcp_quick_data_analysis({
table_name: "dbo.Users",
sample_size: 500
});
// 预览带过滤器的表数据
const data = await mcp_preview_data({
table_name: "dbo.Users",
filters: { "Status": "Active", "Department": "IT" },
limit: 25
});
// 查找所有包含“User”的对象
const objects = await mcp_search_comprehensive({
pattern: "User",
search_in_names: true,
search_in_definitions: false
});
// 查找查询特定表的过程
const procedures = await mcp_search_comprehensive({
pattern: "FROM Users",
object_types: ["PROCEDURE"],
search_in_definitions: true
});
// 获取完整的存储过程分析
const spAnalysis = await mcp_sp_structure({
sp_name: "dbo.usp_GetUserData"
});
// 执行存储过程
const result = await m. mcp_execute_procedure({
sp_name: "dbo.usp_GetUserById",
params: { "UserId": 123, "IncludeDetails": true }
});
// 获取列统计信息
const stats = await mcp_get_column_stats({
table_name: "dbo.Users",
column_name: "Age"
});
// 从列中获取样本值
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_SERVER | SQL Server主机名/IP | - | 所有 |
DB_NAME | 数据库名称 | - | 所有 |
DB_PORT | SQL Server端口 | 1433 | 所有 |
DB_TIMEOUT | 连接超时(毫秒) | 30000 | 所有 |
DB_REQUEST_TIMEOUT | 请求超时(毫秒) | 30000 | 所有 |
| SQL Server认证 | |||
DB_USER | SQL Server用户名 | - | SQL认证 |
DB_PASSWORD | SQL Server密码 | - | SQL认证 |
| Windows认证 | |||
DB_DOMAIN | Windows域 | - | Windows认证 |
DB_USER | Windows用户名 | 当前用户 | Windows认证 |
DB_PASSWORD | Windows密码 | - | Windows认证 |
| Azure AD认证 | |||
DB_USER | Azure AD用户名 | - | Azure AD(密码) |
DB_PASSWORD | Azure AD密码 | - | Azure AD(密码) |
DB_AZURE_CLIENT_ID | Azure AD应用客户端ID | - | Azure AD(服务主体) |
DB_AZURE_CLIENT_SECRET | Azure AD应用客户端密钥 | - | Azure AD(服务主体) |
DB_AZURE_TENANT_ID | Azure 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 | 使用UTC日期 | true | 所有 |
| 连接池 | |||
DB_POOL_MAX | 最大连接数 | 10 | 所有 |
DB_POOL_MIN | 最小连接数 | 0 | 所有 |
DB_POOL_IDLE_TIMEOUT | 空闲超时(毫秒) | 30000 | 所有 |
| 高级设置 | |||
DB_CANCEL_TIMEOUT | 取消超时(毫秒) | 5000 | 所有 |
DB_PACKET_SIZE | 包大小(字节) | 4096 | 所有 |
DB_CONNECTION_STRING | 完整连接字符串 | - | 替代单独设置 |
| 安全控制 | |||
DB_ALLOW_MODIFICATIONS | 允许DML/DDL操作 | false | 所有 |
DB_ALLOW_STORED_PROCEDURES | 允许存储过程执行 | false | 所有 |
{
"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"
}
}
}
}
{
"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"
}
}
}
}
{
"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"
}
}
}
}
{
"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": "user@domain.com",
"DB_PASSWORD": "userpassword",
"DB_PORT": "1433",
"DB_ENCRYPT": "true",
"DB_TRUST_SERVER_CERTIFICATE": "false"
}
}
}
}
{
"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"
}
}
}
}
{
"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