MCP server thirdtrail
Commit 17 de out. de 2026Fornece dados de sol, lua, crepúsculo, irradiância solar e marés corrigidos por elevação para qualquer localização na Terra.
Também conhecido como thirdtrail/thirdtrail-python, thirdtrail-python
- Stars
- 0
- Ferramentas
- —
- Downloads, 30 dias
- —
- Versão mais recente
- 1.0.0
- Último commit
- 17 de out. de 2026
- Licença
- MIT
O que é o MCP thirdtrail?
thirdtrail é um MCP server. Fornece dados de sol, lua, crepúsculo, irradiância solar e marés corrigidos por elevação para qualquer localização na Terra.
Resumo gerado a partir do README do projeto
Sobre o MCP server de thirdtrail
O thirdtrail permite que desenvolvedores acessem dados astronômicos e de marés precisos para qualquer localização na Terra. Este cliente Python fornece informações corrigidas por elevação sobre o sol, lua, crepúsculo, irradiância solar e marés. Diferente de APIs padrão que assumem o nível do mar, esta ferramenta ajusta os limites de nascer do sol, pôr do sol e golden hour com base na elevação específica fornecida pelo usuário.
Os usuários interagem com o serviço usando uma API key e podem acessar diversos endpoints, como efemérides, trajetórias solares, integrais de luz diária e alturas de maré. O cliente retorna objetos datetime aware e inclui ferramentas específicas como tide_window para combinar dados de maré com ciclos solares e lunares. Ele foi projetado para lidar com diferentes níveis de assinatura, lançando exceções específicas como PlanLimitExceeded ou PermissionDenied quando os limites são atingidos ou chaves incorretas são utilizadas. Embora cubra a maioria das requisições GET, ele ainda não modela endpoints POST em massa ou gerenciamento de webhooks.
O que você pode fazer com ele
- 1Calcular horários de nascer do sol ajustados por elevaçãoDetermine exatamente quando o sol ultrapassa o horizonte para um observador em uma altitude específica.
- 2Monitorar trajetórias e irradiância solarRecupere o arco do sol e a posição solar em intervalos específicos.
- 3Rastrear movimentos e extremos de maréIdentifique horários e alturas de maré alta e baixa em relação ao nível médio do mar.
- 4Planejar fotografia em torno da golden hourEncontre os horários exatos de início e término da golden hour com base na elevação local.
Escrito a partir do README do projeto. Cada caso de uso é verificado com uma citação dele.
Como instalar o MCP thirdtrail
Formatos verificados em 10 nov 2026Instalar o MCP thirdtrail no Claude Code
$ claude mcp add --transport http thirdtrail-python https://thirdtrail.life/mcpInstalar o MCP thirdtrail no Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"thirdtrail-python": {
"url": "https://thirdtrail.life/mcp"
}
}
}Instalar o MCP thirdtrail no VS Code
.vscode/mcp.json
{
"servers": {
"thirdtrail-python": {
"type": "http",
"url": "https://thirdtrail.life/mcp"
}
}
}Instalar o MCP thirdtrail no Codex
~/.codex/config.toml
[mcp_servers.thirdtrail-python] url = "https://thirdtrail.life/mcp"
Instalar o MCP thirdtrail no Gemini CLI
~/.gemini/settings.json
{
"mcpServers": {
"thirdtrail-python": {
"httpUrl": "https://thirdtrail.life/mcp"
}
}
}README
Ver no 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
Perguntas sobre o MCP thirdtrail
Como adiciono o MCP thirdtrail ao Claude Code?
Execute claude mcp add --transport http thirdtrail-python https://thirdtrail.life/mcp no seu terminal. Adicione --scope user para torná-lo disponível em todos os projetos.
Como adiciono o MCP thirdtrail ao Cursor?
Abra ~/.cursor/mcp.json e adicione o servidor em mcpServers, usando a configuração do Cursor mostrada na seção de instalação acima.
Como a elevação afeta os dados?
Os horários do sol e da lua são corrigidos para a elevação específica fornecida, já que altitudes mais elevadas permitem observações de nascer e pôr do sol mais precoces.
Posso usar parâmetros de elevação com endpoints de altura de maré?
Não, tide_heights e tide_extremes não aceitam um parâmetro de elevação porque a altura da superfície do oceano é independente da elevação do observador.
O que acontece se eu exceder os limites do meu plano?
O cliente lançará uma exceção PlanLimitExceeded, que inclui um atributo de limite indicando o valor máximo permitido.