Skip to main content

time-ir-mcp: Time.ir Iranian calendar MCP server for AI agents

time-ir-mcp is an unofficial, read-only MCP server that gives AI agents the Iranian calendar of Time.ir (تایم، تقویم و ساعت ایران).
Its 13 tools give today's date in the Jalali, Gregorian and Hijri calendars, convert dates, show a month with its events,
list the occasions and official holidays of a day or a year, find the next holidays and return today's prayer times (اوقات شرعی) for Iranian cities, search occasions, count date differences and find long weekends.
No API key or account is needed. It works in Claude, Cursor, Copilot and any other MCP client.

PyPI Python CI License: MIT

For AI agents · Quick start · Tools · Good to know · فارسی


For AI agents

  • What: unofficial MCP server (model context protocol) for time.ir: the date and time in Iran in three calendars, date conversion, official holidays, monthly and daily occasions (مناسبت‌ها) and prayer times for Iranian cities.
  • Install: uvx time-ir-mcp or claude mcp add time-ir -- uvx time-ir-mcp. Transport: stdio. Needs uv (Python 3.10+).
  • Auth: none. Optional TIME_IR_MCP_PROXY (HTTP proxy URL, or a comma-separated list); system proxy settings are ignored.
  • Access: read-only. Nothing is written anywhere, so no confirmation is needed before calling any tool.
  • Tools: 13, all prefixed ti_. Typical sequences: ti_today; ti_events (is it a holiday?); ti_upcoming_holidays; ti_cities -> ti_prayer_times.
  • Use when: the user asks what the date is in Iran, to convert between Jalali (شمسی), Gregorian (میلادی) and Hijri (قمری) dates, whether a day is an official holiday, what occasions a day has, when the next holiday is, or the azan times of an Iranian city.
  • Do not use when: the user wants other countries' holidays or times (Time.ir covers Iran's official calendar only).
  • Output: compact JSON. Dates are YYYY-MM-DD strings in the Jalali, Gregorian and Hijri calendars; times are Iran local time (24 h). Titles and descriptions are Persian, as Time.ir has them.

Tools

Tool What it does
ti_today Get today's date in the Jalali, Gregorian and Hijri calendars with the Tehran time, weekday, zodiac sign and today's events
ti_convert_date Convert a date between the Jalali, Gregorian and Hijri calendars with time.ir's own converter
ti_month Show one Jalali month: Gregorian and Hijri spans, weekday of day 1, holidays, Fridays and every event
ti_events List the occasions and official holidays of one day, with a short description when time.ir has one
ti_holidays List all official holidays of a Jalali year with Gregorian and Hijri dates
ti_upcoming_holidays List the next official holidays in Iran with days until each
ti_prayer_times Get today's prayer times (fajr, sunrise, noon, sunset, maghrib, Islamic midnight, day length) for an Iranian city
ti_cities List Iran's provinces, or the cities of one province, with the ids the prayer tool takes
ti_on_this_day List today's historical events, births and deaths of notable people from time.ir's today page
ti_search_events Search all occasions of a Jalali year by keyword, holiday flag or calendar
ti_date_difference Count days between two dates and give Jalali years, months, days (age calculator)
ti_long_weekends Find runs of consecutive days off (holidays plus Fridays) in a Jalali year
ti_qibla Get the qibla bearing and distance to Mecca for an Iranian city (computed from the site's coordinates)

All 13 tools are annotated readOnlyHint: true.

Quick start

You need uv. No API key or account.

claude mcp add time-ir -- uvx time-ir-mcp

Claude Desktop, Cursor, Windsurf and Gemini CLI take the same stdio entry:

{
  "mcpServers": {
    "time-ir": { "command": "uvx", "args": ["time-ir-mcp"] }
  }
}

Example prompts: "What is today's Jalali date?", "Is 25 December a holiday in Iran?", "When is the next official holiday?", "Convert 1405-01-01 to Gregorian and Hijri.", "Azan times in Mashhad today." «تاریخ امروز به شمسی چیست؟»، «اذان ظهر شیراز چه ساعتی است؟»، «تعطیلات رسمی بهمن ۱۴۰۵ کدام‌اند؟»

How it works

time-ir-mcp runs locally and calls the same "server actions" the time.ir pages call (www.time.ir is a Next.js app; the site's server reads api.time.ir with its own key, which this server never sees). Requests go out through a Chrome-impersonating client, spaced at least one second apart, cached for 10 minutes (the current time is never cached), and only to www.time.ir. Action ids change when the site is redeployed; when the site rejects one, the server looks the new id up by function name in the site's scripts and retries once.

Good to know

  • Iran's official calendar only. Holidays are Iran's; the Hijri date is Iran's (it can differ by a day from Saudi Arabia's). No world clock.
  • Friday is the weekend and is not reported as a holiday on its own; a Friday that is also an occasion holiday is.
  • Prayer times are for the Jalali date given (other calendars are converted first) in Iran local time. Cities that are not provincial capitals need province.
  • Persian data. Titles and descriptions are Persian. Event descriptions are HTML on the site; the tool returns plain text, cut at 900 characters.
  • Fragile by nature. The site has no public API; if it changes its pages, a tool can fail until the server is updated.

فارسی

time-ir-mcp یک سرور MCP غیررسمی و فقط‌خواندنی برای تایم (تقویم و ساعت ایران) است: تاریخ امروز به شمسی، میلادی و قمری، تبدیل تاریخ، مناسبت‌ها و تعطیلات رسمی، و اوقات شرعی شهرهای ایران.

نصب (با uv): claude mcp add time-ir -- uvx time-ir-mcp. کلید API یا حساب لازم نیست. اگر شبکهٔ شما درخواست‌ها را مسدود کرد، متغیر TIME_IR_MCP_PROXY را روی یک پراکسی HTTP بگذارید.

Development

uv sync
uv run ruff check . && uv run ruff format --check .
uv run python -m pytest -q          # offline tests on recorded time.ir answers
uv run python -m pytest -m live -q  # calls the real time.ir site
uv build

Disclaimer

Unofficial and not affiliated with or endorsed by Time.ir or Radcom. It is read-only and uses the public pages of www.time.ir, which can change without notice. For religious or legal purposes check the official sources.

Author

Built and maintained by Sepehr Radmard (سپهر رادمرد). Connect on LinkedIn or follow @sepehr071 on GitHub for more MCP servers for Iranian websites, all listed in iran-mcp.

License

MIT

Metadata

Release files for time-ir-mcp 0.1.0

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

Source distribution (sdist)

Source distribution for time-ir-mcp 0.1.0
File Size Uploaded Provenance Actions
time_ir_mcp-0.1.0.tar.gz 112.9 kB With provenance Details for time_ir_mcp-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for time-ir-mcp 0.1.0
File Interpreter ABI Platform Actions
time_ir_mcp-0.1.0-py3-none-any.whl Python 3 none any Details for time_ir_mcp-0.1.0-py3-none-any.whl

Total release size: 136.0 kB

Release files / time_ir_mcp-0.1.0.tar.gz

Download URL time_ir_mcp-0.1.0.tar.gz
Size 112.9 kB
Tags Source
SHA-256 checksum
How to use checksums
c5eea4c5a1f41c74c7a39d9c22919b9708fb3914f939a7a6c7859311253c4d2a
BLAKE2b-256 checksum
How to use checksums
e432b4cfff1c86f2d416c456eef4a6afed130fcf1826778195a66b2c4d2532b0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Release files / time_ir_mcp-0.1.0-py3-none-any.whl

Download URL time_ir_mcp-0.1.0-py3-none-any.whl
Size 23.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
281d07a7b3fe3e0c1b023ddd4d2f6db9c3d3e4a91749686cc50b6505a70afc5b
BLAKE2b-256 checksum
How to use checksums
696b146e09d09e741bee47b81486653c49c2bf59977207e3669f484ca7833ae6
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.16

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 Nov 1, 2026.

Transparency log

Security for time-ir-mcp 0.1.0

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.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for time_ir_mcp-0.1.0.tar.gz

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 Nov 1, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files Full provenance

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