Skip to main content
doctoreto-mcp: let your AI agent compare visit fees and free times on Doctoreto

🩺 doctoreto-mcp

Let your AI agent find the right doctor on Doctoreto.
Search Iranian doctors by speciality, city, neighborhood and visit type, compare visit fees,
see free appointment times, read reviews, and find hospitals, labs and clinic offers, all from Claude, Cursor or Copilot.

PyPI Python CI MCP Registry License: MIT

Install in Cursor Install in VS Code

Quick start · What it can do · Tools · FAQ · فارسی


Why

On Doctoreto (doctoreto.com) a doctor card shows a name and a rating, but the things you decide on are a few clicks deeper: which offices the doctor has, what the visit costs at the office (often hidden on the page), what a phone or video consultation costs, and when the next free time actually is. An agent with doctoreto-mcp reads the search, the doctor's services and the slot picker, and hands you the booking link:

You: A cardiologist in Pasdaran, Tehran, as soon as possible. What does the visit cost?

Agent: calls dt_search_doctors(city="tehran", speciality="cardiologist", neighborhood="pasdaran", has_free_slot=True) → dt_doctor(doctor="xqbEWZ") → dt_free_slots(consultation_id=1943, days=7)

Service Fee Paid when booking Next free
Office visit, Pasdaran 250,000 0 Tue 6 Oct, 10:00 (25 free times that day)
Phone call, 15 minutes 750,000 750,000 Tue 6 Oct, 10:00

دکتر کامبیز پرآذران, subspecialist in cardiology: 408 reviews, 92% recommend, about 36 minutes wait at the office. The office fee is paid at the office. Book here: https://doctoreto.com/doctor/dr-kambiz-parazaran/xqbEWZ

Real tool output from 2026-10-06; prices and free times change all the time. Prices are in Toman.

What it can do

  • 🔎 Find doctors by speciality, city, neighborhood, name, gender, insurance and visit type (office, phone, text, video, instant)
  • ⏱️ Soonest first: sort by the earliest free slot, by popularity or by number of bookings; search near a point
  • 💰 Real prices: office visit fee (also when the site hides it), online consultation prices, deposits
  • 📅 Free times: free appointment times per day for any office or online service, up to a month ahead
  • ⭐ Reviews: stars, recommend rate, waiting time, per-category averages; reviewer names are never returned
  • 🏥 Centers: hospitals, clinics, laboratories, imaging, pharmacies (24h, state/private, map search), hours and insurances
  • 🏷️ Clinic offers: fixed-price procedures (ultrasound, echo, laser, check-ups) with deposits and free times
  • 📖 Health magazine: background articles on conditions and tests
  • 🔒 Read-only by design: no login, no booking, no payment; the agent gives you the link to book

Quick start

You need uv.

Claude Code
claude mcp add doctoreto -- uvx doctoreto-mcp
Claude Desktop

Settings → Developer → Edit Config, then add:

{
  "mcpServers": {
    "doctoreto": { "command": "uvx", "args": ["doctoreto-mcp"] }
  }
}
Cursor

Click Install in Cursor above, or add the Claude Desktop block to ~/.cursor/mcp.json.

VS Code (Copilot agent mode)

Click Install in VS Code above, or add to .vscode/mcp.json:

{
  "servers": {
    "doctoreto": { "type": "stdio", "command": "uvx", "args": ["doctoreto-mcp"] }
  }
}
Anything else

It's a standard stdio MCP server: run uvx doctoreto-mcp, or pip install doctoreto-mcp and run doctoreto-mcp.

Then just ask:

  • "A female dermatologist in Shiraz with a free slot this week, and her visit fee?"
  • "Which pediatricians offer a video call today, and how much is it?"
  • "A 24-hour pharmacy near Vanak Square."
  • "How much is an echocardiography at a Doctoreto clinic in Tehran, and when is the next free time?"
  • یک متخصص گوش و حلق و بینی در محدوده سعادت‌آباد با بیمه تامین اجتماعی

How it works

  AI agent  (Claude, Cursor, Copilot, ...)
      │
      │  MCP over stdio
      ▼
  doctoreto-mcp  (runs on your machine)
      │
      │  HTTPS (JSON)
      ├──────▶  api.doctoreto.com   (doctors, slots, reviews, centers, offers)
      └──────▶  doctoreto.com/blog   (health magazine)

doctoreto-mcp runs locally and calls the same public endpoints the Doctoreto website uses. There's no hosted server in between, no API key, and nothing about you is sent anywhere else.

Tools

Doctors, centers and offers are identified by a 6-character id (xqbEWZ, the last part of doctoreto.com/doctor/dr-kambiz-parazaran/xqbEWZ); every tool also accepts the page URL itself.

🔎 Find a doctor (6)
Tool What it does
dt_suggest Free phrase → matching doctors, speciality slugs, service tags and centers
dt_search_doctors Doctors by city, speciality, neighborhood, name, gender, insurance, visit type, free slot; sorting
dt_specialities Speciality list with the slugs the search needs
dt_cities City slug and id; cities that have a speciality, with doctor counts
dt_neighborhoods Neighborhoods of a city and nearby cities, with doctor counts
dt_insurances Basic and supplementary insurers with their ids
🩺 One doctor (3)
Tool What it does
dt_doctor Profile, every office and online service with fee, deposit, address and next free time, review summary
dt_free_slots Free appointment times per day for one service (office, phone, video, offer, lab), up to 31 days
dt_reviews Reviews of a doctor, center or offer: stars, text, labels, waiting time, replies (no names)
🏥 Centers (2)
Tool What it does
dt_search_centers Hospitals, clinics, labs, imaging, pharmacies by city, type, 24h, state/private, or near a point
dt_center One center: hours, departments, insurances, lab rules, bookable services, doctors
🏷️ Clinic offers and reading (3)
Tool What it does
dt_search_offers Fixed-price procedures and packages by text, city, speciality, price range, doctor or place
dt_offer One offer: price, deposit, provider, terms, variants with their free times
dt_health_articles Doctoreto health magazine articles on a condition, test or treatment

All 14 tools are annotated readOnlyHint: true and return compact structured JSON, so they don't flood the agent's context.

Good to know

  • Prices are in Toman. For an office visit fee is what you pay at the office and pay_online_now what is charged when booking (usually 0). For phone, text and video fee is the online price. A null fee means the doctor lists none.
  • Use dt_doctor for online prices. The search list and the profile show a phone price three times the one on the booking page; dt_doctor reads the booking box, which matches the page.
  • Dates are Gregorian YYYY-MM-DD (1405-07-22 = 2026-10-14); times are Tehran local. Jalali dates are given next to them.
  • Booking happens on the site. It needs an SMS code, so the agent finds the doctor and time and gives you the page link.
  • Insurance: few doctors list insurances, so insurance_ids narrows a search a lot. Centers list theirs in dt_center; the center search ignores insurance filters.
  • Privacy: no phone numbers and no reviewer names are returned.

FAQ

Can it book an appointment for me?

No, and that's deliberate. It has no login and never calls the booking, payment, review or chat endpoints. The agent finds the doctor, the service and a free time; you book on doctoreto.com with your own phone number.

"slug alone cannot be resolved"

Doctoreto's API needs the 6-character id, not the name slug. Paste the whole page URL (https://doctoreto.com/doctor/<slug>/<id>), or let the agent search by the doctor's Persian name.

Do I need an Iranian IP?

No geo block was seen: direct calls and calls through a proxy in Turkey both worked (2026-10-06). Cloud servers were not tested; if Doctoreto blocks one, set DOCTORETO_MCP_PROXY.

A search returns 0 doctors

The filters may be too narrow (an insurance plus a neighborhood often is). Drop a filter, or check the slugs with dt_suggest, dt_specialities or dt_neighborhoods. An unknown city or speciality slug returns an error.

Claude Desktop says uvx is not found

Use the full path to uvx (where uvx on Windows, which uvx on macOS/Linux) as command.

How do I debug what the agent sees?
npx @modelcontextprotocol/inspector uvx doctoreto-mcp

Configuration

Variable Default Meaning
DOCTORETO_MCP_PROXY unset HTTP proxy for every request, e.g. http://user:pass@host:port

فارسی

doctoreto-mcp به دستیار هوش مصنوعی شما (Claude، Cursor، Copilot و ...) اجازه می‌دهد در دکترتو پزشک مناسب را بر اساس تخصص، شهر، محله، بیمه و نوع ویزیت (حضوری، تلفنی، متنی، تصویری) پیدا کند، هزینه ویزیت و زمان‌های خالی نوبت را ببیند، نظرات بیماران را بخواند و بیمارستان، آزمایشگاه و خدمات دکترتو کلینیک را هم جست‌وجو کند.

  • فقط خواندنی است: وارد حساب نمی‌شود، نوبت رزرو نمی‌کند و پرداخت نمی‌کند؛ لینک صفحه پزشک را برای رزرو می‌دهد.
  • همه قیمت‌ها به تومان است.
  • شماره تلفن و نام نظردهندگان را برنمی‌گرداند.
  • روی سیستم خود شما اجرا می‌شود و به هیچ سرور واسطی داده نمی‌فرستد.

نصب در Claude Code:

claude mcp add doctoreto -- uvx doctoreto-mcp

بعد بپرسید: «یک متخصص قلب در پاسداران تهران با نزدیک‌ترین نوبت خالی، با هزینه ویزیت»

Development

git clone https://github.com/sepehr071/doctoreto-mcp && cd doctoreto-mcp
uv sync
uv run pytest            # offline, against recorded responses
uv run pytest -m live    # real APIs
uv run ruff check .

Tools live in src/doctoreto_mcp/search.py, doctor.py, centers.py, offers.py and info.py; each is a typed async function with a docstring that tells the agent when to use it. Issues and PRs are welcome, especially new tools and fixes for API changes.

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.

Disclaimer

Unofficial and not affiliated with or endorsed by Doctoreto. It uses the public endpoints of the doctoreto.com website, which can change without notice. It gives information, not medical advice. Please keep request rates reasonable.

License

MIT

Metadata

Release files for doctoreto-mcp 0.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for doctoreto-mcp 0.1.1
File Size Uploaded
doctoreto_mcp-0.1.1.tar.gz 454.1 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for doctoreto-mcp 0.1.1
File Interpreter ABI Platform
doctoreto_mcp-0.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 484.7 kB

Release files / doctoreto_mcp-0.1.1.tar.gz

Download URL doctoreto_mcp-0.1.1.tar.gz
Size 454.1 kB
Tags Source
SHA-256 checksum
How to use checksums
a180afba757094dc14852383da7f361767befe3284e2e8fdc890a726ff1e4631
BLAKE2b-256 checksum
How to use checksums
8a7798e7effe7983216e18e86faa47a0cec52f87c770c0a5083b74a8740e25ab
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release files / doctoreto_mcp-0.1.1-py3-none-any.whl

Download URL doctoreto_mcp-0.1.1-py3-none-any.whl
Size 30.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
b8634e426f2150c87dcaa67a1bfa0d1f897c6858025ba4adc1e48302b255e8bf
BLAKE2b-256 checksum
How to use checksums
8c94fb8c55d351e1cb7772fd01aade8a7834cfe70e456b26976a961f9aa6d90b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 6, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

0.1.1 This release

2 release files

0.1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page