Official read-only ExirYab: find Iranian doctors by name, city and specialty, with clinics and maps.
Runs on your machine from its package; the steps are below.
Not assessed yet.
Odel charges nothing per call. The publisher may charge for its own service.
Runs locally over stdio
This server isn't hosted — your MCP client launches it from a package registry. Use one of the commands below, or drop the config into your client (e.g. Claude Desktop).
Run
uvx exiryab-mcp
MCP client config
{
"mcpServers": {
"exiryab": {
"command": "uvx",
"args": [
"exiryab-mcp"
]
}
}
}Official, read-only MCP server that lets your AI agent find Iranian doctors on ExirYab (اکسیریاب, exiryab.com).
Search by name, city and specialty, and get the doctor's profile link, clinics, phones, working hours
and map location (Google Maps, Neshan, Balad), all from Claude, Cursor or Copilot.
Quick start · What it can do · Tools · FAQ · فارسی
claude mcp add exiryab -- uvx exiryab-mcp (stdio, needs uv and Python 3.10+).EXIRYAB_MCP_PROXY sets an HTTP proxy for every request.url and clinic phones.ey_: ey_search_doctors, ey_cities, ey_specialties.ey_search_doctors -> (if a name or word is unclear) ey_cities / ey_specialties -> ey_search_doctors again.best_match plus alternatives, a confidence (high, medium, low, ranking, none) and warnings. Clinic weekly_hours maps an English weekday to shifts ([] = closed).ExirYab (exiryab.com) lists doctors across Iran with their specialties, offices, hospitals and clinics.
People usually remember half a name ("Dr. Mohammadi, the cardiologist in Tehran"), and the agent has to turn
that into the right person and tell them where to go. exiryab-mcp calls ExirYab's public API, which does the
name matching on the server (titles, Arabic letters, spacing, partial names) and returns the best match with
alternatives:
You: Find Dr. Malek Mohammadi, a cardiologist in Tehran. Where is the office?
Agent: calls
ey_search_doctors(name="ملک محمدی", city="تهران", specialty="قلب")Dr. Mousa Malek Mohammadi (cardiology, Tehran). Profile: https://exiryab.com/dr/36370-.../ I also found other cardiologists in Tehran if you want alternatives.
You need uv.
claude mcp add exiryab -- uvx exiryab-mcp
Settings → Developer → Edit Config, then add:
{
"mcpServers": {
"exiryab": { "command": "uvx", "args": ["exiryab-mcp"] }
}
}
Click Install in Cursor above, or add the Claude Desktop block to ~/.cursor/mcp.json.
Click Install in VS Code above, or add to .vscode/mcp.json:
{
"servers": {
"exiryab": { "type": "stdio", "command": "uvx", "args": ["exiryab-mcp"] }
}
}
It's a standard stdio MCP server: run uvx exiryab-mcp, or pip install exiryab-mcp and run exiryab-mcp.
Then just ask:
AI agent (Claude, Cursor, Copilot, ...)
│
│ MCP over stdio
▼
exiryab-mcp (runs on your machine)
│
│ HTTPS (JSON)
└──────▶ exiryab.com/api/v1 (doctors/search, cities, specialties)
The API is public and needs no key. It is limited to 60 requests per minute per IP and answers are cached for up to a day.
| Tool | What it does |
|---|---|
ey_search_doctors | Best match plus alternatives for a name, city (or province) and specialty, with profile URL, clinics, phones, hours and map links |
ey_cities | Cities with doctors, their province and doctor count, most doctors first |
ey_specialties | Specialties with doctor count and parent specialty, most doctors first |
All 3 tools are annotated readOnlyHint: true and return compact structured JSON.
name="محمدی قلب تهران" searches for Mohammadi among Tehran cardiologists.city="فارس" searches the whole province.understood.dropped_filters and warnings.confidence: high = one clear match; medium = a good match but others are close, so confirm with the user; low = weak matches only; ranking = no name was given; none = nothing found.similar alternatives are padding (same specialty and area), not people with the name you asked for.verified means the medical council card was checked and the mobile confirmed; managed_by_doctor means the doctor confirmed their mobile.Yes. ExirYab publishes a small public JSON API at https://exiryab.com/api/v1 (search, cities, specialties), and this
MCP server wraps it for Claude, Cursor and Copilot.
It is official (made by ExirYab), open source (MIT) and free. It is read-only, needs no account or API key, and runs on your machine.
No. It gives the doctor's profile link and clinic phones; booking happens with the doctor or on the profile page.
The API allows 60 requests per minute per IP. Wait a minute and try again.
uvx is not foundUse the full path to uvx (where uvx on Windows, which uvx on macOS/Linux) as command.
npx @modelcontextprotocol/inspector uvx exiryab-mcp
| Variable | Default | Meaning |
|---|---|---|
EXIRYAB_MCP_PROXY | unset | HTTP proxy for every request, e.g. http://user:pass@host:port |
EXIRYAB_MCP_BASE_URL | https://exiryab.com | API base URL, e.g. a local ExirYab for development |
exiryab-mcp سرور MCP رسمی اکسیریاب است که به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه میدهد پزشکان ایران را با نام، شهر و تخصص پیدا کند و لینک صفحه پزشک، مطبها، تلفنها، ساعت کاری و موقعیت روی نقشه (گوگلمپ، نشان، بلد) را بگیرد.
نصب در Claude Code:
claude mcp add exiryab -- uvx exiryab-mcp
بعد بپرسید: «یک متخصص اطفال خوب در شیراز با آدرس و لینک نقشه.»
git clone https://github.com/sshnevis/exiryab-mcp && cd exiryab-mcp
uv sync
uv run pytest # offline, against recorded responses
uv run pytest -m live # real API (EXIRYAB_MCP_LIVE_BASE_URL=http://localhost:5082 for a local ExirYab)
uv run ruff check .
Tools live in src/exiryab_mcp/doctors.py and lookup.py; each is a typed async function with a docstring that
tells the agent when to use it.
Releases: bump the version in pyproject.toml and server.json, then push a v* tag. GitHub Actions tests,
publishes to PyPI and the MCP Registry, and creates the GitHub Release.
The directory is for finding doctors and is not medical advice. Please keep request rates reasonable.