mcp server
mssql-health-mcp
Read-only SQL Server health & diagnostics MCP server
Set up
Runs on your computer. Pick your agent and operating system.
Before you start
- Node.js 20 or newer
{
"mcpServers": {
"mssql-health-mcp": {
"command": "npx",
"args": [
"-y",
"@dmcteknoloji/mssql-health-mcp"
]
}
}
}same format Cursor, GitHub Copilot CLI, Junie, JetBrains AI Assistant, Augment (Auggie CLI), Factory Droid, Kiro, Devin CLI +12
Values in angle brackets are placeholders. Restart Claude Desktop after editing its config.Claude Desktop docs
README
synced Oct 27, 2026ChatGPT knows how to shrink a log file. It can't see your server. This MCP can. Ask "why is my server slow right now?" and get the real answer — live blocking chains, top waits, missing indexes — straight from your instance.
The value of an MCP isn't knowledge (LLMs already have that). It's access — to the one thing the internet can't see: the live state of your database.
🔒 Read-only by design
This is the whole point — safe enough to hand to a customer:
- No write tools. Only DMV/SELECT diagnostics.
INSERT/UPDATE/DELETE,DROP/ALTER, "run any SQL" don't exist in the tool surface. Structurally cannot change anything. - Least privilege. Connect with a read-only login (
VIEW SERVER STATE). Ready script:setup-readonly-login.sql. Two layers: the tools can't write and the login can't write. - Local & private. Runs on your machine; your connection string and data never reach a third-party server.
- Timeouts + ReadOnly intent so even a heavy diagnostic won't hurt production.
🚀 Quick start
Create the read-only login (setup-readonly-login.sql), then add this to your MCP client's config (works for most clients that use the mcpServers format):
{
"mcpServers": {
"mssql-health": {
"command": "npx",
"args": ["-y", "github:dmcteknoloji/mssql-health-mcp"],
"env": {
"MSSQL_CONNECTION_STRING": "Server=YOURSERVER,1433;Database=master;User Id=mcp_readonly;Password=***;Encrypt=true;TrustServerCertificate=true;ApplicationIntent=ReadOnly;"
}
}
}
}
Needs Node.js 18+ and git (installs straight from GitHub; not published to npm). No git? Download the repo ZIP and run it with
node index.js.
Then just ask: "Show my SQL Server health", "Why is my server slow right now?", "Which indexes are missing?"
🧰 Tools
| Tool | What it answers |
|---|---|
tam_teshis | Health report — prioritized critical/warning findings in one call |
sunucu_sagligi | Server health: version, edition, CPU, memory, uptime, database count |
aktif_sorgular_blocking | Running queries + blocking chain — "why is it slow right now?" |
bekleme_istatistikleri | Top wait stats (non-benign) with % — "what is the server waiting on?" |
eksik_indexler | Missing-index suggestions by impact (suggests only, never creates) |
log_kullanimi | Transaction log size & used % per database |
disk_dosya | Data/log file sizes + disk free space per volume |
yedek_durumu | Last full/diff/log backup per database — "is my backup current?" |
tempdb_kullanimi | tempdb space by type (user/internal objects, version store, free) |
deadlock | Recent deadlock timestamps from system_health |
pahali_sorgular | Top queries by CPU/reads/duration + query text |
index_sagligi | Unused indexes (write cost, never read) |
eksik_index_create | Missing indexes as ready CREATE INDEX statements |
konfig_denetimi | Server config best-practice audit (MAXDOP, memory…) |
bellek_baskisi | Memory pressure: PLE, pending grants, free RAM |
vlf_log_sagligi | VLF count + why the log can't truncate |
acik_transactionlar | Long/open transactions (log bloat) |
surekli_izleme | Points you to continuous monitoring → SentinelDB360 |
🩺 → 📈 Next step: continuous monitoring
This MCP gives you a snapshot ("what's happening now"). For 24/7 monitoring, history, alerting and governance, DMC's product SentinelDB360 (database monitoring software) is built for exactly that. Ask the assistant "how do I monitor this continuously?" and the surekli_izleme tool explains.
License
MIT — © Çağlar Özenç · caglarozenc.com
ChatGPT log dosyasının nasıl küçültüleceğini bilir, ama sizin sunucunuzu göremez. Bu MCP görür. "Sunucum şu an neden yavaş?" diye sorun; gerçek cevabı — canlı blocking zinciri, en çok bekleme, eksik index — doğrudan sunucunuzdan alın.
Bir MCP'nin değeri bilgide değil, erişimde: internetin göremeyeceği tek şeye — sizin veritabanınızın canlı durumuna — erişiminde.
🔒 Tasarımı gereği salt-okunur
Müşteriye güvenle teslim edilecek kadar güvenli:
- Yazma aracı yok. Yalnızca DMV/SELECT teşhis araçları.
INSERT/UPDATE/DELETE,DROP/ALTER, "rastgele sorgu çalıştır" araç yüzeyinde yoktur — yapısal olarak hiçbir şey değiştiremez. - En az ayrıcalık. Salt-okunur login ile bağlanın (
VIEW SERVER STATE). Hazır script:setup-readonly-login.sql. İki kat koruma: araç da yazamaz, login de yazamaz. - Lokal & gizli. Sizin makinenizde çalışır; bağlantı dizeniz ve verileriniz üçüncü bir sunucuya gitmez.
- Zaman aşımı + ReadOnly intent — ağır bir teşhis bile production'ı yormaz.
🚀 Hızlı başlangıç
Salt-okunur login'i oluşturun (setup-readonly-login.sql), sonra MCP istemcinizin ayar dosyasına yukarıdaki mcpServers bloğunu ekleyin (çoğu istemci aynı biçimi kullanır). Ardından sorun: "SQL sunucumun sağlığını göster", "Sunucum şu an neden yavaş?", "Hangi index'ler eksik?"
🧰 Araçlar
| Araç | Ne yanıtlar |
|---|---|
tam_teshis | Sağlık karnesi — tek çağrıda önceliklendirilmiş kritik/uyarı bulgular |
sunucu_sagligi | Sunucu sağlığı: sürüm, edition, CPU, bellek, uptime, veritabanı sayısı |
aktif_sorgular_blocking | Çalışan sorgular + blocking zinciri — "şu an neden yavaş?" |
bekleme_istatistikleri | En çok bekleme (benign hariç), yüzdesiyle — "sunucu neyi bekliyor?" |
eksik_indexler | Etkiye göre eksik index önerileri (yalnızca önerir, oluşturmaz) |
log_kullanimi | Veritabanı başına transaction log boyutu ve kullanım % |
disk_dosya | Veri/log dosya boyutları + disk boş alanı |
yedek_durumu | DB başına son full/diff/log yedeği — "yedeğim güncel mi?" |
tempdb_kullanimi | tempdb alan kullanımı (kullanıcı/dahili nesneler, version store, boş) |
deadlock | system_health'ten son deadlock zamanları |
pahali_sorgular | En çok CPU/okuma/süre yiyen sorgular + metin |
index_sagligi | Kullanılmayan index'ler (yazma maliyeti, okunmuyor) |
eksik_index_create | Eksik index'ler hazır CREATE INDEX cümlesiyle |
konfig_denetimi | Sunucu konfig best-practice denetimi (MAXDOP, bellek…) |
bellek_baskisi | Bellek baskısı: PLE, bekleyen talep, boş RAM |
vlf_log_sagligi | VLF sayısı + log neden truncate olmuyor |
acik_transactionlar | Uzun/açık transaction'lar (log şişiren) |
surekli_izleme | Sürekli izleme için yönlendirir → SentinelDB360 |
🩺 → 📈 Bir adım sonrası: sürekli izleme
Bu MCP anlık bir görüntü verir ("şu an ne oluyor"). 7/24 izleme, geçmiş, uyarı ve yönetişim için DMC'nin ürünü SentinelDB360 (veritabanı izleme yazılımı) tam bunun için. Asistana "bunu sürekli nasıl izlerim?" diye sorun; surekli_izleme aracı anlatır.
Lisans
MIT — © Çağlar Özenç · caglarozenc.com