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 "Deploy 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 MCP list 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: 47 tool / 20 veri alanı. Sağlık verisi salt-okunur;
yazma yalnız MHRS randevu alma/iptalinde (iki adımlı onaylı). İlerleme:
docs/STATUS.md.
Related MCP server: HealthLedger MCP
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 |
Sağlık veriniz salt-okunur | Hiçbir tool sağlık verinize yazmaz: e-Nabız'ın yazma uçlarına ( |
Randevu yazması sınırlı ve onaylı | MHRS randevu alabilir ve iptal edebilir — projenin tek yazma yüzeyi (giriş dışında). Tek adımda olmaz: |
Dürüst tool anotasyonları | 47 tool'un 39'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 (47)
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)
MHRS — arama (salt-okunur): enabiz_mhrs_list_provinces · enabiz_mhrs_list_districts ·
enabiz_mhrs_list_clinics · enabiz_mhrs_list_upcoming · enabiz_mhrs_list_history ·
enabiz_mhrs_search_institutions · enabiz_mhrs_search_slots ·
enabiz_mhrs_rebook_criteria · enabiz_mhrs_list_requests
MHRS — randevu (YAZMA): enabiz_mhrs_book_prepare → enabiz_mhrs_book_confirm ·
enabiz_mhrs_book_cancel_prepare · enabiz_mhrs_cancel ·
enabiz_mhrs_create_request · enabiz_mhrs_delete_request
MHRS (
prd.mhrs.gov.tr) e-Nabız'dan ayrı bir sistemdir; e-Nabız'ın "Randevu Al" düğmesinin arkasındaki SSO devriyle bağlanılır.enabiz_list_appointmentse-Nabız'ın HTML tablosunu okur; MHRS tool'ları API'nin kendisini okur vehrn(hasta randevu numarası) döndürür — tabloda olmayan, iptal için gereken anahtar.Randevu alma/iptal iki adımlıdır.
book_prepare(slot_id)yazmaz — slotu sunucuda doğrular ve onay özeti +confirm_tokendöner; randevuyubook_confirm(token)alır. Gerekçe: yanlış randevunun bedeli gerçek — randevusuna gitmeyen ve iptal etmeyen kişi aynı branştan 15 gün randevu alamaz (saglik.gov.tr TR,94138). (Para cezası iddiası yalandır; AA Teyit "Yanlış" damgalı.) Tek adımlı birbook(slot_id)tool'unda modelin uydurduğu bir slot id size gerçek bir branş yasağı yazdırabilirdi. Bkz.docs/notes/decisions.mdD7.Slot aramayı döngüye sokmayın: MHRS aşırı sorguyu
RNDS1010ile karşılar ve reCAPTCHA ister; captcha çözülmediği için tekrar denemek yalnız eşiği derinleştirir.
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 e-Nabız 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.
Available Tools
32 toolsenabiz_download_documentARead-only
Bir sağlık belgesinin PDF'ini indirir ve yerel diske kaydeder.
kind ve ona ait parametreler (hepsi ilgili liste tool'unun çıktısından alınır):
"lab"→card_tarih+kurum_kodu(enabiz_list_lab_tests). Opsiyonel:start_year/end_year,dil(tr-TR|en-US)."pathology"→reference_no+sys_no(enabiz_list_pathology)."discharge"→reference_no+sys_no(enabiz_list_discharge_summaries)."radiology"→order_id(enabiz_list_radiology_studies).
PDF ENABIZ_DOWNLOAD_DIR'e (chmod 600) yazılır; içerik LLM'e verilmez,
yalnız {saved_path, byte_size, sha256, content_type} döner — PHI diskte kalır.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
Inputs: kind (required), dil, sys_no, end_year, +5 more. Returns: object
enabiz_get_diagnosis_detailARead-only
Bir tanının detay metnini döndürür (sys_takip_no = liste tool'undan).
enabiz_list_diagnoses çıktısındaki sys_takip_no ile çağrılır. Detay HTML'i
okunabilir düz metne indirgenir (uzunsa DETAIL_TEXT_LIMIT'te kırpılır).
Kimlikli oturum gerektirir; yoksa error: "auth_required".
Inputs: sys_takip_no (required). Returns: object
enabiz_get_drug_leafletARead-only
Bir ilacın prospektüs (kullanma talimatı) metnini döndürür.
barcode ve ilac_name, enabiz_list_medications çıktısındaki bir ilacın
barcode / name alanlarından alınır. Prospektüs serbest metin olarak döner
(uzunsa LEAFLET_TEXT_LIMIT'te kırpılır).
Kimlikli oturum gerektirir; yoksa error: "auth_required".
Inputs: barcode (required), ilac_name (required). Returns: object
enabiz_get_drug_usage_historyARead-only
Bir ilacın (barkod) kullanım geçmişini döndürür.
barcode, enabiz_list_medications çıktısındaki bir ilacın barcode alanından
alınır. Her kayıt tarih, ilaç adı/açıklaması, doz, kullanım sayısı, periyot ve
kullanım şekli ile döner. Kimlikli oturum gerektirir; yoksa error: "auth_required".
Inputs: barcode (required). Returns: object
enabiz_get_health_summaryARead-only
Birden çok alanı tek çağrıda derleyen salt-okunur sağlık özeti.
Döner: profil (kan grubu/boy/kilo), alerjiler (liste — güvenlik-kritik),
tanı/aşı/ilaç/ziyaret sayıları ve randevular. Bir alan alınamazsa o alan
{"error": ...} olur, diğerleri etkilenmez. Kimlikli oturum gerektirir;
yoksa error: "auth_required".
Inputs: no named parameters. Returns: object
enabiz_get_lab_trendARead-only
Bir tahlil testinin zaman içindeki trendini (geçmiş ölçümler) döndürür.
islem_tipi = enabiz_list_lab_tests çıktısındaki bir sonucun trend_code
alanı (görünen test adından farklı olabilir; her zaman trend_code'u geçin).
Her nokta tarih, sonuç, birim ve referans değeri ile döner.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
Inputs: islem_tipi (required). Returns: object
enabiz_get_prescription_detailARead-only
Bir reçetenin ilaç ayrıntısını döndürür.
sys_takip_no ve prescription_no değerleri enabiz_list_prescriptions
çıktısındaki ilgili reçeteden alınır. Kimlikli oturum gerektirir.
Inputs: sys_takip_no (required), prescription_no (required). Returns: object
enabiz_get_profileARead-only
E-Nabız profil özetini döndürür — salt-okunur.
Ad soyad, doğum tarihi, kan grubu, boy, kilo ve aile hekimi bilgisini
döndürür. Gizlilik gereği TCKN, e-posta ve telefon dahil edilmez.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
Inputs: no named parameters. Returns: object
enabiz_get_radiology_image_linkARead-only
Bir radyolojik tetkikin DICOM görüntüleyici linkini (URL) döndürür.
accession_number, enabiz_list_radiology_studies çıktısındaki ilgili
çalışmadan alınır (yalnız görüntüsü olan çalışmalarda dolu). Binary değil,
bir URL döner. Kimlikli oturum gerektirir; yoksa error: "auth_required".
Inputs: accession_number (required). Returns: object
enabiz_get_radiology_reportARead-only
Bir radyolojik tetkikin raporunu (düz metin) döndürür.
order_id, enabiz_list_radiology_studies çıktısındaki ilgili çalışmadan
alınır. Kimlikli oturum gerektirir.
Inputs: order_id (required). Returns: object
enabiz_get_visit_detailARead-only
Bir hastane ziyaretinin detayını döndürür (tanılar + işlemler).
detail_ref = enabiz_list_hospital_visits çıktısındaki bir ziyaretin
detail_ref alanı (opak referans). Sonuç diagnoses (tanı),
preliminary_diagnoses (ön tanı), additional_diagnoses (ek tanı) ve
procedures (işlemler) listeleriyle döner.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
Inputs: detail_ref (required). Returns: object
enabiz_list_allergiesARead-only
E-Nabız alerji kayıtlarını listeler — salt-okunur.
Üç kategoriyi birleştirir: ilac (ilaç alerjileri), tani (tanı bazlı),
deri (deri/prick testleri). Her kayıt tarih, kategori, alerji türü, ilaç
adı ve belirtileri ile döner. category verilirse yalnız o kategori döner.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, category. Returns: object
enabiz_list_appointmentsARead-only
E-Nabız (MHRS) randevularını listeler — salt-okunur.
Sayfada gösterilen randevuları döndürür (tarih/saat, kurum, klinik, muayene
yeri, hekim, durum, tür). status_query verilirse durum alanında büyük/küçük
harf duyarsız filtre uygular. Randevu almaz/iptal etmez. Kimlikli oturum
gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, status_query. Returns: object
enabiz_list_chronic_disease_followupsARead-only
E-Nabız kronik hastalık takip kayıtlarını listeler — salt-okunur.
Her kayıt takip tipi, kronik hastalık, takip tarihi, planlanan tarih ve
gerçekleşme durumu ile döner. query verilirse kronik hastalık alanında
büyük/küçük harf duyarsız filtre uygular. Bu, tanı geçmişinden (Hastaliklarim)
AYRI bir alandır. Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, query. Returns: object
enabiz_list_device_prescriptionsARead-only
E-Nabız tıbbi cihaz reçetelerini yıl aralığına göre listeler.
start_year/end_year: yıl aralığı. Verilmezse son 6 takvim yılı (bu yıl - 5 … bu yıl).facility_query: verilirse TESİS bilgisinde büyük/küçük harf duyarsız filtre.
Her reçete tarih, reçete no, hekim ve tesis bilgisi ile döner.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, end_year, start_year, facility_query. Returns: object
enabiz_list_diagnosesARead-only
E-Nabız tanı/hastalık geçmişini listeler — salt-okunur.
Her tanı tarih, tanı (ICD kodu + ad), klinik, hekim ve detay için
sys_takip_no ile döner. query verilirse tanı metninde büyük/küçük harf
duyarsız filtre uygular. Detay için enabiz_get_diagnosis_detail kullanın.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, query. Returns: object
enabiz_list_discharge_summariesARead-only
E-Nabız epikrizlerini (taburcu özetleri) yıl aralığına göre listeler.
start_year/end_year: yıl aralığı. Verilmezse son 11 takvim yılı (bu yıl - 10 … bu yıl; epikrizler ömür-boyu, seyrek kayıtlardır → geniş varsayılan).query: verilirse hastane/klinik alanında büyük/küçük harf duyarsız filtre.
Her epikriz tarih, referans no, hastane, klinik, hekim ve PDF için sys_no
ile döner. Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, query, end_year, start_year. Returns: object
enabiz_list_emergency_notesARead-only
E-Nabız acil durum notlarını listeler — salt-okunur.
Her not tarih, konu ve açıklama ile döner. query verilirse konuda
büyük/küçük harf duyarsız filtre uygular. Kimlikli oturum gerektirir.
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, query. Returns: object
enabiz_list_hospital_visitsARead-only
E-Nabız hastane ziyaretlerini (muayeneler) yıl aralığına göre listeler.
start_year/end_year: yıl aralığı. Verilmezse son 6 takvim yılı (bu yıl - 5 … bu yıl; ziyaret sık bir alandır; daha eski kayıtlar için aralığı genişletin).query: verilirse hastane/klinik alanında büyük/küçük harf duyarsız filtre.
Her ziyaret tarih, hastane, klinik/branş, hekim ve takip no ile döner (özet).
Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, query, end_year, start_year. Returns: object
enabiz_list_insuranceARead-only
E-Nabız sigorta kayıtlarını listeler — salt-okunur.
Her kayıt açıklama, sigorta kodu, tarih aralığı, ek süre ve durum ile döner.
query verilirse açıklamada büyük/küçük harf duyarsız filtre uygular.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, query. Returns: object
enabiz_list_lab_testsARead-only
E-Nabız tahlil (laboratuvar) sonuçlarını yıl aralığına göre listeler.
start_year/end_year: yıl aralığı. Verilmezse son 6 takvim yılı (bu yıl - 5 … bu yıl).test_query: verilirse test adında büyük/küçük harf duyarsız filtre uygular. Belirli bir testi arıyorsanız MUTLAKA kullanın — yanıt aksi hâlde çok büyük olur.limit: en fazla kaç TEST SONUCU döner (varsayılan 50;0= sınırsız). Raporlar en yeniden başlayarak bu sayıya ulaşana dek eklenir.
truncated: true ise liste kırpılmıştır — test_query ile daraltın.
Kimlikli oturum gerektirir; oturum yoksa/düşmüşse error: "auth_required"
döner. Sonuçlar tarih/ziyaret bazlı gruplanır.
Inputs: limit, end_year, start_year, test_query. Returns: object
enabiz_list_materials_devicesARead-only
E-Nabız tıbbi malzeme/cihaz kayıtlarını listeler — salt-okunur.
5 kategoriyi birleştirir: diger, vucut, isitme, goz, ozel_yapim.
Her kayıt işlem tarihi, marka, raf ömrü, ürün tanımı ve kategori ile döner.
category verilirse yalnız o kategori döner. Kimlikli oturum gerektirir.
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, category. Returns: object
enabiz_list_medicationsARead-only
E-Nabız kullanılan ilaçları yıl aralığına göre listeler.
start_year/end_year: yıl aralığı. Verilmezse son 6 takvim yılı (bu yıl - 5 … bu yıl).drug_query: verilirse ilaç adında büyük/küçük harf duyarsız filtre.
Her ilaç reçete tarihi, barkod, ad, doz, periyot, kullanım, kutu adedi,
hastane ve klinik ile döner. Kimlikli oturum gerektirir; yoksa
error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, end_year, drug_query, start_year. Returns: object
enabiz_list_optical_prescriptionsARead-only
E-Nabız optik (gözlük/lens) reçetelerini yıl aralığına göre listeler.
start_year/end_year: yıl aralığı. Verilmezse son 6 takvim yılı (bu yıl - 5 … bu yıl).type_query: verilirse reçete TÜRÜNDE büyük/küçük harf duyarsız filtre.
Her reçete tarih, reçete no, tür ve hekim ile döner.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, end_year, start_year, type_query. Returns: object
enabiz_list_pathologyARead-only
E-Nabız patoloji kayıtlarını yıl aralığına göre listeler.
start_year/end_year: yıl aralığı. Verilmezse son 11 takvim yılı (bu yıl - 10 … bu yıl; patoloji seyrek, ömür-boyu kayıtlardır → geniş varsayılan).query: verilirse hastane/klinik alanında büyük/küçük harf duyarsız filtre.
Her kayıt tarih, referans no, hastane, klinik, hekim ve PDF için sys_no
ile döner. Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, query, end_year, start_year. Returns: object
enabiz_list_prescriptionsARead-only
E-Nabız reçetelerini yıl aralığına göre listeler.
start_year/end_year: yıl aralığı. Verilmezse son 6 takvim yılı (bu yıl - 5 … bu yıl).doctor_query: verilirse hekim adında büyük/küçük harf duyarsız filtre.
Her reçete metadatası döner (tarih, no, tür, hekim). İlaç ayrıntısı için
enabiz_get_prescription_detail'i sys_takip_no + prescription_no ile çağırın.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, end_year, start_year, doctor_query. Returns: object
enabiz_list_radiology_studiesARead-only
E-Nabız radyolojik tetkik/görüntü kayıtlarını listeler.
Sayfada gösterilen çalışmaları döndürür (tarih, kurum, açıklama). Her kaydın
order_id alanı, raporu almak için enabiz_get_radiology_report'a verilir.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit. Returns: object
enabiz_list_reportsARead-only
E-Nabız sağlık raporlarını yıl aralığına göre listeler.
start_year/end_year: yıl aralığı. Verilmezse son 6 takvim yılı (bu yıl - 5 … bu yıl).type_query: verilirse rapor türünde büyük/küçük harf duyarsız filtre.
Her rapor tarih, no, takip no, tür, geçerlilik aralığı ve tanı ile döner.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, end_year, start_year, type_query. Returns: object
enabiz_list_vaccinationsARead-only
E-Nabız aşı takvimini listeler — salt-okunur.
Her aşı işlem zamanı, aşı adı, doz ve yapılma yeri ile döner. query
verilirse aşı adında büyük/küçük harf duyarsız filtre uygular.
Kimlikli oturum gerektirir; yoksa error: "auth_required".
limit: en fazla kaç kayıt döner (varsayılan 50;0= sınırsız).truncated: trueise liste kırpılmıştır.
Inputs: limit, query. Returns: object
enabiz_login_startA
E-Nabız girişini başlatır (adım 1/2).
.env'deki kimlik bilgilerini doğrular ve kayıtlı telefona SMS onay kodu
gönderilmesini tetikler. Dönen step == "sms_required" ise, kullanıcının
telefonuna gelen kodu enabiz_login_verify ile girin.
Inputs: no named parameters. Returns: object
enabiz_login_verifyA
E-Nabız girişini tamamlar (adım 2/2).
Telefona gelen SMS onay kodunu (otp_code) gönderir. Başarılıysa kimlikli
oturum yerel dosyaya kaydedilir ve sonraki çağrılarda yeniden kullanılır.
Önce enabiz_login_start çağrılmış olmalıdır.
Inputs: otp_code (required). Returns: object
enabiz_session_statusARead-only
Mevcut E-Nabız oturum ve yapılandırma durumunu döndürür.
authenticated, oturumun sunucuda GERÇEKTEN geçerli olduğunu tek bir hafif
istekle doğrular. false ise enabiz_login_start → enabiz_login_verify.
Inputs: no named parameters. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 32 tools
Each tool has a clearly distinct purpose, targeting specific health record types or actions (e.g., listing vs. getting details for lab, radiology, prescriptions). No two tools are ambiguous; even similar tools like enabiz_list_prescriptions and enabiz_list_medications differ in scope (prescriptions vs. individual medication usage).
All tools follow a consistent 'enabiz_verb_noun' pattern using snake_case. Verbs like 'list_', 'get_', 'download_', 'login_', and 'session_' are used uniformly. The only slight deviation is 'enabiz_download_document' using 'download' instead of 'get', but this is justified as it downloads a file rather than returning data.
32 tools is on the higher end but appropriate for a comprehensive healthcare portal covering numerous data types (e.g., diagnoses, medications, lab, radiology, allergies, etc.). The count is not overwhelming given the domain's breadth; each tool serves a specific, non-redundant function.
The server provides comprehensive read-only access to nearly all health record categories (e.g., diagnoses, medications, lab, radiology, vaccinations, allergies, reports). Minor gaps include no update/create capabilities and no cross-document search, but these are expected for a patient-facing MCP focused on data retrieval.
Maintenance
Related MCP Connectors
Hosted MCP server exposing US hospital procedure cost data to AI assistants
Hosted MCP server for Cliniko — patients, appointments, availability, and invoices for AI agents.
Hosted MCP server for the Healthie EHR & telehealth API: patients, appointments, charting, tasks.
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Related MCP Servers
- AlicenseBqualityBmaintenanceA local-first MCP server that enables AI agents to read user-authorized Google Health API v4 data from Fitbit, Pixel Watch, and partners via OAuth, with tokens never leaving the machine.26875 npm84MIT
- AlicenseCqualityDmaintenanceA local-first, model-agnostic MCP server that stores personal health data in a SQLite file and provides analysis-ready views for any AI client to log, retrieve, and reason over health records.79MIT
- FlicenseNot gradedqualityDmaintenanceSelf-hosted MCP server that provides read-only access to Google Health API v4, enabling analysis of personal health data via OpenAI Responses API or ChatGPT.-
- FlicenseNot gradedqualityDmaintenanceAn educational healthcare assistant MCP server that provides medication information, interaction checks, symptom guidance, and health topic searches using local data and a local LLM.-