Skip to main content
Glama

Space Finder MCP 🚀

宇宙・天文データを横断検索し、画像・動画・音声までチャット上で表示できる Model Context Protocol (MCP) サーバーです。

惑星・人工衛星・宇宙ミッションのメディア検索、ロケット打ち上げ、小惑星接近情報、「史上初の宇宙望遠鏡は?」といった逆引き歴史Q&Aを、AIエージェント(Claude / Cursor / Hermes 等)から自然言語で呼び出せます。

「Space Finder」は宇宙(Space)に関する情報を探すMCPです。「物理的な空間=オフィス・駐車場を探す」同名サービスとは無関係です。


✨ 特徴

  • 画像・動画・音声をそのまま返せる — 画像はチャット内にインライン表示、音声・動画は再生URLを返却

  • tokyo-transit方式のJSON応答 — 人間向け表示(content)とLLM向け純粋JSON(structuredContent)を分離し、情報を失わずに構造化データを渡せる。structuredContent はJSON の7型だけ(全ツール共通の出口 jsonio.to_json が numpy 型・NaN を変換するので、クライアント側で型が揺れない)

  • 認証不要のツールが大半 — APIキーの管理なしですぐ動く(NASA の一部ツールのみ任意キー。ESA/Copernicus は検索・プレビューのみで、認証付きダウンロードは非対応)

  • 他国の宇宙機関データに対応 — インド ISRO・欧州 ESA/Copernicus・日本 JAXA・カナダ CSA・ブラジル INPE・英国 EO DataHub・フランス CNES・ドイツ DLR EOC・ロシア Roscosmos オープンデータ・中国 CNSA 系ポータル・全衛星軌道(CelesTrak)・EO Dashboard(NASA/ESA/JAXA共同) を横断検索

  • 天体カタログと系外惑星、準天頂衛星に対応 — 天体の素性は SIMBAD、観測星表は VizieR(いずれも CDS・認証不要)、系外惑星は NASA Exoplanet Archive、みちびき(QZSS)の精密軌道は内閣府の公開アーカイブ API から取得します(QZSS は提供元明記の非商用利用のみ)

  • 引用元を明示 — 科学的な内容には必ずデータソースへのリンクを併記

  • 図の注記を機械可読で返す(figure/1) — 描画系ツールは「どの面を・どの縮尺で・主天体を焦点に置いたか」と注記・自己検証を JSON で返し、LLM が図を誤読しないようにする

  • 時刻は天体暦(JPL DE421)の収録期間内(1899-07-29〜2053-10-09)。範囲外の when / year は計算せず、範囲と対処を書いたエラー結果を返します(以前は Skyfield の EphemerisRangeError がツール外へ漏れていました)

⚠️ 注(出力のどこまでが保証か) — ツールが返す**structuredContent の JSON・数値・画像・リンクは、同じ引数で同じ時刻に呼べばどのモデルからでも同じ内容です(データ取得と計算はサーバー側で完結し、モデルには依存しません)。一方、それを読みやすい文章に組み立てる工程はホスト側の AI モデルに委ねられます**。説明の順序・語り口・要約の粒度・強調する点はモデルや設定によって変わるため、同じツール結果でも書き上がりは同一にはなりません。数値や出典の最終的な根拠は structuredContent に置いてください(表示文と食い違って見える場合は JSON 側が正で、その差は「モデルの文章化」のばらつきです)。

Related MCP server: NASA MCP Server

🧭 図の注記(figure/1)— 描画系ツールの自己申告

描画系ツール(solar_system_now / sat_ground_track / planetary_orbiter_track / planetary_rover_location_map / sky_map_with_satellites / solar_eclipse_series / moon_phase_map / astronomy_weather〔雨雲・降水画像を返すとき〕 / space_calendar / observing_sheet)は、画像を返すだけでなく structuredContent.figure(schema: "figure/1") に「その図をどう描いたか」を自己申告します。LLM はピクセルから描画規約を推測できないため(高離心率の軌道を「主天体の周りを回る円」と説明してしまう等)、注記をデータとして渡す設計です。

  • view — どの面を(frame)どの投影で(projection)見た図か、なぜその視点なのか(why)

  • primary — 主天体を焦点(at: "focus")に置いたか中心("center")に置いたか、焦点と中心のズレ(center_offset)

  • scale — 線形/対数(type)、実寸か(to_scale)、誇張している要素(exaggerated)

  • conic — 軌道の円錐曲線(kind: ellipse / parabola / hyperbola、a / e / q / apo / c)

  • notes — 図の誤読を防ぐ注記。数値から生成するので図と文が食い違いません

    • 地図タイルが取れなかった場合は「地図タイル N/M 枚を取得できませんでした(図の該当領域は背景色のまま)」も数値から生成します(欠けを黙って捨てると「地図に無い=何も無い」と誤読されるため)

  • verify — 図の自己検証(描いた画素から測った近点/遠点距離、ラベルの線被り画素数、periapsis_check: equality / upper_bound)

    • 近点が画面上で分解できない図(超長距離の楕円では近日点が「誇張した主天体の円盤」の内側に入る)は、画素から近点距離を測っても意味がないため等値検査をせず、periapsis_resolvable: false + 理由 + 上界検査(曲線が焦点から円盤半径以上に近点側へ伸びていないこと=主天体を楕円の中心に置く誤りは依然として検出)に切り替えます。この場合の注記には「この縮尺では図から確認できない」旨が数値から生成されて入ります

  • verify.panel_overlaps_marker — 地図の上に置く情報パネルが現在位置マーカーを隠していないか。パネルは surface_map.panel_placement() がマーカーを隠さない隅へ置き、どの隅でも重なる小さい図ではマーカーをパネルの上に描き直します(描いた後にパネルを重ねるとマーカーが消えるため。実測: 月面の LRO が図の上端に来ると左上のパネルの下に入り、画素検査 marker_pixels が 0 になりました)

  • notes_usage — 注記の扱いをホスト LLM に伝える指示文(「要約・言い換えせず引用すること」)。structuredContent 側にだけ入れます

  • caption — そのまま使える1〜2文の説明

content(人間向け表示)にも同じ注記を ### ⚠️ 図の注記 として出すので、structuredContent を使わないクライアントでも注記は失われません。なお content は人間が読むチャネルなので、LLM への指示文(「要約せず引用してください」等)は入れません(表示に指示文が混ざると読み手に意味不明な文が出るため。指示は docstring と figure.notes_usage = JSON 側に置きます)。

uv run python scripts/check-tools.py --figures   # 描画系の figure/1 を検査(注記が空・verify.ok が偽なら exit 1)
uv run python scripts/check-tools.py --media-links # 画像/音声/動画のリンク先行を検査(画像より前にリンクが無い等で exit 1)
uv run python scripts/check-tools.py --concurrency # 並列ツール呼び出し(single-flight/スレッド逃がし/例外漏れ)を検査
uv run python scripts/check-tools.py --stdio       # 実クライアント経路(stdio)で代表ツールが無応答にならないか検査

🔀 並行ツール呼び出し(LLM が複数ツールを同時に投げる)

LLM は1ターンで複数のツールを並行に呼びます。サーバー側がそれに応えられるかは別問題で、FastMCP は同期関数をイベントループ上でそのまま呼ぶため、素のままだと1つのツールが API 待ちをしている間、他のツール呼び出しは1つも動き出しません(実測: 同一ツール4並列で wall = 各呼び出しの合計 2.55s)。

  • 同期ツールは anyio のワーカースレッドで実行(server.py の _threaded / _reg)。同じ4並列が wall 2.47s・4.0× になりました。実ネットワークでも、別々の地名の astronomy_weather 3並列が 3.93s(逐次合計 11.72s・3.0×)です。

  • 同じ引数の並行呼び出しは1回に集約(cache.ttl_cache の single-flight)。8並列の同一呼び出しでも実行は1回・結果は共有なので、NASA の DEMO_KEY のような共有枠を N 倍消費しません。失敗・「該当なし」も並行呼び出しの後続にだけ短期(15秒)共有します(キャッシュには載せないので、次に来た呼び出しは必ず取り直す=障害回復を遅らせません。実測: 失敗経路の20並列で upstream 20 回 → 1 回)。先頭が例外を投げた場合も、後続が成功した結果はキャッシュに残ります。

  • 描画は Pillow のみ(matplotlib は使いません)。プロセス全体の状態を持つ pyplot を使わないので、図の描画はスレッド並列でも混ざりません(--concurrency が検査)。

  • 共有状態はロックで保護(cache / nasa_budget)。キャッシュされた戻り値は呼び出し側で書き換えません(並行時に他人の結果を壊すため。書き換えるなら deepcopy)。

  • CPU 律速の計算は GIL で並列化しません(Skyfield・Pillow の計算)。並列化が効くのは I/O 待ち(API 呼び出し)で、それが並列ツール呼び出しの主目的です。

  • 検査: uv run python scripts/check-tools.py --concurrency(single-flight/ワーカースレッドへの逃がし/混在4ツールの並列呼び出しで例外漏れ・structuredContent 欠落が無いこと)。

  • ⚠️ 遅延 import するネイティブ拡張は起動前に import 済みにしておきます(server.py 冒頭の import numpy)。stdio サーバーが動き出した後に numpy / skyfield を import すると、import が返らずツール呼び出しが無応答になります(実測: numpy・skyfield.api が HANG。PIL.Image・sgp4・requests は問題なし)。scripts/check-tools.py --stdio が実際に子プロセスを起動して代表ツールの応答を確認します。

🧭 名前解決のフォールバック(表記ゆれ・和名・名前→座標)

「自然な入力をしたのに 0 件/エラー」を防ぐため、名前の解決を name_common.py の共通段階に集約しています(各ツールが個別に対処すると必ず穴が残るため)。

段階

内容

実例(実測)

1. 内蔵テーブル / 既知名

速い・オフライン

M31, iss, hubble

2. 表記ゆれ(空白/アンダースコア/連結/大小)

アーカイブは観測者の入力そのままを持つ

HL Tau → HL_Tau/HLTau も一致(ALMA の target_name)

3. 和名 → 英語名

JA_ALIASES(衛星・深宇宙天体)

「ひまわり」→himawari、「ひので」→29479、「オリオン大星雲」→Orion Nebula

4. 名前 → 座標

Sesame/CDS(SIMBAD・NED 横断・認証不要)

M104/Sombrero/HL Tau → 座標 → 円錐検索(CADC)

5. それでも駄目なら 候補を提示して停止

推測で検索しない

ALMA はアーカイブ内の候補名、CelesTrak は既知の名前一覧を提示

  • JA_ALIASES は 103 キー: 日本の気象・地球観測・科学衛星(ひまわり/だいち/いぶき/しずく/しきさい/みちびき/ひので/あかつき/はやぶさ2…)、有人・輸送(宇宙ステーション/きぼう/こうのとり)、宇宙望遠鏡(ハッブル/JWST/スピッツァー/ケプラー/ガイア…)、中国機(天宮/天和/問天/夢天/神舟/嫦娥…)、深宇宙天体(銀河・星雲・星団17件)、明るい恒星16件。

  • 現役衛星は WELL_KNOWN に NORAD ID を実測登録(CelesTrak GROUP=active の OBJECT_NAME と突合): ひまわり8/9号、だいち2/4号、いぶき/いぶき2号、しずく、しきさい、あじさい、あらせ、れいめい、ひさき、天和/問天/夢天、ISS、ハッブル、ひので 等 → 和名から NORAD ID までオフラインで解決(衛星系キーの 21/61。残りは過去機・番号なしのファミリー名で、曖昧なら候補提示、退役機は「表示できない」と正直に返す)。

  • 適用先: alma_search(表記ゆれ+候補提示)/ cadc_observations(名前→座標のフォールバック)/ satellite_status(和名展開+一致件数の明示)/ sat_tle(和名→NORAD ID 解決+候補提示)

  • ⚠️ 修正の根拠は実測: 以前は cadc_observations("M104") が即エラー、satellite_status(query="ひまわり") と sat_tle(name="ひので") が 0 件、alma_search("HL Tau", band=7) が 0 件でした(すべて現在は解決)。

  • 「名前が見つからない」と「サービスに繋がらない」を区別します。Sesame/CDS に到達できないときは name_common.ResolverUnavailable を投げ、ツールは structuredContent.error="resolver_unavailable" と「ネットワークを確認するか ra/dec を直接指定してください」を返します(実測: 通信断を「M31 の表記が解決できない」と誤案内し、21秒待たせていた)。

🔗 メディアのリンク — インライン表示できないクライアント向け

Hermes Agent のようなリッチなクライアントは ImageContent をそのまま描画しますが、CLI系・Android系のハーネス(codex / opencode など)は画像ブロックを無視するため「画像が生成されたのに何も表示されない」状態になります。そこで メディア本体より前に、アイコン付きの markdown リンクを必ず出します。

種別

出る場所

形

生成画像(描画系10ツール)

content の先頭行

🖼️ [生成した画像を開く: 対象](file:///…) | 保存先: \…``

検索した画像(search_space_images)

各項目の説明の直後

🖼️ [画像を開く: タイトル](URL)

検索した音声(search_space_audio)

各項目の直後

🎧 [音声を開く: タイトル](URL)

検索した動画(search_space_videos)

各項目の直後

🎬 [動画を開く: タイトル](URL) + 🖼️ [画像を開く: タイトル のポスター](URL)

気象衛星の実画像(weather_satellite_now)

content の先頭行

🖼️ [生成した画像を開く: ひまわり9号 最新画像](URL または file:///…) + 保存先

観測判断シート(observing_sheet)

content の先頭行

🖼️ [生成した画像を開く: 観測判断シート(地点)](file:///…) + 保存先

気象庁の雨雲・降水画像(astronomy_weather)

各画像の直前行

🖼️ [画像を開く: ラベル](気象庁のページURL)

EO Dashboard のサムネイル(eodashboard_detail)

説明の直後・画像の直前

🖼️ [画像を開く: タイトル のサムネイル](URL)

APOD の画像URL(apod)

タイトルの直後

🖼️ [画像を開く: タイトル](URL)(動画の日は 🎬 [動画を開く: タイトル])

  • 生成画像は %LOCALAPPDATA%\Temp\space_finder_mcp\out\<tool>_<日時>_<乱数>.<ext> に生バイトのまま保存し、file:// URI と実パスの両方を出します(最新200件を残して自動整理)。

  • 同じパスを structuredContent.image_path にも入れるので、LLM はファイルを再参照できます。

  • URL 内の空白・括弧は %20 / %28 にエスケープします(NASA のアセットURLには空白入りの動画名があり、生のままだとリンクが途中で切れます)。

  • content の並びは常に「リンクを含むテキスト → ImageContent」なので、画像を描けないクライアントでもリンクは必ず見えます。

  • 機械的に検査します — scripts/check-tools.py --media-links(画像ブロックより前にアイコン付きリンクが無い/リンクの文言が統一形式でない/リンク行が空行で区切られていない/structuredContent にURL・保存パスが無い/image_path のファイルが存在しない/配信時(server._threaded)に整形されていない場合は exit 1。実測: メディアを返す全ツール OK)。生成系の docstring には「回答時はこのリンクをそのまま提示してください」と明記しています。

  • リンクの文言は img_common.media_link_line(対象, kind=…) が生成します — 動詞は kind から決まる(画像を開く / 生成した画像を開く / 音声を開く / 動画を開く / ファイルを開く)ので、ツール側で動詞を書かない限り表記は必ず揃います(手書きすると「サムネイル画像を開く: 」「動画を再生: 」のようにばらつく。ゲートの img_common.canonical_media_label() が検出)。

  • 複数のメディアを返すときは、リンクをまとめて先に出し、各リンク行を空行で区切ります — Markdown は同一段落内の単一改行をスペースに畳み込むため、単一改行で組むと隣り合うリンクや caption が 1行に融合します(1枚だけ返すときは段落が分かれるので気付きにくい。実測: astronomy_weather の気象庁画像2枚、複数画像を並べた回答)。配信時に server._delivered が img_common.layout_media_links() で空行を補うので、ツール側で入れ忘れても融合はしません(ゲートの融合検査は配信される形=整形後で行い、整形そのものが働いているかは delivery_issues() が確かめます)。

📝 更新履歴

各バージョンの変更内容は GitHub Releases に記載しています(最新: v0.60.0)。

README では履歴を二重管理しません — 同じ内容を2か所に書くと必ず片方が古くなるため、変更点はリリース時に GitHub Releases の本文へ書きます(手順は CLAUDE.md の「リリース手順」)。

📦 インストール

前提

  • uv(Python 3.11+)

  • 画像を返すツールの日本語表示には OS の日本語フォントを使います(Windows: メイリオ / macOS: ヒラギノ / Linux: Noto CJK 等。無い環境では下記「日本語フォント」参照)

インストール

# リポジトリをクローンして依存インストール
git clone https://github.com/loosephoto/space-finder-mcp.git
cd space-finder-mcp
uv sync

実行

# MCP サーバー起動(stdio)
uv run space-finder-mcp

ローカルで uv run を使うため、uv が PATH にある必要があります。

日本語フォント(画像内の文字)

画像を返すツール(sat_ground_track / moon_phase_map / solar_eclipse_series / sky_map_with_satellites 等)は、図中の日本語を描くために Windows / macOS / Linux それぞれの 標準日本語フォント を自動で探します(img_common.py)。探索順は (1) 環境変数 → (2) OS 標準パス → (3) 標準フォントディレクトリの走査 で、 採用する前に そのフォントが実際に日本語グリフを持っているかを cmap で検証します (名前だけでは判定できないため。例: DejaVu Sans は日本語なし)。

OS

主な採用フォント

Windows

メイリオ(meiryo.ttc)/ 太字はメイリオ Bold(meiryob.ttc)→ Yu Gothic → MS Gothic

macOS

ヒラギノ角ゴシック W3(太字は W6)→ Arial Unicode MS

Linux

Noto Sans CJK JP → IPAex ゴシック → IPA ゴシック → VL ゴシック / Takao ゴシック

日本語フォントが1つも入っていない環境(最小構成の Linux 等)では画像の日本語が**豆腐(□)**に なります。その場合は日本語フォント(例: fonts-noto-cjk / fonts-ipaexfont-gothic)を入れるか、 環境変数で明示指定してください。

export SPACE_FINDER_FONT="/usr/share/fonts/opentype/noto/NotoSansCJK-Regular.ttc"
export SPACE_FINDER_FONT_BOLD="/usr/share/fonts/opentype/noto/NotoSansCJK-Bold.ttc"

現在の解決結果は検証ゲートで確認できます(日本語グリフを持たないフォントを掴んでいれば exit 1)。

uv run python scripts/check-tools.py --fonts

(任意)NASA APIキー

apod・neo_today は api.nasa.gov の無料キーを使います。未設定でも DEMO_KEY で動作しますが、レート制限 30 req/hr/IP と低く、2ツールが同じ枠を取り合います。実用にはキーを推奨します。なお space_weather(DONKI) は 2026-09-30 の URL 移転で認証不要の別ホスト(ccmc.gsfc.nasa.gov/DONKI-API)になり、fireball_reports / neo_close_approach / impact_risk(JPL CNEOS)と space_weather の SWPC フォールバックも認証不要なので、この枠を消費しません。

呼び出し回数はサーバー側で管理しています(nasa_budget.py)— 直近1時間の使用数を数え、枠を使い切っていたらHTTP を投げずに回復までの目安(例:「約30分後に自動的に回復します」)を返します。実際に 429 を受けた場合は Retry-After を尊重し、その間は再試行しません(同じ 429 を繰り返し踏みに行かない)。CelesTrak も短時間の連続リクエストで IP 単位に遮断され(403、または TCP が返らない blackhole)、その間は 1 回の呼び出しが分単位で固まります。接続は (connect 10 秒, read 25 秒) で打ち切り、遮断を受けたらセッション内で記憶して以降は HTTP を出さずに即座に案内を返します(sat_tle / sat_ground_track / tiangong_now / sky_map_with_satellites が該当)。 さらに TLE は代替源へ自動フォールバックします — CelesTrak 遮断中は認証不要の公開ミラー(tle.ivanstanojevic.me → db.satnogs.org)から同じ衛星の TLE を取得し、content / structuredContent にどちらから取ったかを明示します(tle_source。代替源の TLE を「CelesTrak の TLE」と書かないため)。グループ検索(group=)は代替源に無いので、遮断中はその旨を案内します。

キーの取得方法(無料・即時発行): api.nasa.gov にアクセスし、メールアドレスを登録するだけで 無料の API キーが即時発行されます。無料開発者キーのレート制限は 1時間あたり 1,000 リクエスト です(実用に十分な容量)。登録時に入力したメール宛てに確認が来ます。

# (a) 環境変数で渡す
export NASA_API_KEY="your_key_here"

# (b) リポジトリ直下の .env に書く(MCPクライアントの設定にキーを書きたくない場合)
cp .env.example .env   # 編集して NASA_API_KEY=... を記入(.gitignore 済み・コミット禁止)

優先順位は MCPクライアントの env > リポジトリ直下の .env です(未設定なら DEMO_KEY)。

429 のクールダウンは API キーごとに保持します。DEMO_KEY で 429 を受けたあとも、開発者キーを設定していれば apod / neo_today は止まりません(キー別の残枠・待ち時間は nasa_budget.check() / status() が返します)。

キーの取り扱い: 応答に含まれる API キーは伏せ字化します(nasa_budget.redact() → api_key=***、budget.key は DEMO_KEY / custom のみ)。requests の例外文字列が URL ごとキーを含むため、そのまま返すと利用者のキーが漏れるためです。

(任意)学術文献APIキー

space_literature_search / planetary_evidence で利用する追加ソースのキーです。3つとも任意で、未設定でも OpenAlex / Crossref / NASA NTRS / JAXAリポジトリ / J-STAGE / CiNii / Zenodo / DataCite は引き続き利用できます。キー未設定のソースはスキップされ、理由を sources[].note に返します。

  • ADS_API_KEY — NASA ADS の無料トークン。登録して取得し、設定すると ADS の書誌検索を利用できます(上限 5,000 リクエスト/日)。

  • S2_API_KEY — Semantic Scholar の API キー。未設定でも検索を試みますが、共有レート制限により HTTP 429 になる場合があります。

  • WOS_API_KEY — Clarivate Web of Science Starter API のキー。登録が必要です。無料枠は 1 リクエスト/秒・50 リクエスト/日で、被引用数は返りません。

設定先は MCP クライアントの環境変数(優先)またはリポジトリ直下の .env です(変数名と空欄の例は .env.example を参照)。キーはサーバー側でのみ扱い、クライアントへの応答には含めません。

ESA Copernicus について(認証付きダウンロードは非対応)

copernicus_search の検索とプレビューURL取得は認証不要で動作します。本サーバーは OAuth2 による認証付きダウンロードは行いません(CDSE_CLIENT_ID 等のクレデンシャルは使用しません)。実際の画像ダウンロードが必要な場合は Copernicus Data Space で取得してください。


🔌 MCPクライアントへの登録

Claude Code

cd /絶対パス/space-finder-mcp
claude mcp add -s project space-finder -- uv --directory "$(pwd)" run space-finder-mcp
claude mcp list   # 確認(space-finder が表示されればOK)

-s project はリポジトリ直下に .mcp.json を作ります(共有向け)。個人利用なら -s user を指定します。

プロジェクトガイドは CLAUDE.md、開発規約は .claude/rules/ にあります(Claude Code が自動で読み込みます)。

Codex

codex mcp add space-finder --env NASA_API_KEY=<your_key> -- uv --directory <絶対パス>/space-finder-mcp run space-finder-mcp
codex mcp list

--env は省略可(その場合は .env か DEMO_KEY を使用)。エージェント向けガイドは AGENTS.md です。

Claude Desktop / Cursor / その他(claude_desktop_config.json / mcp.json)

同梱の mcp.json を参考に設定してください(args のパスは環境に合わせて書き換えます)。

{
  "mcpServers": {
    "space-finder-mcp": {
      "command": "uv",
      "args": ["--directory", "/絶対パス/space-finder-mcp", "run", "space-finder-mcp"]
    }
  }
}

env を書く場合は空文字を入れないでください(空だと DEMO_KEY にフォールバックしません)。キーは env か .env のどちらか一方に置けば十分です。

エージェント向けドキュメント

ファイル

用途

CLAUDE.md

Claude Code 用プロジェクトガイド(セットアップ・規約・検証・リリース手順)

AGENTS.md

Codex など AGENTS.md を読むエージェント向けガイド

SKILL.md

エージェント向けスキル定義(67ツールの仕様・使用例・キャッシュ・注意事項)

.claude/rules/

開発規約(コーディング・検証ゲート・データ出典)

Hermes Agent

hermes config set mcp_servers.space-finder-mcp.command uv
hermes config set 'mcp_servers.space-finder-mcp.args' '["run", "--project", "/絶対パス/space-finder-mcp", "space-finder-mcp"]'
# 反映には再起動

🛠️ ツール一覧

登録ツールは 67本。カテゴリ別の内訳:

カテゴリ

本数

補足

宇宙・天文イベントカレンダー

4

space_calendar / calendar_events / calendar_event_add / calendar_event_remove

ロケット打ち上げ・逆引き

4

打ち上げ予定(世界・中国・ロシア)と「最初/記録」の逆引き

NASA 日次・宇宙天気

3

APOD・NEO・宇宙天気

メディア(画像/音声/動画)

3

NASA Image & Video Library ほか

各国宇宙機関・地球観測

20

うち AWS Earth Search 2本(stac_collections / stac_search)

衛星・軌道

6

TLE・地上軌道・ISS/天宮の現在位置ほか

天体位置・画像合成

7

太陽系俯瞰・星空・日食・月齢・カレンダー画像ほか

観測支援・天文データ

14

うち 観測判断シート 1本(observing_sheet)・天体カタログ 2本(object_lookup / catalog_search)・系外惑星 1本(exoplanet_search)

気象衛星リアルタイム画像

1

weather_satellite_now

天体異常系

3

火球・接近・衝突リスク

学術文献

2

OpenAlex/Crossref・NTRS/J-STAGE/CiNii

合計

67

全ツールを実呼び出しで検証済み

外部APIの障害・レート制限時は、例外ではなく CallToolResult のエラーとして返します。

ツール

できること

データ源

認証

reverse_lookup

「史上初の宇宙望遠鏡は?」等をカテゴリ+国+時期から解決

Wikidata SPARQL

不要

upcoming_launches

今後のロケット打ち上げ予定(日時・機体・射場・状態)

Launch Library 2

不要

china_launches

中国のロケット打ち上げ予定(長征・Shenzhou・LandSpace等・射場・ミッション)

Launch Library 2

不要

russia_launches

ロシア(Roscosmos)のロケット打ち上げ予定(ソユーズ・Progress・Luna等・射場・ミッション)

Launch Library 2

不要

apod

今日(指定日)の天文写真

NASA Open API

キー(任意)

neo_today

今日地球に接近する小惑星

NASA Open API

キー(任意)

search_space_images

惑星・衛星の画像検索+チャット内インライン表示(既定は先頭1枚・inline_max で増減)

NASA Image & Video Library

不要

search_space_audio

宇宙音声の検索(kindで効果音/ポッドキャスト切替)

NASA / Sounds from Beyond

不要

search_space_videos

宇宙動画の検索+再生URL(解像度別・字幕付き)

NASA Image & Video Library

不要

isro_data

インドISROの人工衛星・ロケット・顧客衛星・センター一覧/検索

ISRO公式API (github.com/isro/api)

不要

copernicus_collections

ESA Copernicus の衛星データコレクション一覧

Copernicus Data Space (STAC)

不要

copernicus_search

ESA Copernicus の衛星画像を STAC で検索(領域・日時・雲量)

Copernicus Data Space (STAC)

不要(検索・プレビューのみ)

jaxa_datasets

JAXA Earth の地球観測データセット一覧(ALOS/GSMaP/GCOM等)

JAXA Earth API (STAC COG)

不要

jaxa_dataset_search

JAXA Earth データセットをキーワード検索

JAXA Earth API (STAC COG)

不要

csa_dataset_search

カナダCSAオープンデータ(RADARSAT等)を検索

CSA Open Data Portal (CKAN)

不要

inpe_collections

ブラジルINPEの衛星データコレクション一覧

INPE BDC STAC

不要

inpe_search

ブラジルINPEの衛星画像(CBERS・Amazonia-1等)をSTAC検索

INPE BDC STAC

不要

dlr_collections

ドイツDLRの地球観測コレクション一覧(Sentinel-2 MAJA・EnMAP・TROPOMI等)

DLR EOC STAC

不要

dlr_search

ドイツDLRの地球観測データをSTAC検索(領域・日時・雲量)

DLR EOC STAC

不要(検索・プレビューのみ)

roscosmos_collections

ロシアRoscosmosオープンデータのコレクション一覧(Elektro-L・Arktika-M・Meteor-M)

Roscosmos open data STAC

不要

roscosmos_search

ロシアの気象衛星の全球画像(Elektro-L・Meteor-Mモザイク等)を検索

Roscosmos open data STAC

不要

sat_tle

全世界の衛星の軌道要素(TLE)を取得(ISS・ハッブル・気象衛星等)

CelesTrak (NORAD)

不要

uk_stac_collections

英国EO DataHubのコレクション一覧

UK EO DataHub STAC

不要

uk_stac_search

英国EO DataHubの衛星・気候データをSTAC検索

UK EO DataHub STAC

不要

cnes_status

フランスCNESのポータル(THEIA/GEODES)到達状態・概要

CNES THEIA/GEODES

不要(ダウンロードは要登録)

astronomy_weather

天体観測に最適な暗い時間帯を予報(薄明=太陽高度(sun_alt_max 既定 -15°)・雲量・視程・風速・降水・月相・月明かりから判断)。日本国内の地点では気象庁の雨雲・降水画像(解析雨量・降水短時間予報パネル+ナウキャスト、雷の有無も確認)を画像で同時に返す(include_rain=false で無効化)

Open-Meteo + 気象庁(ナウキャスト・解析雨量)

不要

constellation_now

指定地点・時刻で太陽・月・惑星の高度・方位・星座を計算(観測可否判断)

Skyfield + JPL de421

不要

astronomy_news

最新の天文ニュース・「今週の星空ガイド」を取得(観測/ニュース絞込可)。取得不可時は他ソースへ自動フォールバック

Sky & Telescope / Universe Today / NASA / Phys.org RSS

不要

mars_rover_status

火星探査ローバー(キュリオシティ等)の現在の状況・天気・ソルを表示

NASA Mars Weather

不要

power_climate

任意地点の過去の気候・太陽エネルギー統計(気温・日射量・風速)

NASA POWER

不要

eso_seeing

ESO パラナル天文台(チリ, VLT)のリアルタイム大気コンディション(シーイング・可降水量・気象)

ESO ASM API

不要

cadc_observations

CADC(カナダ天文データセンター)の観測データ検索(HST・ジェミニ等)

CADC TAP

不要(画像DLは一部要登録)

gcn_alerts

NASA GCN(General Coordinates Network)の過渡天体速報。GRB・X線新星・重力波などの GCN Circular を期間(days 1〜60)/キーワード(query)で新しい順に一覧し、circular_id で1件の本文(投稿者・観測時刻・本文)まで返す。一覧は公開アーカイブの HTML が既定(サイト内部の JSON ルートは 403 を返すことがあるためフォールバック)。⚠️ 機械可読の Notices は Kafka 配信のため対象外

NASA GCN (gcn.nasa.gov)

不要

mast_observations

MAST(NASA/STScI の宇宙望遠鏡アーカイブ)の観測データ検索。JWST・ハッブル(HST)・TESS・Kepler・GALEX 等を、天体名(和名可・Sesame で座標解決)/座標コーン/装置(部分一致)/データ種別/観測日で検索。観測ID・装置・観測日・校正レベル・フィルタ・Mast.Caom.Products による FITS のダウンロードURL(include_products=true)まで返す。preview_image=true なら先頭観測のプレビュー画像をチャットにインライン表示(🖼️リンク先行+保存パス)。校正用露出(BIAS/DARK)は既定で除外。⚠️ MAST は混雑時に1クエリ 60 秒級(実測)=結果は30分キャッシュ

MAST Mashup API

不要

alma_search

ALMA(アルマ望遠鏡)科学アーカイブの観測データ検索(観測対象・座標・周波数帯・公開/要権限)

ALMA Science Archive (NAOJ, IVOA TAP)

不要

object_lookup

天体の素性を SIMBAD から引く。天体名(和名可・Sesame で英語名へ展開)から主名・天体種別・スペクトル型・年周視差(→ pc / 光年)・固有運動・視線速度・参考文献数・等級(U/B/V/R/I/J/H/K)を返す。neighbors で周辺天体を角距離順に列挙。⚠️ SIMBAD の ADQL は ORDER BY DISTANCE() 非対応のため距離順はサーバー側で計算

SIMBAD TAP (CDS)

不要

catalog_search

観測星表の円錐検索(VizieR)。2MASS / Gaia DR3・EDR3 / ヒッパルコス / AllWISE / unWISE / Pan-STARRS1 / SDSS DR16・DR12 / NGC を、天体名(和名可)または座標から検索し、星表の列名・単位そのままで返す(生の表名 II/246/out も可)。未知の星表は推測せず候補を提示して停止。⚠️ 半径は分指定(0.1分=6秒が下限)

VizieR ASU (CDS)

不要

exoplanet_search

系外惑星(NASA Exoplanet Archive)。恒星名/惑星名の部分一致(和名は「ケプラー22」→ Kepler-22 b のように英字名へ展開)・発見方法(日本語可)・恒星距離・発見年・地球類似条件(半径0.5〜2 R⊕・平衡温度200〜320 K)で検索し、軌道周期・軌道長半径・半径・質量・平衡温度・恒星型・距離・TIC/Gaia ID を返す。0件時は候補の恒星名を提示。出典 DOI 10.26133/NEA12

NASA Exoplanet Archive (TAP)

不要

space_literature_search

惑星科学・宇宙の一次文献(論文・技術報告)を横断検索して根拠(DOI付き)を返す。OpenAlex(要旨・被引用数・OAリンク)・Crossref・NASA NTRS(技術報告+PDF)・JAXAリポジトリ・J-STAGE・CiNii Research・Zenodo・DataCite を1回で横断し、DOI/タイトルの重複を統合。日本語クエリは語彙辞書+和名テーブルで英語語へ置換してから英語圏ソースへ投げる(実測: OpenAlex/Crossref は日本語クエリだと無関係な文献を返すため)。sort(関連度/被引用数/年)・year_from/year_to・min_citations・open_access_only・planetary_only(惑星科学概念に限定)・sources で絞り込み。⚠️ 返すのは**文献(書誌)**で観測データではない(観測は mast_observations / alma_search / cadc_observations)

OpenAlex / Crossref / NASA NTRS / JAXAリポジトリ / J-STAGE / CiNii / Zenodo / DataCite

不要(ADS_API_KEY・S2_API_KEY・WOS_API_KEY を設定すると ADS・Semantic Scholar・WoS も使う)

planetary_evidence

天体(惑星・衛星・小天体・探査機)の文献的な裏づけをまとめて返す。①名前解決(Sesame/CDS で和名→英語名→座標)と、②その天体の文献を英語圏+日本語の両方から集めて提示(既定は被引用数順。惑星科学概念で絞った OpenAlex を上位に置く=実測「火星」で MOLA / OMEGA-Mars Express / ALH84001 が上位に来る)。⚠️ 太陽系天体は時刻で位置が変わるため固定座標を持たない旨を caveats に明記

OpenAlex / Crossref / NASA NTRS / JAXAリポジトリ / J-STAGE / CiNii + Sesame/CDS

不要

radio_sources_now

TART オープン電波望遠鏡が「いま観測できる電波源」(GNSS・静止衛星等)を仰角順に表示

TART source catalog (NZ)

不要

sky_map_with_satellites

指定地の空を地上から見上げた画像(既定=地上視点パノラマ: Hipparcos実星表の恒星・天の川・街並み・方位目盛り・惑星・人工衛星。太陽高度で昼/夕方/朝焼け/薄明/夜の空色が変わり、今は見えない天体は○で位置を示す。span/az0 で視野、lp で光害、show で依頼表示を指定。engine は互換引数で、旧 "simple"/"accurate" を渡しても同じ描画(ground)になる)

JPL de421+Skyfield / Hipparcos(VizieR) / CelesTrak+SGP4

不要

solar_system_now

太陽を中心とした太陽系の惑星・小惑星・探査機・彗星の現在位置俯瞰図(ハレー等の周期彗星とC/彗星・ボイジャー等の遠方天体まで対数縮尺で自動拡張表示)。描画は 1 本(黄道面を既定で斜め上・仰角34°・方位28°・弱い透視から見た俯瞰。視点は elevation/azimuth/dolly で変更可)で、奥行きで線の太さと明度を変え(手前が明るい)、画面上の距離はAUに比例しないので距離は数値を使う(figure.view.projection="oblique"・figure.verify.method="oblique_expected_px+marker_core")。projection="top"(旧・真上図)は廃止したが引数は残し、指定されたときは同じ斜め俯瞰で描いてその旨を figure.notes に出す。カメラは elevation(仰角 0〜90・既定 34)/azimuth(方位 -360〜360・既定 28)/dolly(透視の強さ=画面半径の倍数 0〜20・既定 4.2、0 で完全な正射影)で変えられ、実値は題名・figure.view.description・structuredContent.camera に出る(範囲外・非数値は黙ってクランプせずエラー結果で返す)。engine も互換引数で、"accurate" は線形縮尺(相対距離が正確)を選ぶ(旧 matplotlib 版の情報だけを残した)。view="comet_orbit" で彗星の軌道面ビュー(太陽=焦点の楕円/e≥1 は双曲線の枝)、view="asteroid_orbit" で指定した小惑星(asteroid)の楕円全体と現在位置を表示(SBDB要素のケプラー二体伝播・1天体ずつ)。comet にカンマ区切りで複数(または comet2、最大4天体)指定すると 1彗星=1パネルで1枚に並べる(パネルごとに軌道面と縮尺が違う旨は figure.notes に自動生成)。view="apparition" で彗星の見え方チャート(地心距離・日心距離・予想光度・太陽離角の時系列、days で期間指定。1天体ずつ)。route=True で彗星の通過経路(軌道)を俯瞰図に破線で重ねる(近日点・遠日点は◇+日付。近日点の日付は SBDB の2体近似と JPL Horizons の n 体解を併記し、差を日数で注記。対数縮尺では線の形は実際の楕円と一致しない旨を注記に自動生成し、線形版は形が本当の軌道)。probe を併用した route=True では探査機の実際の飛行経路(JPL Horizons の実状態ベクトル)を破線で重ね、実際のスイングバイを◇+日付+距離で示す(詳細は下の「探査機のスイングバイ経路」)。range_au で表示範囲(太陽からの距離の上限 AU)を指定でき、range_au=10 なら土星(9.5 AU)より内側だけを表示して内惑星を大きく見せられる(2=火星まで/5.2=木星まで/30=海王星まで。範囲外の天体・目印・軌道の円は描かず、figure.notes と structuredContent.out_of_range に数値付きで列挙。0.5 AU 未満はエラー)。probe 指定時は「1光日」(173.1446 AU=25,902,068,371 km)を破線の円で描き、1光日に達していない探査機ごとに到達時の方向(◇=現在の向きで 1 光日に達する点)・到達予測日(日心距離ベースの線形外挿=probes[].light_day_eta_date)を出す(light_day.projected_rings と figure.verify.light_day.rings に各◇を列挙))

JPL DE421+Skyfield / JPL SBDB / JPL Horizons

不要

solar_eclipse_series

日食(太陽が月に欠ける過程)の時系列パネル画像(7枚・食分と太陽高度・次回日食の自動検索=約4年(1400日)先まで・max_magnitude対応。地平線下で見えない食は返さない)

JPL DE421+Skyfield

不要

moon_phase_map

月齢マップ(月の満ち欠け)。layout="calendar"(既定)で1か月の日別格子(日月火水木金土・月齢・照度・月相)、layout="lunation" で1朔望月(朔→朔)の時系列パネル。輝面の向きは太陽の位置角から計算(月齢からの決め打ちをしない)。朔・望・上弦・下弦の時刻を現地時間で併記

JPL DE421+Skyfield

不要

eodashboard_collections

EO Dashboard(NASA×ESA×JAXA共同)の173データセットをテーマ・機関・キーワードで検索

EO Dashboard (GitHub catalog)

不要

eodashboard_detail

EO Dashboardの1データセットの詳細(衛星・センサー・説明・画像・参照リンク)

EO Dashboard (GitHub catalog)

不要

space_weather

宇宙天気(太陽フレア・CME・地磁気嵐・太陽粒子現象)と予報(kind="forecast": フレア発生確率 C/M/X・活動領域別確率・NOAA 3日予報)。DONKI が障害・URL 変更のときは認証不要の NOAA SWPC(Kp・NOAAスケール・GOES X線・フレアイベント(直近7日)・太陽風・陽子・警報・黒点)へ自動切替(出典を明記)。予報は DONKI に無いため常に SWPC から取得

NASA DONKI(CCMC)→ NOAA SWPC(フォールバック)/予報は NOAA SWPC

不要

fireball_reports

火球(大気圏突入)の観測記録(直近1〜1825日・衝突エネルギーの下限指定可)。緯度経度・突入高度・衝突エネルギー(kt)・放射エネルギー(J)・突入速度(成分から算出)。広島型原爆(約15kt)との比を併記。⚠️ 隕石の回収情報ではなく大気圏突入の観測。呼ぶと結果がカレンダーの蓄積ストアに入り、後日 space_calendar / calendar_events に出ます(calendar_stored に件数)

NASA/JPL CNEOS Fireball Data

不要

neo_close_approach

小惑星・彗星の地球接近(1〜365日先・距離上限 au・kind="all"(既定=小惑星+彗星)/ "asteroid" / "comet")。地心距離を au / km / 月距離で併記し、既知の直径(無ければ絶対等級 H から推定・アルベド0.14 仮定。彗星は H が無いので不明のまま)と接近時刻の不確かさを返す。kind="all" では各行に**種別(小惑星/彗星)**を併記する。hazardous_only で PHA のみ(PHA は小惑星の区分なので彗星は含めない)。⚠️ 接近は衝突ではない。呼ぶと結果がカレンダーに蓄積され、後日 space_calendar / calendar_events に反映されます(接近時刻は TDB・UTC とは最大約1分差)

NASA/JPL CNEOS SBDB CAD

不要

impact_risk

将来の衝突リスク(JPL Sentry)。累積衝突確率を確率+「何回に1回」で表示し、パレルモスケール・想定時期・想定衝突数を返す。designation(仮符号/番号のみ・和名不可)を指定すると仮想衝突(VI)の一覧まで。⚠️ 確率は特定の日付ではなく数十年〜百年の幅に対する値なのでカレンダーには置きません

NASA/JPL CNEOS Sentry

不要

stac_collections

AWS Earth Searchの衛星データコレクション一覧

AWS Earth Search STAC

不要

stac_search

Sentinel-2 / Landsat / NAIP / DEM をSTAC検索(場所・日時・雲量)

AWS Earth Search STAC

不要

iss_now

ISS(国際宇宙ステーション)の現在位置を取得し Googleマップリンクで表示

Open Notify

不要

sat_ground_track

任意の人工衛星(ISS・ひので・ハッブル等)の現在位置と地上軌道を地球地図にプロットした画像を返す。CelesTrak TLE + Skyfield(SGP4) で真下の点・高度・速度を計算し、NASA Blue Marble 地図に軌道トレイルを重ねる

CelesTrak + Skyfield + Blue Marble

不要

planetary_orbiter_track

任意の天体(月・火星・水星・タイタン等)を周回する探査機の現在位置と軌道トレイルを、その天体の地図にプロットした画像を返す。mode="orbit3d" を指定すると、天体を中心に置いた 3D の斜め俯瞰(カメラは elevation/azimuth/dolly=solar_system_now と同じ引数・同じ検証)で、軌道面の傾斜角・高度の幅・順行/逆行を図と数値で示す(傾斜角は JPL Horizons の接触軌道要素 REF_PLANE=BODY EQUATOR の IN を使い、図中に赤道面・軌道面・傾斜角の弧・近点/遠点・現在位置を描く。figure.kind="orbit3d")。地図版は JPL Horizons の状態ベクトルを IAU 自転モデルで天体固定座標(緯度経度・高度)に変換し、NASA Trek の等角図法地図に重ねる。span_deg=360で天体全面表示にも対応。過去機(かぐや等)は運用終了を案内し、落点が公表されている機体は落点を地点マーカーで描いた地図(figure.kind="impact_site_map")を返す。sites="apollo"(または "apollo11"〜"apollo17", "all", "newcrater")で 地点マーカー図(figure.kind="landing_site_map"/木星は impact_site_map)も返す。接近通過(フライバイ)対応: orbiter にミッション名(europa clipper/juice/bepicolombo/hera/psyche/lucy/new horizons/はやぶさ2/juno/parker solar probe/solar orbiter/mmx と和名)を指定でき、flyby=True で最接近(CA)を自動探索して表示時刻と地図の中心を CA に置き直し、最接近時刻・高度・相対速度・最接近点を図と structuredContent.closest_approach に出す(ca_hours で探索範囲、既定 ±24 時間。天体半径の50倍より遠い「最小」は接近通過と呼ばない)。対象天体に**ガリレオ衛星(イオ・エウロパ・ガニメデ・カリスト)**を追加(全球画像ベースマップ)。地点マーカー図(sites=)は18天体(月・火星・水星・金星・タイタン・ベスタ・ケレス・イオ・エウロパ・ガニメデ・カリスト・木星・土星・天王星・海王星・冥王星・ベンヌ・リュウグウ)に対応し、全球等角図がある天体は地形画像の上に、無い天体(リュウグウ)は緯度経度グリッドの上に公表座標を描く(全球図は NASA Trek のタイル/USGS の全球モザイク/Hubble OPAL の全球図(気体惑星)/New Horizons・OSIRIS-REx のモザイクを天体ごとに自動選択)

JPL Horizons + NASA Trek / USGS Astrogeology / Hubble OPAL (STScI) / NASA NSSDC / PDS

不要

planetary_rover_location_map

任意の天体面を移動する探査ローバーの現在地をその天体の地図中心に示した画像(走行経路・着陸点)。火星は NASA MMGIS の位置データと NASA Trek の等角地図を合成。同じ天体にあるほかの人工物着陸地点は黄枠●で重ねる(show_sites=false で非表示。例: 火星のマルス2/3号・バイキング、月ではサーベイヤー3号)。フォボス(MMX / IDEFIX)にも対応 — 着陸地点は未公表なので site_lat/site_lon(東向き正)または site_lon_w(西向き正)で任意の場所を描き、未指定なら着陸候補条件の緯度帯 ±30°を明示。IAU/U.S. Gazetteer に着陸地点が公表されれば自動検出。月にも対応 — body="moon" でアポロ11〜17号・ルノホート1/2号・玉兔号/玉兔2号を表示。2 段構えの図(左: Trek の月面地図に着陸地点と近隣の着陸地点/右: メートル単位の局地サイトプラン)で、LM・ALSEP・LRRR・LRV 最終駐車地点・アメリカ国旗を一次情報が公開する距離+方位だけから求めた位置で描く。位置の公開値がない機材(例: アポロ11号の旗)は図には描かず凡例に「位置の公開値なし」と記す

NASA MMGIS + Trek WMTS + USGS 公式全球図 + IAU Gazetteer + NASA NSSDCA(月面遺跡座標) + NASA ALSJ(旗・LRV 最終駐車地点)

不要

weather_satellite_now

GEO/LEO気象衛星19機(ひまわり9号・GOES-18/19・Meteosat・FY・GK-2A・INSAT・NOAA-20/-21・SNPP・Metop-B/C・FY-3D)の公開画像。ひまわり9号以外は配信元の固定プロダクトで、size/band/lat/lon は効かない(実寸は structuredContent.size_px)。GEOは最新フレーム、LEOは日次全球合成。ひまわり9号は気象庁 気象衛星センター(MSC)のリアルタイム画像(601×601・10分間隔・約23時間保持)から全帯域を取得する: 可視 b03/赤外 b13/水蒸気 b08/夜間マイクロフィジクスRGB ngt/昼間RGB dms/自然色 dnc。夜の観測可否を判断する図では可視は真っ暗なので band="infrared" か "night_rgb" を使う。配信元は実画像の代わりに全黒のプレースホルダ(実測 550×550 1bit・444 バイト)を返すことがあるため、JPEG マジック・バイト数・色数を測って実画像と確認できたフレームだけを返し(structuredContent.image_verified)、駄目なら次の時刻・予備源(himawari.asia の true color)へ送る。lat/lon/place を渡すと、全円盤+日本域拡大+観測地点マーカー+明暗スケールを1枚(1500×880)に焼き込んだ合成パネルを返す(緯度経度→画素は静止軌道・東経140.7度からの透視投影。地点マーカーの実画素と切り出しの色数を structuredContent.panel に残す)。取得不可は restricted/unavailable/non_image_product の理由コードで返す

JMA MSC(himawari real-time)/himawari.asia(NOAA STAR)/EUMETSAT WMS/CMA-NSMC/KMA/IMD/NASA GIBS

不要

observing_sheet

天体観測の判断シートを1枚で返す。判定(○/△/×=その夜の予報雲量の最大値)+雲量の推移(今夜/明日の夜・1時間ごと・月の出線・20/50% の色分け)+ひまわり9号 赤外(日本域を拡大・観測地点マーカー)+気象庁ナウキャスト(実況/+60分)。予報(雲量の棒)と実況(衛星・雨雲)はタグで区別し、雨雲は「現在」であることを明記(今夜の降水は雲量の予報を見る)。日本国外・気象庁の障害時は衛星だけの軽量版に落ちる

Open-Meteo + Skyfield / JMA ひまわり9号(MSC) / JMA ナウキャスト

不要

space_calendar

宇宙・天文イベントカレンダー(月グリッド図+JSON)。打ち上げ(LL2 の月範囲クエリ・日付精度 net_precision が Day/Hour/Minute/Second の行だけを日付セルに配置)・天文現象(Skyfield のローカル計算: 月相・二十四節気・惑星の衝/合/内合・最大離角・日食月食・流星群)・公開イベント(国立天文台+JAXA の施設一般公開・特別公開=ファン!ファン!JAXA! の施設見学ページと宇宙科学研究所のイベント表。告知済みのみを載せ、取得日を窓にして毎日取り直します)・小天体イベント(小惑星接近・火球観測。neo_close_approach / fireball_reports の呼び出し結果を蓄積したもの=カレンダー自身は JPL を叩かないので未蓄積の月は空)・自分の予定を重ねて描く。取得結果は蓄積ストアに溜め、要求月 M に対して窓 [M-1, M+2] を確保し未取得・期限切れの月だけ取りに行く(2回目は API 0 回)。NASA の公式リスト(WP REST)と照合した行には公式URLを付与

Launch Library 2 + JPL DE421/Skyfield + 国立天文台 + JAXA + nasa.gov

不要

calendar_events

蓄積済みイベントの一覧(図を描かず外部APIも呼ばない軽い経路)。打ち上げ・天文現象・小惑星接近・火球観測(neo_close_approach / fireball_reports の呼び出しで蓄積されたぶん)・公開イベント・自分の予定を日付順に返す

蓄積ストア(ローカル)

不要

calendar_event_add

自分の予定をカレンダーに追加(ローカル保存・外部送信なし)。日付は 2026-10-24 / 10月24日 形式、時刻・終了日・繰り返し(毎日/毎週/毎月/毎年)対応。フローティングなローカル日時なので place を変えても予定の日付は動かない

ローカル(%LOCALAPPDATA%\space-finder-mcp)

不要

calendar_event_remove

自分の予定を削除(id か title[+date])。冪等(既に無ければエラーにしない)。同名が複数あるときは削除せず候補を提示して停止

ローカル

不要

satellite_status

世界中の気象・地球観測衛星の運用ステータス・軌道・打ち上げ日(Roscosmos等)。カタログ全1,000件超を走査し、query は一致度順(acronym 完全/前方一致 → 名称の語境界 → 部分一致のみ)で提示

WMO OSCAR

不要

qzss_status

みちびき(準天頂衛星システム QZSS)。既定では超速報 SP3(192エポック×15分≒48時間分の精密軌道)を解析し、各機の現在の緯度・経度・高度、東京からの仰角・方位、準天頂軌道の8の字の振れ幅を返す(J07 から PRN 表へ対応づけ、未対応 ID は ID のまま表示)。SP3 の全ゼロ座標など無効値は除外し、structuredContent.invalid_satellites に理由を返します。rapid-orbit / clock / erp / almanac / ephemeris / l1s / l6 / anpi(安否確認)/ naqu は最新ファイル一覧+DLリンク。⚠️ 提供元明記の非商用利用のみ・正確性非保証

内閣府 QZSS 公開アーカイブ API

不要

cnsa_status

中国CNSA系衛星データポータル(風雲/NSMC・高分/CNSA-GEO・CBERS/CRESDA)の到達状態・概要+認証不要の代替経路

CNSA各公式ポータル

不要(ダウンロードは要登録)

tiangong_now

天宮(Tiangong)中国宇宙ステーションの現在位置(SGP4伝播+Googleマップ表示)

CelesTrak TLE + SGP4

不要


📚 学術文献(惑星の根拠)— 使えるAPIの実測結果

惑星・衛星の説明を Wikipedia / Wikidata と LLM の既存知識だけで書くと根拠(一次文献)を示せません。 そこで公開の書誌 API を実測し、認証不要で実際に使えたものだけを space_literature_search / planetary_evidence に組み込みました(2026-09 実測)。

API

実測結果

本サーバーでの扱い

OpenAlex

200。要旨(abstract_inverted_index を復元)・被引用数・OAリンクを返す。⚠️ search=(全文)は日本語クエリを解釈できず無関係な文献を返す(実測:「月 永久影 水氷」→ IPBES 生物多様性評価レポート、「火星 大気脱出」→ 草津白根火山)。裸の天体名は惑星科学概念(concepts.id:C152551177)で絞ると精度が上がる(実測:「Mars」単独で R 言語マニュアルが1位 → 絞ると THEMIS/MSL/MAVEN)

既定ソース(title_and_abstract.search を使用)

Crossref

200。⚠️ select に language を入れると HTTP 400(select-not-available)。裸の天体名で query.bibliographic を使うと無関係な高被引用論文を返す(実測:"Mars" → 遺伝学論文)

既定ソース(2語以下は query.title、3語以上は query.bibliographic)

NASA NTRS

200。技術報告+PDF リンク(ミッション設計・探査計画に強い)

既定ソース

JAXAリポジトリ(WEKO3)

200。日本語クエリが効く(「はやぶさ2 リュウグウ」で9件)

日本語ソース

J-STAGE

200(Atom)。⚠️ ERR_001 は「該当なし」でエラーではない("大気流出" は ERR_001、"火星" は status=0 で159件)。WARN_002 は結果を伴う警告。material/article_title は使えない→keyword を使う。応答に charset が無く r.text は文字化けするので bytes を UTF-8 で解釈する

日本語ソース(利用規約に従い「表示情報提供元: J-STAGE」+リンクを表示)

CiNii Research

200(OpenSearch JSON)

日本語ソース

Zenodo / DataCite

200。データセット・プレプリントの DOI

sources="all" で使用

NASA ADS

トークン無しは 401。無料トークン(要登録・5,000req/日)で使える

ADS_API_KEY を設定したときだけ使う

Semantic Scholar

キー無しは 429(共有枠。待っても回復しなかった)

S2_API_KEY を設定したときだけ使う

Web of Science(Starter)

キー無しは 401。無料枠は登録制・1req/s・50req/日・被引用数なし

WOS_API_KEY を設定したときだけ使う

arXiv API

本環境からは UA を変えても HTTP 406

実装しない(取得できないものを載せない)

JDreamIII / J-GLOBAL

JDreamIII は JST の有償サービス(要契約・API も別契約)。J-GLOBAL WebAPI も MyJ-GLOBAL 登録+キー交付が必要

実装しない(日本語文献は J-STAGE / CiNii / JAXAリポジトリで代替)


📖 ツール詳細

🔍 reverse_lookup — 逆引き歴史Q&A

「初めて」「記録」「〜による発見」など、カテゴリを横断して最初のもの・記録を Wikidata の構造化データから解決します。検索対象の種別を自動判別します。

  • 機器系(宇宙望遠鏡・探査機・人工衛星・天文台): instance-of + 打ち上げ日 + 国 で検索

  • 人系(宇宙飛行士): 職業(P106) + 生年 + 国籍 で検索

Q: 米国で最初に打ち上げた宇宙望遠鏡は?
A: → 1966年の OAO 系観測機が最古として返る

Q: 日本の最初の宇宙飛行士は?
A: 秋山豊寛(1942年生・日本人初)

設計方針: 「記録・初」の答えは LLM の記憶から捏造せず、Wikidata SPARQL が根拠を返し、Wikipedia 記事 URL を引用します。

対応カテゴリ:

日本語

英語

種別

宇宙望遠鏡

space telescope

機器

宇宙探査機

space probe

機器

人工衛星 / 宇宙船

satellite / spacecraft

機器

天文台

observatory

機器

宇宙飛行士

astronaut

人

🚀 upcoming_launches — ロケット打ち上げ

認証なしの公開API(Launch Library 2)から今後の打ち上げを返します。

🌌 apod / neo_today — NASA日次データ

  • apod: 今日(または指定日)の Astronomy Picture of the Day。 date 省略時は「今日」を明示指定して取得し、当日分が未公開(404)や API が 500 を返す場合は 直近の公開分(前日)へ自動フォールバックします(fallback_to_previous_day で判定可能)。

  • neo_today: 今日地球に接近する小惑星(直径・接近距離・速度)

キーはサーバー側でのみ保持し、クライアントへ晒しません(公開デプロイ時は環境変数・シークレット管理を推奨)。

🖼️ search_space_images — 画像検索・表示

NASA Image & Video Library から惑星・人工衛星の画像を検索し、チャットにインライン表示します。

  • content: テキストサマリ + base64の画像(ImageContent)。各項目の直後に 🖼️ [画像を開く: タイトル](URL) のリンクを出す(インライン描画できないクライアント向け)

  • structuredContent: {title, date, nasa_id, image_url, keywords} のJSON

  • 転送量: インラインに埋め込む画像は既定で先頭1枚(inline_max=1〜5 で増やせる)。 高画質URLは structuredContent.results[].image_url に必ず入るため、必要なら再取得できます。 インライン画像は一段小さいバリエーション(~large→~medium)を使い、画像資産は ディスクキャッシュされます(同じ画像を再ダウンロードしません)。

Q: 木星の画像を見せて → 木星の写真がチャットに表示される

🔊 search_space_audio — 音声検索

宇宙関連の音声を検索します。kind 引数で用途を選べます。

kind

対象

例

sound_effect

短い宇宙の音(惑星の電波・Sputnikのビープ・打ち上げ音)

「スプートニクの音」

podcast

長尺の解説・インタビュー

「アポロのポッドキャスト」

auto

両方から探す(既定)

各結果に再生URL+尺の目安をJSONで返し、content には 🎧 [音声を開く: タイトル](URL) のアイコン付きリンクを出します。

🎬 search_space_videos — 動画検索

宇宙動画(打ち上げ・ミッション映像・解説)を検索し、再生用MP4 URLを返します。

  • structuredContent: {title, video_url, urls:{preview/medium/mobile/orig/subtitle}, poster_url} — 解像度別URLと字幕(.srt)を分離

  • content: テキストサマリ + ポスター画像(インライン)。🎬 [動画を再生: タイトル](MP4 URL) と 🖼️ [ポスター画像を開く: …](URL) のリンクを先に出します

🇮🇳 isro_data — インド ISRO の公式データ

ISRO公式オープンAPI(Vercel配信・認証不要)から、ISROが打ち上げた人工衛星・ロケット・外国向け顧客衛星・センター/施設の一覧を返します。query で部分一致検索(例 "cartosat", "chandrayaan")も可能。

Q: インドの人工衛星を教えて
A: → Aryabhata, Bhaskara-I, ... 全112件から返る
Q: ISROが外国向けに打ち上げた衛星は?
A: kind="customer_satellites" で 国・打ち上げ日・質量・ロケット 付きで返る

🇪🇺 copernicus_collections / copernicus_search — 欧州 ESA Copernicus

Copernicus Data Space Ecosystem の STAC API(stac.dataspace.copernicus.eu/v1)を利用。Sentinel-1/2/3 ほか地球観測衛星のメタデータを検索できます。

  • copernicus_collections: 利用可能なコレクション一覧(Sentinel-2 光学・Sentinel-1 SAR・Sentinel-3 海洋/大気 等)

  • copernicus_search: コレクション・空間範囲(bbox)・日時・雲量上限で衛星画像を検索。structuredContent に id/日時/雲量/bbox/プレビューURL を返す

認証: 検索とプレビューURL取得は認証不要。画像ダウンロードのみ Copernicus Data Space の無料アカウント(OAuth2 client_credentials)が必要です。設定時は環境変数 CDSE_CLIENT_ID / CDSE_CLIENT_SECRET をサーバー側に設定します(キーはクライアントへ晒さない)。

Q: 東京周辺の最近の Sentinel-2 画像を雲が少ない順に見たい
A: copernicus_search(collection="sentinel-2-l2a", bbox="139.6,35.5,139.9,35.8", max_cloud_cover=20)

🇯🇵 jaxa_datasets / jaxa_dataset_search — 日本 JAXA Earth

JAXA Earth API の STAC COG カタログ(認証不要)から、地球観測データセットを探索します。ALOS 標高(AW3D30)・GSMaP 降水・GCOM-C/W・PALSAR-2 森林(FFN) など 60+ データセット。

  • jaxa_datasets: データセット一覧(ID・タイトル・アセット)

  • jaxa_dataset_search: キーワード検索("GSMaP", "ALOS", "GCOM", "precip", "FNF" 等)

Q: JAXAの降雨データセットは?
A: jaxa_dataset_search("GSMaP") → GSMaP の正規・日次データセットが返る

🇨🇦 csa_dataset_search — カナダ CSA オープンデータ

CSA Open Data Portal の CKAN API(認証不要)で、RADARSAT ほかカナダの宇宙データセットを検索します。CSAは中間CAチェーンが不完全なサーバーのため、OS の証明書ストアでTLS検証するアダプタを使用(検証を無効化しない安全な方式)。

Q: カナダの RADARSAT データは?
A: csa_dataset_search("radarsat") → RADARSAT-1 Archive ほか10件が返る

🇧🇷 inpe_collections / inpe_search — ブラジル INPE

INPE BDC(ブラジル宇宙研究所)の STAC API(認証不要)で、CBERS-4/4A・Amazonia-1・GOES-19 等の衛星画像を検索します。

  • inpe_collections: 79コレクション一覧

  • inpe_search: コレクション・領域(bbox)・日時・雲量で画像検索

Q: ブラジル周辺のCBERS衛星画像
A: inpe_search("CB4-WFI-L4-SR-1", bbox="-46.6,-23.6,-46.5,-23.5")

🇩🇪 dlr_collections / dlr_search — ドイツ DLR(EOC 地球観測センター)

DLR EOC(ドイツ航空宇宙センターの地球観測センター)の STAC 1.0.0 カタログ(69コレクション・認証不要)で、Sentinel-2(MAJA 大気補正・WASP 合成)・EnMAP/DESIS ハイパースペクトル・Sentinel-5P/TROPOMI(NO2・O3・AOD)・MetOp/GOME-2・世界居住域(WSF)・全球DEM(TanDEM-X 90m)・ドイツ国内プロダクトを検索します。

  • dlr_collections: コレクション一覧(ライセンス付き)

  • dlr_search: コレクション・領域(bbox)・日時・雲量上限で検索(サムネイル/メタデータのリンク付き)

Q: ベルリン周辺のドイツのSentinel-2画像
A: dlr_search("S2_L2A_MAJA", bbox="13.0,52.3,13.8,52.7", datetime="2026-01-01/2026-01-31", max_cloud_cover=20)

⚠️ DLR の STAC は filter(CQL2)も sortby も受け付けません(実測: 前者は 400、後者は無視)。雲量の絞り込みは取得後にクライアント側で行い、excluded_by_cloud / without_cloud_info に分けて返します。並び順は日時順とは限らないため、期間で絞るには datetime を指定してください。ライセンスはコレクションごとの DLR 申告値(CC-BY-4.0 / CC-BY-NC-4.0 / proprietary が混在)です。

🇷🇺 roscosmos_collections / roscosmos_search — ロシア Roscosmos オープンデータ

Roscosmos オープンデータ STAC(200TB 超・認証不要)から、Elektro-L(静止・15〜30分ごとの全球ディスク)・Arktika-M(高楕円)・Meteor-M(極軌道の日次全球モザイク)と全球モザイク(EL_ARCM / MM)を検索します。

  • roscosmos_collections: カタログ木を辿ったコレクション一覧(level 1〜3)

  • roscosmos_search: コレクションのパス+日付(UTC)で検索。日付省略時はデータがある最新日

Q: ロシアの静止気象衛星エレクトロLの最新の全球画像
A: roscosmos_search("Electro-L/MSU-GS/L2_RGB_VIS_IR", limit=2)

⚠️ このカタログは静的 STAC(/search・/collections は 404)のため、catalog.json → コレクション → 年 → 月 → 日 を辿って列挙します。ホストは s3.gptl.ru / s3ext.gptl.ru の2つで、到達できない側は記憶して他方へ切り替えます。各アイテムにはクイックルック(PNG)と GeoTIFF(EPSG:4326 / 3857)のリンクが付きます。

🛰️ sat_tle — CelesTrak(全世界の衛星軌道)

CelesTrak(NORADカタログ・認証不要)から、任意の衛星の軌道要素(TLE) を取得します。ISS・ハッブル・気象衛星・中国宇宙ステーション等、name・norad_id・group で指定可能。CelesTrak が遮断中(403 / 接続不可)のときは公開ミラー(tle.ivanstanojevic.me、予備 db.satnogs.org)へ自動で切り替え、structuredContent.source に実際の出典(celestrak.org か代替源のホスト名)を入れます。

Q: ISSの現在の軌道要素は?
A: sat_tle("iss") → 傾角・離心率・周回数・エポック
Q: 中国宇宙ステーションのTLE
A: sat_tle("tiangong") → CSS(TIANHE) の軌道要素

🇬🇧 uk_stac_collections / uk_stac_search — 英国 EO DataHub

UK EO DataHub の STAC API(公開カタログは認証不要)で、Sentinel-2 ARD・UKCP気候モデル・EOCIS 等の英国データを検索します。

Q: 英国のSentinel画像
A: uk_stac_search("sentinel2_ard", bbox="-2.9,49.5,-2.8,49.6")

※商用データ(Airbus/Planet)は要アカウント。

🇫🇷 cnes_status — フランス CNES

CNES の地球観測ポータル THEIA と GEODES の到達状態と提供データ概要を返します。画像ダウンロードには無料アカウント登録が必要です。

Q: フランスのCNES衛星データは?
A: cnes_status() → THEIA / GEODES の状態と概要

🔭 astronomy_weather — 天体観測用天気(Open-Meteo + 気象庁の雨雲・降水画像)

Open-Meteo(認証不要・無料・全世界対応)から、指定地点の今後数日間で天体観測に適した暗い時間帯を自動抽出します。薄明(太陽高度)・雲量・視程・風速・降水確率・月相・月明かりを総合して判断し、AIからのアドバイスを返します。

  • 場所は緯度経度(latitude/longitude)または地名(place)で指定

  • 富士山・マウナケア・アタカマ・阿智村などの著名観測地は正確な緯度経度を内蔵

  • max_cloud で観測可否の雲量基準を調整可能(既定 40%)

  • sun_alt_max で「暗い」とみなす太陽高度を調整可能(既定 -15°。-18 で天文薄明=完全な暗夜のみ、-6 なら市民薄明が終わった後から)。Open-Meteo は hourly に太陽高度を返さない(sun_elevation は 400 で拒否)ため、日付・経度・UTCオフセットから解析的に推定します(Skyfield/DE421 との実測差は 4地点×3日×48点で最大 0.41°・薄明の交差時刻は ±1 分)。極昼・極夜など推定できない地点は is_day のみで判定し、どちらを使ったかを structuredContent.sun_alt_source に返します

  • 「今夜の月の入り」は日没より後の最初の月没を選びます(Open-Meteo の daily.moonset は暦日単位なので、日没前に終わった「その日未明の月没」が混ざります。実測: 東京 2026-10-23 の daily.moonset[0] は 02:26 で、今夜の月没は翌日 03:30)。照度は太陽との離角から計算します(moon_phase は朔望月の進み具合であって照度そのものではありません)

  • structuredContent に各時間帯の雲量・視程・風速・降水確率・太陽高度をJSONで返す

Q: マウナケアで今夜天体観測できる?
A: astronomy_weather(place="マウナケア") → 夜間の観測チャンス時間帯と雲量
Q: 東京で明日の星空は?
A: astronomy_weather(place="東京") → 雲が少ない夜間を抽出+気象庁の雨雲・降水画像(解析雨量+今夜の予報+ナウキャスト)を添付
A: astronomy_weather(place="東京", include_rain=False) → 雨雲画像なしで予報のみ
Q: 今夜の観測は大丈夫? 図で見せて
A: observing_sheet(place="東京") → 判定(○/△/×)+雲量の推移+ひまわり赤外+雨雲を1枚に
A: observing_sheet(place="マウナケア") → 気象庁の範囲外では衛星なし/雨雲なしでも判定と雲量は出る(軽量版)

出典: open-meteo.com(CC BY 4.0 データ)

🌍 eodashboard_collections / eodashboard_detail — EO Dashboard(NASA×ESA×JAXA共同)

EO Dashboard(NASA・ESA・JAXA 3機関共同の地球観測ダッシュボード)のデータカタログを検索・表示します。データは GitHub リポジトリで無料公開されており、173件のデータセット(大気・海洋・陸域・雪氷・農業・社会経済)を認証不要で探索できます。

  • eodashboard_collections: テーマ(atmosphere/oceans/agriculture/cryosphere等)・機関(NASA/ESA/JAXA)・キーワードで検索

  • eodashboard_detail: 1データセットの詳細(衛星・センサー・説明・参照リンク・サムネイル画像)を返し、画像をインライン表示

Q: NASAの大気データを教えて
A: eodashboard_collections(agency="NASA", themes="atmosphere")
Q: 海氷のデータセットは?
A: eodashboard_collections(keyword="sea ice")
Q: NO2データセットの詳細と画像を見せて
A: eodashboard_detail("N1_NO2") → 詳細+サムネイル画像

時系列データ(Sentinel Hub統計API)は別途キーが必要ですが、メタデータ・説明・画像・参照リンクの取得はすべて認証不要です。検索・概要・学習用途に最適です。

出典: github.com/ESA-eodashboards/eodashboard-catalog / github.com/eurodatacube/eodash-assets

☀️ space_weather — 宇宙天気(NASA DONKI/予報は NOAA SWPC)

NASA DONKI(Database Of Notifications, Knowledge, Information)から、太陽活動に伴う宇宙環境の乱れを取得します。天体観測(オーロラ・電波)や通信・衛星運用への影響評価に使えます。

  • kind で取得対象を選択: all(既定)/ flare(太陽フレア)/ cme(コロナ質量放出)/ gst(地磁気嵐)/ sep(太陽粒子現象)/ forecast(予報: フレア発生確率 C/M/X・活動領域別確率・NOAA 3日予報)

  • 期間は start_date / end_date(YYYY-MM-DD)で指定。CME はこの2つが必須で、省略時は直近30日を自動補完します(実測: 移転先で無指定は 400 Bad Request。FLR/GST/SEP は省略可)

  • 認証: 不要。2026-09-30 に DONKI の URL が移転し(旧 api.nasa.gov/DONKI は 301 で CCMC のお知らせページへ転送される)、新エンドポイント ccmc.gsfc.nasa.gov/DONKI-API/get は API キーを受け付けません(実測 X-Rate-Limit-Remaining: 9999)。NASA_API_KEY は apod / neo_today のみで使用し、DONKI は nasa_budget を通しません(キーを持たないホストへキーを渡さない)

  • フォールバック: DONKI が障害・URL 変更・JSON でない応答のときは、認証不要の NOAA SWPC(services.swpc.noaa.gov)へ自動で切り替えます。Kp・NOAAスケール(R/S/G の現在値と1〜3日予測)・GOES X線クラス・フレアイベント(直近7日・発生時刻と級の内訳)・太陽風(速度/密度/Bt/Bz)・陽子フラックス・警報・黒点相対数を返し、どちらの出典で答えたかを content と structuredContent.source(NOAA SWPC + fallback: true + DONKI 側の理由 nasa_reason)に明記します。SWPC 側でも取得できなかった項目は failed に残します

  • 転送・非 JSON の検知: 301/302 を追跡した場合と JSON でない応答は明示的に検知し、「URL が転送されました(転送先)」/「JSON を返しませんでした(HTTP コード・バイト数・Content-Type)」と分かる文言で失敗させます。追跡先の HTML を r.json() に渡すと Expecting value: line 1 column 1 (char 0) という原因不明の文言になり、実測で「NASA API の一時的障害」と誤診しました

  • キャッシュ: カテゴリ単位なので、kind を変えた呼び出しで同じカテゴリを取り直しません(実測: all の直後の flare は HTTP 0回)。DEMO_KEY の共有枠は消費しません

  • 予報(kind="forecast"): DONKI は予報を持たない(予報は SWPC のプロダクト)ため、SWPC を通常経路として使います(障害時のフォールバックとは別物)。C/M/X 級と 10MeV 陽子の1〜3日の発生確率、活動領域(黒点群)ごとの確率(面積=太陽半球の百万分率・黒点型・磁場型つき。最新の観測日のみ)、NOAA 3日予報(予想最大 Kp と NOAA スケール、S1以上・R1-R2・R3以上の確率、公式の根拠文)を返します。limit は活動領域の表示数(既定 10・最大 20)、30分キャッシュ(TTL_FORECAST)。予報テキストは折り返しを繋いで1文にし、欠測は failed に残します(1項目も取れなければエラー。空を「静穏」と誤読させない)

Q: 最近の太陽フレアは?
A: space_weather(kind="flare")
Q: 地磁気嵐が起きているか確認
A: space_weather(kind="gst", start_date="2026-08-01")
Q: 宇宙天気の全体状況
A: space_weather() → フレア・CME・地磁気嵐・粒子現象をまとめて表示
Q: 今後の太陽フレアは?
A: space_weather(kind="forecast") → 発生確率(C/M/X・1〜3日)・活動領域別確率・NOAA 3日予報

出典: ccmc.gsfc.nasa.gov/DONKI-API(NASA CCMC / M2M-SWAO)/予報(kind="forecast"): services.swpc.noaa.gov(NOAA SWPC)

☄️ fireball_reports / neo_close_approach / impact_risk — 天体異常系(JPL CNEOS)

NASA/JPL CNEOS(Center for Near Earth Object Studies)の公開 API (ssd-api.jpl.nasa.gov)から、火球・小惑星等の接近・将来の衝突リスクを取得します。**3ツールとも認証不要(APIキー不要)**で、DEMO_KEY(30 req/h/IP の共有枠)を消費しません。

  • fireball_reports — 火球(fireball)は大気圏に突入して光った現象の観測記録です(米国政府センサ・地上観測の報告)。days(1〜1825)・min_impact_energy_kt(kt TNT 換算の下限)・limit(1〜50)・require_location(位置が報告された記録のみ)を指定できます。火球のゼロ件は data キー自体が返らない(count: 0 のみ)ため、その場合も「該当なし」として扱います。隕石の回収・落下物の推定はしません(落下物の情報が欲しい場合は別の情報源が必要です)。

  • neo_close_approach — days(1〜365)・max_distance_au(既定 0.05 ≒ 19.5 月距離。1 LD ≒ 0.00256 au)・limit・hazardous_only(PHA のみ)。距離は au / km / 月距離(LD) の3通りで併記します。直径は既知の値があればそれを、無ければ絶対等級 H とアルベド 0.14 の仮定から換算した推定値で、推定の場合はその旨を表示と structuredContent(diameter_is_estimate)に残します。接近時刻は TDB(力学時)で、t_sigma_f(3σ の不確かさ)も返します。neo_today との違いは「今日だけ・api.nasa.gov のキー枠」ではなく、任意の期間・距離を扱えることです。

  • neo_close_approach の小惑星と彗星(kind) — kind="all"(既定)は小惑星+彗星を返します。JPL の CAD は既定の neo=true が小惑星だけを返し(実測: 彗星 169P/NEAT が 0.17 au まで接近した 2026-08 の窓でも彗星は 0 件。nea-comet=true も同じ 243 件で彗星を含まなかった)、彗星が返るのは comet=true の照会だけなので、小惑星と彗星を別々に照会して接近時刻の早い順に統合しています(structuredContent.kind / totals_by_kind に内訳、results[].object_type に種別)。彗星は絶対等級 H を持たないため直径は推定しません(「不明」と表示)。彗星の接近は小惑星よりずっと稀なので、kind="comet" で 0 件でも異常ではありません(その旨を本文に出します)。kind="asteroid" は従来と同じ挙動(彗星の照会をしません)。

  • カレンダーへの反映(v0.34.0) — neo_close_approach / fireball_reports を呼ぶと、返した行がそのまま蓄積ストア(%LOCALAPPDATA%\space-finder-mcp\calendar_store.json)の neo / fireball レコードになり、後日 space_calendar / calendar_events に表示されます(structuredContent.calendar_stored に件数、content にも「◯件を反映しました」と出ます。書けなかった場合はその旨を出し、例外にはしません)。接近は日付セルに置ける(時刻が確定した計算値。蓄積時に TDB である旨を併記)一方、火球は過去の観測記録として置き、落下地点ではない旨を併記します。impact_risk は日付が無い(数十年〜百年の幅の確率)ため蓄積しません。保持期限は既存の規則どおり 45日(古い API 由来レコードは prune。ユーザー予定は対象外)。

  • impact_risk — Sentry の衝突確率の推算です(進路が確定した衝突予報ではありません)。min_probability(既定 1e-3 = 0.1%)以上の天体を確率の高い順に返し、designation を指定すると1天体の詳細(累積確率・想定時期・仮想衝突(VI)・観測弧・パレルモスケール)を返します。designation は仮符号または番号(例 "2024 YR4" / "2000 SG344" / "99942")で、和名・愛称は JPL 側が受け付けません(推測せず指定方法を案内します)。確率が 0 になった天体は Sentry から削除され、HTTP 200 + error で返るため、それを検査して「リスクなし(監視対象から外れた)」を意味しうる旨を案内します。

  • 数値の読み方 — 衝突エネルギーは広島型原爆(約15kt)との比、距離は月距離、直径は推定であるかどうかを必ず併記します(数値から生成し、書き手によって変わらないようにしています)。

Q: 最近の火球は?                  A: fireball_reports(days=30)
Q: 大きな火球だけ                   A: fireball_reports(days=365, min_impact_energy_kt=1)
Q: 今週接近する小惑星               A: neo_close_approach(days=7)
Q: 月距離以内に来る天体             A: neo_close_approach(days=30, max_distance_au=0.0026)
Q: 地球に接近する彗星               A: neo_close_approach(days=365, max_distance_au=0.3, kind="comet")
Q: 危険な小惑星は?                  A: impact_risk()
Q: 2024 YR4 の衝突リスク            A: impact_risk(designation="2024 YR4")

出典: NASA/JPL CNEOS(ssd-api.jpl.nasa.gov)/ Fireball Data API・SBDB Close-Approach Data API・Sentry

🌍 stac_collections / stac_search — AWS Earth Search STAC

AWS Earth Search(STAC規格の衛星データカタログ)で、Sentinel-2 / Landsat 8/9 / NAIP / Copernicus DEM を認証不要で検索します。

  • stac_collections: 利用可能な9コレクション一覧

  • stac_search: コレクション・場所(bbox/地名)・日時・雲量上限で検索。structuredContent に実際のデータURL(COG等)を含む

Q: 東京のLandsat画像を探して
A: stac_search("landsat-c2-l2", place="東京")
Q: 関東の雲が少ないSentinel-2画像
A: stac_search("sentinel-2-l2a", bbox="139.6,35.5,139.9,35.8", max_cloud_cover=20)
Q: 利用できる衛星データを一覧
A: stac_collections()

Copernicus Data Space(copernicus_search)が全Sentinelを扱うのに対し、こちらはLandsatやNAIPも検索可能。雲量フィルタは STAC の query パラメータを使用します(Earth Search は filter 非対応)。

出典: earth-search.aws.element84.com

🛰 iss_now — ISS 現在位置(Googleマップ表示)

Open Notify の iss-now.json から、ISS(国際宇宙ステーション)の現在位置(緯度経度)を取得し、Googleマップリンクで表示します。

Q: ISSは今どこを飛んでる?
A: iss_now() → 現在の緯度経度 + Googleマップリンク
  • 高度約420km・速度約27,700 km/h・地球1周約90分

  • structuredContent に緯度経度・タイムスタンプ・GoogleマップURLを返す

  • 認証不要

出典: api.open-notify.org(Open Notify)。HTTP のみ対応(HTTPS では応答しない)。

🛰 satellite_status — WMO OSCAR(世界気象機関)衛星カタログ

WMO OSCAR/Space(世界気象機関の公式カタログ)から、気象・地球観測衛星の運用ステータス・軌道・打ち上げ日を取得します。認証不要で 1041衛星 を収録。

Q: ロシアの気象衛星(Meteor-M)の運用状況は?
A: satellite_status(query="Meteor-M", agency="Roscosmos")
Q: 世界の気象衛星一覧
A: satellite_status()
  • query: 衛星名(meteor, resurs, goes, kanopus, himawari 等)。一致度順に並べ替えて返します — acronym の完全/前方一致を最優先し、名称は語境界で照合、名称の途中に含まれるだけの一致(例: "meteor" が "Meteorological" に含まれる DMSP/COSMIC)は低順位に置き、件数を分けて表示します(以前は 92件の誤ヒットに Meteor-M が埋もれていました)

  • カタログ全件(約1,044件・35ページ)を走査します。1ページ30件固定の API なので初回は40秒ほどかかりますが、取得結果をディスクにも保存するため以後はプロセスを再起動しても即時です(24時間で更新)。取得できなかったページがある場合は structuredContent.failed_pages と本文に明示します(欠けを黙って捨てません)

  • agency: 機関名(Roscosmos, NOAA, EUMETSAT, JAXA 等)

  • 運用中🟢 / 計画中🔵 / 延長🟡 / 退役🔴 を色付きで表示

  • Roscosmos の気象衛星(Meteor-M・Resurs-P・Kanopus等)も詳細に収録

実装メモ: OSCAR API の search / space_agency / status パラメータは現在機能しません(常に全件を返す)。そのため全件をページング取得し、クライアントサイドでフィルタしています。

出典: space.oscar.wmo.int(WMO OSCAR/Space)


📡 alma_search — ALMA 電波観測データ検索

ALMA(アタカマ大型ミリ波サブミリ波干渉計)の科学アーカイブを、NAOJ が運用する東アジア鏡の IVOA TAP 経由で検索。object_name(例 M100, HL Tau)か ra/dec+radius、受信 band(1〜10)、product_type(cube/image/visibility/all)、public_only で絞り込む。mm/サブmm の電波観測のため低温ガス・塵や惑星系形成領域が対象。

  • 天体名は表記ゆれを自動吸収(HL Tau→HL_Tau/HLTau 等)。0件のときはアーカイブ内の候補名を提示して停止(推測しない)。

  • 返る情報: 観測対象・座標・周波数帯・データ種別(cube/image)・空間分解能(″)・露出時間・可視降水量 pwv・QA2 合否・公開/要権限・プロポーザルID・PI名・関連論文。

  • with_products=True で datalink を引いて実データ製品(校正済み tar・生データ ASDM・README・パイプライン製品)をアイコン付きリンクで列挙(先頭3件)。

メタデータ検索は認証不要。data_rights=Public の FITS は ALMA アーカイブから取得可(Restricted は元プロポーザル権限者のみ)。

{"observatory": "ALMA", "count": 8, "public": 8, "restricted": 0,
 "records": [{"target_name": "M100", "band": "3", "frequency_ghz": "100–104 GHz",
              "data_rights": "Public", "proposal_id": "2011.0.00004.SV", ...}]}

📡 radio_sources_now — TART 電波望遠鏡の可視電波源

オープンソースで開発公開されている教育用電波干渉計 TART(NZ)の可視電波源カタログから、指定した観測地(lat/lon)で地平線より上にある電波源を取得。返るのは主に GNSS・放送・静止通信衛星で、name・仰角el・方位角az・距離・フラックス密度jy を持つ。電波天文・衛星追尾の学習に最適。

lat/lon 省略時は TART 本体のある NZ(ダニーデン)基準。可視性(強度)API は 2026-09 時点で応答停止のため未使用。

{"observatory": "TART", "count": 15,
 "sources": [{"name": "GSAT0232 (GALILEO 32)", "elevation_deg": 77.9,
              "azimuth_deg": 63.1, "range_km": 23342, "flux_density_jy": 1500000}, ...]}

🗺️ sky_map_with_satellites — 地上から見上げた星空+人工衛星(描画エンジン選択式)

指定した観測地・時刻の空を地上から見上げた画像で返す。天体位置は JPL de421 + Skyfield、恒星は Hipparcos 実星表(Vmag<8.5・約6.1万星)、衛星位置は CelesTrak TLE + SGP4 で実測計算(全てローカル/認証不要)。

engine で描画を選択:

  • "ground"(既定): 地上視点の正距円筒パノラマ。地平線が下・方位が横軸で、下部に街並み(手続き生成)と方位目盛り、左右端にその端の方位を表示。恒星は実星表の位置・等級・色(B-V)・大気減光を反映し、天の川は銀経・銀緯から面輝度を描きます。太陽高度で空の色と見える限界等級が変わる(昼/朝焼け/夕方/薄明/夜)ので、同じ呼び出しでも時刻で見え方が変わります。今は見えない惑星・主要恒星・銀河は○の輪郭で位置だけを示し(昼でも位置が分かる)、見えている天体は ● で実物に近い色+リング、月は位相(照度)と距離を反映して明るい側が太陽を向きます。人工衛星は赤いマーカー+名札、低軌道は前後60分・1分刻みの可視区間を破線で表示(可視区間が飛んでいる場合は破線を分けて描きます)。視野(span/az0)の外にある天体は描かず、本文に「地平線上だがこの視野の外」として列挙します(図に無いものを「見えている」と書かないため)。JPEG。

    • span(横方向の視野 30〜360°, 既定 360)/ az0(左端の方位, 既定 0)で切り出しを指定(例: span=180, az0=225 で南西→北東)。

    • lp("city" 都心 / "suburb" 郊外=既定 / "dark" 山間・離島)で光害の程度=限界等級・天の川の見え方・空の明るさを切り替え。未対応の値は既定(郊外)に落ちて、本文にその旨を明示します。

    • show(カンマ区切り, 例 "木星,ベガ,M31")で依頼表示する天体を指定。指定した天体だけが ●/○ のマーカーと名札を持ち、他は通常の星として描かれます。

  • "simple" / "accurate": 廃止(互換のため受け付ける)。旧・天頂中心の円形図は地上視点パノラマ(ground)へ統合したので、どの値を渡しても同じ描画になります。マーカーの配色・光背・土星の環・木星の縞・火星の極冠・名札・凡例は共通パレット img_common.BODY_COLORS / SYMBOL_COLORS の 1 か所から生成します(凡例も実際に描いたものだけを色コード付きで表示)。

画像は content に base64 でインライン表示(JPEG)、座標一覧は structuredContent に JSON。JPEG は PNG 比で約1/5の転送量です。

{"time_utc": "...", "engine": "ground (Pillow, 地上視点パノラマ)", "phase": "夜",
 "star_catalog": {"source": "Hipparcos 実星表(Vmag<8.5)", "stars": 61221, "drawn": 2952},
 "planets": {"月": {"az":..,"alt":..,"visible":true,"illum":0.58}, ...},
 "satellites": {"ISS (国際宇宙ステーション)": {"az":..,"alt":..,"trail":[...]}, ...}}

実星表は初回だけ VizieR(CDS)から取得して %LOCALAPPDATA%\Temp\space_finder_mcp\stars_hip85.csv にキャッシュします(de421.bsp と同じ扱い)。取得できない環境では名のある明るい恒星のみで描画を続け、structuredContent.star_catalog.source に実際に使った出典を出します(偽らない)。

☀️ solar_system_now — 太陽系俯瞰図(太陽中心の惑星・小惑星・探査機・彗星位置)

「太陽系を上から見た図」「今の惑星の位置」「イトカワの今の位置を図で」「ベンヌの楕円軌道を表示して」などに応答。描画は 1 本(黄道面を既定で仰角34°・方位28°から見た斜め俯瞰)。視点は elevation(仰角 0〜90)・azimuth(方位 -360〜360)・dolly(透視の強さ 0〜20、0 で正射影)で変えられます。旧 engine="simple"(真上・Pillow)と engine="accurate"(matplotlib・線形距離)、旧 projection="top"(真上図)は、見た目の要素をこの 1 本へ統合して廃止しました(引数は互換のため残置)。位置の扱い: マーカーは日心位置(距離・黄経・黄緯)を 3D で置き、その投影で描く(画面上の距離は AU に比例しないので、距離は数値を使う)。太陽を中心とした黄道面俯瞰図を画像化し、惑星(8惑星+冥王星)は JPL DE421 暦表 + Skyfield で日心黄道座標を計算。任意の小惑星は JPL SBDB API の軌道要素を取得しケプラー2体問題で日心位置へ伝播する(asteroid/asteroid2 で複数指定可)。

  • 距離が 0.4〜40 AU と2桁超のため、Pillow版(既定)は対数縮尺で全天体を一枚に表示。惑星を実物色アイコン+距離ラベル、小惑星を緑の十字マーカー+緑軌道リングで強調。惑星軌道円・小惑星帯(2.0-3.4AU目安)も併記。学生・観賞向けに視認性優先。

  • engine="accurate" は線形縮尺(対数ではなく距離に比例。科学的な相対距離比較用途)を選びます。描画そのものは同じ 1 本です。

  • 視点を変える(elevation / azimuth / dolly): 同じ瞬間を真上(elevation=90)・斜め(既定 34)・真横(elevation=0)で描き分けられます。「軌道面が傾いている」は真横からしか見えません(実測: 水星の黄道傾斜 7.00°、月の白道 5.05°、木星の衛星は 0.0°〜164.9°で逆行が 92/115)。教育用途では 2〜3 枚を並べて見せるのが有効です。dolly=0 は正射影(遠近なし)で「小さく見えるのは遠いから」を切り分けて説明できます。指定した実値は題名・figure.view.description・structuredContent.camera に出て、範囲外・非数値はクランプせずエラー結果を返します。

  • 惑星・太陽・小惑星・彗星の色は img_common.BODY_COLORS / SYMBOL_COLORS の共通パレット(sky_map_with_satellites と同一の値)。

  • 一部の惑星の位置を計算できなかった場合は、その旨(失敗数)を content と figure.notes に出し、structuredContent.planet_errors に天体名と理由を記録します(黙って欠落させません)。

  • 対応小惑星エイリアス: イトカワ(itokawa/25143)・ベンヌ(101955)・アポフィス(99942)・リュウグウ(162173)・ツタティス(4179)・エロス(433)。SBDBのsstr(番号・名前)なら任意の小惑星を指定可能。認証不要。

  • 遠方探査機: probe/probe2 引数に ボイジャー1号/2号・パイオニア10号/11号・ニュー・ホライズンズ・はやぶさ2(日英名対応)を指定。JPL Horizons 状態ベクトル(ECLIPTIC, 太陽中心)から日心位置を取得。ボイジャー等は黄緯が大きい(~35°)ため 3D の実位置(黄経・黄緯)で描画し、ラベルに真距離と黄緯を併記。表示スケールは探査機の距離まで自動拡張し、色付き菱形マーカー+太陽からの補助線で強調。遠方のため線形縮尺では枠に入らず、対数縮尺で表示。認証不要。

  • 「1光日」を図に重ねる(probe 指定時): 光が24時間で進む距離=173.1446 AU=25,902,068,371 km を破線の円で描きます(探査機を描く図では表示範囲を1光日まで自動で広げます)。1光日に達していない探査機では、その探査機の現在の向きで 1 光日に達する点(◇=到達時の方向)と到達予測日も出します(マーカーは 3D の実位置なので、リングは黄道面内の真距離の円、◇ は探査機の方向へ伸ばした 173.14 AU の点)。structuredContent.probes[] に light_days(何光日)・light_hours(光の所要時間)・to_light_day_au(1光日までの残り)・light_day_eta_date / light_day_eta_method(到達予測=現在の日心視線速度による線形外挿)が入ります(実測: ボイジャー1号 0.9925 光日・残り 1.30 AU・2027-02-03=JPL Horizons の n 体解で厳密に解いた日付と一致)。距離の基準は日心距離(真距離)に統一しています(地心距離での1光日は地球の公転で最大 ±1 AU 変わり、日付が違うため)。1光日が表示範囲の外(例: range_au=10)なら描かず、理由を注記と structuredContent.light_day.ring_why に出します。リングの破線・ラベル文字・探査機マーカーの画素を測り直して figure.verify.light_day に残します(ラベルがマーカーを覆っていれば ok=false)。

  • 彗星の軌道面ビュー(view="comet_orbit"): 単体なら comet と併せて指定すると、その彗星の軌道を彗星自身の軌道面を真横から見た図で返します。太陽は円錐曲線の焦点(楕円の中心ではない)に置き、近日点・遠日点・現在位置・日心距離目盛(AU)を描画します。e≥1 の C/彗星(例: 紫金山・アトラス=SBDB の a が負)は閉じない双曲線の枝として近日点から有限距離までを描きます(楕円として描くと a(1+e) が負になり破綻するため)。ハレー彗星(e=0.968・逆行 i=162°)のような極端な楕円でも、焦点と中心のズレ a·e が図と figure.notes の両方に出ます。

  • 小惑星の楕円軌道ビュー(view="asteroid_orbit"): solar_system_now(asteroid="ベンヌ", view="asteroid_orbit") のように指定すると、JPL SBDB の楕円軌道全体をその軌道面から真横に見た画像を返します。太陽を焦点に置き、近日点・遠日点・指定時刻の現在位置・1 AU目盛を描画。図の線は SBDB の osculating elements によるケプラー二体軌道で、惑星の摂動を含む将来予報ではありません。asteroid / asteroid2 で複数指定した場合、このビューは1天体ずつ呼び出してください。figure.conic / figure.verify に楕円要素と画素検証を含みます。認証不要。

  • 表示範囲を絞って内側を拡大する(range_au): 数値(AU)でも天体名でも指定できます(range_au="火星" → 1.65 AU/"木星まで" → 5.62 AU/"saturn" → 10.35 AU/"小惑星帯"/"内惑星"/"外惑星"。決め方は figure.notes と structuredContent.range_resolved に「木星の軌道(長半径 5.20 AU × 1.08 = 5.62 AU)」の形で出ます)。range_au="fit" はその呼び出しで指定した天体(小惑星・彗星・探査機・経路)が全部入る範囲を自動で選びます(最大値×1.10、下限 1.2 AU。例: asteroid="イトカワ", range_au="fit" → 1.52 AU)。解決できない名前は推測せず候補一覧つきでエラーを返します(range_targets)。solar_system_now(range_au=10) で太陽から 10 AU まで=土星より内側だけを表示します。線形縮尺(engine="accurate")は枠が ±45 AU で 13.8 px/AU(実測: 画面半径 620 px ÷ 45 AU)。range_au=10 に絞ると 62 px/AU(約4.5倍)になり、太陽の描画円盤も最内惑星を覆わない大きさ(実測 半径 2 px)に縮めて水星〜土星が読める大きさになります(実測値は figure.scale.px_per_AU)。内惑星が中心に密集するので、線形縮尺では名札のリング半径に下限(150 px)を置き、離れた名札は引き出し線で結びます。範囲外の天体は描かず、「表示範囲10 AU の外にあるため描いていない: 天王星 19.44 AU、海王星 29.88 AU…」のようにfigure.notes と structuredContent.out_of_range へ数値付きで列挙します(黙って消しません)。経路が範囲外へ出る彗星は対数版へ自動で落とし、その旨と範囲外の目印も注記します。

  • 彗星の通過経路を俯瞰図に重ねる(route=True): solar_system_now(comet="エンケ彗星", route=True) で、太陽系俯瞰図にその彗星の軌道(通過経路)を破線で重ねます(黄道座標の3D位置を斜め俯瞰へ投影。破線の矢印は進行方向)。近日点・遠日点には◇と日付を添え、本文と figure.notes にも SBDB 軌道要素から数値で出します(近日点の日付は SBDB の2体近似に加えて JPL Horizons の n 体解も併記し、両者の差を日数で注記します。SBDB の要素は古いエポックの接触軌道なので、摂動の大きい彗星では2体近似が数か月ずれます=実測: ハレー彗星 163.8日・67P 82.6日・エンケ彗星 0.8日。n 体解を取得できないときは取得できなかった旨と理由を注記し、2体近似だけを黙って出すことはしません)。対数縮尺(既定)では線の長さと曲率は実際の楕円と一致しません(注記に自動生成。形そのものは view="comet_orbit")。線形縮尺(engine="accurate")は経路が枠に収まる彗星なら自動で維持され、形が本当の軌道になります(収まらないときは対数縮尺へ自動で落とします)。近日点が誇張した太陽の描画円盤の内側に来る彗星では目印を描かず、「この縮尺では図から位置を確認できない(数値は 0.339 AU)」を注記に数値から生成します。認証不要。

  • 探査機のスイングバイ経路を俯瞰図に重ねる(probe + route=True): solar_system_now(probe="ボイジャー1号", route=True) で、太陽系俯瞰図にその探査機が実際に飛んだ経路を破線で重ねます。経路はJPL Horizons の状態ベクトル点列(記憶した日付の線ではなく実測)を3Dのまま斜め俯瞰へ投影したもので、彗星の軌道要素のような閉じた円錐曲線ではありません(開いた経路として描画)。実際のスイングバイ(最接近)は◇+日付+距離(km)を添えて注記に自動生成します(実測: ボイジャー1号 木星 1979-03-05 348,132 km/土星 1980-11-13 184,382 km、ボイジャー2号 木星 1979-07-09 721,406 km/土星 1981-08-26 161,960 km/天王星 1986-01-24 102,724 km/海王星 1989-08-25 33,705 km)。最接近は惑星位置との距離の極小を探索して求め(日付を書き込まない)、候補の粗い刻み→精密化の可変グリッドで解決します。**地球−月系で完結する機体(アポロの S-IVB 段など)**は月も最接近の対象に加えます(probe="アポロ11号 S-IVB" → 月 1969-07-19 5,700 km)。アポロの S-IVB は暦が1969年で終わるため現在位置は取得できませんが、当時の経路だけは描けます(structuredContent.probes に現在位置のエラー、route に経路を返す)。線形縮尺(engine="accurate")でも同じ経路データを使います。認証不要。

  • 彗星の見え方チャート(view="apparition"): comet と併せて指定すると、その彗星の観測の可否を時系列で示す3段パネル(横軸=UTC の日付)を返します。上から 距離(日心距離 r=黄/地心距離 Δ=シアン、AU)・予想光度 m1(橙。JPL SBDB の全光度の式 m1 = M1 + 5·log10(Δ) + K1·log10(r)。値が小さい=明るい方が上)・太陽離角(緑。0°=太陽と同じ方向=地球からは見えない)。今日・近日点・地球最接近を縦線で示し、期間内の極値は数値ラベル付きの点で示します(ラベルは点から近い順に空きを探して曲線・凡例・軸ラベルの文字・他のラベルに重ならない位置=線から2px以上の余白へ置き、どこにも置けなかったラベルだけを figure.notes に列挙)。位置は JPL Horizons の N 体解(期間ぶんを1リクエストでまとめて取得)、地球位置は JPL DE421+Skyfield。Horizons が使えないときだけ SBDB 要素の2体近似へ退避し、精度差を数値で注記します(実測: 169P/NEAT で N 体解と最大 0.0249 au・地球最接近の時刻が約1.2日ずれる)。期間の端で最小のときは「近日点」「地球最接近」とは呼びません(ハレー彗星は 2061 年まで太陽へ近づき続けるので、どの期間でも最小は端に来る)=「期間の端で最小=真の極値はこの期間の外」と数値付きで注記し、マーカーも「r 最小」「Δ 最小」に切り替えます。days(既定180日)で長さを変えられ、今日の30日前から描くので直前に過ぎた近日点・最接近も見えます(1天体ずつ。複数指定は「1天体ずつ指定してください」と返して停止)。

  • 複数彗星を1枚に(1彗星=1パネル): comet="ハレー彗星,C/2004 R2" のようにカンマ区切り(、/; も可)または comet2 を併用すると、最大4天体を縦に並べた1枚の画像で返します。彗星ごとに軌道面も縮尺も違うため、1つの座標系に重ねると嘘になる(=軌道面が違えば「真横から見た形」は同時に成立せず、a が2桁違うと小さい軌道が点に潰れる)ので、パネルは独立した軌道面・独立した縮尺です。その旨(同じ長さの線でも距離が一致しないこと)と a の開き(例: 229倍)は figure.notes に数値から生成して入ります。1天体の取得に失敗しても他のパネルは描き、structuredContent.errors と注記に理由を残します(上限4件を超える要求も「要求N件のうちM件を描画」と明示)。figure.kind は orbit_plane_set で、パネルごとの円錐曲線・自己検証は figure.panels[](conic / verify / px_per_AU / notes)、figure.verify は全パネルの集約です。

  • 彗星(周期・C/): comet/comet2 引数に ハレー彗星(halley/1P)・エンケ彗星(2P)・チュリュモフ・ゲラシメンコ(67P)・テンペル第1(9P)・ヴィルト第2(81P) 等の周期彗星、または 紫金山・アトラス(C/2023 A3)・ラブジョイ(C/2014 Q2) 等のC/彗星を指定。周期彗星は JPL SBDB 軌道要素のケプラー伝播、C/彗星(非周期・放物線/双曲線軌道)は JPL Horizons 状態ベクトルで 日心位置を計算。彗星はシアン色の輝く核+太陽と反対方向に伸びる尾で描画し、位置は黄緯を落とさない 3D の実位置(ラベルに真距離と黄緯を併記)。遠方彗星は表示スケールを自動拡張。認証不要。

// route=True のときは彗星の通過経路(点列は入れず、目印と要素だけ)が付く
// "comet_routes": {"エンケ彗星": {"name": "2P/Encke", "e": 0.8470, "q_au": 0.3395,
//   "period_days": 1207.0, "closed": true, "marks": [{"id": "perihelion", "label": "近日点",
//   "r_au": 0.3395, "proj_au": 0.3393, "date": "2027-02-11", "px": [736, 755], "drawn": false}]}}
{"time_utc": "2026-09-09 05:32 UTC", "engine": "oblique (Pillow, 斜め俯瞰・対数動径)",
 "asteroids": {"イトカワ": {"au": 1.60, "eclLon": 82.9}},
 "probes": {"ボイジャー1号": {"au": 171.7, "proj_au": 140.4, "eclLat": 35.2}},
 "comets": {"ハレー彗星": {"au": 35.1, "proj_au": 33.7, "eclLat": -16.6}}}  // 惑星は全9天体
// view="apparition" の応答例(169P/NEAT・120日+直前60日)。Δ の最小値は JPL の公表値と一致
{"comet": "169P/NEAT", "positions_source": "horizons",
 "window": {"from": "2026-07-24", "to": "2027-01-19", "days": 120, "days_before": 60, "samples": 437},
 "features": {"closest_approach": {"utc": "2026-08-11 19:19", "delta_au": 0.167172, "inside_window": true},
              "perihelion": {"utc": "2026-09-21 09:16", "r_au": 0.604348, "inside_window": true},
              "brightest": {"utc": "2026-08-14 04:21", "mag": 13.6},
              "next_close_approach": {"utc": "2026-09-17", "delta_au": 0.5634}},
 "verify": {"ok": true, "label_overlap_px": 0, "worst_px_error": 0.0,
            "marker_pixels": {"今日": 367, "近日点 09/21": 391, "地球最接近 08/11": 366}}}
{"comet": "1P/Halley", "e": 0.967936, "q_au": 0.5749, "typ": "sbdb",
 "figure": {"schema": "figure/1", "kind": "orbit_plane",
            "primary": {"name": "太陽", "at": "focus", "center_offset_AU": 17.3537},
            "conic": {"kind": "ellipse", "e": 0.967936, "q": 0.5748638313743413,
                      "apo": 35.282406265764116, "c": 17.35377121719489},
            "verify": {"periapsis_error_pct": 7.13, "apoapsis_error_pct": 0.04,
                       "periapsis_check": "equality", "label_overlap_px": 0, "ok": true}}}
 // view="comet_orbit" の応答例。超長距離の桁(C/2004 R2, a=4.1e3 AU)では
 // {"periapsis_resolvable": false, "periapsis_check": "upper_bound", "periapsis_upper_bound": 4.0, "ok": true}

🌞 solar_eclipse_series — 日食の時系列パネル(太陽が月に欠ける過程)

「2035年9月2日の皆既日食を画像で」「東京で見える次の日食」「2019年の部分日食の進行」などに応答。指定した観測地・日付で、太陽と月の見かけの重なりを JPL DE421 + Skyfield で実測計算し、食の始まり〜最大〜終わりを7枚のパネルに並べて合成。サンプル画像(部分日食の時系列)と同じレイアウト。

  • 太陽・月の視角半径と角距離を観測地の視位置(topocentric apparent)で計算し、**月の位置角(PA)**を反映して正しく欠ける位置に月を描画。パネル上部に▲(天の北)、各パネル下に現地時刻・食分。

  • 最大食分から種別を自動判定:0.995以上は皆既(月視半径≥太陽)/金環(月<太陽)、それ以外は部分。

  • figure.verify は描いた画素から測り直した食分を各パネルで報告値と突き合わせます(PA軸の明部長 L から 食分 = 1 − L/2R)。実測誤差は 0.004 以内、パネル欠けやはみ出しはここで落ちます。

  • date 省略時は**「これから起こる次の日食」を約4年(1400日)先まで自動検索**(Skyfield almanac で新月を列挙し、食のありうる新月だけ高速絞り込み → 精密計算)。例: 東京の次に見える食は 2030-06-01 部分日食(食分0.80・太陽高度+19°) で、既定の引数だけでこれが返ります(800日=約2年では可視の食が無く、常に「見つかりません」しか返せませんでした)。走査は「30分刻みで食の時間帯を特定 → その窓内だけ2分刻みで精密化」の2段構えで、初回は約2秒(実測 24.2s → 2.2s。時刻を配列でまとめて Skyfield に渡し、天体暦の補間を点の数だけ繰り返さない)です(同じ観測地・同じ日なら1日キャッシュで以後は即時)。

  • 見えない食は返しません — 描くのはその観測地で太陽が地平線より上にある時間帯だけで、最大食分も可視区間の中で求めます。日食が現地の日付をまたぐ場合(例: 23:25 開始 → 翌 00:37 終了)も前後6時間まで含めて計算します。全日食が地平線下なら「太陽が地平線下(最大高度 −67°)のため見えません」と明示します(例: 東京2028-01-26)。

  • max_magnitude=True で最大食のみの単一画像を返す。place/lat/lon で世界中の任意の観測地を指定可能(東京・ベルリン・ケープタウン・グリニッジ天文台・昭和基地 等。Open-Meteo + Nominatim で自動解決)。日食の現地時刻はその場所のタイムゾーン(DST込み)で表示。認証不要。

{"kind": "部分日食", "max_magnitude": 0.63, "date": "2028年1月26日",
 "place": "東京", "lat": 35.68, "lon": 139.69}  // 7パネル時系列画像を content に返す

🌙 moon_phase_map — 月齢マップ(月の満ち欠けの格子/朔望月パネル)

「今月の月齢マップを見せて」「2026年9月の月相カレンダー」「次の朔望月の満ち欠けを画像で」などに応答。日食の時系列パネルと同じ幾何計算(JPL DE421 + Skyfield・認証不要)を使い、観測地から見た太陽と月の実位置から輝面の向き(位置角 PA)と照度を求めて月円盤を正しい向きに欠けさせます(月齢から向きを決め打ちしません)。

  • layout="calendar"(既定)— 指定した月を日月火水木金土の格子に並べ、各日に月齢・照度・月相(新月/三日月/上弦/十三夜/満月/下弦/有明月 etc)を描きます。朔・望・上弦・下弦が起きる日はイベント名と現地時刻を強調表示。

  • layout="lunation" — 1朔望月(朔→朔)を等間隔の時系列パネル(days で3〜12枚・既定8枚)に並べ、各パネルに日時・月齢・照度・月相・輝面の位置角を出します。

  • 月齢=直前の朔(新月)からの経過日数、照度=円盤の輝面の割合(満月=100%)。カレンダーは各日現地正午時点、パネルは各パネルの現地時刻時点の値です。

  • figure.verify は描いた画素から明暗境界線の位置を測り直し、申告した照度と突き合わせます(照度 k の円盤は位置角軸上で縁から 2kR の幅が明るい)。走査軸が申告した位置角なので、満ち欠けの向きが違えば一致しません(実測誤差 0.02 以内)。

  • 図と数値の食い違いを注記で明示 — 「円盤は模式図(実写ではなく月の海は乱数)」「天の北を上・東を左に置いた見え方で地平線からの見え方ではない」「朔・望の日は正午時点では前後になる(例: 9/11 は正午時点の月齢 29.4・新月の時刻は 12:26)」等を数値から生成します(figure.notes は要約せず引用してください)。

  • date("2026-09" / "2026年9月16日")と place/lat/lon で観測地・期間を指定。日付・時刻・曜日は現地時間(緯度経度から取得した UTC オフセット)で表示します。

{"layout": "calendar", "period": {"month": "2026-09", "days": 30},
 "days": [{"date": "2026-09-11", "moon_age": 29.39, "illum_pct": 0, "phase_ja": "新月(正午時点の月齢 29.4)",
           "bright_limb_pa_deg": 31.1, "events": ["新月"]}, "..."],
 "events": [{"phase": "新月", "datetime_local": "2026-09-11 12:26"}, "..."],
 "figure": {"kind": "moon_phase_calendar", "verify": {"ok": true, "worst_error": 0.0121}}}

🛰 planetary_orbiter_track — 汎用・天体周回機マップ

月・火星・水星・タイタン・ベスタ・ケレス等、NASA Trek が等角図法グローバル画像を持つ任意の天体を周回する探査機の現在位置と軌道トレイルを画像化します。JPL Horizons の状態ベクトルを IAU 自転モデルで天体固定座標(緯度経度・高度)に変換して正確に計算。認証不要。

  • 対応天体(BODIES テーブル=軌道表示の10天体): moon(LRO・ゲートウェイ)、mars(MRO・Mars Odyssey)、mercury、titan、vesta、ceres、io・europa・ganymede・callisto(ガリレオ衛星)。新規天体は「中心天体ID・IAU 自転定数・半径+ベースマップ」を1行追加するだけで対応可能(Trek にタイルが無い天体は MAP_BODIES の1枚の全球画像を使います。ガリレオ衛星の自転定数は NAIF pck00011.tpc の値)。

  • 接近通過(フライバイ)対応: orbiter にミッション名(europa clipper/juice/bepicolombo/hera/psyche/lucy/new horizons/はやぶさ2/juno/parker solar probe/solar orbiter/mmx と和名・別名)を指定できます。flyby=True では 最接近(CA)を自動で探索し、表示時刻と地図の中心を CA に置き直して、最接近時刻(秒まで)・最接近高度・相対速度・最接近点の緯度経度を図(マーカーの札が「最接近(CA)」になります)・本文・structuredContent.closest_approach に出します。探索は JPL Horizons の状態ベクトルを粗く走査(既定 30 分刻み)→ 1 分刻み → 3 点放物線フィットの3段で、ca_hours(既定 48=±24 時間、最大 720)で範囲を決めます。窓内の最小距離と接近通過は区別し、天体半径の 50 倍より遠い「最小」は CA と呼ばずにその旨を本文と注記に書きます(実測: Europa Clipper の 2030-06 の窓では最小でも 1,512 万 km)。

    • 検証(実測・外部の公表値と突き合わせ): BepiColombo 第6水星フライバイ → 2025-01-08 05:58:51 UTC・高度 295.8 km(ESA 公表値 05:58:52 UTC・295 km と 1 秒・0.8 km 差)/Juno のエウロパフライバイ → 2022-09-29 09:36:25 UTC・高度 355.6 km・最接近点 南緯 1.00°/東経 37.43°(Nature Astronomy の 09:36:29 UTC・353 km と 4 秒・2.6 km 差。NASA の画像は「赤道近くの Annwn Regio」で緯度が整合)。

  • 時刻スケールの修正: Horizons の数値 JD は TDB として解釈されます(実測: 数値 JD と暦文字列 '2025-01-08 06:00' が同一の状態ベクトルを返し、その見出しは … TDB。同じ数値を TIME_TYPE='UT' で送ると水星中心距離が 9.8 km 変わる)。UTC の暦から作った JD をそのまま送ると 69.184 秒(TT−UTC)ずれるため _jd_from_utc() で補正します(69 秒 × 相対速度 6 km/s ≒ 400 km の位置ずれになり、最接近時刻も 69 秒ずれていました)。あわせて _body_name() も修正(MAKE_EPHEM='NO' だけでは Horizons が「No output possible for request.」を返して名前が取れず、orbiter="-159" の図は「-159 の火星面位置」と ID のまま出ていました)。

  • span_deg=360 で天体全面表示(2:1グローバルビュー)、既定 120 で現在位置中心の局所表示。

  • 高精度トレイル: step を秒単位(1/60分)まで細分化可能。JPL Horizons の TLIST を POST + 分割バッチで送るため、1400点超のトレイルも高速取得。

  • トレイルの一部が失敗した場合: 計算できなかった点数を content と figure.notes に出し、structuredContent.trail_errors に offset_min と理由を記録します(図に無い点を「無い」と誤読させないため)。

  • 運用終了機(かぐや・MAVEN・あかつき等)は推測せず丁寧に案内(かぐやは JAXA 公表の落点=南緯65.5°/東経80.4° Gill クレータ付近を出典つきで返す)。和名・英名・別名(かぐや/kaguya/selene)は同じ案内に着地。

  • 着陸地点マップ(figure.kind="landing_site_map"): sites="apollo" でアポロ6地点を天体全面図に番号付きマーカー+凡例で、sites="apollo11" のように1地点を指定するとその地点中心の局所図で返します。座標は NASA NSSDC が公表した月着陸船(LM)の値(LRO 画像から決定・惑星中心 Mean Earth/Polar Axis、Wagner et al., Icarus 283 (2017))で、旗そのものの座標は公開表に無いため「マーカーは着陸地点を指す」旨と各地点の旗の状態(下記)を注記に自動生成して入れます。地点マーカーは共通ルーチン surface_map.py の draw_markers / verify_markers(投影の逆変換+全地点の画素検証)を使います。文字(タイトル・凡例・番号)は地図の外=下の帯に置き、地図の上に重ねません(重ねるとマーカーが文字で隠れる)。複数地点では地点間の最小間隔からマーカー半径を決め、離隔が足りなければキャンバスを自動拡大します(markers_do_not_overlap を検証)。番号は他のマーカーに載らない位置へ機械配置し、置けなければ省略して注記に残します。

  • 新しくできたクレーター(sites="newcrater"): 月面で確認された「新しいクレーター」2点を返します。マクゲッチン(自然衝突・2024-04-11〜05-22 に形成、直径 222 m・深さ 43 m、1.3536°N 67.1765°E。LROC が 2025-10-24 に発見、IAU 命名 2026-05-04。この規模の衝突は月で平均 132 年に1回)と、ファルコン9上段の衝突痕(人工物・2026-08-05 06:35 UTC、直径 18 m・深さ 3 m 未満、19.4759°N 266.7138°E=西経 93.2862°)。個別指定は "mcgetchin" / "falcon9"。figure.kind は impact_site_map で、注記には「記録上いちばん新しいのは人工物の衝突(ファルコン9上段)、自然衝突ではマクゲッチンが最新」を数値から生成し、0〜360°E で公表された経度は -180〜180° に折り返して描いた旨と等価な西経も出します。

  • 地点種別と座標の返却: sites="all" は登録済み地点を種別混在で返すため、表示行ごとに着陸・形成・衝突を区別します。図の kind は着陸地点のみ=landing_site_map、クレーター/衝突地点のみ=impact_site_map、着陸地点と衝突系の混在=site_map です。構造化データの各地点には kind と event が入り、投影用経度は -180〜180° に正規化します(公表値が 266°E の場合は本文と注記に西経換算も併記)。

  • 対応天体(sites= の地点マーカー図): MAP_BODIES の18天体(月・火星・水星・金星・タイタン・ベスタ・ケレス・イオ・エウロパ・ガニメデ・カリスト・木星・土星・天王星・海王星・冥王星・ベンヌ・リュウグウ)。ベースマップは3種類を天体ごとに自動選択します。地点が登録されていない天体でも sites="map" で全球図そのものを返します。

    1. trek … NASA Trek の全球等角図タイル(層IDを検証済みの5天体: 月・火星・水星・ベスタ・ケレス)

    2. image … 1枚の全球等角図(金星=USGS/NASA Magellan 合成図、タイタン=NASA Cassini 全球図、イオ/エウロパ/ガニメデ/カリスト=USGS/NASA のモザイク、木星・土星・天王星・海王星=Hubble OPAL の全球図(MAST/STScI 公開・DOI 10.17909/T9G593。その年の大気の模様なので観測日を注記に出す)、冥王星=New Horizons 全球カラー図、ベンヌ=OSIRIS-REx 全球モザイク)。2:1 でない画像はアスペクト比を補正して描画(補正率と元の AR を注記に明示)

    3. graticule … 全球等角図が確認できない天体(リュウグウ。USGS の全球モザイク倉庫に該当キー 0 件・NASA Trek のベースマップ層を配る索引サービスは HTTP 500=実測)は緯度経度グリッド。注記に「地形画像は無い」と明示 全球等角図の経度原点は天体ごとに違うので、image 設定は画像の左端の経度を left_edge_lon で自己申告し、左端が東経 0° の図(USGS/PDS の全球モザイク・Hubble OPAL)は横に半周(180°)回して描きます(回した角度・px・元の px を注記に数値で出す。実測: 冥王星の .lbl は CenterLongitude=180、OPAL の readme は「left edge = 0 System III W」、金星の Magellan 図は左端 -180°=回転不要)。 実測: NASA Trek に Jupiter は無い(404)。画像が取得できないときは自動でグリッドに落ち、その旨を注記に残します。

  • sites="map"(地点なし・地図のみ): 地点マーカーを描かず全球図そのものを返します(イオ・エウロパ・ガニメデ・カリストのように着陸機が無い天体の全球図表示に使用。figure.kind="body_map")。

  • 地点データの内訳(2026-09 時点): 月10(アポロ6+嫦娥3号+ルノホート1/2+サーベイヤー3号)/タイタン1(ホイヘンス 10.573°S・192.335°W=東向き正 167.665°E。旧 ESA 表記の 0〜360°W 慣例を変換)/金星9(ベネラ7・8・9・10・11・12・13・14号+ベガ2号。出典: Venera 飛行データ表=NSSDC 準拠。8/9/10号は「半径150km以内」の精度)/火星12(マルス2・3・6号、バイキング1号、パスファインダー、ビーグル2号、スピリット、オポチュニティ、フェニックス、キュリオシティ、インサイト、パーサヴィアランス。出典: The Planetary Society の着陸地点一覧が付す一次出典)/木星23(SL9)。経度は東向き正(−180〜180)に統一し、0〜360°表記や西経の値は自動で折り返します(実測: 金星351°Eをそのまま渡すと画面外に描かれた)。

  • 軌道を 3D の斜め俯瞰で見る(mode="orbit3d"): planetary_orbiter_track(body="moon", orbiter="lro", mode="orbit3d") で、天体を中心に置いた立体の軌道図を返します。地表図(真下の点の軌跡)では読めない「軌道面の傾斜角」「高度の幅」「順行/逆行」が図と数値で出ます(例: LRO 2026-10-31 は i = 82.9°・高度 74〜107 km)。図中には赤道面(シアン)・軌道面(破線の輪)・傾斜角の弧と数値・近点/遠点(緑/青の目盛り)・自転軸を描き、カメラは elevation(0=真横 / 90=真上)・azimuth・dolly(0=正射影)で変えられます(solar_system_now と同じ引数・同じ範囲検証)。傾斜角は JPL Horizons の接触軌道要素(BODY EQUATOR の IN) をそのまま使うので、点列の平面フィットのような歳差のずれが出ません(実測: MRO は Horizons 92.675° に対し 92.65°)。

  • 木星の SL9 衝突地点: planetary_orbiter_track(body="jupiter", sites="all") でシューメーカー・レヴィ第9彗星の衝突地点23破片(1994-07-16〜22)を木星の全球図(Hubble OPAL 2025a・観測 2025-12-11〜12)に描きます。ベースマップは「その年の大気」で 1994 年当時の模様ではなく、衝突痕そのものも写っていない旨を注記に明示します。座標は PDS Atmospheres が公開する Chodas & Yeomans (1996) の表(緯度=木星中心緯度、経度=System III の西向き→東向き正に変換、衝突面は 100 mbar 面)。注記に「木星は固体表面が無いガス惑星で、衝突痕は数日〜数週間で大気に流されて消えた」ことを明示します。近すぎて重なる地点(例: 破片 D と S は同じ 33°W)は重ねて描かず、図示しなかった地点として注記と structuredContent に残します。

  • 米国旗の状態(NASA ALSJ「Six Flags on the Moon」+ LROC 時系列画像): アポロ11号は倒れている(帰還時の上昇エンジン噴射で倒れた/LROC に旗の影なし)。12号・16号・17号は立っている(LROC 時系列で強い影)。14号・15号は LROC では旗の影が不明瞭(15号は LRV の TV カメラで離陸後も立っていたことを確認)。

  • 落点マップ(figure.kind="impact_site_map"): 落点が公表されている過去機は、その天体面の地図に地点マーカーを描いた図を返します(かぐや=月面図)。注記には「公表座標に置いたマーカーであり、衝突でできた新クレータを画像から同定したものではない」旨を数値から生成して入れます。地点マーカーの描画・画素検証は共通ルーチン surface_map.py(draw_marker / verify_marker)を使い、投影の逆変換で座標を再計算+マーカー色の画素数まで検査します。

🗺 planetary_rover_location_map — 汎用・天体面ローバー位置マップ

任意の天体面を移動する探査ローバーの現在地・走行経路・着陸地点を、その天体の局所地図に重ねて画像化します。ベースマップ・タイル合成・切り出し・投影・マーカー・画素検証は共通ルーチン surface_map.py を再利用(周回機・ローバー・落点マップで同じ投影・同じ検証)。

  • 走行経路(橙線)・現在地(赤●)・着陸地点(青●)を合成し、ローバーを画像中心に配置。

  • 対応ローバー(ROVERS テーブル): perseverance(パーサヴィアランス)・curiosity(キュリオシティ)・idefix(MMX 同梱のフォボス用ローバー)。

  • 正直な制約: 走行経路まで取得できるローバー位置データは NASA MMGIS(火星専用)のみ。月面ローバー等の現役位置データは公開されておらず、データ源ができればテーブル追加で対応可能。

🪨 フォボス(MMX / IDEFIX)— 着陸地点の公表に備えた表示

JAXA の MMX(2026-10-20 04:41 JST 打ち上げ)と、MMX のコスト削減のために特別に設計された小型ローバー IDEFIX(DLR/CNES 製造)は 2028 年度末〜2029 年頭にフォボスへ着陸します(MMX 本体は 2030 年頃に着陸して 10 g の試料を採取し、2031 年に地球へ持ち帰ります)。着陸地点は 2027〜2028 年に選定されるため現時点では未公表なので、次の 3 通りに対応しています。

指定

描かれるもの

site_lat / site_lon

指定した地点を**着陸予定点(赤●)**として描きます。公表値をそのまま渡せます。

site_lat / site_lon_w

同じ,但西向き正の経度で指定します(IAU/フォボスの慣用表記。例: Stickney は 1°N 49°W)。site_lon とは排他。

(指定なし)

着陸地点の候補条件である緯度帯 ±30°(緑枠)を描きます。着陸地点そのものではありません。

  • 公表値の自動検出: IAU/U.S. Gazetteer of Planetary Nomenclature の機械可読な地名 feed(PHOBOS_nomenclature_center_pts.kmz)を毎回読み、type に "Landing Site" が含まれる地名を着陸地点として自動採用します。公表されていない今は「未公表」と表示します(structuredContent.landing_site_status = not_published / published / user_specified / unknown)。

  • ベースマップ: USGS 公式全球等角図(Shaded Relief)。配布 PNG には地形ラスタの外に白地の余白・目盛ラベル・題字・クレジットがあるため、surface_map.image_view(crop=…) で地形だけの範囲を切り出して使います(相対範囲なので解像度非依存)。

  • 経度の向き: この図の印字目盛は「西向き正の大きさ」で並んでいますが、地図自体は標準の東向き正(経度が右へ増加)です。IAU 地名 20 点の実測で確定させています(Stickney=49°W は図の左 36.39% に一致)。この向きを誤ると全マーカーが左右反転します。

  • 注意: 内部の座標は東向き正で保持します。0〜360°E の公表値も内部で ±180° に折り返してから投影するので、311°E のような値も画像の外には出ません。

🌕 月面ローバー — 局地サイトプラン(2 段構えの図)

body="moon" で、月面のローバーと遺跡を表示します。対象は アポロ11〜17号(LRV ありは 15/16/17号)、ルノホート1/2号、**玉兔号(嫦娥3号)・玉兔2号(嫦娥4号)**です。

なぜ 2 段構えなのか(実測に基づく)

月面の遺跡は次の機材が数十 m〜数百 m の範囲に散らばっています。

機材

距離の目安

LM(着陸船)

基準点そのもの

アメリカ国旗

8〜11 m

LRV 最終駐車地点

81〜165 m

ALSEP(実験装置)

75〜200 m

LRRR(レーザー反射器)

数十〜200 m

一方、天体面地図(NASA Trek の LRO WAC グローバルモザイク)は 1px あたり数百 m〜20 km しかなく、どの実用的なズームでもこれらの機材は 1 画素に収まりません(同じ点の重なりになります)。つまり等角図法だけの図では 「旗が LM から何 m・何方位にあるか」を示せません。

そこで 2 枚を合成します。

  1. 左: 位置図(等角図法)— 着陸地点の住所と近隣の着陸地点。 例: アポロ12号の LM とサーベイヤー3号は約 0.4 km 離れています(同一クレーター内)。

  2. 右: 局地サイトプラン(メートル単位・北が上・縮尺バーつき)— LM・ALSEP・LRRR・LRV 最終駐車地点・アメリカ国旗を、 一次情報が公開する「距離+方位」だけから求めた位置で描きます。 NASA の Preliminary Science Report が使う site plan と同じ考え方です。

誠実性のルール

  • 描くのは距離と方位の両方が一次情報で公開されている機材だけです。 例えばアポロ11号の旗は「LM の中心線から約 8.2 m」と距離は公開されていますが 方位の公開値がありません。その場合は図には描かず、 凡例に「位置の公開値なし」と書いてテキストで伝えます(推測で埋めない)。

  • 推定した位置は position_status="derived" として区別します (例: アポロ12号の旗は「西 strut と北 strut の中間」という記述から 距離 9.5 m・方位 315° と推定)。

  • 走行経路の全体は公開されていないため、描けるのは公開されている 端点(LM → LRV 最終駐車地点)だけです。そのときは端点間の直線を引き、 「公開されている端点間」と明記します(全経路のように描かない)。

  • 凡例・見出しは図体と重ならない帯に置き、縮尺バーは下部帯に置きます (重なると機材が「消えて」見えるため。実測: アポロ12号の ALSEP が実際にその状態になりました)。

出典

項目

出典

LM / ALSEP / LRRR の座標

NASA NSSDCA「Apollo Landing Site Coordinates」(planetary 中心 Mean Earth/Polar Axis 座標系・DE421・Wagner et al., Icarus 283 (2017))

旗・LRV 最終駐車地点

NASA Apollo Lunar Surface Journal(ALSJ)「Final LRV Parking Places」ほか

月面車(ルノホート・玉兔)の着陸座標と走行距離

LPI / LROC 座標表 / Nature Communications 10:4229 (2019) / CLEP

地図

NASA Trek LRO WAC(認証不要)

使い方

planetary_rover_location_map(body="moon", rover="apollo15")

🛰️ ほかの人工物着陸地点の重ね表示(show_sites)

火星・月の地図には、同じ天体にあるほかの人工物の着陸地点を黄枠●で重ねます。 火星ではマルス2/3号・バイキング1号・パスファインダー・フェニックスなど、 月ではサーベイヤー3号・マクゲッチン・ファルコン9上段の衝突痕です。

  • 自然衝突クレーターと人工物衝突(kind="crater" / "impact")は 着陸地点ではないので重ねません(衝突と着陸は別物)。

  • show_sites=false で非表示にできます。

⚡ キャッシュ(API呼び出しと処理の削減)

外部APIへの呼び出し回数と再計算を抑えるため、データの性質ごとに3層でキャッシュします(cache.py)。

層

対象

方式

TTL

① 不変アセット

Trek 地図タイル / NASA 画像資産 / 星空マップ背景

ディスク(%LOCALAPPDATA%\Temp\space_finder_mcp\cache)

30日(実質無期限)

② 揮発データ

RSS・打ち上げ(LL2)・STAC検索・天気・ESO

プロセス内メモリ

10分

宇宙天気(DONKI) — カテゴリ単位(種別を変えても取り直さない)

プロセス内メモリ

10分

天体観測用天気・メディア検索・ALMA/CADC

プロセス内メモリ

30分

APOD・NEO・EO Dashboard(日次データ。DEMO_KEY 消費も抑制)

プロセス内メモリ

1時間

高コスト計算

探査機・彗星の Horizons 状態ベクトル(分単位でキー化)/SBDB 軌道要素

プロセス内メモリ

24時間(キーが1分ごとに変わる=実質1分)

データセット一覧・ジオコーディング・NASA POWER・Wikidata逆引き

プロセス内メモリ

24時間

③ 高コスト計算

日食(次の日食探索=約2秒/指定日の判定=約0.3秒。探索窓は約4年=1400日)

緯度経度を丸めたキーでメモリ

24時間

実測効果(1回目 → 2回目)

  • planetary_orbiter_track(LRO): 4.46s / 73リクエスト → 1.07s / 1リクエスト(タイル72枚を再取得しない)

  • solar_eclipse_series(東京): 24.2s → 2.2s(探索窓を1400日に拡大しても初回のみ。時刻の配列化でスキャン計算をまとめた)/ 指定日 0.3s

  • sky_map_with_satellites: 24.1s → 4.5s(重点6衛星の TLE を並列取得=直列 20.4s → 1.1s。CelesTrak の遮断はプロセスをまたいで記憶し、blackhole 時の connect 待ち 10 秒を毎回払わない)

  • solar_system_now(俯瞰図): 2.9s → 0.2s(マーカーの光暈を全画面ブラーから周囲だけのタイルブラーへ。画素は改修前と完全一致)

  • planetary_orbiter_track: 2.1s → 1.4s(Horizons の状態ベクトルを分単位キーでキャッシュ)

  • satellite_status: 50.28s → 0.00s / astronomy_weather 2.56s → 0.00s

  • satellite_status(全1,044件の走査): 初回 38.5s → 以後 0.07s(カタログをディスクにも保存し、プロセス再起動後も即時)

  • sky_map_with_satellites(ground) の画像: 992KB → 188KB(JPEG化)

  • search_space_images: インライン画像を3枚 → 1枚(inline_max で増やせる)

  • tools/list(全67ツールの定義。毎ターンのプロンプトに載る): 118.7KB ≈ 約39,600 トークン → 69.1KB ≈ 約23,000 トークン(−42%)。description は「要約+例+Args(引数の一次情報は改変しない)+契約文」に圧縮し、inputSchema からは意味のない title と anyOf: [..., null] を落とす(tool_docs.py)。リポジトリ側の docstring は完全なまま(README/SKILL.md を読む人・エージェント向けの説明は減らない)

設計上の約束

  • 同じ引数の並行呼び出しは1回の実行にまとめます(single-flight)。8並列で投げても実行は1回で、結果は全員に同じものが返ります(共有レート枠を N 倍消費しない)

  • エラー応答はキャッシュしません(一時的な障害やレート制限(429)が固定化しない)

  • 取得失敗時は期限切れでもディスクの古い内容を返します(stale-if-error)

  • 現在位置系(iss_now / tiangong_now / 各位置計算)はリアルタイム性を優先しキャッシュ対象外です(TLEは従来どおり6時間キャッシュ)

  • 遮断(403・接続不可)は記憶して fail fast します。CelesTrak の遮断状態は %LOCALAPPDATA%\Temp\space_finder_mcp\cache\celestrak_block.json に残すため、新しいプロセスでも connect 待ちを繰り返しません(クールダウンは 60〜300 秒で自動的に切れます)


🔐 応答方式(tokyo-transit 方式)

全ツールは CallToolResult を使い、次の2層で応答します。

  • content — 人間向け表示(テキストサマリ、画像は ImageContent)

  • structuredContent — LLM向けの純粋JSON(メディアURL・メタデータを構造化)

これにより、ホストLLMが表示テキストを要約しても元データ(URL等)を失わず、正確な情報を保持できます。


🧪 開発・検証

変更後は次の検証ゲートを通してください(scripts/check-tools.py は依存追加なしで同梱)。

# 1. 構文チェック
uv run python -m compileall -q src/space_finder_mcp

# 2. 全67ツールを実呼び出し(例外漏れ・structuredContent欠落・タイムアウトを検出。数分)
uv run python scripts/check-tools.py

# 3. ネットワーク全断を注入して「例外が外へ漏れないか」を検査
uv run python scripts/check-tools.py --offline

# 4. 未参照定義・未使用import の走査(0件を維持)
uv run python scripts/check-tools.py --dead-code

# 5. 数値引数へ不正値("abc" など)を注入して例外漏れを検査
uv run python scripts/check-tools.py --fuzz

# 5a. 並列ツール呼び出し(LLM が同時に複数ツールを投げる前提)を検査
uv run python scripts/check-tools.py --concurrency

# 5a2. 実クライアント経路(stdio)で代表ツールが応答するか検査
uv run python scripts/check-tools.py --stdio

# 5b. 画像/音声/動画を返すツールが「リンク先行」を守っているか検査(0件を維持)
uv run python scripts/check-tools.py --media-links

# 5c. 描画系ツールの figure/1(図の注記・自己検証)を検査
uv run python scripts/check-tools.py --figures

# 6. 変更したツールだけ先に確認 / CI向けJSON出力
uv run python scripts/check-tools.py --only sat_tle,apod
uv run python scripts/check-tools.py --json

終了コードは 0=正常 / 1=異常です(例外漏れ・structuredContent 欠落・タイムアウト・デッドコード・figure/1 の検証失敗 --figures・メディアのリンク先行違反 --media-links)。MCPサーバーはホットリロードがないため、src/ を変更したらクライアントを再起動してください。

エージェントから使う場合

Claude Code は CLAUDE.md と .claude/rules/、Codex は AGENTS.md、その他のエージェントは SKILL.md を参照します。

# Hermes で接続確認
hermes mcp test space-finder-mcp

プロジェクト構成

src/space_finder_mcp/
├── __init__.py          # main() → mcp.run()
├── __main__.py          # python -m space_finder_mcp 用の入口
├── server.py            # FastMCP サーバー定義・67ツール登録
├── stac_common.py       # STAC系共通の入力検証ヘルパー(bbox/雲量。ツール定義なし)
├── input_utils.py       # 引数の防御的数値変換 as_int/as_float(不正値でも例外を漏らさない)
├── img_common.py        # 画像合成の共通ヘルパー(フォント探索/JPEG化/アンチメリジアン分割。ツール定義なし)
├── name_common.py       # 天体名・衛星名の解決(表記ゆれ/和名→英語/Sesame で名前→座標。ツール定義なし)
├── places.py            # 地名→緯度経度の解決(既知テーブル+Open-Meteo/Nominatim。ツール定義なし)
├── nasa_budget.py       # api.nasa.gov のレート枠管理(投げる前の check/429 の記録/キーの伏せ字化)
├── satellite_map.py     # sat_ground_track(衛星の地上軌道マップ, CelesTrak+SGP4+Blue Marble)
├── cache.py             # キャッシュ基盤(TTLメモリ/ディスク資産キャッシュ。ツール定義なし)
├── ephemeris.py         # 天体暦(JPL DE421)と星座境界の共有ローダ(1度だけ開く。ツール定義なし)
├── jsonio.py            # structuredContent の JSON 正規化(numpy 型/NaN → JSON 七型。唯一の境界)
├── env_config.py        # リポジトリ直下 .env の読み込み(標準ライブラリのみ。ツール定義なし)
├── wikidata_lookup.py   # reverse_lookup(逆引き歴史Q&A)
├── launch.py            # upcoming_launches / china_launches / russia_launches(ロケット打ち上げ・中国・ロシア)
├── nasa.py              # apod / neo_today(NASA日次)
├── media.py             # search_space_images / audio / videos(メディア検索)
├── isro.py              # isro_data(インド ISRO)
├── copernicus.py        # copernicus_collections / copernicus_search(欧州 ESA)
├── jaxa.py              # jaxa_datasets / jaxa_dataset_search(日本 JAXA)
├── csa.py               # csa_dataset_search(カナダ CSA, システムCA検証アダプタ)
├── inpe.py              # inpe_collections / inpe_search(ブラジル INPE STAC)
├── dlr.py               # dlr_collections / dlr_search(ドイツ DLR EOC STAC)
├── roscosmos.py         # roscosmos_collections / roscosmos_search(ロシア Roscosmos 静的STAC)
├── celestrak.py         # sat_tle(CelesTrak 全衛星軌道TLE)
├── uk_datahub.py        # uk_stac_collections / uk_stac_search(英国 EO DataHub)
├── cnes.py              # cnes_status(フランス CNES THEIA/GEODES)
├── weather_astro.py     # astronomy_weather(天体観測用天気, Open-Meteo, 薄明=太陽高度+月相+気象庁雨雲画像)
├── obs_sheet.py         # observing_sheet(観測判断シート: 判定+雲量の予報+衛星+雨雲の合成図)
├── jma_rain.py          # 気象庁の雨雲・降水画像の合成(解析雨量・降水予報+ナウキャスト/雷)
├── weather_sat.py       # weather_satellite_now(GEO/LEO気象衛星の公開画像, 19機+理由コード)
├── power.py             # power_climate(NASA POWER 気候・太陽エネルギー統計)
├── eodashboard.py       # eodashboard_collections / detail(EO Dashboard, NASA/ESA/JAXA)
├── donki.py             # space_weather(NASA 宇宙天気 DONKI)
├── swpc.py              # NOAA SWPC(宇宙天気のフォールバック・フレアイベント・認証不要)
├── ssd.py               # fireball_reports / neo_close_approach / impact_risk(JPL CNEOS, 認証不要)
├── stac_search.py       # stac_collections / stac_search(AWS Earth Search STAC)
├── iss.py               # iss_now(ISS 現在位置, Open Notify)
├── qzss.py              # qzss_status(みちびき QZSS の公開アーカイブ API)
├── oscar.py             # satellite_status(WMO OSCAR 衛星カタログ)
├── cnsa.py              # cnsa_status(中国 CNSA 系衛星データポータル到達状態)
├── tiangong.py          # tiangong_now(天宮 中国宇宙ステーション位置, CelesTrak TLE + SGP4)
├── eso.py               # eso_seeing(ESO パラナル大気・シーイング)
├── cadc.py              # cadc_observations(CADC カナダ天文観測データ)
├── mast.py              # mast_observations(MAST: JWST/HST/TESS の観測アーカイブ検索)
├── gcn.py               # gcn_alerts(NASA GCN: 過渡天体速報 GCN Circulars)
├── literature.py        # 学術文献(OpenAlex/Crossref/NTRS/JAXAリポジトリ/J-STAGE/CiNii/Zenodo/DataCite + 任意キー ADS/S2/WoS)
├── alma.py              # alma_search(ALMA 電波観測データ, Science Archive TAP)
├── tart.py              # radio_sources_now(TART オープン電波望遠鏡 可視電波源)
├── skyfield_pos.py      # constellation_now(天体位置・星座, Skyfield)
├── cds.py               # object_lookup / catalog_search(CDS SIMBAD・VizieR の天体カタログ検索)
├── exoplanet.py         # exoplanet_search(NASA Exoplanet Archive TAP・ADQL)
├── news.py               # astronomy_news(Sky & Telescope 天文ニュース)
├── sky_overlay.py        # sky_map_with_satellites(星図+人工衛星。描画は ground_view に一本化)
├── ground_view.py        # sky_map_with_satellites(engine="ground") 地上視点パノラマ(実星表・天の川・街並み・方位目盛り)
├── solar_model.py        # 太陽系のデータモデル(惑星表・SBDB 要素・ケプラー伝播・円錐曲線)
├── solar_render.py       # 太陽系の斜め俯瞰レンダラと画素検証(Pillow・通信しない)
├── solar_system.py        # solar_system_now(太陽系俯瞰図, JPL DE421+SBDB。描画は _render_oblique の1本)
├── comet_apparition.py   # 彗星の見え方チャート(solar_system_now view="apparition")
├── swingby.py            # スイングバイ航路の実測(Horizons 状態ベクトル+最接近探索)
├── orbit_view.py          # 斜め俯瞰の投影部品(正射影/弱い透視・対数/線形動径・円錐曲線サンプリング・深度)
├── orbit3d.py             # 天体中心 3D の斜め俯瞰(周回機の軌道面の傾斜・高度・進行方向)
├── solar_eclipse.py       # solar_eclipse_series(日食の時系列パネル, JPL DE421+Skyfield)
├── moon_phase.py          # moon_phase_map(月齢マップ: 月齢カレンダー/朔望月パネル, JPL DE421+Skyfield)
├── mars_rover.py         # mars_rover_status(火星ローバー状況・天気)
├── site_plan.py         # 月面遺跡の局地サイトプラン描画と一次情報データ
├── tool_docs.py         # tools/list の description 圧縮・スキーマ整形
├── http_retry.py        # 一時的な接続失敗だけを再試行する HTTP ラッパ
├── surface_map.py        # 天体面地図の共通描画(タイル合成・等角投影・地点マーカー・画素検証)
├── planetary_map.py      # planetary_orbiter_track(汎用・天体周回機マップ/落点マップ)
├── calendar_store.py     # 蓄積ストア(正規化レコード+来歴/ユーザー予定・原子書き込み・月別TTL・prune)
├── space_calendar.py     # space_calendar / calendar_events / calendar_event_add / calendar_event_remove
└── planetary_rover.py    # planetary_rover_location_map(汎用・ローバー位置マップ)

リポジトリ直下(エージェント・クライアント向け):

space-finder-mcp/
├── CLAUDE.md                # Claude Code 用プロジェクトガイド
├── AGENTS.md                # Codex など AGENTS.md を読むエージェント向け
├── SKILL.md                 # エージェント向けスキル定義(67ツール仕様)
├── mcp.json                 # MCPクライアント設定の例
├── .env.example             # 環境変数の例(NASA_API_KEY は任意)
├── .claude/rules/           # 開発規約(coding-conventions / testing-and-verification / data-and-sources)
├── scripts/check-tools.py   # 回帰検証ゲート(全ツール実行 / --offline / --dead-code / --fuzz
│                            #   / --figures / --media-links / --concurrency / --stdio)
├── tests/                   # 回帰テスト(unittest discover -s tests。並列・起動import・遮断時の挙動)
├── pyproject.toml           # 依存・バージョン(uv 管理)
└── README.md / LICENSE

📄 ライセンス / 注意

  • ライセンス: MIT License(本リポジトリの LICENSE を参照)

  • データソース: NASA・NASA Image & Video Library・Launch Library 2・Wikidata(Wikimedia)・ISRO・ESA Copernicus Data Space・JAXA Earth API・CSA Open Data・INPE BDC・CelesTrak(遮断時は tle.ivanstanojevic.me / SatNOGS へフォールバック)・UK EO DataHub・CNES THEIA/GEODES・CNSA(NSMC/CNSA-GEO/CRESDA)・CelesTrak(天宮TLE)・ESO ASM・ALMA Science Archive(NAOJ)・TART・CADC・JPL/Skyfield(de421)・NASA MMGIS・NASA Trek WMTS・Open-Meteo(CC BY 4.0)・EO Dashboard・NASA CCMC/DONKI・NOAA SWPC・NASA POWER・AWS Earth Search STAC・Open Notify・WMO OSCAR は、それぞれの利用条件・ライセンスに従います。

  • 宇宙データは科学的な内容を含みます。応答時は引用元(Wikipedia / NASA / ISRO / ESA / JAXA / CSA / CNSA 等)へのリンクを必ず表示してください。

  • 画像・動画・音声の著作権・クレジット表記は各ソースの指示に従ってください(NASA素材は NASA Media Usage Guidelines を参照)。


🗺️ ロードマップ

  • 逆引き歴史Q&A(Wikidata)

  • ロケット打ち上げ・NASA日次

  • 画像・音声・動画の検索・表示

  • 他国の宇宙機関データ(ISRO・ESA/Copernicus・JAXA・CSA・INPE・CelesTrak・UK EO DataHub・CNES)

  • 天体観測用天気(Open-Meteo)

  • EO Dashboard(NASA/ESA/JAXA 共同地球観測カタログ)

  • 宇宙天気(NASA DONKI: 太陽フレア・CME・地磁気嵐)

  • AWS Earth Search STAC(Sentinel/Landsat/NAIP 検索)

  • ISS 現在位置(Open Notify + Googleマップ表示)

  • WMO OSCAR 衛星カタログ(運用ステータス)

  • 中国 CNSA 系衛星データポータル(風雲/高分/CBERS 到達状態)

  • 中国のロケット打ち上げ(china_launches)・天宮リアルタイム位置(tiangong_now)

  • 天体観測の強化(astronomy_weather に月相・月明かり統合)・NASA POWER 気候データ(power_climate)

  • 世界の天文観測データ(ESO パラナルシーイング・CADC カナダ天文データ・MAST/JWST・HST アーカイブ)

  • ロシア(Roscosmos)の打ち上げデータ(russia_launches)

  • 天体位置・星座計算(constellation_now, Skyfield + JPL)

  • 天文ニュース(astronomy_news, Sky & Telescope RSS)

  • 火星探査ローバー状況(mars_rover_status, Mars Weather)

  • 地球リアルタイム画像(EPIC/DSCOVR)

  • 惑星の3D地図(NASA Trek WMTS)

  • 多言語(en/zh)応答の全面対応

Available Tools

67 tools
apodA

今日(または指定日)の NASA の今日の天文写真(APOD)を返す。NASA_API_KEY が必要。

例:「今日の天文写真」「2026-10-01 の APOD」

Args: date: YYYY-MM-DD。省略時は今日(当日分が未公開なら前日へ自動フォールバック)。

回答時はこのリンクをそのまま提示してください。

Inputs: date.

astronomy_newsA

天文ニュース・観測ガイドを返す(複数フィードのフォールバック付き・認証不要)。

例:「今日の天文ニュース」「今週の星空ガイド」「惑星観測の見どころ」など。

Args: limit: 返す件数(既定 8、最大 15)。 section: 絞り込み("all"=全部, "observing"=観測ガイド, "news"=ニュース)。

Inputs: limit, section.

astronomy_weatherA

天体観測に最適な時間帯を予報する(Open-Meteo, 認証不要・全世界対応)。

例:「東京で今夜天体観測できる?」「シドニーの晴れ予報」「富士山頂の雲量」

Args: latitude: 緯度(例 東京 35.68)。place 指定時は省略可。 longitude: 経度(例 東京 139.69)。 place: 地名(緯度経度より優先)。Open-Meteo のジオコーディングで解決。 days: 予報日数(1〜7、既定 3)。 max_cloud: 「観測可」とみなす雲量の上限%(既定 40)。 sun_alt_max: 観測時間帯とみなす太陽高度(度)の上限。既定 -15(薄明の 明るい時間帯を除外)。-18 で天文薄明=完全な暗夜のみ、-6 なら市民 薄明が終わった後から。Open-Meteo は hourly に太陽高度を返さないため、 日付・経度・UTCオフセットから解析的に推定する(極昼・極夜などで 推定できない地点は is_day のみで判定)。 include_rain: 日本国内の地点に限り、気象庁の雨雲・降水画像 (解析雨量・降水短時間予報のパネル+ナウキャスト=雨雲の動き)を 添付する(既定 True。取得失敗時は添付なしで続行)。 ⚠️ structuredContent.figure.notes は要約せずそのまま引用すること。 (添付した雨雲・降水画像は content に「🖼️ ◯◯を開く」のリンク付きで出します。 インライン画像を描画しないハーネスでは、回答にこのリンクをそのまま提示してください。)

Inputs: days, place, latitude, longitude, +3 more.

cadc_observationsA

CADC(カナダ天文データセンター)の観測データを検索する(認証不要)。

例:「ハッブルが撮ったNGC 300」「オリオン星雲の観測データ」「ジェミニの観測一覧」

Args: object_name: 天体名(例 "M31", "Orion", "NGC 300", "M104", "Sombrero", "HL Tau")。 座標指定より優先。内蔵テーブルに無い名前は SIMBAD/NED(Sesame)で座標解決し、 和名(オリオン大星雲 等)も英語名に展開して解決する(推測では検索しない)。 ra: 赤経(度)。object_name 省略時、dec と併用。 dec: 赤緯(度)。 radius: 検索半径(度, 既定 0.5)。 telescope: 望遠鏡で絞り込み(例 "HST", "Gemini-North", "TESS")。 limit: 返す件数(既定 8、最大 20)。

Inputs: ra, dec, limit, radius, +2 more.

calendar_event_addA

カレンダーに自分の予定を追加する(ローカルの蓄積ストアに保存。外部へは送信しません)。

Args: title: 予定の名前(例: 「すばる望遠鏡 観測提案の締切」)。 date: 開始日。"2026-10-24" / "2026/10/24" / "2026年10月24日" / "10/24"(年は今年と解釈)。 time: 開始時刻(例 "10:30" / "10時30分")。省略すると終日予定になります。 date_end: 終了日(複数日の予定・展覧会など)。省略すると1日。 repeat: 繰り返し: none / daily / weekly / monthly / yearly(既定 none)。 note: 補足メモ(任意)。

Inputs: date (required), note, time, repeat, +1 more.

calendar_event_removeA

カレンダーの自分の予定を削除する(id か title[+date] で指定)。

例:「追加した予定を消して」「10/20のミーティングを削除」

Args: id: 予定の ID(calendar_events の一覧に出る。最も確実)。 title: 予定の題名(部分一致ではなく完全一致)。id が無いときに使う。 date: 予定の日付 YYYY-MM-DD(title と併用して1件に絞る)。

Inputs: id, date.

calendar_eventsA

蓄積済みのイベント一覧を返す(図を描かず、外部APIも呼ばない軽い経路)。

例:「今月の予定は?」「10月の公開イベントは?」のように、まず一覧だけ見たいときに使ってください。

Args: year: 対象年(既定: 基準地の今年)。 month: 対象月(既定: 基準地の今月)。 place: タイムゾーン決定のための基準地(既定 東京)。 kinds: カテゴリの絞り込み: user/launch/sky/neo/fireball/public/holiday(カンマ区切り)。 all で全部。neo / fireball は neo_close_approach / fireball_reports の呼び出しで 蓄積されたレコードだけが出ます。

Inputs: year, kinds, month, place.

china_launchesA

中国のロケット打ち上げ予定(長征シリーズ・LandSpace等の民間企業を含む)を返す。

Args: limit: 返す件数(既定 8、最大 15)。 status: 状態で絞り込み(例 "Go for Launch", "To Be Determined")。省略で全状態。

Inputs: limit, status.

cnes_statusA

フランス CNES の地球観測データポータル(THEIA / GEODES)の到達状態と概要を返す。

例:「フランスのCNES衛星データ」「THEIAポータル」

Inputs: no named parameters.

cnsa_statusA

中国 CNSA 系衛星データポータル(風雲/NSMC・高分/CNSA-GEO・CBERS/CRESDA)の到達状態と概要を返す。

例:「中国の衛星データ」「風雲衛星」「高分」「CBERS」

Inputs: no named parameters.

constellation_nowA

指定した観測地・日時で太陽・月・惑星の位置(高度・方位角・星座)を返す。

Args: latitude: 観測地の緯度(例 東京 35.68)。place 指定時は省略可。 longitude: 観測地の経度(例 東京 139.69)。 place: 観測地名(既知テーブル)。緯度経度より優先。 time_utc: 観測時刻。ISO8601("2026-10-31T12:00:00Z" / "2026-10-31 12:00"、 ±hh:mm のオフセットも可)。省略で現在。天体暦(DE421)の収録期間 1899-07-29〜2053-10-09 の外はエラー結果を返します。

Inputs: place, latitude, time_utc, longitude.

copernicus_collectionsA

ESA Copernicus の利用可能な衛星データコレクション一覧を返す(認証不要)。

例:「Copernicusの衛星データ」「Sentinelのコレクション」

Args: limit: 返す件数(既定 20、最大 100)。

Inputs: limit.

dlr_collectionsA

DLR(ドイツ航空宇宙センター)EOC の地球観測コレクション一覧を返す(認証不要)。

例:「ドイツの地球観測データ」「DLRのSentinel-2コレクション」

Args: limit: 返す件数(既定 40、最大 100)。

Inputs: limit.

eodashboard_collectionsA

EO Dashboard(NASA・ESA・JAXA共同)の地球観測データセットを検索する(認証不要)。

例:「NASAの大気データ」「気候変動の衛星データ」「NO2 のデータセット」

Args: themes: テーマ(例 "atmosphere", "oceans")。カンマ区切りで複数可。 agency: 機関(例 "NASA", "ESA", "JAXA")。 keyword: キーワード(タイトル・説明に部分一致)。 limit: 返す件数(既定 20、最大 50)。

Inputs: limit, agency, themes, keyword.

eodashboard_detailA

EO Dashboard の1つのデータセットの詳細(衛星・センサー・説明・参照リンク・画像)を返す。

例:「NO2データセットの詳細」「EO Dashboardの海面水温の情報」

Args: identifier: コレクションIDまたは名前(例 "N1_NO2", "NO2_daily", "sea_ice")。 大まかな名前でも探す。 show_image: サムネイルをチャットにインライン表示するか(既定 True)。

回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。

Inputs: identifier (required), show_image.

eso_seeingB

ESO パラナル天文台(チリ, VLT)のリアルタイム大気・シーイング観測データを返す。

例:「パラナル天文台のシーイング」「VLTの観測コンディション」「赤外線観測の水蒸気」

Args: hours: 過去何時間分を取得するか(既定 12、最大 48)。 fields: カンマ区切りの観測フィールド。省略で主要フィールド。

Inputs: hours, fields.

fireball_reportsA

JPL CNEOS の火球(大気圏突入)観測記録を返す(認証不要・APIキー不要)。

例:「最近の火球」「今月の大きな火球」「火球はどこで観測された?」「隕石は落ちた?」

Args: days: 何日前までをさかのぼるか(1〜1825、既定 30)。UTC の日付で絞り込みます。 min_impact_energy_kt: 衝突エネルギーの下限(kt TNT 換算。例 0.5)。省略時は全件。 limit: 表示する最大件数(1〜50、既定 10)。新しい順。 require_location: True なら緯度経度が報告されている記録だけを返します。

Inputs: days, limit, require_location, min_impact_energy_kt.

gcn_alertsA

NASA GCN(General Coordinates Network)の過渡天体速報(GCN Circulars)を返す(認証不要)。

例:「直近1週間のGRB速報」「今日のGCN速報」「重力波の続報」「EP(アインシュタイン探査機)のアラート」

Args: days: 何日前までを対象にするか(1〜60、既定 7)。UTC 日付で絞り込みます。 query: キーワード(例 "GRB", "neutrino", "GW", "SVOM", "EP")。省略時は全件。 circular_id: Circular 番号(例 "45640")。指定すると1件の本文を返します(一覧は返しません)。 limit: 一覧で返す最大件数(既定 25、最大 100)。

回答時は Circular のリンクをそのまま提示してください。

Inputs: days, limit, query, circular_id.

impact_riskA

JPL Sentry による「将来の衝突リスク」を返す(認証不要・APIキー不要)。

例:「衝突確率の高い小惑星」「Sentry に載っている天体」「2024 YR4 の衝突リスク」

Args: designation: 小惑星の仮符号または番号(例 "2024 YR4"、"2000 SG344"、"99942")。 指定すると、その天体の詳細(累積確率・想定時期・仮想衝突(VI)の一覧)を返します。 和名・愛称は JPL 側が受け付けません。推測せず仮符号で指定してください。 min_probability: 一覧の下限(累積衝突確率 ip。既定 1e-3 = 0.1%)。1e-10〜1。 limit: 一覧で表示する最大件数(1〜50、既定 10)。確率の高い順。

Inputs: limit, designation, min_probability.

inpe_collectionsA

ブラジルINPEの衛星データコレクション一覧を返す(認証不要)。

例:「ブラジルの衛星データ」「CBERSのコレクション」

Args: limit: 返す件数(既定 30、最大 100)。

Inputs: limit.

isro_dataA

ISRO(インド宇宙研究機関)の公式データを返す(認証不要)。

Args: kind: データ種別 - "spacecrafts": ISROが打ち上げた人工衛星一覧(既定) - "launchers": ISROのロケット(打ち上げ機)一覧 - "customer_satellites": ISROが外国向けに打ち上げた顧客衛星一覧 - "centres": ISROのセンター/施設一覧 query: 部分一致検索語(例: "cartosat", "chandrayaan")。省略で全件。 limit: 返す件数(既定 20、最大 100)。

Inputs: kind, limit, query.

iss_nowA

ISS(国際宇宙ステーション)の現在位置を返し、Googleマップで表示できるURLを生成する。

例:「ISSは今どこ?」「国際宇宙ステーションの現在位置」

Inputs: no named parameters.

jaxa_datasetsA

JAXA Earth の地球観測データセット(ALOS/GSMaP/GCOM等)一覧を返す(認証不要)。

例:「JAXAの地球観測データ」「GSMaP降雨データセット」

Args: limit: 返すデータセット件数(既定 30、最大 100)。

Inputs: limit.

mars_rover_statusA

NASA 火星探査ローバーの現在の状況・天気・最新写真を返す。

例:「キュリオシティの現在の状況」「火星探査ローバーの今」「パーサヴィアランスの天気」

Args: rover: ローバー名("curiosity"=キュリオシティ既定, "perseverance"=パーサヴィアランス)。 天気フィードが稼働しているのは現状 MSL(キュリオシティ) のみ。 show_photos: 保持(互換用。Mars Rover Photos API は廃止済みのため取得しない)。

Inputs: rover, show_photos.

mast_observationsA

MAST(NASA/STScI の宇宙望遠鏡アーカイブ)の観測データを検索する(認証不要)。

例:「M31 を JWST が観測したデータ」「ハッブルが撮ったオリオン大星雲の観測ログ」

Args: object_name: 天体名(例 "M31", "Orion Nebula", "NGC 300", "アンドロメダ")。 内蔵/SIMBAD/NED(Sesame)で座標解決し、その周囲をコーン検索します。座標より優先。 解決できない名前は target_name のワイルドカード検索(* は % 扱い)に切り替えます。 ra: 赤経(度)。object_name 省略時、dec と併用。 dec: 赤緯(度)。 radius: コーン検索の半径(度, 既定 0.05・最大 5)。 mission: ミッション/望遠鏡(例 "JWST", "HST", "TESS", "ハッブル", "ウェッブ", "Kepler")。 instrument: 装置名の部分一致(例 "NIRCam", "MIRI", "WFPC2", "NIRSPEC")。 product_type: データ種別(image / spectrum / cube / timeseries / catalog、部分一致可)。 start_date: 観測日の下限(例 "2024-01-31"、"2024")。t_min(MJD)に変換して絞り込み。 end_date: 観測日の上限。 include_products: true で上位3観測のデータ製品(ファイル名・サイズ・DLリンク)も返す。 include_calibration: true で校正用露出(BIAS/DARK 等の intentType=calibration)も含める。 既定 false(科学観測だけ)。 preview_image: true で先頭観測のプレビュー画像(.jpg/.png)を content にインライン表示する (データ製品を取得し、画像1枚を保存してリンクと併せて返す)。 limit: 返す観測件数(既定 10、最大 50)。

Inputs: ra, dec, limit, radius, +9 more.

moon_phase_mapA

月齢マップ(月の満ち欠けを1か月ぶん並べた図)を返す(認証不要・ローカル計算)。

例:「今月の月齢マップを見せて」「2026年9月の月相カレンダー」「9月の満月はいつ?」

Args: date: 年月("2026-09" / "2026年9月")または年月日("2026-09-16")。省略時は現在の月。 place: 観測地(例 "東京","大阪","new york")。lat/lon 指定時は無視。省略時は東京。 lat: 観測地の緯度。lon と併用時は place より優先。 lon: 観測地の経度。 layout: "calendar"(既定・1か月の格子)または "lunation"(朔望月の時系列パネル)。 days: layout="lunation" のパネル枚数(3〜12・既定8)。calendar では無視。

回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。

Inputs: lat, lon, date, days, +2 more.

neo_close_approachA

小惑星・彗星の地球接近(近地球天体の接近イベント)を返す(認証不要・APIキー不要)。

例:「今日/今週地球に接近する小惑星」「危険な小惑星の接近予報」「月距離以内に来る天体」

Args: days: 何日先までを見るか(1〜365、既定 7)。 max_distance_au: 接近距離の上限(au、既定 0.05 ≒ 19.5 月距離。0.00256 au ≒ 1 LD)。 limit: 表示する最大件数(1〜50、既定 10)。接近時刻の早い順。 hazardous_only: True なら「潜在的に危険な小惑星(PHA)」だけに絞ります。 PHA は小惑星の区分なので彗星は含めません(彗星に PHA はありません)。 kind: 対象の種別。"all"(既定=小惑星+彗星)/"asteroid"(小惑星のみ)/ "comet"(彗星のみ)。a/c や「小惑星」「彗星」も受け付けます。

Inputs: days, kind, limit, hazardous_only, +1 more.

neo_todayA

今日地球に接近する小惑星(NEO)を返す。NASA_API_KEY が必要。

例:「今日地球に近づく小惑星は?」「NEOの接近情報」

Inputs: no named parameters.

object_lookupA

天体の基本情報を SIMBAD(CDS)から取得する(認証不要)。

例:「M31 ってどんな天体?」「シリウスの距離とスペクトル型」「プレアデス星団の周辺天体」

Args: object_name: 天体名(Messier 番号・英語名・和名・星表名。例 "M31", "Sirius", "オリオン大星雲", "HD 48915")。和名は英語名に展開して試す。 neighbors: 0 より大きいと、その天体の周辺天体をこの件数だけ円錐検索して返す。 radius_arcmin: 周辺天体を探す半径(分角, 0.1〜30, 既定 2.0)。

Inputs: object_name (required), neighbors, radius_arcmin.

observing_sheetA

天体観測の判断シート(判定+雲量+衛星+雨雲)を1枚で返す。

例:「今夜の観測は大丈夫? 図で」「雲の様子と雨雲を1枚で見せて」

Args: place: 観測地(例 "東京")。省略時はエラー(地点は必須。lat/lon でも可)。 lat: 緯度(-90〜90)。lon と併用。 lon: 経度(-180〜180)。 band: 衛星パネルの帯域(既定 "infrared"=夜でも読める。可視は夜に真っ暗)。

回答時はこのリンクをそのまま提示してください。

Inputs: lat, lon, band, place.

planetary_evidenceA

天体(惑星・衛星・小天体・探査機)の文献的な裏づけをまとめて返すツール。

例:「火星」「エウロパ」「タイタン」「はやぶさ2」「リュウグウ」「ベスタ」

Args: object_name: 天体・ミッション名(日本語可)。 limit: 返す最大件数(1〜25、既定 8)。 include_japanese: 日本語文献(JAXAリポジトリ・J-STAGE・CiNii)も検索するか(既定 true)。 sort: "citations"(既定・被引用数順)/ "date"(新しい順)/ "relevance"。 planetary_only: OpenAlex の検索を「惑星科学」概念に限定する(既定 true)。裸の天体名でも 惑星科学の文献が上位に来ます(実測: "Mars" 単独だと R 言語マニュアルが 35万引用で 1位になるが、限定すると THEMIS / MSL / MAVEN が上位)。銀河・恒星など太陽系外の 天体を調べるときは false にするか space_literature_search を使ってください。

回答時は DOI リンク・出典の「出典:」行・caveats をそのまま提示してください。

Inputs: sort, limit, object_name, planetary_only, +1 more.

planetary_orbiter_trackA

任意の天体(月・火星・水星・タイタン等)を周回する探査機、または接近通過(フライバイ)・スイングバイする探査機の現在位置と航路を、その天体の地図にプロットした画像を返す。flyby=True で最接近(CA)を自動探索し、最接近時刻・高度・相対速度・最接近点を出す(軌道表示の対象は月・火星・水星・タイタン・ベスタ・ケレス+ガリレオ衛星)。

例:「LROの現在位置を月面地図で」「MROの火星での現在地」「火星周回機の位置」「BepiColombo の水星接近通過(フライバイ)の航路」「ジュノーのエウロパフライバイ」「エウロパ・クリッパーの火星スイングバイ」

Args: body: 天体名(和名も可。"エウロパ" → europa)。軌道表示は moon, mars, mercury, titan, vesta, ceres, io, europa, ganymede, callisto の10天体 (Trek にタイルが無い天体は1枚の全球画像をベースマップに使う)。 地点が登録されていない天体(ガス惑星・小天体)は sites="map" で全球図を返す。 orbiter: 機体名。周回機(月: lro, gateway/火星: mro, odyssey)/接近通過する探査機 (ミッション名: "europa clipper"/"juice"/"bepicolombo"/"hera"/"psyche"/"lucy"/ "new horizons"/"はやぶさ2"/"juno"/"parker solar probe"/"solar orbiter"/"mmx")/ JPL Horizons の負の天体ID(例 "-74")。和名・別名も可("かぐや"/"エウロパ・クリッパー" 等)。 過去機(kaguya 等)は運用終了のため現在位置は返さず、落点が公表されている 機体(かぐや)は落点の緯度経度・時刻・出典を structuredContent.impact_site に返す。 when: 観測時刻 ISO8601(例 "2026-09-10T00:00:00Z")。省略で現在。 minutes: 現在位置の前後何分の軌道を表示するか(既定 90, 最大 1440)。 step: トレイルの時間刻み(分。既定: 通常 5/flyby=True では 1, 最小 1/60=1秒)。 ca_hours: 最接近を探す範囲(指定時刻の前後。既定 48=±24時間, 最大 720=±30日)。 zoom: 地図ズーム 1〜最大(既定: span_deg>=360 なら1=全面, それ未満は3)。 span_deg: 表示する経度幅(度。360=天体全面, 既定 120, 最大 360)。 out_px: 出力画像の長辺ピクセル(既定 900, 最大 1600)。 flyby: True で接近通過(フライバイ)モード。指定時刻の前後 ca_hours/2 時間を 走査して最接近(CA)を探し、表示時刻と地図の中心を CA へ置き直す (トレイルは CA の前後 minutes 分。既定 False=従来どおり指定時刻の位置)。 sites: 地点マーカー図にする場合の地点指定(例 "apollo"=アポロ6地点すべて、 "apollo11"="apollo17"=個別、"map"=地図のみ、"newcrater"=月に新しくできた クレーター2点)。指定すると周回機の計算を行わず、公表座標にマーカーを置いた図を 返す(1地点なら局所図、複数なら天体全面図+凡例)。旗の位置は公開表に無いため、 注記でその旨を明示する。sites="newcrater" は マクゲッチン(2024-04-11〜 05-22 に自然衝突で形成。直径 222 m・1.3536°N 67.1765°E)と ファルコン9上段の 衝突痕(2026-08-05 06:35 UTC。直径 18 m・19.4759°N 266.7138°E)を返す。 記録上いちばん新しいのは人工物の衝突(ファルコン9上段, 2026-08-05)、 自然衝突ではマクゲッチンが最新(この規模は月で平均 132 年に1回)。 mode: "map"(既定)=天体面の等角地図に真下の点の軌跡を描く/ "orbit3d"=天体を中心に置いた 3D の斜め俯瞰。地表図では読めない **軌道面の傾斜角・高度の幅・進行方向(順行/逆行)**を図と数値で示す (周回機の軌道を「斜めから立体的に」見たいとき・教育用途はこちら)。 "3d"/"orbit"/"oblique3d" も同じ。 elevation: 3D ビューのカメラ仰角(度, 0〜90。既定 34)。0 で真横(軌道面が線に見える =傾斜が最も分かる)、90 で真上(軌道が円に見える)。mode="orbit3d" でのみ効く。 azimuth: 3D ビューのカメラ方位(度, -360〜360。既定 28)。黄道面内の回転。 dolly: 透視の強さ=カメラ距離(画面半径の倍数, 0〜20。既定 4.2)。0 で完全な正射影。 (elevation/azimuth/dolly は範囲外・非数値なら黙ってクランプせずエラー結果を返す)

回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。

Inputs: body, mode, step, when, +11 more.

planetary_rover_location_mapA

任意の天体面を移動する探査ローバーの現在地を、その天体の地図上に示した画像を返す(認証不要)。

例:「パーサヴィアランスの現在地を火星地図で」「キュリオシティが今どこにいるか地図で」

Args: body: 天体名(既定 "mars"。"mars" / "phobos" / "moon")。 rover: ローバー名("perseverance"=既定, "curiosity", "idefix"、 "apollo11"〜"apollo17", "lunokhod1", "lunokhod2", "yutu", "yutu2")。 日本語名(「パーサヴィアランス」「玉兔2号」「アポロ15号」等)も可。 zoom: 地図ズーム(タイル系のみ)。省略時は天体の最大ズーム。 span_deg: 表示する画角(経度幅・度)。大きいほど広範囲・解像度低下。既定0.5。 out_px: 出力画像の長辺ピクセル(既定1000, 最大2000)。 site_lat: 着陸地点の緯度(度・北が正)。指定するとその地点を「着陸予定点」として描く。 site_lon: 着陸地点の経度(度・東向き正)。site_lon_w とは排他。 site_lon_w: 着陸地点の経度(度・西向き正。IAU/フォボスの慣用表記)。 show_lat_band: 着陸地点の緯度制約帯(フォボスでは ±30°)を描くか。既定 True。 show_sites: 同じ天体にあるほかの人工物の着陸地点を地図に重ねて描くか。既定 True。 例: 火星ではマルス2/3号・バイキング・フェニックスなど、月では サーベイヤー3号(Apollo 12 号の LM のすぐ隣)など。

回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。

Inputs: body, zoom, rover, out_px, +6 more.

power_climateA

NASA POWER API で任意地点の過去の気候・太陽エネルギー統計を返す(認証不要)。

例:「東京の過去1年間の日射量」「ハワイの気温データ」「太陽光発電の立地評価」

Args: latitude: 緯度(例 東京 35.68)。 longitude: 経度(例 東京 139.69)。 start: 開始日 "YYYY-MM-DD"。省略で1年前。 end: 終了日 "YYYY-MM-DD"。省略で直近データ。 parameters: カンマ区切りのパラメータ(例 "T2M,ALLSKY_SFC_SW_DWN")。 省略で主要パラメータ(気温・日射量・風速)。

Inputs: latitude (required), longitude (required), end, start, +1 more.

qzss_statusA

みちびき(準天頂衛星システム QZSS)の軌道・補強信号データを取得する(認証不要)。

例:「みちびきは今どのあたりにある?」「準天頂衛星の軌道データ」「みちびきの

Args: kind: データ種別。既定 "orbit"(QZU 超速報 軌道 SP3)。他に rapid-orbit / final-orbit / clock / erp / almanac / ephemeris / ephemeris-qzss / l1s / l6 / anpi(安否確認サービス)/ naqu。 orbit 以外は最新ファイルの一覧とダウンロードURLを返す(本体は取得しない)。 未知の種別は候補一覧を返して停止する。 count: 一覧に出すファイル数(既定 5, 最大 20)。orbit 以外で使う。 product_id: 特定のファイル ID(例 "qzu24373_18.sp3")。省略時は最新。

Inputs: kind, count, product_id.

radio_sources_nowA

TART オープン電波望遠鏡が「いま観測できる電波源」を返す(認証不要)。

例:「いま上空に何が見える?」「ダニーデンの電波望遠鏡が見ている衛星」

Args: lat: 観測地点の緯度(度)。省略時は TART 本体のある NZ(-45.87)。 lon: 観測地点の経度(度)。省略時は NZ(170.60)。 alt: 観測地点の標高(m, 既定 100)。 elevation: 地平線からの最小仰角(度, 既定 10。高いほど地平線近くを除外)。 limit: 返す件数(既定 15、最大 50)。

Inputs: alt, lat, lon, limit, +1 more.

reverse_lookupA

逆引き歴史Q&A — カテゴリ+国 で絞り込んだ最初/記録の宇宙オブジェクトを Wikidata から探す。

例: 「米国で最初に打ち上げた宇宙望遠鏡は?」→ category="宇宙望遠鏡", country="United States" 例: 「日本初の人工衛星は?」→ category="人工衛星", country="Japan"

Args: category: 探す対象のカテゴリ(宇宙望遠鏡/space probe/satellite/astronaut など)。 launch_date: 打ち上げ日(P619)で並べる場合は True。False にすると対象を列挙する。 country: 国名(例 "United States", "Japan", "India")。Wikidata 上で Q-id に自動解決する。 country_qid: 国の Q-id を直接指定する場合(例 "Q30"=米国, "Q17"=日本)。country より優先。 limit: 返す件数(既定 5)。 order: "asc"=古い順(最初のもの), "desc"=新しい順。 language: ラベル表示言語(ja/en/zh など)。

Inputs: category (required), limit, order, country, +3 more.

roscosmos_collectionsA

Roscosmos オープンデータ STAC のコレクション一覧を返す(認証不要)。

例:「ロシアの気象衛星の公開データ」「Elektro-L の全球画像コレクション」

Args: level: 辿る深さ(1=最上位のみ、2=観測機器まで〈既定〉、3=処理レベルまで。最大 3)。

Inputs: level.

russia_launchesA

ロシア(Roscosmos)のロケット打ち上げ予定を返す(ソユーズ・プロトン・アンガラ等)。

Args: limit: 返す件数(既定 8、最大 15)。 status: 状態で絞り込み(例 "Go for Launch")。省略で全状態。

Inputs: limit, status.

satellite_statusA

世界気象機関(WMO)OSCARの衛星カタログから、気象・地球観測衛星の運用ステータスを返す。

例:「ロシアの気象衛星」「Meteor-Mの運用状況」「世界の気象衛星一覧」

Args: query: 検索語(衛星名・略称)。和名は英語名に自動展開する ("ひまわり"→himawari, "だいち"→alos, "宇宙ステーション"→iss)。 例 "meteor", "resurs", "goes", "himawari", "だいち"。 agency: 機関名(例 "Roscosmos", "NOAA", "EUMETSAT", "JAXA")。 limit: 返す件数(既定 10、最大 20)。

Inputs: limit, query, agency.

sat_ground_trackA

任意の人工衛星の現在位置と地上軌道を地球地図にプロットした画像を返す。

例:「ISSの現在位置を地球地図で」「ひのでの位置を地図で」「ハッブルの軌道」

Args: norad_id: NORAD カタログ番号(例 25544=ISS, 29479=ひので)。name より優先。 name: 衛星名または省略名(例 "iss", "hubble", "hinode")。既知の衛星は ID に解決、それ以外は TLE を直接検索。 when: 観測時刻 ISO8601(例 "2026-09-10T03:30:00Z")。省略で現在。 minutes: 現在位置の前後何分の軌道を表示するか(既定 45、最大 1440=24時間)。 準天頂衛星(みちびき)の8の字軌道を見るには 720 前後を指定。 step: トレイルの時間刻み(分。既定 1、最小 0.5)。小さいほど滑らか。 out_px: 出力画像の幅ピクセル(既定 1200、最大 2048)。

回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。

Inputs: name, step, when, out_px, +2 more.

sat_tleA

任意の人工衛星(ISS・ハッブル・気象衛星・中国宇宙ステーション等)の軌道要素(TLE)を返す。

例:「ISSの軌道要素」「ハッブル宇宙望遠鏡のTLE」「気象衛星の軌道」

Args: name: 衛星名または省略名(例 "iss", "hubble", "tiangong", "goes-18")。 和名は英語名/既知名へ自動解決する("ひので"→29479, "ひまわり9号"→41836, "宇宙ステーション"→iss)。解決できない場合は既知の名前を提示して停止する。 norad_id: NORAD カタログ番号(例 25544=ISS)。name より優先。 group: CelesTrak の衛星グループ(例 "stations", "weather", "amateur", "science")。 limit: 返す件数(既定 5、最大 20)。

Inputs: name, group, limit, norad_id.

search_space_audioA

宇宙関連の音声を検索し、再生可能な音声URLを返す。

例:

Args: query: 検索語(juno, saturn, sputnik, launch, apollo など)。 limit: 返す件数(既定 3、最大 10)。 kind: "auto"(両方) / "podcast"(NASA Image Library の長尺トーク・解説) / "sound_effect"(短い宇宙の音・効果音)。

回答時はこのリンクをそのまま提示してください。

Inputs: query (required), kind, limit.

search_space_imagesA

惑星・人工衛星・宇宙ミッションの画像を NASA Image & Video Library から検索し表示する。

例: 「火星の画像を見せて」「ハッブルの写真」「アポロの画像」

Args: query: 検索語(mars, jupiter, hubble, apollo など英語が確実)。 limit: 返す画像件数(既定 3、最大 10)。 show_inline: 画像をチャットにインライン表示するか(既定 True)。 inline_max: チャットに埋め込む画像の枚数(既定 1、最大 5)。 転送量を抑えるため既定は先頭1枚のみ。全件のURLは structuredContent.results[].image_url に入る。

回答時はこのリンクをそのまま提示してください。

Inputs: query (required), limit, inline_max, show_inline.

search_space_videosA

宇宙関連の動画(打ち上げ・ミッション映像・解説など)を検索し、再生用MP4 URLを返す。

例: 「火星の動画」「ロケット打ち上げ映像」「ハッブルの映像」

Args: query: 検索語(mars, launch, hubble, artemis など英語が確実)。 limit: 返す動画件数(既定 3、最大 10)。 show_poster: ポスター画像をチャットにインライン表示するか(既定 True)。

回答時はこのリンクをそのまま提示してください。

Inputs: query (required), limit, show_poster.

sky_map_with_satellitesA

東京(または指定地)の空を地上から見上げた図(恒星・惑星・天の川・人工衛星)を返す。

例:「東京の空に惑星と人工衛星を重ねた図」「今見えるISSを星空マップで」「木星はどこに見える?」

Args: place: 観測地(例 "東京","大阪","new york")。lat/lon 指定時は無視。省略時は東京。 lat: 観測地の緯度。lon と併用時は place より優先。 lon: 観測地の経度。 when: 観測時刻 ISO8601(例 "2026-09-09T11:00:00Z")。省略時は現在時刻。 engine: 廃止(互換のため残置)。旧 "ground"/"simple"/"accurate" の3エンジンは 地上視点パノラマ(ground_view)へ統合した。どの値を渡しても同じ描画になる (旧 simple/accurate の見た目の要素は ground に取り込み済み)。 span: 横方向の視野(度, 30〜360)。360 で全天。 az0: 左端の方位(度)。span=180, az0=225 なら南西→北東。 lp: 光害の程度 "city"(都心)/ "suburb"(郊外, 既定)/ "dark"(山間・離島)。 未対応の値は既定(郊外)に落とし、その旨を本文に明示する。 show: 依頼表示する天体名(カンマ区切り。例 "木星,ベガ,M31")。省略時は主要天体すべて。

回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。

Inputs: lp, az0, lat, lon, +5 more.

solar_eclipse_seriesA

日食の時系列パネル画像(太陽が月に欠ける過程)を返す(認証不要)。

例:「2035年9月2日の皆既日食を画像で」「東京で見える次の日食」「2019年の部分日食の進行」

Args: date: 日付(例 "2035-09-02" / "2035/09/02" / "2035年9月2日")。省略時は次の日食を検索。 place: 観測地(例 "東京","大阪","new york")。lat/lon 指定時は無視。省略時は東京。 lat: 観測地の緯度。lon と併用時は place より優先。 lon: 観測地の経度。 max_magnitude: True で最大食のみの単一パネルを返す(既定 False=時系列)。

回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。

Inputs: lat, lon, date, place, +1 more.

solar_system_nowA

太陽を中心とした太陽系の惑星・小惑星・探査機・彗星の現在位置図を返す(認証不要)。

例:「太陽系を上から見た図」「今の惑星の位置」「イトカワの今の位置を図で」

Args: when: 時刻 ISO8601(例 "2026-09-09T11:00:00Z")。省略時は現在時刻。 asteroid: 小惑星(例 "イトカワ"/"itokawa"/"25143", "ベンヌ", "アポフィス")。view="asteroid_orbit" では楕円軌道全体を描く。 asteroid2: 2つ目の小惑星。 probe: 遠方探査機(例 "ボイジャー1号"/"voyager1"/"パイオニア10号"/"はやぶさ2"/ "hayabusa2")。1光日に達していない探査機では、到達時の方向(◇)・到達予測日も 図と structuredContent に出る。 はやぶさ2 は JPL Horizons ID -37。 probe2: 2つ目の探査機。 comet: 彗星(例 "ハレー彗星"/"halley"/"1P", "エンケ彗星", "67P", "紫金山・アトラス"/"C/2023 A3", "ラブジョイ"/"C/2014 Q2")。 comet2: 2つ目の彗星。 engine: 互換引数(描画は 1 本)。"accurate" を指定すると線形縮尺 (相対距離が正確・枠 ±45 AU)で描く。それ以外は対数縮尺(既定)。 旧 "simple" / "accurate"(matplotlib) は廃止済みで、指定しても同じ描画になる。 projection: 互換引数。描画は常に斜め俯瞰(仰角34°・方位28°・弱い透視。奥ほど暗く 細い線で描く。画面上の距離はAUに比例しない)。旧 "top" を指定しても斜め俯瞰で 描き、その旨を figure.notes に出す。 elevation: カメラの仰角(度, 0〜90。既定 34)。0 で真横(軌道が線に潰れる)、 90 で真上(=旧「真上図」と同じ構図)。注記・題名にも実値を出す。 azimuth: カメラの方位(度, -360〜360。既定 28)。黄道面内の回転。 dolly: 透視の強さ=カメラ距離(画面半径の倍数, 0〜20。既定 4.2)。 0 で完全な正射影(遠近が消える)。 view: "system"(既定)=太陽系俯瞰図 / "comet_orbit"=彗星の軌道面ビュー / "asteroid_orbit"=小惑星の閉じた楕円軌道面ビュー / "apparition"=彗星の見え方チャート(地心距離・日心距離・予想光度・太陽離角の 推移。comet の指定が必須で、1天体ずつ)。 comet_orbit は comet の指定が必須で、彗星自身の軌道面を真横から見た図 (太陽=円錐曲線の焦点)を返す。e>=1 の C/彗星は閉じない双曲線の枝として描く。 asteroid_orbit は asteroid の指定が必須で、JPL SBDB の osculating elements に基づく 小惑星の楕円全体と指定時刻の現在位置を軌道面から描く(1天体ずつ)。 comet にカンマ区切りで複数(または comet2 を併用、最大4天体)指定すると、 1彗星=1パネルで並べた1枚の画像を返す(パネルごとに軌道面と縮尺が異なる。 その旨は figure.notes に数値から生成して入る)。 days: view="apparition" の表示日数(1〜3650、既定 180)。今日の 30 日前から days 日後までを描く(直前に過ぎた近日点・最接近も見えるようにするため)。 route: view="system" で、通過経路を俯瞰図に重ねる(破線)。彗星は軌道全体を 描き、近日点・遠日点には◇と日付を添える(近日点の日付は SBDB の2体近似に 加えて JPL Horizons の n 体解も併記。2体近似はずれることがある。ハレー彗星では 約164日)。探査機(probe=)では Horizons の実状態ベクトル点列を描き、惑星との 最接近(スイングバイ)を距離の局所極小として実測して◇+日付+距離を添える (アポロ計画・ボイジャー計画などの重力アシスト航路。例: solar_system_now(probe="ボイジャー1号", route=True))。探査機の航路はミッション 期間(打ち上げ〜到着)を自動で引き、表に無い機体は指定時刻までの過去1年を描く。 アポロの月スイングバイのように地球−月系の内側だけで完結する航路は、太陽系図では 太陽の描画円盤に隠れて読めないため描かず、その旨と代替(月面地図の planetary_orbiter_track(flyby=True))を figure.notes に出す。既定 False。 線形の "accurate" では形は本当の軌道と一致するが、対数縮尺の "simple" では 線の長さと曲率が実際の軌道と一致しない(その旨は figure.notes に入る)。 彗星の形そのものを見たいときは view="comet_orbit"。 range_au: view="system" の表示範囲(太陽からの距離の上限)。既定 0=自動 (対数版は 60 AU 起点、線形版は ±45 AU 起点で、遠方の天体・経路に合わせて拡張)。 数値(AU)でも天体名でも指定できる(「火星まで」「木星まで」のように LLM が判断して縮尺を選ぶ用途を想定)。 数値: 10=土星(9.58 AU)より内側/2=火星まで/5.62=木星まで/30=海王星まで。0.5 未満はエラー。 天体名: "火星"(→1.65 AU)/"木星"(→5.62)/"土星"(→10.35)/"海王星"(→32.5)/ "冥王星"/英語名(mars, jupiter…)/"小惑星帯"/"内惑星"/"外惑星"。 その呼び出しで指定した小惑星・彗星・探査機の名前も使える(例: asteroid="イトカワ" に対して range_au="イトカワ")。天体名は「その天体の軌道の円が入る」ように 長半径×1.08 で決める(決め方は figure.notes と structuredContent.range_resolved に 数値付きで出る)。 "fit"(=指定天体に合わせる): その呼び出しで指定した天体・経路がすべて入る範囲 (最大値×1.10、下限 1.2 AU)。天体を指定せず "fit" にすると自動(45 AU 起点)。 解決できない名前は推測せずエラーで候補一覧を返す。 範囲外の天体・目印・軌道の円は描かず、figure.notes と structuredContent に出典付きで列挙する(黙って消さない)。対数版は下限も範囲に合わせて下がる。

⚠️ figure.notes は図の誤読を防ぐための注記なので、要約・言い換えせずそのまま引用すること。

回答時はこのリンクをそのまま提示してください(画像が描画されない環境では唯一の導線)。

Inputs: days, view, when, comet, +12 more.

space_calendarA

宇宙・天文イベントの月間カレンダー(打ち上げ・天文現象・公開イベント・自分の予定)を画像とJSONで返す。

例:「10月の宇宙イベントは?」「今月の打ち上げ予定」「流星群のタイミング」

Args: year: 対象年(既定: 観測地の今年)。 month: 対象月 1〜12(既定: 観測地の今月)。 place: 基準地(既定 東京)。任意の地名をジオコーダで解決し、その現地時刻で描きます。 kinds: 表示するカテゴリ(カンマ区切り): user/launch/sky/neo/fireball/public/holiday。 all で全部。neo(小惑星接近)と fireball(火球観測)は、neo_close_approach / fireball_reports を呼んで蓄積されたぶんだけ表示されます(カレンダー自身は JPL を叩かないので、未取得の月は「イベントが無い」のではなく「まだ蓄積が無い」)。 lat: 緯度(place の代わりに数値で指定)。 lon: 経度(同上)。

回答時は content に含まれる画像リンク(🖼️ ◯◯を開く)をそのまま提示してください。

figure.notes は要約・言い換えせず、そのまま引用してください。

Inputs: lat, lon, year, kinds, +2 more.

space_weatherA

NASA DONKI の宇宙天気(太陽フレア・CME・地磁気嵐・太陽粒子現象)を返す。

例:「最近の太陽フレア」「CME(コロナ質量放出)の情報」「地磁気嵐は起きてる?」

Args: kind: データ種別 - "all": 太陽フレア・CME・地磁気嵐・太陽粒子をまとめて表示(既定) - "flare": 太陽フレア(FLR) - "cme": コロナ質量放出(CME) - "gst": 地磁気嵐(GST) - "sep": 太陽高エネルギー粒子現象(SEP) - "forecast": 予報(フレアの発生確率 C/M/X 級・活動領域(黒点群)別の確率・ NOAA 3日予報の予想最大 Kp と S/R スケール確率・公式の根拠文)。 DONKI は予報を提供しないため NOAA SWPC から取得する(出典を明記) start_date: 開始日(YYYY-MM-DD)。省略時は既定(最近)。forecast では使わない。 end_date: 終了日(YYYY-MM-DD)。省略時は既定。forecast では使わない。 limit: 各カテゴリの返す件数(既定 10、最大 20)。forecast では活動領域の表示数。

Inputs: kind, limit, end_date, start_date.

stac_collectionsA

AWS Earth Search で利用可能な衛星データコレクション一覧を返す(認証不要)。

例:「AWSの衛星データ」「利用できるLandsatコレクション」

Args: (なし)

Inputs: no named parameters.

tiangong_nowA

天宮(Tiangong)中国宇宙ステーションの現在位置を返す。

例:「天宮の現在位置」「中国宇宙ステーションは今どこ?」

Inputs: no named parameters.

uk_stac_collectionsA

英国 EO DataHub の利用可能なコレクション一覧を返す(認証不要)。

例:「英国の衛星データコレクション」

Args: limit: 返す件数(既定 20、最大 100)。

Inputs: limit.

upcoming_launchesA

今後予定されているロケット打ち上げの一覧を返す。

例:「今後のロケット打ち上げは?」「来月の打ち上げ予定」

Args: limit: 返す件数(既定 5、最大 15)。

Inputs: limit.

weather_satellite_nowA

世界の気象観測衛星のリアルタイム実画像を返す(認証不要)。

例:「ひまわり9号の最新画像」「気象衛星の今の雲画像」「ひまわりの赤外線画像」

Args: satellite: 衛星名(既定 himawari9)。和名・略号も可(例 "ひまわり9号", "goes18", "meteosat11", "fy4b", "gk2a", "insat3dr", "noaa20", "snpp", "metopb", "fy3d", "earthcare")。 band: ひまわり9号の帯域。visible(可視・昼のみ)/ infrared(赤外・昼夜)/ water_vapor / night_rgb(夜間マイクロフィジクスRGB)/ day_rgb / true_color。 旧名("1d"/"3d"/"8d"/"vis"/"ir"/"wv")も可。ひまわり以外は配信元の固定 プロダクトを使うため無視される。 size: 出力サイズの希望 px(互換引数)。配信元の解像度が優先されるため、 実際の大きさは structuredContent.size_px を見ること。 lat: 観測地点の緯度(任意。ひまわり9号のみ有効)。 lon: 観測地点の経度(任意。lat と併用)。 place: 地点名(マーカーのラベル。任意。例 "東京")。lat/lon/place を指定すると 全円盤+日本域拡大+地点マーカーの1枚パネル(1500×880)を返す。

回答時はこのリンクをそのまま提示してください。

Inputs: lat, lon, band, size, +2 more.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

Loading tool schema changelog…

    TDQS

    A3.5/5.0

    Scored across 67 tools

    Disambiguation3/5

    The tool set contains several overlapping families: multiple agency-specific STAC search tools (stac_search, copernicus_search, inpe_search, dlr_search, uk_stac_search, roscosmos_search) all answer 'find satellite imagery,' and space_literature_search vs planetary_evidence, neo_today vs neo_close_approach, and iss_now vs sat_ground_track partially duplicate purposes. Descriptions are detailed enough to distinguish most tools, but an agent must still choose among many near-equivalent provider options.

    Naming Consistency3/5

    All names use snake_case and are readable, but the convention is mixed: verb-first (search_space_images, object_lookup), noun-first (space_literature_search, satellite_status), noun_now (iss_now, solar_system_now), and noun_verb (calendar_event_add/remove). This is not chaotic, but it is not a predictable verb_noun pattern throughout.

    Tool Count1/5

    At 67 tools, the surface is far beyond a well-scoped set and includes many provider-specific variants that could be consolidated or parameterized. Even for a broad 'space finder' server, this is an extreme tool-count mismatch that increases selection cost and confusion.

    Completeness4/5

    Coverage is unusually broad: launches, literature, satellite imagery, satellite tracking, astronomy events, NEO/impact risk, space weather, exoplanets, and object lookup are all represented. Minor gaps remain, such as updating existing calendar events and deeper per-provider detail operations, but most workflows have a viable path.

    Maintenance

    ActivityActive
    ResponsivenessNo recent community issues

    Related MCP Connectors

    Related MCP Servers

    • A
      license
      B
      quality
      D
      maintenance
      Enables access to NASA space data and images through Claude Desktop, providing features like astronomy picture of the day, Mars rover photos, near-Earth object information, NASA image search, and Earth satellite imagery.
      5
      MIT
    • A
      license
      B
      quality
      D
      maintenance
      Provides standardized access to 20+ NASA data sources including astronomy pictures, Mars rover photos, near-Earth objects, satellite imagery, space weather, and planetary data through a unified interface optimized for AI consumption.
      23
      13 npm
      ISC
    • A
      license
      Not graded
      quality
      D
      maintenance
      Provides access to NASA's public APIs including Astronomy Picture of the Day, Mars Rover Images, and Near Earth Objects data, enabling users to query and retrieve space-related information through natural language.
      24 PyPI
      5
      MIT