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.
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-mcporclaude 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-DDstrings 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
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)
| 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)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| 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 logRelease 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 logSecurity 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.
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 logA 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.