mcpField
T
thirdtrail

thirdtrail

远程服务
thirdtrail.life科研与教育02 周前更新

关于 thirdtrail

thirdtrail 是用于调用 API 的 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),时间差约为 三分钟,日出、日落以及每个黄金时段和蓝色时段的起止时间都会相应变化:

海平面海拔 214 m
日出07:23:3307:20:25
黄金时段,上午开始06:56:5106:53:42
月出18:03:4817:59:40

黄金时段持续 20 到 40 分钟,因此三分钟所占的比例不容忽视。知道海拔时,请传入 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/ 创建密钥。一个密钥对应一个订阅,因此只能用于一个 API;使用潮汐密钥调用太阳端点会得到 PermissionDenied。

每个 API 都提供免费层级。

尚未涵盖的内容

此客户端尚未涵盖批量(POST)端点、iCalendar 订阅源或 webhook 管理。对于这些功能,请直接调用 REST API;完整规范以 OpenAPI 3.1 发布。

正在使用 AI Agent?这里有一个 MCP 服务,可将相同的数据作为工具提供。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。