MCP server de thirdtrail
Commit 17 oct 2026Proporciona datos de sol, luna, crepúsculo, irradiancia solar y mareas corregidos por elevación para cualquier ubicación en la Tierra.
También conocido como thirdtrail/thirdtrail-python, thirdtrail-python
- Stars
- 0
- Herramientas
- —
- Descargas, 30 días
- —
- Última versión
- 1.0.0
- Último commit
- 17 oct 2026
- Licencia
- MIT
¿Qué es thirdtrail MCP?
thirdtrail es un MCP server. Proporciona datos de sol, luna, crepúsculo, irradiancia solar y mareas corregidos por elevación para cualquier ubicación en la Tierra.
Resumen generado a partir del README del proyecto
Acerca del MCP server de thirdtrail
thirdtrail permite a los desarrolladores acceder a datos astronómicos y de mareas precisos para cualquier ubicación en la Tierra. Este cliente de Python proporciona información corregida por elevación sobre el sol, la luna, el crepúsculo, la irradiancia solar y las mareas. A diferencia de las API estándar que asumen el nivel del mar, esta herramienta ajusta los límites del amanecer, el atardecer y la hora dorada basándose en la elevación específica proporcionada por el usuario.
Los usuarios interactúan con el servicio mediante una API key y pueden acceder a varios endpoints como efemérides, trayectorias solares, integrales de luz diarias y alturas de marea. El cliente devuelve objetos datetime con zona horaria e incluye herramientas específicas como tide_window para combinar datos de mareas con ciclos solares y lunares. Está diseñado para gestionar diferentes niveles de suscripción, lanzando excepciones específicas como PlanLimitExceeded o PermissionDenied cuando se alcanzan los límites o se usan claves incorrectas. Aunque cubre la mayoría de las solicitudes GET, aún no modela endpoints POST masivos ni la gestión de webhooks.
Qué puedes hacer con él
- 1Calcular horarios de amanecer ajustados por elevaciónDeterminar exactamente cuándo el sol supera el horizonte para un observador en una altitud específica.
- 2Monitorear la irradiancia y las trayectorias solaresObtener el arco del sol y la posición solar en intervalos específicos.
- 3Rastrear movimientos de marea y extremosIdentificar las horas y alturas de pleamar y bajamar en relación con el nivel medio del mar.
- 4Planificar fotografía en torno a la hora doradaEncontrar los horarios precisos de inicio y fin de la hora dorada basándose en la elevación local.
Escrito a partir del README del proyecto. Cada caso de uso se verifica con una cita del mismo.
Cómo instalar thirdtrail MCP
Formatos verificados el 10 nov 2026Instalar thirdtrail MCP en Claude Code
$ claude mcp add --transport http thirdtrail-python https://thirdtrail.life/mcpInstalar thirdtrail MCP en Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"thirdtrail-python": {
"url": "https://thirdtrail.life/mcp"
}
}
}Instalar thirdtrail MCP en VS Code
.vscode/mcp.json
{
"servers": {
"thirdtrail-python": {
"type": "http",
"url": "https://thirdtrail.life/mcp"
}
}
}Instalar thirdtrail MCP en Codex
~/.codex/config.toml
[mcp_servers.thirdtrail-python] url = "https://thirdtrail.life/mcp"
Instalar thirdtrail MCP en Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"thirdtrail-python": {
"httpUrl": "https://thirdtrail.life/mcp"
}
}
}README
Ver en GitHubthirdtrail
Python client for the thirdtrail APIs: sun, moon, twilight, solar irradiance and tides for any point on Earth. Sun and moon times are corrected for the elevation you pass in.
pip install thirdtrail
from thirdtrail import Client
tt = Client(api_key="tt_live_…")
for day in tt.ephemerides(lat=53.3498, lon=-6.2603, elevation=20):
print(day.date, day.sun.rise, day.sun.set)
Why elevation
Most sunrise APIs answer for an observer standing at sea level. The higher you are, the further you can see, and the earlier the sun clears the horizon.
At the Cliffs of Moher (214 m) the difference is about three minutes, and it moves sunrise, sunset and every golden- and blue-hour boundary with them:
| sea level | at 214 m | |
|---|---|---|
| sunrise | 07:23:33 | 07:20:25 |
| golden hour, morning start | 06:56:51 | 06:53:42 |
| moonrise | 18:03:48 | 17:59:40 |
Golden hour lasts 20 to 40 minutes, so three minutes is a noticeable share of
it. Pass elevation whenever you know it.
What you get
day.sun.rise # datetime, with its timezone offset intact
day.sun.golden_hour.morning.start
day.moon.phase.name # "Waxing Gibbous"
day.moon.phase.illumination # 0.7376
Timestamps arrive as aware datetime objects, not strings. Anything the
client does not model is still available on day.raw and day.response, so
you can use a new server-side field before the client catches up.
Endpoints
tt.ephemerides(lat=…, lon=…, elevation=…, days=7) # sun + moon + twilight
tt.prayer_times(lat=…, lon=…, school="mwl") # five daily prayers
tt.solar(lat=…, lon=…, timestamp=…) # position + irradiance
tt.solar_path(lat=…, lon=…, interval="5m") # the sun's arc, sampled
tt.solar_dli(lat=…, lon=…, from_date=…, to_date=…) # Daily Light Integral
tt.tide_heights(lat=…, lon=…, step="10m") # water height series
tt.tide_extremes(lat=…, lon=…) # high and low waters
tt.tide_window(lat=…, lon=…, elevation=…) # tides + sun + moon
tt.tide_constituents(lat=…, lon=…) # harmonic constants
Tides take no elevation, with one exception
tide_heights and tide_extremes have no elevation parameter on purpose,
because how high you stand doesn't change the ocean surface. If you pass
one, you get a TypeError instead of having it silently ignored.
tide_window is the exception, because half of what it returns is sun and
moon data:
for day in tt.tide_window(lat=52.9715, lon=-9.4309, elevation=214, days=3):
print(day.date, day.sun.golden_hour.morning.start)
for t in day.low_waters:
print(" low water", t.time, t.height_m)
Tide heights are metres relative to mean sea level, not chart datum, and they exclude weather-driven surge. Not for navigation.
Errors
Each kind of failure has its own exception class, so you can catch the one you care about instead of parsing error messages:
from thirdtrail import PlanLimitExceeded
try:
tt.tide_extremes(lat=51.5, lon=-2.7, days=90)
except PlanLimitExceeded as e:
tt.tide_extremes(lat=51.5, lon=-2.7, days=e.limit) # e.limit == 31
AuthenticationError (401), PermissionDenied (403, a tier you are not on),
PlanLimitExceeded and InvalidRequest (400), RateLimited (429),
DataUnavailable (503), ServerError (5xx). All subclass ThirdtrailError.
Transient failures and 429s are retried with backoff. Plan limits are not retried, because the same request would fail the same way every time.
Keys
Create one at thirdtrail.life/apis/keys/.
A key belongs to one subscription, so it works with one API; a Tides key
calling a solar endpoint gets PermissionDenied.
Every API has a free tier.
Not covered yet
The client doesn't cover the bulk (POST) endpoints, iCalendar feeds or
webhook management yet. For those, call the REST API directly; the full
contract is published as OpenAPI 3.1.
Using an AI agent? There is an MCP server that exposes the same data as tools.
Licence
MIT
Preguntas sobre thirdtrail MCP
¿Cómo agrego thirdtrail MCP a Claude Code?
Ejecuta claude mcp add --transport http thirdtrail-python https://thirdtrail.life/mcp en tu terminal. Añade --scope user para que esté disponible en todos los proyectos.
¿Cómo agrego thirdtrail MCP a Cursor?
Abre ~/.cursor/mcp.json y añade el servidor en mcpServers, usando la configuración de Cursor que se muestra en la sección de instalación de arriba.
¿Cómo afecta la elevación a los datos?
Los horarios del sol y la luna se corrigen según la elevación específica proporcionada, ya que las altitudes más altas permiten observar el amanecer y el atardecer de forma más temprana.
¿Puedo usar parámetros de elevación con los endpoints de altura de marea?
No, tide_heights y tide_extremes no aceptan un parámetro de elevación porque la altura de la superficie del océano es independiente de la elevación del observador.
¿Qué pasa si excedo los límites de mi plan?
El cliente lanzará una excepción PlanLimitExceeded, la cual incluye un atributo de límite que indica el valor máximo permitido.