{"id":"3a14df41-72d4-4a27-b8fc-40fdd2893b98","slug":"mssql-health-mcp","kind":"mcp","name":"mssql-health-mcp","summary":"Read-only SQL Server health & diagnostics MCP server","owner":"dmcteknoloji","repoUrl":"https://github.com/dmcteknoloji/mssql-health-mcp","license":"MIT","licenseTier":"permissive","trust":"community","stars":1,"match":null,"fewStars":true,"format":"mcp","createdAt":"2026-06-18T16:55:48.000Z","addedAt":"2026-10-21T09:08:07.845Z","logoUrl":"https://avatars.githubusercontent.com/u/280632249?u=16b85534a75f304fb0e33652c604a404a78990d1&v=4","linkOnly":false,"collection":null,"skillPath":null,"categories":["cloud-infra","databases"],"tags":["dba","diagnostics","mssql","read-only","sql-server"],"runtime":"node","local":true,"cloudCapable":false,"cloudCapability":"unknown","cloudReadyOnPlatform":false,"needsApiKey":false,"reviewed":false,"syncedAt":"2026-10-27T22:34:17.220Z","sample":false,"url":"https://conduits.dev/tools/mssql-health-mcp","language":"JavaScript","transports":["stdio"],"install":{"npm":"@dmcteknoloji/mssql-health-mcp"},"requirements":{"env":[],"upstreamMayCharge":false},"tools":null,"readme":"<h1 align=\"center\">🩺 mssql-health-mcp</h1>\n\n<p align=\"center\">\n  <b>Ask your AI about your <i>live</i> SQL Server.</b><br/>\n  A read-only MCP server that lets Claude, ChatGPT, Gemini — or any MCP client —<br/>\n  diagnose your real SQL Server through DMVs. <b>Read-only by design.</b>\n</p>\n\n<p align=\"center\">\n  <a href=\"LICENSE\"><img src=\"https://img.shields.io/badge/license-MIT-blue\" alt=\"MIT\"/></a>\n  <img src=\"https://img.shields.io/badge/node-%3E%3D18-green\" alt=\"node >=18\"/>\n  <img src=\"https://img.shields.io/badge/SQL%20Server-read--only-2ec5ff\" alt=\"read-only\"/>\n  <img src=\"https://img.shields.io/badge/MCP-Model%20Context%20Protocol-7af0ff\" alt=\"MCP\"/>\n</p>\n\n<p align=\"center\"><b>🇬🇧 English</b> · <a href=\"#-türkçe\">🇹🇷 Türkçe</a></p>\n\n---\n\nChatGPT knows *how* to shrink a log file. It can't see **your** server.\nThis MCP can. Ask **\"why is my server slow right now?\"** and get the real answer —\nlive blocking chains, top waits, missing indexes — straight from your instance.\n\n> **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.\n\n## 🔒 Read-only by design\n\nThis is the whole point — safe enough to hand to a customer:\n\n- **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.\n- **Least privilege.** Connect with a read-only login (`VIEW SERVER STATE`). Ready script: [`setup-readonly-login.sql`](setup-readonly-login.sql). Two layers: the tools can't write *and* the login can't write.\n- **Local & private.** Runs on your machine; your connection string and data never reach a third-party server.\n- **Timeouts + ReadOnly intent** so even a heavy diagnostic won't hurt production.\n\n## 🚀 Quick start\n\nCreate the read-only login ([`setup-readonly-login.sql`](setup-readonly-login.sql)), then add this to your MCP client's config (works for most clients that use the `mcpServers` format):\n\n```json\n{\n  \"mcpServers\": {\n    \"mssql-health\": {\n      \"command\": \"npx\",\n      \"args\": [\"-y\", \"github:dmcteknoloji/mssql-health-mcp\"],\n      \"env\": {\n        \"MSSQL_CONNECTION_STRING\": \"Server=YOURSERVER,1433;Database=master;User Id=mcp_readonly;Password=***;Encrypt=true;TrustServerCertificate=true;ApplicationIntent=ReadOnly;\"\n      }\n    }\n  }\n}\n```\n\n> 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`.\n\nThen just ask: *\"Show my SQL Server health\"*, *\"Why is my server slow right now?\"*, *\"Which indexes are missing?\"*\n\n## 🧰 Tools\n\n| Tool | What it answers |\n|------|-----------------|\n| `tam_teshis` | **Health report** — prioritized critical/warning findings in one call |\n| `sunucu_sagligi` | Server health: version, edition, CPU, memory, uptime, database count |\n| `aktif_sorgular_blocking` | Running queries + blocking chain — *\"why is it slow right now?\"* |\n| `bekleme_istatistikleri` | Top wait stats (non-benign) with % — *\"what is the server waiting on?\"* |\n| `eksik_indexler` | Missing-index suggestions by impact (suggests only, never creates) |\n| `log_kullanimi` | Transaction log size & used % per database |\n| `disk_dosya` | Data/log file sizes + disk free space per volume |\n| `yedek_durumu` | Last full/diff/log backup per database — \"is my backup current?\" |\n| `tempdb_kullanimi` | tempdb space by type (user/internal objects, version store, free) |\n| `deadlock` | Recent deadlock timestamps from system_health |\n| `pahali_sorgular` | Top queries by CPU/reads/duration + query text |\n| `index_sagligi` | Unused indexes (write cost, never read) |\n| `eksik_index_create` | Missing indexes as ready CREATE INDEX statements |\n| `konfig_denetimi` | Server config best-practice audit (MAXDOP, memory…) |\n| `bellek_baskisi` | Memory pressure: PLE, pending grants, free RAM |\n| `vlf_log_sagligi` | VLF count + why the log can't truncate |\n| `acik_transactionlar` | Long/open transactions (log bloat) |\n| `surekli_izleme` | Points you to continuous monitoring → SentinelDB360 |\n\n## 🩺 → 📈 Next step: continuous monitoring\n\nThis MCP gives you a **snapshot** (\"what's happening now\"). For 24/7 monitoring, history, alerting and governance, DMC's product **[SentinelDB360](https://sentineldb360.com)** (database monitoring software) is built for exactly that. Ask the assistant *\"how do I monitor this continuously?\"* and the `surekli_izleme` tool explains.\n\n## License\n\nMIT — © Çağlar Özenç · [caglarozenc.com](https://caglarozenc.com)\n\n<br/>\n\n---\n\n<h2 id=\"-türkçe\">🇹🇷 Türkçe</h2>\n\n<p><b>Canlı</b> SQL Server'ınızı yapay zekaya sorun. Claude, ChatGPT, Gemini — ya da herhangi bir MCP istemcisi — gerçek sunucunuzu DMV'lerle teşhis etsin. <b>Tasarımı gereği salt-okunur.</b></p>\n\nChatGPT 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.\n\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.\n\n### 🔒 Tasarımı gereği salt-okunur\n\nMüşteriye güvenle teslim edilecek kadar güvenli:\n\n- **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.\n- **En az ayrıcalık.** Salt-okunur login ile bağlanın (`VIEW SERVER STATE`). Hazır script: [`setup-readonly-login.sql`](setup-readonly-login.sql). İki kat koruma: araç da yazamaz, login de yazamaz.\n- **Lokal & gizli.** Sizin makinenizde çalışır; bağlantı dizeniz ve verileriniz üçüncü bir sunucuya gitmez.\n- **Zaman aşımı + ReadOnly intent** — ağır bir teşhis bile production'ı yormaz.\n\n### 🚀 Hızlı başlangıç\n\nSalt-okunur login'i oluşturun ([`setup-readonly-login.sql`](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?\"*\n\n### 🧰 Araçlar\n\n| Araç | Ne yanıtlar |\n|------|-------------|\n| `tam_teshis` | **Sağlık karnesi** — tek çağrıda önceliklendirilmiş kritik/uyarı bulgular |\n| `sunucu_sagligi` | Sunucu sağlığı: sürüm, edition, CPU, bellek, uptime, veritabanı sayısı |\n| `aktif_sorgular_blocking` | Çalışan sorgular + blocking zinciri — *\"şu an neden yavaş?\"* |\n| `bekleme_istatistikleri` | En çok bekleme (benign hariç), yüzdesiyle — *\"sunucu neyi bekliyor?\"* |\n| `eksik_indexler` | Etkiye göre eksik index önerileri (yalnızca önerir, oluşturmaz) |\n| `log_kullanimi` | Veritabanı başına transaction log boyutu ve kullanım % |\n| `disk_dosya` | Veri/log dosya boyutları + disk boş alanı |\n| `yedek_durumu` | DB başına son full/diff/log yedeği — \"yedeğim güncel mi?\" |\n| `tempdb_kullanimi` | tempdb alan kullanımı (kullanıcı/dahili nesneler, version store, boş) |\n| `deadlock` | system_health'ten son deadlock zamanları |\n| `pahali_sorgular` | En çok CPU/okuma/süre yiyen sorgular + metin |\n| `index_sagligi` | Kullanılmayan index'ler (yazma maliyeti, okunmuyor) |\n| `eksik_index_create` | Eksik index'ler hazır CREATE INDEX cümlesiyle |\n| `konfig_denetimi` | Sunucu konfig best-practice denetimi (MAXDOP, bellek…) |\n| `bellek_baskisi` | Bellek baskısı: PLE, bekleyen talep, boş RAM |\n| `vlf_log_sagligi` | VLF sayısı + log neden truncate olmuyor |\n| `acik_transactionlar` | Uzun/açık transaction'lar (log şişiren) |\n| `surekli_izleme` | Sürekli izleme için yönlendirir → SentinelDB360 |\n\n### 🩺 → 📈 Bir adım sonrası: sürekli izleme\n\nBu 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](https://sentineldb360.com)** (veritabanı izleme yazılımı) tam bunun için. Asistana *\"bunu sürekli nasıl izlerim?\"* diye sorun; `surekli_izleme` aracı anlatır.\n\n### Lisans\n\nMIT — © Çağlar Özenç · [caglarozenc.com](https://caglarozenc.com)\n"}