thirdtrail MCPサーバー
コミット 2026年10月17日Provides elevation-corrected sun, moon, twilight, solar irradiance, and tide data for any location on Earth.
別名 thirdtrail/thirdtrail-python, thirdtrail-python
- スター
- 0
- ツール
- —
- ダウンロード数(30日間)
- —
- 最新バージョン
- 1.0.0
- 最終コミット
- 2026年10月17日
- ライセンス
- MIT
thirdtrail MCPとは
thirdtrailはMCPサーバーです。 Provides elevation-corrected sun, moon, twilight, solar irradiance, and tide data for any location on Earth.
プロジェクトのREADMEから生成された概要
thirdtrail MCP server について
Accessing precise astronomical and tidal data for any location on Earth is what thirdtrail enables for developers. This Python client provides elevation-corrected information regarding the sun, moon, twilight, solar irradiance, and tides. Unlike standard APIs that assume sea level, this tool adjusts sunrise, sunset, and golden hour boundaries based on the specific elevation provided by the user.
Users interact with the service using an API key and can access various endpoints such as ephemerides, solar paths, daily light integrals, and tide heights. The client returns aware datetime objects and includes specific tools like tide_window to combine tidal data with solar and lunar cycles. It is designed to handle different subscription tiers, throwing specific exceptions like PlanLimitExceeded or PermissionDenied when limits are reached or incorrect keys are used. While it covers most GET requests, it does not yet model bulk POST endpoints or webhook management.
できること
- 1Calculate elevation-adjusted sunrise timesDetermine exactly when the sun clears the horizon for an observer at a specific altitude.
- 2Monitor solar irradiance and pathsRetrieve the sun's arc and solar position at specific intervals.
- 3Track tidal movements and extremesIdentify high and low water times and heights relative to mean sea level.
- 4Plan photography around golden hourFind the precise start and end times for golden hour based on local elevation.
プロジェクトの README から作成されています。すべてのユースケースは、その引用と照らし合わせて確認されています。
thirdtrail MCPのインストール方法
フォーマット検証日 2026年11月10日Claude Codeにthirdtrail MCPをインストール
$ claude mcp add --transport http thirdtrail-python https://thirdtrail.life/mcpCursorにthirdtrail MCPをインストール
~/.cursor/mcp.json
{
"mcpServers": {
"thirdtrail-python": {
"url": "https://thirdtrail.life/mcp"
}
}
}VS Codeにthirdtrail MCPをインストール
.vscode/mcp.json
{
"servers": {
"thirdtrail-python": {
"type": "http",
"url": "https://thirdtrail.life/mcp"
}
}
}Codexにthirdtrail MCPをインストール
~/.codex/config.toml
[mcp_servers.thirdtrail-python] url = "https://thirdtrail.life/mcp"
Gemini CLIにthirdtrail MCPをインストール
~/.gemini/settings.json
{
"mcpServers": {
"thirdtrail-python": {
"httpUrl": "https://thirdtrail.life/mcp"
}
}
}自動チェック
実行日 2026年11月15日詳細レポート →まだ検証されていません。サーバーには80点のスコア、重大な問題がないこと、および検証に必要な十分なデータが必要です。 チェックの仕組み
- ソースリポジトリがリンクされており、アクセス可能thirdtrail/thirdtrail-python is public and reachablegithub.com/thirdtrail/thirdtrail-python ↗合格
- パッケージがこのリポジトリをソースとして示している未チェック
- ビルドの来歴(Sigstore 証明)未チェック
- オープンソースライセンス (OSI)MITspdx.org/licenses/MIT.html ↗合格
- 過去1年以内にコミットまたはリリースありLast commit or release 2026-10-17github.com/thirdtrail/thirdtrail-python ↗合格
- OpenSSF Scorecard未チェック
- パッケージ名が有名なパッケージに酷似していない未チェック
- パッケージと依存関係に重大なアドバイザリがない未チェック
- モデルへの隠れた指示がない0 tool descriptions and the README read; no override phrases, credential paths or hidden characters合格
- 破壊的なツールがラベル付けされている未チェック
- リモート endpoint が MCP ハンドシェイクに応答するinitialize answered with protocol 2025-06-18 in 497 ms合格
README
GitHubで見るthirdtrail
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
thirdtrail MCPのよくある質問
thirdtrail MCPをClaude Codeに追加するには
ターミナルでclaude mcp add --transport http thirdtrail-python https://thirdtrail.life/mcpを実行します。すべてのプロジェクトで利用するには--scope userを追加します。
thirdtrail MCPをCursorに追加するには
~/.cursor/mcp.jsonを開き、上記のインストールセクションに示すCursor設定を使ってmcpServersの下にサーバーを追加します。
How does elevation affect the data?
Sun and moon times are corrected for the specific elevation provided, as higher altitudes allow for earlier sunrise and sunset observations.
Can I use elevation parameters with tide height endpoints?
No, tide_heights and tide_extremes do not accept an elevation parameter because the ocean surface height is independent of the observer's elevation.
What happens if I exceed my plan limits?
The client will raise a PlanLimitExceeded exception, which includes a limit attribute indicating the maximum allowed value.