ilac-mcp
# ilac-mcp
[](https://github.com/dckaratas/ilac-mcp/actions/workflows/test.yml)
Türkiye'de ruhsatlı beşeri ilaçlar için [TİTCK](https://www.titck.gov.tr) verisini yapay zekâ asistanlarına
açan bir [Model Context Protocol](https://modelcontextprotocol.io) sunucusu.
*An MCP server exposing Turkish Medicines and Medical Devices Agency (TİTCK) drug lists: search,
generic equivalents, licence and e-prescription status.*
> ⚠️ **Tıbbi tavsiye değildir.** Veriler TİTCK'nın kamuya açık listelerinden derlenir. İlaç kullanımı
> veya değişikliği için hekim ya da eczacıya danışın.
## Neler yapabilir?
| Araç | Açıklama |
|---|---|
| `ilac_ara` | Ürün adı, etkin madde, barkod ya da ATC koduyla arama. Türkçe karakter ve büyük/küçük harf fark etmez. |
| `ilac_detay` | Barkodla tek ürün: ruhsat no/tarihi, askı durumu, reçete türü, temel ilaç listeleri. |
| `esdeger_bul` | Aynı ATC kodu, aynı doz ve aynı form grubundaki ürünler; diğer doz/formlar ayrıca listelenir. |
| `haftalik_degisiklikler` | Son e-reçete listesinde yeni eklenen ve değişen ürünler. |
| `veri_guncelle` | TİTCK'dan güncel listeleri indirip yerel veritabanını yeniden kurar. |
| `veri_durumu` | Yerel verinin hangi tarihli listelerden kurulduğu. |
Örnek sorular: *"Parol 500 mg tabletin eşdeğerleri neler?"*, *"8699522095650 barkodlu ilaç e-reçetede aktif mi?"*,
*"Bu hafta e-reçete listesine hangi ilaçlar eklendi?"*
## Kurulum
[uv](https://docs.astral.sh/uv/) gerekir.
```bash
git clone https://github.com/dckaratas/ilac-mcp
cd ilac-mcp
uv run ilac-mcp sync # TİTCK listelerini indirir (~4 MB, ~20 sn)
```
### Claude Desktop / Cursor / VS Code
İstemcinin MCP yapılandırmasına ekleyin (yolu kendi klasörünüzle değiştirin):
```json
{
"mcpServers": {
"ilac": {
"command": "uv",
"args": ["run", "--directory", "C:\\Dev\\mcp\\ilac-mcp", "ilac-mcp"]
}
}
}
```
İlk çağrıda veri yoksa sunucu listeleri kendisi indirir.
### Komut satırı
```bash
uv run ilac-mcp ara "majezik"
uv run ilac-mcp sync
```
## Veri kaynakları
| Liste | Güncellenme | Kullanılan alanlar |
|---|---|---|
| [Ruhsatlı Beşeri Tıbbi Ürünler Listesi](https://www.titck.gov.tr/dinamikmodul/85) | Haftalık (cuma) | Barkod, ürün adı, etkin madde, ATC, ruhsat sahibi/no/tarihi, askı durumu |
| [SKRS E-Reçete İlaç Listesi](https://www.titck.gov.tr/dinamikmodul/43) | Haftalık (salı) | Aktif/pasif, reçete türü, ATC adı, temel ilaç listeleri, haftalık değişiklikler |
İki liste barkod üzerinden birleştirilir. Veri yerelde saklanır (Windows: `%LOCALAPPDATA%\ilac-mcp`);
konumu `ILAC_MCP_DATA_DIR` ortam değişkeniyle değiştirilebilir.
### Veri ve lisans
Bu repo **yalnızca kodu** içerir ve MIT lisanslıdır. TİTCK verisi repoda dağıtılmaz; her kullanıcının
makinesinde doğrudan titck.gov.tr'den indirilir. Yanıtlar kaynak ve liste tarihini içerir.
## Bilinen sınırlar
- **Eşdeğerlik sezgiseldir.** Doz ve form ürün adından çıkarılır; ürünlerin ~%28'inde doz, ~%19'unda form
tespit edilemiyor. Bu ürünler `farkli_doz` altında görünür.
- **Fiyat yok.** TİTCK'nın güncel fiyat listesi giriş gerektiriyor; kamuya açık referans fiyat listesi
düzensiz yayımlanıyor.
- **Prospektüs (KT/KÜB) henüz yok.** Yol haritasında.
## Yol haritası
- [ ] KT/KÜB metinlerinden bölüm getirme (endikasyon, doz, yan etki, uyarılar)
- [ ] Referans fiyat listesi ve fiyat geçmişi
- [ ] Ruhsat iptal listesi ve geri çekme duyuruları
- [ ] PyPI yayını (`uvx ilac-mcp`)
## Geliştirme
```bash
uv run pytest
git config core.hooksPath .githooks # commit öncesi kontrolleri etkinleştirir (bir kez)
```
Commit öncesi kanca; anahtar/secret dosyalarını ve TİTCK verisini engeller, [gitleaks](https://github.com/gitleaks/gitleaks)
ile secret taraması yapar ve testleri çalıştırır. gitleaks'in `PATH`'te olması gerekir. CI aynı taramayı
tüm git geçmişi üzerinde tekrarlar.
Testler gerçek TİTCK dosyalarının başlık ve sayfa yapısını taklit eden küçük örnek dosyalar kullanır.
TDQS
Scored across 6 tools
Each tool has a recognizable focus: free-text lookup (ilac_ara), single-record detail by barcode (ilac_detay), equivalence lookup (esdeger_bul), change feed, and data maintenance. The main soft overlap is that ilac_ara also accepts barcodes/ATC codes, which can make it a tempting substitute for ilac_detay or esdeger_bul, but the descriptions make the intended split clear.
All names are lowercase snake_case with a noun-then-action/qualifier shape (ilac_ara, ilac_detay, veri_guncelle, veri_durumu), and the shared ilac_/veri_ prefixes group related tools. Two tools (esdeger_bul, haftalik_degisiklikler) break the prefix grouping, which is a minor deviation rather than an inconsistency.
Six tools is a tight, purposeful set for a drug-lookup server: one search, one detail, one equivalence helper, one change feed, and two data-lifecycle tools. Nothing appears redundant and no obvious step of the workflow is missing a tool.
The surface covers the core lifecycle well: query, single-record inspection, equivalent-drug discovery, change tracking, and data freshness/refresh. Gaps are minor — there is no way to browse or filter lists (e.g. by prescription type, SGK reimbursement, or active-ingredient-only enumeration) other than free-text search.