关于 SkyGlance — What's Flying Above You
SkyGlance 是一个用于查询实时飞机位置、身份和航线的 MCP 服务,也可记录本地目击历史。它根据仰角和方位提供观测指引,并将查询位置坐标取整后发送给数据源。
主要功能
- 01查询附近及全球航班
- 02识别机型、运营方与航线
- 03按仰角和方位指引观测
- 04记录本地飞机目击历史
- 05查询机场活动与机队
- 06发送前将位置坐标取整
适用场景
- 01查询头顶飞机及即将经过的航班
- 02识别看到的飞机并查看航线
- 03搜索指定机型或航空公司的飞机
- 04查看个人目击记录和统计
MCP 相关
MCP 服务向客户端提供飞机位置、识别、航线、机场活动和目击历史等工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx skyglanceSKYGLANCE_HOME_LATYour latitude. Enables background sighting history.SKYGLANCE_HOME_LONYour longitude. Enables background sighting history.SKYGLANCE_POLLSet to 0 to disable background history recording.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
24收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| lat | any | 否 | |
| lon | any | 否 | |
| limit | integer | 否 | |
| radius_nm | integer | 否 |
详细介绍
SkyGlance
询问 Claude 你上空有什么飞机。
实时位置、真实飞机身份、航线、照片,以及所有飞过这里的飞机记录。
快速开始
claude mcp add skyglance -- uvx --from skyglance skyglance
然后询问 Claude:“现在有什么飞机正在我上空飞过?”
需要 uv。其安装指南涵盖所有平台。无需 API 密钥——这里的所有数据源都是免费的。
设置你的位置,这样就不必反复说明,也能让 SkyGlance 建立目击记录:
claude mcp add skyglance \
-e SKYGLANCE_HOME_LAT=40.71 -e SKYGLANCE_HOME_LON=-74.01 \
-- uvx --from skyglance skyglance
安装为 Claude Code 插件
该插件将服务与 sky 技能一同提供,教会 Claude 如何解读仰角,以及如何向从未观测过飞机的人介绍飞机。
/plugin marketplace add darshjoshi/skyglance-mcp
/plugin install skyglance@skyglance
SkyGlance Spotter:Claude 目录版
仓库根目录本身也是一个插件,名为 SkyGlance Spotter(skyglance-spotter),专为 Anthropic 的 Claude 插件目录打造。它使用本仓库源码运行同一个服务,区别有以下四点:
- 不包含两个工具。 不提供
military_aircraft和privacy_blocked_aircraft,且search_aircraft没有军事筛选功能。这些功能用于追踪运营方或所有者不希望被追踪的飞机。 - 历史记录需主动启用。 只有在插件设置中开启 Record sighting history 后,才会记录目击历史。
- 使用设置,而非环境变量。 可选的插件设置包括家庭位置的纬度和经度。
- 历史记录保存在插件数据文件夹中。 历史数据库保存在 Claude Code 会跨插件更新保留、卸载时删除的文件夹中。
uv首次启动时创建的 Python 环境位于插件文件夹中,并会在每次更新后重建。
/plugin marketplace add darshjoshi/skyglance-mcp
/plugin install skyglance-spotter@skyglance
它需要 uv。首次启动时,uv run --locked 会从 PyPI 安装 uv.lock 中指定的确切依赖版本(MCP SDK、httpx 及其依赖项),整个过程需要几秒钟。SkyGlance Spotter 可在 Claude Code 和 Cowork 中使用。它在本地运行,因此无法在 claude.ai 聊天中使用。
你可以询问什么
"What's flying over me right now?" → ranked by what you'd actually notice
"What's about to pass overhead?" → but only 90 seconds ahead, honestly
"What is that plane?" → type, operator, route, photograph
"Where is flight UAL123?" → anywhere in the world
"Any A380s airborne?" → 44 of them, right now
"Any military aircraft near me?" → and any emergencies, worldwide
"Have I ever seen this plane before?" → your own history says
"What's the closest one ever?" → your personal records
"Can I even see anything tonight?" → cloud, visibility, daylight
为什么采用这种设计
“在你上方”说的是角度,不是距离。 半径筛选会返回一架距离 19 km、飞行高度为 38,000 ft 的客机——它位于地平线以上 32°,只是树梢附近的一个小点——并赋予它与一架飞行高度为 800 ft、仰角仅 0.7°、被建筑物遮挡的直升机相同的权重。SkyGlance 会计算仰角、观测方位以及斜距,因此答案会告诉你该朝哪里看。
它不会预测超出能力范围的情况。 根据航迹和地速进行直线外推,在 30 秒内的误差约为 0.11 km。到了 4 分钟时,中位误差为 6 km,77% 的飞机位置偏差超过 2 km,因为进近中的飞机不断转向。因此,倒计时最多显示 90 秒;更远的情况则只报告为“正在飞来”,不附带具体时间。
它知道自己何时看不到飞机。 免费 ADS-B 覆盖来自在自家屋顶安装接收器的志愿者。人口密集的欧洲、美国和东亚,覆盖率可达商业数据源的 90–95%。海洋、非洲和中亚的覆盖率则接近于零。当结果稀少时,SkyGlance 会如实说明,而不会暗示天空中没有飞机。
你的坐标在离开设备前会被取整。 数据源查询的坐标会精确到小数点后两位(约 1.1 km),这样志愿者数据源运营者就无法获得精确到屋顶的日志,知道你身处何处、何时醒着。方位和仰角仍会根据你的精确位置在本地计算,因此告知你观测目标时依然准确。测试会确保未经取整的坐标绝不会传给数据源。
24 个工具
| 分组 | 工具 |
|---|---|
| 头顶飞机 | whats_overhead · coming_overhead · nearest_aircraft |
| 识别 | identify_aircraft · track_flight · track_history · airline_info |
| 机场 | airport_activity · busiest_airports |
| 搜索全球 | fleet_view · search_aircraft · global_stats |
| 观机 | military_aircraft · emergencies · find_by_type · interesting_nearby · privacy_blocked_aircraft |
| 背景信息 | viewing_conditions · feed_health |
| 你的历史记录 | sighting_history · is_this_new · my_records · spotting_stats · poller_status |
与 Flightradar24 的对比
SkyGlance 是问答工具,而不是地图,因此比较的是你能查到什么,而不是你能看到什么。
| SkyGlance | FR24 | |
|---|---|---|
| 实时位置、机型、注册号、运营商、照片 | ✅ | 免费版 |
| 应答机代码、垂直速度、飞机机龄 | ✅ | Silver |
| 按航空公司、机型、高度、速度筛选 | ✅ | Silver |
| 机队视图——某家航空公司的所有在飞航班 | ✅ | Business |
| 机场动态、最繁忙机场 | ✅ 已观测 | Business |
| 飞行航迹历史 | ✅ 约 24 h | 90 天 – 3 年 |
| 全球统计 | ✅ | — |
| 时刻表、延误、登机口、与时刻表对比的预计到达时间 | ❌ | 免费版 |
| 海洋覆盖(卫星 ADS-B)、MLAT、雷达 | ❌ | 所有套餐 |
| 航空图、海洋航迹、空管边界 | ❌ | Gold |
坦诚总结: 对于观机和识别——我头顶有什么、那是什么、它经过哪里、有多少架 747 正在飞行——SkyGlance 免费提供了 FR24 需要 Silver 和 Business 套餐才能使用的功能。对于旅行安排——我的航班是否延误、登机口在哪里——它无法胜任,因为这些信息来自授权的航班时刻表数据,而不是 ADS-B。此外,FR24 的卫星网络能看到志愿者接收器根本无法接收到的海洋航班。
因此:它可以很好地替代爱好者所需的功能,但不能替代旅客所需的功能。
它刻意无法做到的事
免费的 ADS-B 提供的是位置,而不是航班时刻表。因此,它无法提供延误信息、对照时刻表的预计到达时间、登机口或航站楼信息,也无法搜索“今天从 JFK 飞往伦敦的航班”——航线查询只能反向进行,即根据你已知的呼号查询。track_history 是一个滚动的约 24 小时时间窗口,不是档案。
这些功能不在开发路线图上。它们属于另一种数据产品(Cirium、OAG、FlightAware),购买这类产品就意味着不再能做到无需 API 密钥。这些工具会明确拒绝回答这类问题,而不是给出估算;随附的技能也会告诉 Claude 这样做。
目击历史
设置 SKYGLANCE_HOME_LAT/LON 后,SkyGlance 会在后台每分钟轮询一次你所在位置上空的空域,并记录每一次飞越。这让我们能够回答实时数据流无法回答的问题:我以前见过这架飞机吗?这种机型在这里出现过吗?有东西飞过这里的最低高度是多少?
- 数据以 SQLite 格式存储在本地的
~/.skyglance/sky.db。不会上传到任何地方。 - 即使打开了多个 Claude 会话,也只会有一个进程进行轮询——带有 PID 标记的锁会确保这一点,因此不会让志愿者运营的数据源承受 N 倍请求。
- 设置
SKYGLANCE_POLL=0可关闭此功能。 - 坦诚说明其局限:飞越情况是根据间隔一分钟的快照推断出来的,因此两次轮询之间快速低空飞过的飞机不会被记录。
poller_status会告知你轮询间隔。
配置
| 变量 | 默认值 | 用途 |
|---|---|---|
SKYGLANCE_HOME_LAT / SKYGLANCE_HOME_LON | 未设置 | 你的位置。启用历史记录。 |
SKYGLANCE_POLL | 1 | 后台记录。1/true/yes/on 表示启用;其他任何值都表示停用。 |
SKYGLANCE_POLL_INTERVAL | 60 | 两次轮询之间的秒数(最短 30 秒)。 |
SKYGLANCE_HOME_DIR | ~/.skyglance | 数据库和锁文件的存放位置。 |
SKYGLANCE_EDITION | 未设置 | 设置为 directory 后,会启用上文所述的 SkyGlance Spotter 行为。插件会设置此项。 |
数据来源
七个免费服务,无需 API 密钥,每月费用为 $0。完整条款见 NOTICE.md。
| 层级 | 服务 |
|---|---|
| 位置 | adsb.lol · adsb.fi |
| 身份信息 | adsbdb.com → hexdb.io 备用 |
| 照片 | planespotters.net |
| 环境状况 | Open-Meteo |
两个位置数据源会并行查询并合并结果,而不是故障切换。根据 2026-08-02 在纽瓦克的测量结果,当时还有第三个数据源(airplanes.live):最佳单一数据源提供了 52 架飞机的信息,合并后共有 61 架,多出 17%。合并既提高了覆盖率,也提供了冗余。airplanes.live 此后已对未提前联系他们的人关闭 API,因此 SkyGlance 不再查询该服务。
每个数据源都由断路器保护(失败三次后冷却 30 秒)。这些服务由志愿者自费提供带宽,不提供 SLA,也不对任何人负有义务。如果两个数据源都失败,系统会提供上一次成功的快照,并标记为 stale,而不是返回错误——比起一直转圈,40 秒前的飞机信息更有用。
不适用于任何运营场景。 调度、安全、与 ATC 相关的用途——请购买商业数据源。上游服务的条款也有同样的说明。
网络访问
SkyGlance 只会发送出站请求,以获取公开航空数据。它只向每项服务发送查询所需的信息:四舍五入到小数点后两位的位置(约 1.1 km),或飞机标识符、航空公司代码或机场代码。它绝不会发送你的对话、文件或任何账户详情,也不使用 API 密钥。
| 主机 | 用途 |
|---|---|
api.adsb.lol、globe.adsb.lol(以及 adsb.lol) | 查询某个位置附近的实时位置、按机型、呼号或注册号查询全球范围内的信息,以及约 24 小时的飞行轨迹 |
opendata.adsb.fi | 查询某个位置附近的实时位置,并与 adsb.lol 的数据合并 |
api.adsbdb.com | 查询飞机身份信息和航线 |
hexdb.io | 当 adsbdb 没有记录时,查询飞机身份信息 |
api.planespotters.net | 查询飞机照片,并注明摄影师 |
api.open-meteo.com | 查询观测条件所需的云量、能见度和日照信息 |
pypi.org、files.pythonhosted.org | 仅供插件使用:uv 在首次启动时安装锁定的依赖项 |
github.com | 仅供插件使用,并且仅在未安装 Python 3.10+ 时使用:uv 下载独立版 Python |
每项服务都有自己的条款。NOTICE.md 列出了这些条款,并说明 SkyGlance 如何遵守它们。
此仓库中的两个文件仅用于开发,也会发出网络请求。服务端和插件都不会运行它们:
tools/build_airports.py会从davidmegginson.github.io下载公有领域的 OurAirports CSV,以重新生成src/skyglance/airport_data.py,由维护者手动运行。.github/workflows/publish.yml会在发布版本时通过 GitHub Actions 运行。它会从 Model Context Protocol registry 的 GitHub releases 下载固定版本且已验证校验和的mcp-publisher,然后发布到 PyPI 和 MCP registry。它使用 GitHub Actions 为此工作流颁发的短期 OIDC 令牌进行身份验证。SkyGlance 及其插件绝不会读取、存储或发送任何凭据。
隐私政策
本政策适用于 SkyGlance MCP 服务、skyglance 插件和 SkyGlance Spotter 插件。
数据收集。 SkyGlance 没有账户、分析、遥测或崩溃报告功能,作者也不会收到任何数据。它不会读取 Claude 的记忆、聊天记录或你的文件。只有当你在问题中提供位置或设置家庭位置时,它才会使用你的位置。
使用方式。 位置用于查找附近的飞机。在离开你的计算机之前,位置会被四舍五入到约 1.1 km,因此数据服务不会收到你的精确位置。观测方向和高度会根据精确坐标在你的计算机上计算得出。飞机标识符、航空公司代码和机场代码只会发送给负责查询它们的服务。
存储。 SkyGlance 保留的所有内容都存储在你的计算机上,位于 SQLite 数据库中:服务端使用 ~/.skyglance/sky.db,SkyGlance Spotter 使用插件的数据文件夹。数据库会保存缓存的飞机和机场查询结果;仅当开启观测历史时,还会记录飞过你家庭位置上空的飞机。你的家庭位置存储在你配置的位置:插件存储在 Claude Code 设置中,服务端则存储在 MCP 配置中。
向第三方共享。 不会向作者共享任何内容,也不会将任何内容出售给任何人。网络访问一节中列出的服务会根据各自的隐私政策,接收每次查询所需的四舍五入后的位置或标识符。
数据保留。 本地数据会一直保留,直到你将其删除。删除 ~/.skyglance,或卸载 SkyGlance Spotter,即可移除其数据文件夹。SkyGlance 不会在其他任何地方保留数据。
联系方式。 [email protected],或提交问题。
相关项目
- skyglance-mac — 相同数据的 macOS 菜单栏应用,附带本项目所依据的研究(FREE-STACK.md、OVERHEAD-DETECTION.md、COVERAGE-AND-COST.md)
开发
uv venv && uv pip install -e ".[dev]"
pytest # geometry parity, merge, breakers, privacy, history
几何测试会与 Mac 应用中的 reference/overhead.mjs 进行精确到每一位数字的校验,该文件通过了自身的 11 个已知答案测试用例。如果移植版本出现偏差,这些测试会最先失败。
基于 MIT 许可证授权。与任何航空公司、机场或空中导航服务提供商均无关联。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。