Labsco
MCP SERVER

Salaah MCP

by yusufk

Islamic prayer times, qiblah direction and moon-visibility calculations for any location and date, across seven calculation methods.

Time, Dates & Calculation
Summary
Method selection is why this beats a generic lookup.

Prayer times differ by calculation convention, and communities do not agree — a server that hardcodes one is wrong for most people. Offering all seven and naming which one produced a result is the correct behaviour. The moon-visibility endpoint is the unusual extra: Yallop scoring with a readable verdict is what you want when the question is whether the crescent will actually be seen, not merely when it rises.

What it is

A FastAPI service exposed over MCP that computes Islamic prayer times using the islamic_times library. Beyond the five prayers it returns sunrise, sunset and midnight, the qiblah bearing and distance, detailed sun and moon positions, and new-moon visibility scored by Yallop's criterion.

What you get
  • `/prayer_times` — fajr, sunrise, zuhr, asr, sunset, maghrib, isha and midnight for a latitude, longitude and method, returned as timezone-aware timestamps
  • Seven calculation methods to choose between: ISNA, MWL, UMM_AL_QURA, EGYPTIAN, KARACHI, TEHRAN and JAFARI
  • `/qiblah` — direction and distance to the Kaaba, given as a compass point, decimal angle, degrees-minutes-seconds, and distance in both km and miles
  • `/sun` — sunrise, transit, sunset plus apparent altitude, azimuth, declination, right ascension and hour angles
  • `/moon` — moonrise, transit, moonset, illumination percentage, altitude, azimuth and distance
  • `/moon/visibility` — new-moon visibility over a number of days, each entry scored with a value and a plain-language verdict such as easily visible or below the Danjon limit
Requirements

No account and no key — the calculations are local. Python with uv: `pip install uv` then `uv install`, and run with `uv run run.py`. The API listens on `http://localhost:8000` and the port is configurable through the `UVV_PORT` environment variable. Claude Desktop reaches it through `mcp-proxy` with `SSE_URL` pointed at `http://localhost:8000/mcp`. The project is `salaah-mcp` (0.1.0 in pyproject) and builds on FastAPI, FastAPI MCP, Pydantic and islamic_times.