mcpField
T
thirdtrail

thirdtrail

リモート
thirdtrail.life科学・教育02 週間前に更新
リポジトリ公式サイト

thirdtrail について

thirdtrailは、世界各地の太陽、月、薄明、太陽放射照度、潮汐データを取得するPythonクライアントです。標高を考慮した太陽・月の時刻と、APIエラー別の例外を提供します。

主な機能

  1. 01太陽、月、薄明のデータ
  2. 02標高補正されたイベント時刻
  3. 03太陽位置と放射照度のエンドポイント
  4. 04潮位、満潮・干潮、潮汐ウィンドウ
  5. 05タイムゾーン付きdatetime結果
  6. 06一時的な障害とレート制限の再試行

活用シーン

  1. 01標高を考慮した日の出とゴールデンアワーの計算
  2. 02太陽放射照度や日積算光量データの取得
  3. 03潮位と満潮・干潮時刻の確認

MCP 対応

READMEには、同じデータをツールとして公開するMCPサーバーがあると記載されていますが、そのインターフェースは説明されていません。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://thirdtrail.life/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

すべてのエンドポイント
Streamable HTTPhttps://thirdtrail.life/mcp認証が必要

ツール

8
パラメーター型必須説明
tzstringいいえ出力タイムスタンプに使用する IANA タイムゾーン。例:Europe/Dublin。デフォルトは UTC です。
latnumberはい十進法の度数で表した緯度。
lonnumberはい十進法の度数で表した経度。
daysintegerいいえ返す日数。上限はプランによって異なります。
elevationnumberいいえ海抜高度(メートル)。分かる場合は指定してください。標高が高い場所では、日の出時刻が海面高度での計算結果より明らかに早くなります。標高が本当に不明な場合に限り、省略してください。
start_datestringいいえYYYY-MM-DD 形式の初日。デフォルトは今日です。

詳細

thirdtrail

thirdtrail API 用の Python クライアントです。地球上のあらゆる地点の太陽、月、薄明、日射量、潮汐に対応しています。太陽と月の時刻は、指定した標高を考慮して補正されます。

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)

標高を考慮する理由

日の出 API の多くは、海面に立つ観測者を基準に回答します。標高が高いほど遠くまで見渡せるため、太陽はより早く地平線から現れます。

モハーの断崖(214 m)では、その差は約 3 分です。日の出、日の入り、ゴールデンアワーとブルーアワーのすべての境界時刻も、それに応じて変わります。

海面標高 214 m
日の出07:23:3307:20:25
ゴールデンアワー、午前の開始06:56:5106:53:42
月の出18:03:4817:59:40

ゴールデンアワーは20〜40分続くため、3分は無視できない差です。標高がわかる場合は、必ず elevation を指定してください。

得られるデータ

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

タイムスタンプは文字列ではなく、タイムゾーン情報付きの datetime オブジェクトとして取得できます。クライアントでモデル化されていないデータも day.raw と day.response から利用できるため、クライアントが対応する前に新しいサーバー側フィールドを使えます。

エンドポイント

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
例外を除き、潮汐データには標高を指定しません

tide_heights と tide_extremes に elevation パラメーターがないのは意図的です。あなたがどれだけ高い場所に立っていても、海面の高さは変わらないためです。標高を渡すと、黙って無視されるのではなく TypeError が発生します。

例外は tide_window です。返されるデータの半分は太陽と月に関するものだからです。

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)

潮位は海図基準面ではなく平均海面を基準としたメートル単位で、気象による高潮は含まれません。航行には使用しないでください。

エラー

失敗の種類ごとに専用の例外クラスがあるため、エラーメッセージを解析せずに、必要な例外を捕捉できます。

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、契約していないプラン)、PlanLimitExceeded および InvalidRequest(400)、RateLimited(429)、DataUnavailable(503)、ServerError(5xx)があります。すべて ThirdtrailError のサブクラスです。

一時的な障害と429エラーは、バックオフを行って再試行されます。同じリクエストは毎回同じように失敗するため、プランの上限超過は再試行されません。

キー

thirdtrail.life/apis/keys/ で作成してください。 キーは1つのサブスクリプションに紐付いているため、利用できる API は1つです。Tides キーで太陽のエンドポイントを呼び出すと、PermissionDenied が発生します。

すべての API に無料プランがあります。

未対応の機能

このクライアントは、バルク(POST)エンドポイント、iCalendar フィード、Webhook 管理にはまだ対応していません。これらを利用するには、REST API を直接呼び出してください。完全な仕様は OpenAPI 3.1 として公開されています。

AI エージェントを使用していますか?同じデータをツールとして公開する MCP サーバー があります。

ライセンス

MIT

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。