
SQL Sentinel MCP Server
io.github.tkmawarire由 GitHub 帳號 tkmawarire 發布v2.3.1更新於 Oct 24, 2026
SQL Server monitoring and diagnostics for AI agents using Extended Events. No ODBC drivers required.
概覽
一個本機 MCP 伺服器,讓 AI 助理透過擴充事件工作階段、等待統計和直接查詢來監控、診斷和操作 SQL Server。
- 可以做什麼
- 建立、啟動、停止、刪除和列出擴充事件擷取工作階段,包括一步快速擷取和短時間即時事件串流,支援篩選、排序和去重,以及查詢指紋正規化和執行順序分析。依指紋、資料庫、應用程式或登入取得彙總統計,並檢視資料庫、應用程式、登入、工作階段和封鎖情況。診斷死結、被封鎖的處理程序和等待統計,並執行涵蓋慢查詢、死結、封鎖和洞察的綜合健康檢查。檢查或授予所需的 SQL Server 權限。執行資料庫操作:列出資料表、描述資料表結構、執行 SELECT 查詢、插入、更新、建立和刪除資料表。
- 適用情境
- 適合需要助理排查 SQL Server 效能問題(例如慢查詢、N+1 模式、死結或封鎖)的情境,也適合在你管理的 SQL Server 執行個體上做例行資料表結構檢視和資料查詢。
- 執行需求
- 需要本機執行環境:Docker、用於 NuGet 全域工具的 .NET 9 SDK,或從原始碼建置。需要可存取的 SQL Server 2012 以上執行個體並啟用擴充事件。連線字串須透過環境變數 SQL_SENTINEL_CONNECTION_STRING 提供。登入帳號需要 ALTER ANY EVENT SESSION 和 VIEW SERVER STATE 權限;封鎖處理程序偵測還需設定 blocked process threshold。
安裝
在 SourceWeft 中
- 開啟 儀表板中的 SQL Sentinel MCP Server,將其新增到工作區。
- 為需要使用其工具的對話啟用該服務。
Desktop only,透過 STDIO。 STDIO 服務會啟動本機處理程序,因此需要 SourceWeft 桌面主機。
其他 MCP 客戶端
參照 儲存庫 中的啟動說明。
README
SQL Sentinel MCP Server
[NuGet] [Docker] [License: MIT]
A production-ready MCP (Model Context Protocol) server for SQL Server monitoring, diagnostics, and database operations. Built with .NET 9 and Microsoft.Data.SqlClient for native SQL Server connectivity — no ODBC drivers required.
Features
- Session Management — Create, start, stop, drop, and list Extended Events sessions
- Smart Filtering — Filter by application, database, user, duration, host, and text patterns
- Query Fingerprinting — Normalize and group similar queries differing only in literal values
- Sequence Analysis — Trace execution order with timing gaps and cumulative duration
- Deadlock Detection — Capture and analyze XML deadlock reports with victim/process details
- Blocking Analysis — Monitor blocked process events with wait resource and SQL text
- Wait Stats — Query
sys.dm_os_wait_statsdirectly, categorized by type (CPU, I/O, Lock, Memory, etc.) - Health Check — Comprehensive server diagnostic: slow queries, deadlocks, blocking, wait stats, and insights
- Real-Time Streaming — Stream captured events for a specified duration
- Production-Safe — Auto-excludes noise (
sp_reset_connection,SETstatements, trace queries) - Database Operations — List tables, describe schemas, query data, insert, update, and drop tables
- AI-Optimized — Structured JSON output with optional Markdown formatting
Requirements
- SQL Server 2012+ with Extended Events enabled (default)
- Required permissions:
- For blocked process detection:
Installation
Option 1: Docker (Recommended)
No .NET SDK required. Works on any system with Docker installed.
Claude Desktop (claude_desktop_config.json)
Claude Code
Network access: The
-iflag is required for stdio transport. Use--network hostso the container can reach SQL Server on your host machine. For remote SQL Server, omit--network hostand use the accessible hostname in your connection string.Connection string: Set
SQL_SENTINEL_CONNECTION_STRINGvia-e. All tools read the connection string from this environment variable.
Option 2: .NET Global Tool (NuGet)
Requires .NET 9 SDK or later.
Option 3: Build from Source
Run directly:
Or publish a self-contained single binary:
Output will be in bin/Release/net9.0/{runtime}/publish/
Connection Strings
All tools read the connection string from the SQL_SENTINEL_CONNECTION_STRING environment variable. Set it once before starting the server:
SQL Authentication:
Windows Authentication:
Note: Only use
TrustServerCertificate=truein development environments with self-signed certificates. For production, always useTrustServerCertificate=falsewith a valid SSL certificate.
Azure SQL:
MCP Tools Reference
Session Lifecycle
Event Retrieval
Diagnostics
Permissions
Database Operations
Usage Examples
Quick Debug Session
Find N+1 Queries
Trace Specific Operation
Deadlock Detection
Blocking Analysis
Server Health Check
Database Operations
Wait Stats (No Session Required)
Query Fingerprinting
Queries are normalized to group similar ones:
Noise Filtering
Default excluded patterns (when excludeNoise=true):
sp_reset_connection— Connection pool resetSET TRANSACTION ISOLATION LEVEL— Session setupSET NOCOUNT,SET ANSI_*— Client configurationsp_trace_*,fn_trace_*— Trace system queries
Supported Event Types
SqlBatchCompleted, RpcCompleted, SqlStatementCompleted, SpStatementCompleted, Attention, ErrorReported, Deadlock, BlockedProcess, LoginEvent, SchemaChange, Recompile, AutoStats
Project Structure
Development
Prerequisites
- .NET 9 SDK
- SQL Server 2012+ instance (local, Docker, or remote)
- Docker (optional, for container builds)
Clone & Build
Running the MCP Server Locally
The server communicates over stdio using the MCP protocol. Connect it to an MCP client (Claude Desktop, Claude Code, etc.) for interactive use.
Using the Debug API
The API project provides a REST wrapper around all MCP tools with Swagger UI for manual testing.
- Swagger UI:
http://localhost:5100/ - Configure the connection string via environment variable
SQL_SENTINEL_CONNECTION_STRING
Using the Debug CLI
The CLI project provides an interactive REPL and script mode for testing tools directly.
Set the SQL_SENTINEL_CONNECTION_STRING environment variable before running.
Docker Build
Architecture
Key Patterns
- Dependency injection via
Microsoft.Extensions.Hosting - stdio transport — stdout is reserved for MCP protocol; all logging goes to stderr
- Tool auto-discovery — MCP tools are discovered from the assembly via
WithToolsFromAssembly() - XE session prefix — All created sessions are prefixed with
mcp_sentinel_ - Two event shapes — Standard events (query, login, recompile) with typed fields, and XML-payload events (deadlock, blocking) parsed from Extended Events XML
Adding a New MCP Tool
- Create a
public staticmethod in the appropriate file underTools/(or create a new file) - Decorate with
[McpServerTool(Name = "sqlsentinel_your_tool")]and[Description("...")] - Add parameters with
[Description("...")]attributes — they become the tool's input schema - Inject services via method parameters (e.g.,
IProfilerService,IWaitStatsService) - Return a string (JSON or Markdown) — the framework handles MCP response wrapping
Troubleshooting
"Permission denied" creating session
"Login failed"
- Check connection string credentials
- For Windows auth, ensure process runs under correct user
- For Azure SQL, ensure firewall allows your IP
No events captured
- Verify session is RUNNING (
sqlsentinel_list_sessions) - Check filters aren't too restrictive
- Verify target database/app is generating queries
- Check
minDurationMsisn't filtering everything
No deadlock events
- Ensure session was created with
eventTypes: "Deadlock" - Deadlocks must actually occur while the session is running
No blocking events
- Ensure
blocked process thresholdis configured:sp_configure 'blocked process threshold', 5 - Ensure session was created with
eventTypes: "BlockedProcess" - Blocking must exceed the configured threshold (seconds)
Timeout reading events
Large ring buffers with many events can be slow to parse. Use:
- Time filters to narrow the window
- Increase command timeout in code if needed
Security Notes
- The
SQL_SENTINEL_CONNECTION_STRINGenvironment variable contains credentials — secure appropriately - Don't leave sessions running indefinitely on production
- Query text may contain sensitive data
- Grant minimum required permissions
Contributing
See CONTRIBUTING.md for guidelines on submitting issues and pull requests.
License
MIT
來源:README.md,提交 84ac172
工具
0版本歷史
1- v2.3.1最新Sep 16, 2026
評分
已滿足適用檢查項的 50%
該評分衡量此收錄條目的完整程度,依據註冊中心條目、端點與公開來源計算得出。它不是對伺服器本身的評價,也不表示伺服器安全或目前可用:可連通性是帶日期的檢查結果,評分也不包含安裝量或使用者評價。
- 近 30 天內可連通25 分
請保持端點能夠回應 MCP 握手;SourceWeft 每 30 天探測一次。
- 已宣告認證方式10 分
請在註冊中心條目中宣告憑證請求標頭,或保持端點能夠回應探測,以便判定其認證方式。
- 已列出工具15 分
請讓伺服器在無憑證時回應 tools/list,或發布可在沙箱中無憑證啟動的軟體包。
- 描述必需15 分
- 圖示10 分
- 文件15 分
- 授權條款10 分