麦克。SqlServer。核心
MCP客户端的高性能SQL Server访问,基于。NET 10,具有一个共享核心、两个传输、强大的安全控制、智能缓存和企业级诊断。
为什么存在此服务器
大多数SQLMCP服务器在模式发现和原始查询执行时停止。 Mcp.SqlServer.Core 更进一步:
- 具有能力门控的安全读写数据访问
- 共享实施
stdio以及可流式传输的HTTP MCP传输 - 用于元数据、确定性读取、计划和报告的多层智能缓存
- 执行计划检索、操作报告和指标分析
- 存在但默认禁用的管理工具
- 结构化审计日志记录、OpenTetry和支持取消的异步执行
这使得服务器适用于本地IDE副本、内部代理、远程MCP托管和严重的SQL操作工作流,而无需将产品拆分为多个断开连接的服务。
功能快照
| 区域 | 能力 |
|---|---|
| 发现 | list_databases, list_schemas, list_tables, describe_table, describe_relationships, search_schema |
| 数据访问 | read_records, execute_sql, create_record, update_record, delete_record, execute_stored_procedure |
| 诊断 | explain_query, get_query_plan, analyze_indexes |
| 报告 | database_health_report, query_performance_report, table_statistics_report |
| 管理员 | create_index, rebuild_index, update_statistics, run_maintenance_task |
| 安全 | 功能配置文件、数据库分配列表、拒绝令牌检查、命令超时、行限制、审计跟踪 |
| 性能 | 内存缓存、确定性查询结果缓存、计划/报告快照缓存、异步ADO。NET,JSON源代码生成 |
| 部署 | stdio 主机、HTTP主机、一个共享核心 |
建筑
┌──────────────────────────────┐
│ MCP Client │
│ Claude / Cursor / Copilot │
└──────────────┬───────────────┘
│
┌───────────────┴────────────────┐
│ Transport Layer │
│ stdio host or streamable HTTP │
└───────────────┬────────────────┘
│
┌───────────────┴────────────────┐
│ Mcp.SqlServer.Core │
│ tool handlers + safety + cache │
│ diagnostics + reports + audit │
└───────────────┬────────────────┘
│
┌───────────────┴────────────────┐
│ SQL Server │
│ data + metadata + DMVs + plans │
└────────────────────────────────┘解决方案布局
Mcp.SqlServer.Core.Abstractions
共享选项、能力配置文件和工具合同。
Mcp.SqlServer.Core
SQL执行引擎、安全验证、缓存、诊断、报告、MCP工具和DI注册。
Mcp.SqlServer.Core.StdioHost
使用stdio传输的本地MCP客户端的控制台主机。
Mcp.SqlServer.Core.HttpHost
ASP。NET Core主机暴露可流式传输的HTTP MCP端点。
Mcp.SqlServer.Core.Tests
用于分类、安全验证和缓存密钥行为的单元覆盖率。
工具目录
发现
list_databaseslist_schemaslist_tablesdescribe_tabledescribe_relationshipssearch_schema
读写
read_recordsexecute_sqlcreate_recordupdate_recorddelete_recordexecute_stored_procedure
诊断和报告
explain_queryget_query_plananalyze_indexesdatabase_health_reportquery_performance_reporttable_statistics_report
管理员,默认禁用
create_indexrebuild_indexupdate_statisticsrun_maintenance_task
安全模型
Mcp.SqlServer.Core 旨在避免经典的“带有README警告的原始SQL网关”陷阱。
- 能力概况:
ReadOnly, ReadWrite, Admin
- 默认情况下,管理工具已禁用
- 被拒绝的SQL令牌会阻止危险的服务器级操作
- 数据库分配表在配置时限制范围
- 存储过程的执行是单独控制的
- 命令超时和行限制集中执行
- 写入和管理操作会发出带有相关ID的审核事件
智能高速缓存
缓存内置于服务器核心,而不是在客户端层附加。
- 元数据缓存:
模式、表和关系发现
- 确定性查询缓存:
由规范化的SQL、数据库、参数和功能上下文键控
- 查询计划缓存:
估计和实际计划有效载荷重用
- 报告快照缓存:
健康、性能和统计报告
对于非确定性或会话敏感的SQL,有意绕过读取结果缓存。
表演技巧
- 基于异步Dapper的查询执行
Microsoft.Data.SqlClient - 通过标准SQL客户端行为实现连接池
- 工具请求和响应合同的JSON源代码生成
- 两种传输的共享服务核心
- OpenTetry跟踪和指标
- 后台元数据预热
- 缓存报告和执行计划生成
- 针对标准操作与昂贵操作的集中超时选择
配置
两个主机绑定相同 SqlServerMcp 配置部分。
{
"SqlServerMcp": {
"ConnectionString": "Server=localhost,1433;Database=master;User ID=sa;Password=Your_strong_password123;TrustServerCertificate=True;Encrypt=False;",
"CapabilityProfile": "ReadWrite",
"EnableAdminTools": false,
"EnableExecutionPlans": true,
"EnableReporting": true,
"EnableMetadataWarmup": true,
"WarmupDatabases": [ "master" ],
"CachePolicy": {
"MetadataTtl": "00:30:00",
"DeterministicQueryTtl": "00:02:00",
"QueryPlanTtl": "00:10:00",
"ReportSnapshotTtl": "00:05:00"
},
"Safety": {
"AllowedDatabases": [ "master" ],
"MaxRows": 250,
"MaxPayloadBytes": 1000000,
"DefaultCommandTimeout": "00:00:30",
"ExpensiveCommandTimeout": "00:01:30",
"AllowStoredProcedures": true
}
}
}NativeAOT发布
默认发货的工件是 stdio 主机,发布为NativeAOT,自包含,单文件可执行,用于:
linux-x64win-x64osx-arm64
每个版本存档包括:
- 平台原生
Mcp.SqlServer.Core.StdioHost二进制 appsettings.json.example
发布自动化在 release.yml当你按下标签时 v0.1.0,GitHub操作:
- 恢复解决方案
- 运行测试套件
- 为三个目标平台发布NativeAOT二进制文件
- 软件包发布存档
- 将它们上传到GitHub发布版
常规CI生活在 ci.yml。它靠推送来运行 main,拉取目标请求 main,以及人工调度。CI验证恢复、构建、测试和Linux linux-x64 NativeAOT烟雾发布。
运行服务器
1.恢复
dotnet restore Mcp.SqlServer.Core.slnx2.建造
dotnet build Mcp.SqlServer.Core.slnx3.运行stdio主机
dotnet run --project Mcp.SqlServer.Core.StdioHost3a。发布本地NativeAOT二进制文件
苹果硅:
brew install openssl@3 brotli zlib
export CPATH=/opt/homebrew/include:/opt/homebrew/opt/openssl@3/include:/opt/homebrew/opt/zlib/include
export LIBRARY_PATH=/opt/homebrew/lib:/opt/homebrew/opt/openssl@3/lib:/opt/homebrew/opt/zlib/lib
export DYLD_FALLBACK_LIBRARY_PATH=/opt/homebrew/lib:/opt/homebrew/opt/openssl@3/lib:/opt/homebrew/opt/zlib/lib
dotnet publish Mcp.SqlServer.Core.StdioHost/Mcp.SqlServer.Core.StdioHost.csproj \
-c Release \
-r osx-arm64 \
-p:PublishAot=true \
-p:PublishSingleFile=true \
-p:SelfContained=trueLinux x64:
dotnet publish Mcp.SqlServer.Core.StdioHost/Mcp.SqlServer.Core.StdioHost.csproj \
-c Release \
-r linux-x64 \
-p:PublishAot=true \
-p:PublishSingleFile=true \
-p:SelfContained=trueWindows x64:
dotnet publish Mcp.SqlServer.Core.StdioHost/Mcp.SqlServer.Core.StdioHost.csproj ^
-c Release ^
-r win-x64 ^
-p:PublishAot=true ^
-p:PublishSingleFile=true ^
-p:SelfContained=true4.运行HTTP主机
dotnet run --project Mcp.SqlServer.Core.HttpHostHTTP MCP端点:
/mcpDocker和远程托管
HTTP主机是为容器或中央MCP部署而构建的:
- 装载环境特定配置
- 注入
SqlServerMcp__ConnectionString来自秘密 - 除非专用操作部署需要,否则应禁用管理工具
- 使用正常的反向代理和身份验证层来提供服务
MCP客户端设置
对于发布二进制文件,配置MCP客户端以直接启动提取的stdio可执行文件。
macOS或Linux上的Claude Desktop示例:
{
"mcpServers": {
"sqlserver": {
"command": "/absolute/path/to/Mcp.SqlServer.Core.StdioHost",
"args": []
}
}
}Windows示例:
{
"mcpServers": {
"sqlserver": {
"command": "C:\\absolute\\path\\to\\Mcp.SqlServer.Core.StdioHost.exe",
"args": []
}
}
}在启动二进制文件之前:
- 复制
appsettings.json.example到appsettings.json. - 设置SQL Server连接字符串。
- 审查
AllowedDatabases、行限制和管理工具设置。 - 保持
EnableAdminTools除非你明确需要,否则它是禁用的。
定位示例
在需要时使用此服务器:
- 一个SQL Server MCP端点,而不是单独的模式、CRUD和诊断服务器
- 一NET原生实现,适用于Windows、Linux、容器和企业托管
- 比通用操作环境更丰富的操作环境
execute_sql服务器可以提供 - 帮助重复MCP工具调用在代理工作负载下保持快速的性能特征
验证
此仓库中的当前验证:
dotnet build Mcp.SqlServer.Core.slnx --no-restore -m:1 -p:BuildInParallel=false -p:UseSharedCompilation=false /clp:ErrorsOnly
dotnet test Mcp.SqlServer.Core.Tests/Mcp.SqlServer.Core.Tests.csproj -m:1 -p:BuildInParallel=false -p:UseSharedCompilation=falseNativeAOT烟雾测试:
dotnet publish Mcp.SqlServer.Core.StdioHost/Mcp.SqlServer.Core.StdioHost.csproj -c Release -r osx-arm64 -p:PublishAot=true -p:PublishSingleFile=true -p:SelfContained=true当前状态
此存储库现在包含SQL server的完整绿地MCP服务器基础:
- 共享合同和期权
- 能力门控工具表面
- stdio和HTTP主机
- 安全验证和缓存
- 诊断和报告工具
- 基线自动化测试
如果接下来要扩展它,自然的后续操作是针对真实SQL Server容器的集成测试、远程HTTP部署的身份验证和更丰富的DMV/报告界面。
