Skip to main content
Glama
solarstorm.today MCP server

solarstorm.today MCP server

by newminya

solarstorm.today MCP server

MCP Registry Registry version tests Python License: MIT Hosted

AIアシスタント向けのライブ宇宙天気。このMCPサーバーは、NOAA SWPCのデータ(惑星Kp指数、公式の3日間地磁気予報、GOES太陽フレア活動、任意の緯度でのオーロラ可視性)を、エージェントが直接呼び出せる4つのツールとして提供します。

このサーバーはsolarstorm.todayと同じロジックで動作するため、回答はサイトの表示と一致します。APIキーもアカウントも状態も不要です。

アシスタントに聞いてみる: 「今夜ウィーンでオーロラは見える?」 → get_aurora_visibility(48.2)を呼び出し、ライブのNOAAデータから回答します。

ツール

ツール

戻り値

get_current_kp()

最新の惑星Kp、レベル(low/moderate/high/severe)、観測された24時間最大値

get_kp_forecast_3day()

今後3日間の暦日ごとの予報最大Kp(Europe/Berlinの日付)

get_solar_flares_24h()

現在のGOES X線フレアクラスと24時間ピーク、およびピーク時刻

get_aurora_visibility(latitude)

その緯度で必要なKp、今後24時間の予報最大Kp、わかりやすい言葉での判定

// get_current_kp()
{
  "kp": 4.33,
  "level": "moderate",
  "time_utc": "2026-08-27T18:00:00+00:00",
  "max_24h": 5.67,
  "source": "NOAA SWPC"
}

// get_kp_forecast_3day()
{
  "days": [
    { "date": "2026-08-27", "max_kp": 5.67, "level": "high" },
    { "date": "2026-08-28", "max_kp": 4.0,  "level": "moderate" },
    { "date": "2026-08-29", "max_kp": 2.33, "level": "low" }
  ],
  "timezone": "Europe/Berlin",
  "source": "NOAA SWPC",
  "note": "Kp>=5 is a G1 geomagnetic storm on the NOAA scale."
}

// get_solar_flares_24h()
{
  "current_class": "C2.1",
  "peak_24h_class": "M6.9",
  "peak_time_utc": "2026-08-27T04:12:00Z",
  "source": "NOAA GOES (0.1-0.8 nm)"
}

// get_aurora_visibility(48.2)
{
  "latitude": 48.2,
  "kp_needed_naked_eye": 8,
  "forecast_max_kp_24h": 5.67,
  "visible_tonight": false,
  "verdict": "Unlikely: forecast max Kp 5.7 is 2.3 below the ~Kp 8 needed at 48.2°. A camera picks aurora up roughly one Kp level earlier.",
  "details": "https://solarstorm.today/aurora-tonight/"
}

NOAAからのネットワークエラーやフォーマットエラーは、errorフィールドとして返されます。上流の応答が不正でも、サーバーがクラッシュすることはありません。

Related MCP server: spaceweather-mcp

ホスト型サーバーを使う(インストール不要)

公開インスタンスがhttps://mcp.solarstorm.today/mcpで稼働しています。

Claude Code

claude mcp add --transport http solarstorm https://mcp.solarstorm.today/mcp

Claude Desktop / claude.ai — https://mcp.solarstorm.today/mcpを指すカスタムコネクタを追加します。

その他のMCPクライアント — streamable HTTPトランスポート、同じURL、認証なし。

ローカルで実行する(stdio)

Python 3.10+が必要です — mcp SDKが定める最低バージョンです。

git clone https://github.com/newminya/solarstorm-mcp.git
cd solarstorm-mcp
pip install -r requirements.txt
python server.py          # waits for a stdio client; Ctrl+C to quit

claude_desktop_config.json:

{
  "mcpServers": {
    "solarstorm": {
      "command": "python",
      "args": ["/absolute/path/to/solarstorm-mcp/server.py"]
    }
  }
}

Claude Code:

claude mcp add solarstorm -- python /absolute/path/to/solarstorm-mcp/server.py

セルフホストする(streamable HTTP)

トランスポートを制御する3つの環境変数:

変数

デフォルト

用途

MCP_TRANSPORT

stdio

ネットワークサーバーにする場合はstreamable-httpに設定

MCP_HOST

0.0.0.0

バインドアドレス — リバースプロキシの背後では127.0.0.1を使用

MCP_PORT

8765

待ち受けポート

mkdir -p /opt/solarstorm-mcp && cd /opt/solarstorm-mcp
# copy server.py and requirements.txt here
python3 -m venv venv && venv/bin/pip install -r requirements.txt

/etc/systemd/system/solarstorm-mcp.service:

[Unit]
Description=solarstorm.today MCP server
After=network.target

[Service]
WorkingDirectory=/opt/solarstorm-mcp
Environment=MCP_TRANSPORT=streamable-http
Environment=MCP_HOST=127.0.0.1
Environment=MCP_PORT=8765
ExecStart=/opt/solarstorm-mcp/venv/bin/python server.py
Restart=always
RestartSec=5

[Install]
WantedBy=multi-user.target
systemctl daemon-reload && systemctl enable --now solarstorm-mcp
systemctl status solarstorm-mcp

TLS証明書を備えたサブドメインで、nginxを前面に配置:

server {
    server_name mcp.example.com;
    location /mcp {
        proxy_pass http://127.0.0.1:8765/mcp;
        proxy_http_version 1.1;
        proxy_set_header Host $host;
        proxy_buffering off;
        proxy_read_timeout 3600s;
    }
    # + certbot TLS lines
}

よくある落とし穴:MCP SDKは、Hostヘッダーが期待値と一致しないリクエストを拒否します(DNSリバインディング対策)。サービス自体は正常なのにハンドシェイクが4xxで失敗する場合は、プロキシが転送しているHostを確認してください。

数値の導出方法

  • データソース。 services.swpc.noaa.gov — 惑星K指数とその予報プロダクト、およびGOESプライマリの0.1–0.8 nm X線フラックス。10秒のタイムアウト、キャッシュなし、キー不要。

  • 日次最大値は、サイトのドイツ語圏の読者に合わせてEurope/Berlinの暦日でバケット化されます。予報にカウントされるのは、observed-blank、estimated、predictedの各ポイントのみです。

  • フレアクラスは、X線フラックスを標準のA/B/C/M/Xスケールに変換します(X ≥ 1e-4 W/m²、M ≥ 1e-5、など)。

  • オーロラのしきい値は、肉眼での可視性に関するヨーロッパ域の目安値です:Kp 1は66°以上、3は62°以上、4.5は58°以上、6は55°以上、7は52°以上、8は48°以上、9は44.5°以上。~44.5°未満では、極端な歴史的嵐のみが該当します。カメラは通常、肉眼より約1 Kpレベル早い段階でオーロラを捉えられます。

  • モデル化されていないもの: 惑星間磁場のBz成分。南向きのBzは、同じKpでもオーロラをはるかに活発にしますが、数日先までの予報は不可能です — 判定は約束ではなく確率として捉えてください。

関連リンク

テスト

pip install -r requirements-dev.txt
pytest -m "not live"    # offline: parsing, thresholds, formatting
pytest -m live          # hits NOAA, asserts the live response contract

オフラインスイートは、Python 3.10–3.13に対してプッシュのたびに実行されます。ライブスイートも毎日スケジュール実行されます。なぜなら、本番に到達した唯一のバグはロジックエラーではなかったからです:NOAAの観測フィードはキーをKpと表記するのに対し、予報フィードはkpと表記するため、正常な200応答が0行にパースされました。この種のずれを検出できるのは、実際の呼び出しだけです。

ライセンス

MIT — LICENSEを参照。

Related MCP Connectors

Related MCP Servers