E-Nabız MCP
This MCP server provides read-only, local access to your personal E-Nabız (Turkish Ministry of Health Personal Health System) data via 32 tools, enabling an LLM to interact with your health records without exposing sensitive data to external services.
Session Management
Log in via SMS OTP (2FA), verify the OTP, and check session status.
Health Summary
Single-call overview of your profile, allergies, and counts of diagnoses, vaccinations, medications, visits, and upcoming appointments.
Lab Tests
List lab results by year range (with optional name filter); view historical trends for specific tests.
Prescriptions & Medications
List general, optical, and device prescriptions; get prescription details; list all medications used; retrieve drug leaflets; track drug usage history by barcode.
Clinical Records
Allergies, diagnoses (with ICD codes and detail), chronic disease follow-ups, vaccinations, discharge summaries (epicrises), pathology records, and health reports.
Radiology
List radiology studies, retrieve text reports, and get DICOM viewer links for imaging.
Visits & Appointments
List hospital visits and get per-visit details (diagnoses, procedures); list MHRS appointments (read-only — no booking or cancellation).
Profile & Administrative
Profile summary (blood type, height, weight, family doctor), insurance/SGK records, medical materials/devices (5 categories), and emergency notes.
Document Downloads
Download PDFs (lab results, pathology, discharge summaries, radiology reports) to local disk with strict permissions. Only the file path, size, and SHA256 hash are returned to the LLM — document content is never exposed.
Privacy & Safety: All data is processed locally via stdio, nothing is sent to external services, and all access is strictly read-only.
Optionally reads SMS verification codes from iMessage on macOS to automate the login process for the E-Nabız health portal.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@E-Nabız MCPlist my recent lab tests"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
E-Nabız MCP
E-Nabız (T.C. Sağlık Bakanlığı Kişisel Sağlık Sistemi) verilerinize bir LLM üzerinden erişmek için yerel bir MCP (Model Context Protocol) sunucusu.
⚠️ Kişisel kullanım. Bu araç yalnızca kendi hesabınıza, kendi kimlik bilgilerinizle erişmeniz içindir. Hassas sağlık verisi (PHI) işler; yerel
stdioüzerinden çalışır, hiçbir veriyi harici servise göndermez.
Durum
🟢 Çekirdek çalışıyor: 32 tool / 19 veri alanı, salt-okunur. İlerleme:
docs/STATUS.md.
Related MCP server: QI140 MCP Multi
Amaç ve iyi niyet beyanı
Bu proje kişisel kullanım ve öğrenme amacıyla yazıldı: kendi sağlık geçmişinize bir LLM üzerinden anlamlı şekilde erişebilmek ("son beş yılda hangi tahlillerim referans dışıydı?") ve modern bir ASP.NET portalının XSRF + 2FA akışının nasıl çalıştığını anlamak. Bir güvenlik kontrolünü aşma, veri toplama ya da başkasının verisine erişme aracı değildir.
Bu bir niyet beyanından ibaret olmasın diye, her madde kodda doğrulanabilir:
İlke | Kodda karşılığı |
Yalnızca kendi veriniz | Kimlik bilgileri yalnız |
Salt-okunur | Kodda hiçbir yazma ucu ( |
Dürüst tool anotasyonları | 32 tool'un 30'u |
Güvenlik kontrolleri atlatılmaz | reCAPTCHA çözülmez, SMS OTP kaldırılmaz veya kırılmaz — kod her zaman sizin kayıtlı telefonunuza gider ve giriş insan-döngüdedir. Otomasyon, kodu elle girmenin yerine geçer; kontrolün kendisini ortadan kaldırmaz. |
Veri sizde kalır | Yalnız yerel |
Portala saygı | İstekler arası hız sınırı ( |
PHI repoya girmez | Testler ağ kullanmaz, sentetik fixture ile çalışır. Ham portal yanıtları gitignore'dadır; bulgu dokümanlarına gerçek değer yazılmaz. |
Resmî değildir. T.C. Sağlık Bakanlığı veya E-Nabız ile hiçbir bağlantısı, onayı ya da desteği yoktur. "E-Nabız" adı yalnızca aracın hangi sisteme eriştiğini tarif etmek için kullanılır.
Tıbbi tavsiye değildir. Araç verinizi yalnızca okur ve yapılandırır; örneğin
out_of_range alanı basit bir sayısal aralık karşılaştırmasıdır — klinik bir yorum
değil. Sağlığınıza dair kararlarda hekiminize danışın.
Geri mühendislik yalnızca yazarın kendi hesabına karşı, kendi verisiyle yapıldı;
bulgular (docs/findings/) yapıyı ve alan adlarını belgeler, gerçek
hasta verisi içermez.
Nasıl çalışır (özet)
E-Nabız portalı ASP.NET Core tabanlıdır ve giriş antiforgery (XSRF) çift-token, reCAPTCHA ve SMS OTP (2FA) ile korunur.
XSRF tamamen otomatik yönetilir (bkz.
docs/findings/auth-flow.md).reCAPTCHA çözülmez; SMS OTP kaldırılmaz — kod her zaman gerçek telefonunuza gider. Giriş varsayılan olarak insan-döngüde yapılır: SMS kodunu siz sağlarsınız. (Opsiyonel: kendi Mac'inizde iMessage'a düşen kodu, açık izninizle okuma — bkz.
docs/privacy.md.)
Kurulum
Repoyu klonlamadan, uvx ile (önerilen):
uvx enabiz-mcp # PyPI'dan indirir ve stdio sunucusunu başlatırGeliştirme için, repodan:
uv sync
cp .env.example .env # TCKIMLIK ve SIFRE'yi doldurun
uv run enabiz-mcp # stdio MCP sunucusu⚠️
uvxile.envÇALIŞMAZ. Kimlik bilgilerini aşağıdaki gibi istemcininenvbloğuyla verin. Sebep:python-dotenv.env'i çağıran modülün dosyasından yukarı doğru arar;uvxpaketi uv önbelleğine kurduğu için o arama sizin proje dizininize hiç uğramaz. Repodanuv runile çalışırken bulunur (venv repo içindedir),uvxile bulunmaz — ve bu sessizce olur: hata ancak girişte "ENABIZ_TCKIMLIK ayarlı değil" olarak çıkar. (Ölçüldü.)
MCP istemci yapılandırması
Claude Desktop (claude_desktop_config.json) — uvx ile:
{
"mcpServers": {
"enabiz": {
"command": "uvx",
"args": ["enabiz-mcp"],
"env": {
"ENABIZ_TCKIMLIK": "<T.C. kimlik no>",
"ENABIZ_SIFRE": "<portal şifresi>"
}
}
}
}Claude Code:
claude mcp add enabiz \
--env ENABIZ_TCKIMLIK=<T.C. kimlik no> \
--env ENABIZ_SIFRE=<portal şifresi> \
-- uvx enabiz-mcpRepodan çalıştırıyorsanız (.env bu durumda okunur, env bloğu gerekmez):
{
"mcpServers": {
"enabiz": {
"command": "uv",
"args": ["--directory", "/mutlak/yol/eNabizMCP", "run", "enabiz-mcp"]
}
}
}Oturum ve inen dosyalar varsayılan olarak ~/.config/enabiz-mcp/ altında,
chmod 600 ile durur (ENABIZ_SESSION_PATH / ENABIZ_DOWNLOAD_DIR ile
değiştirilebilir).
Docker (ghcr.io)
Hazır imaj: ghcr.io/umutkdev/e-nabiz-mcp (linux/amd64 + linux/arm64).
İmaj yalnızca kodu taşır — kimlik bilgisi ve sağlık verisi taşımaz; ikisi de
çalışma zamanında sizin diskinizden bağlanır.
mkdir -p ~/enabiz-mcp-data # ÖNCE siz oluşturun (aşağıdaki nota bakın)
docker run -i --rm --init \
--user "$(id -u):$(id -g)" \
-v ~/enabiz-mcp-data:/data \
-v "$PWD/.env:/app/.env:ro" \
--read-only --tmpfs /tmp:rw,noexec,nosuid,size=64m \
ghcr.io/umutkdev/e-nabiz-mcp:latestBayrakların hepsi gereklidir, dekoratif değil:
Bayrak | Neden |
| Şart. stdio sunucusu; stdin kapalıysa EOF görüp anında çıkar. |
| Kimlik bilgilerinin tek doğru yolu. |
| Oturum kalıcılığı + inen PDF'ler. Yoksa her yeniden başlatma gerçek bir SMS OTP yakar. |
| Linux'ta bind-mount sahipliği. macOS'ta zararsız. |
| PID 1'deki Python'un varsayılan SIGTERM işleyicisi yoktur; |
| Sertleştirme; tek yazılabilir yol |
-e / --env-file KULLANMAYIN. Ölçüldü: --env-file .env ile başlatılan bir
konteynerde docker inspect çıktısındaki .Config.Env alanı ENABIZ_SIFRE ve
ENABIZ_TCKIMLIK değerlerini düz metin gösterir. T.C. Kimlik No geri alınamaz;
mount edilen dosya docker inspectte görünmez. Bu yüzden .env dosya olarak
bağlanır.
Neden /app/.env? .env'i bulan şey WORKDIR değil, venv'in konumudur:
python-dotenv'in find_dotenv()'i çağıran modülün dosyasından yukarı yürür
(/app/.venv/lib/python3.13/site-packages/enabiz_mcp/config.py → … → /app).
.env'i /data'ya bağlarsanız hiç okunmaz ve hata ancak login sırasında
"ENABIZ_TCKIMLIK ayarlı değil" olarak yüzeye çıkar. (Bu, tasarım sırasında
ölçülerek doğrulandı.)
~/enabiz-mcp-data'yı neden önce siz oluşturuyorsunuz? Linux'ta Docker eksik
bir bind-mount kaynağını root'a ait olarak yaratır. --user ile çalışan sunucu
oraya yazamaz ve hata enabiz_login_start'ta, SMS gönderildikten sonra patlar —
yani her denemede gerçek bir OTP yakılır. Dizin önceden varsa sorun oluşmaz.
MCP istemci yapılandırması (Docker)
$(id -u) ve ~ JSON içinde genişlemez — id -u; id -g çıktısını ve mutlak
yolları elle yazın:
{
"mcpServers": {
"enabiz": {
"command": "docker",
"args": ["run", "-i", "--rm", "--init",
"--user", "501:20",
"-v", "/Users/KULLANICI/enabiz-mcp-data:/data",
"-v", "/Users/KULLANICI/eNabizMCP/.env:/app/.env:ro",
"--read-only", "--tmpfs", "/tmp",
"ghcr.io/umutkdev/e-nabiz-mcp:latest"]
}
}
}İnen PDF'ler konteynerde /data/downloads altına yazılır; host'ta
~/enabiz-mcp-data/downloads/ olarak, chmod 600 ile sizde kalır.
Giriş akışı
enabiz_login_start → telefona gelen kodu enabiz_login_verify'a girin. Oturum yerel
olarak saklanır ve süresi (~30–60 dk) dolana dek yeniden kullanılır. Oturum düşerse veri
tool'ları error: "auth_required" döner; yeniden giriş yapın.
Tool'lar (32)
Oturum: enabiz_login_start · enabiz_login_verify · enabiz_session_status
Özet: enabiz_get_health_summary (profil + alerji + tanı/aşı/ilaç/ziyaret sayıları + randevular, tek çağrı)
Tahliller: enabiz_list_lab_tests · enabiz_get_lab_trend
Reçete & ilaç: enabiz_list_prescriptions · enabiz_get_prescription_detail ·
enabiz_list_optical_prescriptions · enabiz_list_device_prescriptions ·
enabiz_list_medications · enabiz_get_drug_leaflet · enabiz_get_drug_usage_history
Klinik: enabiz_list_reports · enabiz_list_allergies · enabiz_list_diagnoses ·
enabiz_get_diagnosis_detail · enabiz_list_chronic_disease_followups ·
enabiz_list_vaccinations · enabiz_list_discharge_summaries · enabiz_list_pathology
Radyoloji: enabiz_list_radiology_studies · enabiz_get_radiology_report ·
enabiz_get_radiology_image_link
Ziyaret & randevu: enabiz_list_hospital_visits · enabiz_get_visit_detail ·
enabiz_list_appointments (salt-okunur; almaz/iptal etmez)
Profil & idari: enabiz_get_profile · enabiz_list_insurance ·
enabiz_list_materials_devices · enabiz_list_emergency_notes
Belge indirme: enabiz_download_document(kind=...) — lab · pathology ·
discharge · radiology PDF'lerini tek uçtan indirir.
Tüm veri tool'ları salt-okunur. PDF tool'ları dosyayı
ENABIZ_DOWNLOAD_DIR'e (varsayılan~/.config/enabiz-mcp/downloads,chmod 600) kaydeder ve içerik yerine{saved_path, byte_size, sha256, content_type}döner.
Test
uv run pytest # ağ yok; sentetik fixture (PHI'sız)Gizlilik
Bkz. docs/privacy.md. Kimlik bilgileri yalnızca .env'de;
oturum yerel dosyada sıkı izinle saklanır; ham sağlık verisi loglanmaz veya
commit edilmez.
Kullanım şartları
E-Nabız'a otomatik/programatik erişim, portalın kullanım şartlarına tabi olabilir. Bu araç kişisel, meşru kendi-verinize-erişim amacıyla sağlanır; sorumluluk kullanıcıdadır.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/UmutKDev/e-nabiz-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server