0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

JAXA Earth API × MCP連携でClaudeと衛星データ分析を試みた記録

0
Last updated at Posted at 2026-04-06

概要

JAXA Earth API を MCPサーバとして接続し、衛星データ(降水量・海水温・クロロフィルなど)を Claude から自然言語で取得・可視化する環境を構築してみました。その過程で、一見JSONエラーに見えるが実際はデータ指定ミスや仕様差異だった(?)という状況に遭遇したため、調査内容・実際のやり取りを実施記録としてまとめます。


やろうとしたこと

  • MCPサーバとして JAXA Earth API を接続
  • Claude から自然言語で衛星データを取得
  • 以下の分析を試みる
    • 関東地方の降水量分析
    • 鎌倉の海水温の年次比較・予測
    • 相模湾クロロフィル量の可視化

お試し

1. 降水量データの取得

まずは、設定など参考にさせていただいたブログ(JAXAが公開したMCPサーバーを触ってみる)で記載されていた内容でそのまま試すと、あっさりできたので喜んでいました。

Screenshot 0008-04-05 at 20.52.58.png

  • GSMaP データを用いた降水量可視化に成功
  • 空間統計グラフの生成も問題なし
  • 東西で降水傾向の違いを確認できた

→ MCPサーバ + JAXA API の基本動作はとりあえずOK

2. 衛星データの API が使われないケース

Screenshot 0008-04-06 at 7.50.17.png

わざわざ MCP を呼ばなくても答えられる場合は、ツールを使わずそのまま返してくれるみたいです。場所も指定し忘れていますが、まずは東京を調べてくれました。

3. 鎌倉の海水温度(五年分)比較と今年の温度予測

Screenshot 0008-04-06 at 7.52.24.png

「JAXA Earth API の MCP サーバーが現在応答しない状態」と言われてしまいました。雲行きが怪しい。

ログを見るとタイムアウトが発生していました。

Screenshot 0008-04-06 at 7.54.07.png

アカウント(選択)>Settings>Developerから確認できるLocal MCP Serversのステータスもfailedになっています。

Screenshot 0008-04-06 at 7.54.51.png

何度か試すうちに、ちらっと出てすぐ消えるエラーメッセージがあることにも気づきました。

error.png


調査

1. pyproject.toml

はじめは、数日前にできていたがその日にできなくなったと思っていたので、何か依存関係か何かが変わったのかもしれないと思い、pyproject.tomlを確認。

  • 依存パッケージ(例:mcp、fastmcp、pydantic、jaxa-earth など)
  • ビルド設定(poetry / setuptools / hatch など)
  • Pythonバージョン制約
  • 開発ツール設定(formatter、linter 等)

特に問題なさそうでした。

MCPサーバ確認

次に、上記スクリーンショットの通り、以下のエラーが発生していたので、MCP サーバの実装不備・JSON 破損・stdout 汚染あたりを疑いました。

  • Unexpected token
  • No number after minus sign
  • Unexpected end of JSON input

直接起動して確認してみます。

python mcp_server.py

何も出力されない → stdout に余計なものが出ていないことを確認。MCP 自体は正常に起動していました。

3. Python単体での動作確認

MCP を介さず直接関数を実行して切り分けてみます。

DEBUG_DIRECT=1 python mcp_server_debug.py 2> debug.log

ログにこんなエラーが出ていました。

cat debug.log

ここで以下のエラーを確認:

Error! Requested collection name was not found !
requested : JAXA.G-Portal_GSMaP.v6_operational_half_monthly_global

collection ID が存在しないことが判明。

4. catalogの確認

正しい ID を確認するためカタログを取得しました。

curl -L https://data.earth.jaxa.jp/app/mcp/catalog.md -o catalog.md

見てみたところ、LLM が推測で生成した ID だったようです。

対処

collection ID が誤っていたので、配布されている mcp_server.py をいじってデバッグしてみたり、設定ファイル(JSON)に connectionTimeout を追加してみたり(効果なし)、しましたが、同じ条件ではどうにもならず、
Screenshot 0008-04-05 at 21.31.51.png

根本的な解決ではないですが、以下を調整することで通るようになりました。

日付範囲を狭くする(5 年 → 1 年、月も指定する)
場所の指定を適度な広さにする(bbox が狭すぎると NaN が返ってきたりした)

Screenshot 0008-04-06 at 8.55.57.png

ここで先ほどの右上のエラー(Unexpected token/No number after minus signなど)が出るものの先に進み
3.png
Screenshot 0008-04-06 at 8.51.49.png

無事出力できました。6月に入っても予測では暖かそうですが、こんなに毎年上昇しているものでしょうか?やはりもう少し広い範囲で予測してみたいものです。

Screenshot 0008-04-06 at 8.51.40.png

(余談)青い線が気になり質問してみると、

Screenshot 0008-04-06 at 8.59.32.png

だいぶ雑な予測ですね...最高水温32°にはなっていないと思うので、1点のみで推移を予測するのは避けた方が良さそうです。

感想

  • ChatGPTに相談しても、いろいろな力が及ばず完全な解決には至りませんでした...
  • 遊びで試しただけなので 5 年でも 1 か月でも今回はどちらでも良かったですが、いつかとても困った際は...より真剣に調査してみます。
  • 日常的に観測データを使う場面は今のところあまりなさそうですが、簡単に試せるのは楽しかったです。他業者とのサービスと組み合わせるのも面白そう。

参考

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?