mcpField
N
nasa-power-mcp-server

nasa-power-mcp-server

リモート
github.com/cyanheads科学・教育14 日前に更新
リポジトリ

nasa-power-mcp-server について

nasa-power-mcp-server は、再生可能エネルギー、建築、農業気候の分析向けに、NASA POWER の過去の太陽・気象データを提供します。地点、地域、複数地点のクエリに対応し、大きな結果はデータセットとして一時保存して読み取り専用 SQL で調べられます。

主な機能

  1. 01地点の時系列と気候値を取得
  2. 02ネイティブグリッド地域の検索と地点比較
  3. 03パラメーターとリファレンス情報の検索
  4. 04大規模データセットの一時保存と制限付きSQLクエリ
  5. 05データソースの単位と科学的な出典情報を返却

活用シーン

  1. 01太陽光・風力資源の過去データの評価
  2. 02地点間の気象パターンの比較
  3. 03建築または農業気候パラメーターの調査
  4. 04一時保存した大規模データセットの分析

MCP 対応

stdio または Streamable HTTP 経由で、NASA POWER の検索を含む9種類のツールを MCP クライアントに提供します。任意でデータセットの確認、SQL クエリ、削除も行えます。Streamable HTTP のホスト済みインスタンスもあります。

設定

リモートサーバーはインストール不要です。クライアントを選んで設定をコピーするか、ワンクリックで導入できます。

エンドポイントhttps://nasa-power.caseyjhand.com/mcp
インストールコマンドをコピー
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

コマンドはターミナルで実行し、JSON は各クライアントの MCP 設定に貼り付けて再起動します。認可が必要なサーバーは初回接続時にログインを求めます。

パッケージ
npm@cyanheads/nasa-power-mcp-server0.3.0

ツール

8

このツールにパラメーターはありません。

詳細

@cyanheads/nasa-power-mcp-server

MCP を介して NASA POWER の太陽光、風力、建築、農業気候学データを照会します。STDIO または Streamable HTTP に対応しています。

9 個のツール

Version License Docker MCP SDK npm TypeScript Bun

Claude Desktop にインストール Cursor にインストール VS Code にインストール

フレームワーク

公開ホスト型サーバー: https://nasa-power.caseyjhand.com/mcp


概要

NASA POWER は、再生可能エネルギー、持続可能な建築、農業気候学向けの過去の太陽光および気象観測データを提供します。地点ごとの時系列データや気候値を取得し、ネイティブグリッドの地域データを調べ、出典の単位と来歴を添えてラベル付き地点を比較できます。NASA アカウントや API キーは不要です。

ツール
ツール説明
nasa_power_get_timeseries1 地点の時間別、日別、または月別の観測データ
nasa_power_get_climatology傾斜面の太陽光プロファイルを含む、地点ごとの月別および年別の気候値
nasa_power_get_region境界で指定したネイティブグリッド領域の 1 パラメーター
nasa_power_compare_locationsラベル付きの 2~10 地点について、共通の観測データと季節別の要約
nasa_power_search_parametersコミュニティ/解像度の全パラメーター辞書を検索
nasa_power_list_referenceプリセット、コミュニティ、対象範囲、欠損値、風力面、データフレームの使用方法
nasa_power_dataframe_describeステージングされたスキーマ、単位、有効期限、来歴を確認
nasa_power_dataframe_query明示的に指定したキャンバストークンに対して、範囲を制限した読み取り専用 SQL を実行
nasa_power_dataframe_dropオプトイン方式で、名前を指定したステージング済みテーブルを 1 つ削除

デフォルトでは 8 個のツールが有効です。NASA_POWER_DATAFRAME_DROP_ENABLED=true にすると、9 個目のツールが有効になります。

機能リファレンス

nasa_power_get_timeseries ツール
  • latitude / longitude と temporalResolution:hourly と daily では包含的な startDate / endDate を指定し、monthly では startYear / endYear を指定します。selection は名前付きの preset(デフォルトは solar_pv)または明示的な parameters で、補正分を含めて、有効なコードは時間単位では最大15個、それ以外では最大20個です。
  • community(RE、SB、AG。デフォルトは RE)、units(metric、imperial)、timeStandard(LST、UTC)。任意の siteElevation を指定すると PSC が追加されます。windElevation(10~300メートル)と windSurface を併せて指定すると WSC が追加されます。airportgrass、airportice、vegtype_1 を含む17個すべての正規 NASA エイリアスについては、nasa_power_list_reference のトピック wind_surfaces を使用します。植生のアンダースコアはそのまま保持されます。
  • metadata、parameters、expansions、omittedParameters、summaries、rows、正確な rowCount、および dataset(ステージングされない限り null)を返します。ステージングが必要な場合、任意の canvas_id を指定するとキャンバスを再利用します。

nasa_power_get_climatology ツール
  • 点座標と、同じ選択および補正を指定します。任意の startYear と endYear はセットで指定し、省略した場合はソースプロダクトの期間が使われます。temporalResolution は入力できません。
  • 小規模なプロファイルはインラインで返されます。大規模なプロファイルでは、上限付きプレビューと完全な dataset ハンドルが返されます。任意の canvas_id を指定すると、既存のワークスペースを再利用します。DuckDB がない場合、インライン出力に収まるよう、選択範囲を狭めてください。SI_EF_TILTED_SURFACE と、これとは別の SI_TILTED_AVG、SI_TILTED_MIN、SI_TILTED_MAX のグループは、実際に返されたメンバーのみを expansions に列挙します。数値の角度と N/S の方位テキストも含まれます。グループが省略されるのは、そのメンバーが一つも返されない場合のみです。

nasa_power_get_region ツール
  • latitudeMin / latitudeMax と longitudeMin / longitudeMax の順序付き範囲に対して、1つの parameter を指定します。各軸の範囲は2~10度です(それ以外は invalid_region)。日付変更線をまたぐ地域は、別々の呼び出しに分割してください。temporalResolution は daily、monthly、climatology のいずれかです。地点補正はサポートされていません。
  • 日別の地域データには日付範囲が必要で、月別の地域データには年範囲が必要です。地域の気候値には年フィールドを指定できず、ソースの事前計算期間が報告されます。任意の地点年範囲を指定するには nasa_power_get_climatology を使用してください。
  • セルタグ付きの rows、cellCount、期間ごとの summaries を返します。min / mean / max はセルを等重みで集計した値であり、面積加重ではありません。ステージング用に任意の canvas_id を指定するとキャンバスを再利用します。
  • 概要の応答サイズ上限を超える場合、すべてのセル間概要を含む summaryDataset、正確な summaryCount、レコード全体を単位とするインラインプレビューが返されます。テーブルは summaryIndex の順にクエリしてください。SQL の units: null は、省略されたソース単位を復元します。観測値と概要は一緒に登録され、相互に関連付けられた出所情報が保持されます。

nasa_power_compare_locations ツール
  • 2~10個の locations を指定します。それぞれに座標と1~120文字の label が必要です。選択、補正、期間は全地点で共通です。temporalResolution のデフォルトは climatology です。hourly、daily、monthly も使用できます。
  • 地点ごとの出所情報を含む成功地点の locations、地点タグ付きの rows、年別および暦季節別の summaries を返します。一部の地点でエラーが発生した場合は、partial: true を含む failed エントリーも返します。すべての地点で失敗した場合は all_locations_failed を返します。possibleSharedGridCell は、複数の地点が同じグリッドセルを共有している可能性を示します。
  • 任意の sort(parameter、direction は asc / desc)を指定すると、既知の単位が一致する数値パラメーターで並べ替えます。ステージング用に任意の canvas_id を指定するとキャンバスを再利用します。
  • 概要が応答サイズの上限を超える場合、summaryDatasets.buckets と summaryDatasets.locations が完全な SQL テーブルを示します。インライン概要はレコード全体を単位とするプレビューになり、各地点には summaryCount が含まれます。summaryIndex の順にクエリしてください。地点概要テーブルには locationId が含まれます。SQL の units: null は既知の単位ではなく、省略されたソース単位を表します。

nasa_power_search_parameters ツール
  • community(デフォルトは RE)、temporalResolution(デフォルトは daily)、任意の filter(最大256文字)、offset、および正の整数の limit(デフォルトは20。上限は実質100で、上限適用時に通知されます)。
  • 大文字と小文字を区別しない filter の各トークンは、ソート後のページネーションを行う前に、辞書全体にあるコード、名前、定義のいずれかに一致する必要があります。空のフィルターを指定すると、辞書を閲覧できます。entries、total、hasMore、truncated はページの情報を示します。

nasa_power_list_reference ツール
  • topic:presets(デフォルト)、communities、coverage、missing_data、wind_surfaces、dataframes のいずれかです。
  • 型付きの entries、guidance、documentationUrls、verifiedOn を返します。プリセットは solar_pv、wind_turbine、building_hvac、agroclimatology、water_balance です。building_hvac は時間単位では利用できません。agroclimatology は、時間単位以外の解像度で T2M_MAX と T2M_MIN を追加します。月別/気候値の極値は引き続きソース集計値であり、日別レコードの再構成や、計算による有効積算温度の算出は行われません。

nasa_power_dataframe_describe ツール
  • データを生成したレスポンスに含まれる canvas_id が必須です。任意の table を指定すると、検査対象を1つのテーブルに限定できます。
  • キャンバスとテーブルの有効期限、ソース単位付きのSQL列、元の科学的な provenance を返します。指定したキャンバス内のテーブルのみが表示されます。

nasa_power_dataframe_query ツール
  • canvas_id と、sql 内の読み取り専用SELECT文1つが必須です(最大16,384文字)。正の整数の rowLimit はデフォルトで100、上限は1,000です。上限を超えるリクエストには、実質上限の通知が表示されます。ファイル、書き込み、システムカタログへのアクセスは禁止されています。
  • columns、rows、rowCount、shownCount、truncated、countSemantics(exact または materialized_prefix)を返します。SQLの制限時間は10秒です。構造化出力とレンダリング済み出力は、それぞれ40,000文字以内である必要があります。
  • SQLの誤りでは、識別子や変換値を制限付きで保持し、復旧方法を案内します。運用上の障害には汎用メッセージを使用し、エンジンのパスやネイティブの原因は含めません。

nasa_power_dataframe_drop ツール
  • canvas_id と正確な table が必須です。NASA_POWER_DATAFRAME_DROP_ENABLED=true によってのみ有効になります。
  • テーブルが存在しない場合、他のテーブルによってキャンバスが維持されていれば dropped: false を返します。最後のテーブルを削除すると、そのキャンバスも終了してスロットが解放されます。その後のdescribe、query、dropの呼び出しでは canvas_not_found が返されます。

特長

@cyanheads/mcp-ts-core を基盤としており、stdio および Streamable HTTP トランスポート、プラグイン可能な認証(none/jwt/oauth)、切り替え可能なストレージ(in-memory、filesystem、Supabase、Cloudflare KV/R2/D1)、オプションの OpenTelemetry トレーシングに対応した構造化ログを提供します。

POWER 固有の特長:

  • 観測対象は地点の測定値や予報ではなく、過去のグリッドデータです。気象データは1981年、太陽データは1984年、時間別データは2001年から利用できます。ソースの設定や公開までの遅延によって、利用可能なデータはさらに制限されます。
  • 上流へのリクエストは常に1件のみで、開始間隔は少なくとも2秒、再試行回数には上限があり、呼び出し全体の期限は55秒です。NASA はリクエスト数の上限を数値で公表していません。参照データのキャッシュ期間は24時間、観測データは10分です。
  • ソースの欠損値は null に変換され、ゼロは測定値として保持されます。月別の年間キーと気候値の ANN は、月別の観測値とは区別されます。LST のラベルには UTC オフセットがありません。
  • T_ZONES と TM_ZONES は、SQL の列メタデータも含め、数値の気候帯コードを valueKind: categorical として保持します。これらには算術的な要約や比較用のソート指標はなく、いずれかを指定した明示的な数値ソートは拒否されます。

エージェントに適した出力:

  • 科学的な出典情報 — ソース API バージョン、データセット識別子、エンドポイント、アクセス時刻を結果に含めます。返された単位を維持し、NASA POWER の出典を明記してください。
  • 明示的な欠損 — omittedParameters によって、系列が存在しない場合と欠損値を区別します。観測値の算術平均や暦上の季節区分は、気候平年値、年間収量、水収支ではありません。
  • 完全なデータセット — インライン出力はそれぞれ40,000文字以内です。より大きなデータセットでは、最大20行のプレビューと dataset ハンドルを添えて、すべての行をステージングします。対応外または大きすぎるリクエストは、上流データの先頭部分を上限で切り詰めて返すのではなく、対象を絞り込む方法を案内して失敗します。

ステージングには DuckDB が必要で、1データセットあたり最大250,000行、64個のパラメータ列、シリアライズ後の行データ32 MiBに対応します。キャンバスはプロセス内でのみ有効な機能です。返されたトークンを明示的に渡し、後続の呼び出しは同じプロセスにルーティングしてください。テーブルは30分後に期限切れとなり、キャンバスあたりのテーブル数は8個です。デフォルトでは、キャンバスあたりのアイドル時間は1時間、絶対時間は6時間、テナントあたりのキャンバス数は4個、プロセスあたりは8個で、キャンバスあたりのエンジンメモリは256 MiBです。運用者は、以下でキャンバスの容量、メモリ、存続期間をこれより小さく設定できます。エンジンメモリの上限は、RSS 全体や一時ディスク使用量を制限しません。

はじめに

公開ホストインスタンス

公開インスタンス https://nasa-power.caseyjhand.com/mcp を利用できます。インストールは不要です。Streamable HTTP 経由で、任意の MCP クライアントから接続してください。

{
  "mcpServers": {
    "nasa-power-mcp-server": {
      "type": "streamable-http",
      "url": "https://nasa-power.caseyjhand.com/mcp"
    }
  }
}
セルフホスト/ローカル

MCP クライアントの設定ファイルに、以下を追加してください。

{
  "mcpServers": {
    "nasa-power-mcp-server": {
      "type": "stdio",
      "command": "bunx",
      "args": ["@cyanheads/nasa-power-mcp-server@latest"],
      "env": { "MCP_TRANSPORT_TYPE": "stdio" }
    }
  }
}

または、npx を使用する方法(Bun は不要です):

{
  "mcpServers": {
    "nasa-power-mcp-server": {
      "type": "stdio",
      "command": "npx",
      "args": ["-y", "@cyanheads/nasa-power-mcp-server@latest"],
      "env": { "MCP_TRANSPORT_TYPE": "stdio" }
    }
  }
}

または、Docker を使用する方法:

{
  "mcpServers": {
    "nasa-power-mcp-server": {
      "type": "stdio",
      "command": "docker",
      "args": ["run", "-i", "--rm", "-e", "MCP_TRANSPORT_TYPE=stdio", "ghcr.io/cyanheads/nasa-power-mcp-server:latest"]
    }
  }
}

Streamable HTTP を使用する場合は、トランスポートを設定してサーバーを起動してください。

MCP_TRANSPORT_TYPE=http MCP_HTTP_PORT=3010 bun run start:http
# Server listens at http://127.0.0.1:3010/mcp
前提条件
  • Bun v1.4.0 以降(または Node.js v24+)。
  • npm と Docker は、対応プラットフォーム上でネイティブ DuckDB 依存関係を通常どおりインストールします。ステージングと SQL はデフォルトで有効です。すべての結果をインラインにするには、CANVAS_PROVIDER_TYPE=none を設定してください。
  • ポータブルな Claude Desktop MCPB バンドルでは CANVAS_PROVIDER_TYPE=none に固定されており、インライン結果に対応します。大きすぎるリクエストは対象を絞り込むか、分析には npm/Docker を使用してください。
インストール
  1. リポジトリをクローンします:
git clone https://github.com/cyanheads/nasa-power-mcp-server.git
  1. ディレクトリに移動します:
cd nasa-power-mcp-server
  1. 依存関係をインストールします:
bun install
  1. 環境を設定します:
cp .env.example .env
# edit .env to change transport, logging or canvas settings

設定

変数説明デフォルト
NASA_POWER_DATAFRAME_DROP_ENABLEDステージング済みテーブルを明示的に削除する機能を公開します。false
CANVAS_PROVIDER_TYPEduckdb は npm/Docker で SQL を実行するために大きな結果をステージングし、none は結果をインラインで保持します。MCPB では none に固定されています。duckdb
CANVAS_DEFAULT_MEMORY_LIMIT_MBキャンバスごとのエンジンメモリ。整数で、64 MiB 以上です。合計 RSS や一時ディスク容量ではありません。256
CANVAS_MAX_CANVASES_PER_TENANTテナントごとのキャンバス上限(正の整数)。auth-none の呼び出し元は同じテナントを共有します。4
NASA_POWER_MAX_CANVASES_PER_PROCESS保留中およびクリーンアップに失敗した予約分を含む、プロセスごとのキャンバス上限(正の整数)。8
CANVAS_TTL_MS正の整数で指定する、スライド式キャンバス有効期間(ミリ秒)。3600000
CANVAS_ABSOLUTE_CAP_MSスライド式 TTL 以上の、キャンバスの絶対有効期間(ミリ秒)。21600000
MCP_TRANSPORT_TYPEstdio または http。stdio
MCP_HTTP_HOST / MCP_HTTP_PORTHTTP のバインドアドレスとポート。127.0.0.1 / 3010
MCP_AUTH_MODEnone、jwt、または oauth。none
MCP_LOG_LEVEL最低ログレベル。info
OTEL_ENABLEDOpenTelemetry を有効にします。false

未設定、空欄、値全体がプレースホルダーの設定には、これらのデフォルトが適用されます。サイズ設定が無効な場合、起動に失敗します。バイト予算、テーブル上限、プロデューサーの並行処理数は、オペレーターが設定するキャンバスサイズとは独立して固定されています。トランスポート、認証、ストレージ、ロギング、テレメトリーのオプション設定については、.env.example を参照してください。

サーバーの実行

ローカル開発
  • 本番バージョンをビルドして実行する:

    # One-time build
    bun run rebuild
    
    # Run the built server
    bun run start:http
    # or
    bun run start:stdio
    
  • チェックとテストを実行する:

    bun run devcheck  # Lints, formats, type-checks, and more
    bun run test      # Runs the test suite
    
Docker
docker build -t nasa-power-mcp-server .
docker run --rm -p 127.0.0.1:3010:3010 nasa-power-mcp-server

イメージは、ステートレスセッションモードでポート 3010 の HTTP をデフォルトとして使用し、/var/log/nasa-power-mcp-server にログを出力します。OpenTelemetry のピア依存関係はデフォルトでインストールされます。省略するには、--build-arg OTEL_ENABLED=false を指定してビルドしてください。ループバック外のクライアントから接続する場合は、デプロイ境界で認証と TLS を設定してください。

プロジェクト構成

パス用途
src/index.ts9 つのツール登録、上限付きキャンバス設定、サービスのシャットダウン
src/configワークロードの上限と、サーバー固有の環境変数の解析
src/mcp-server/tools/definitionsツールの契約と比較のオーケストレーション
src/services/powerリクエスト間隔を調整する NASA クライアント、正規化、プリセット、科学的な要約
src/services/canvas明示的なトークンによるステージング、SQL、データの来歴、受付上限
scriptsビルド、検証、パッケージ化、リリース用ツール
testsオフラインでの契約テストとネイティブ統合テスト

開発ガイド

開発ガイドラインとアーキテクチャ上のルールについては、CLAUDE.md を参照してください。要点は次のとおりです。

  • ハンドラーは例外をスローし、フレームワークが捕捉します — ツールのロジック内で try/catch を使わないでください
  • ロギングには ctx.log を、キャンセルには ctx.signal を使用してください
  • 新しいツールは src/index.ts の createApp() 配列に登録してください
  • 外部 API 呼び出しをラップしてください。生データを検証 → ドメイン型に正規化 → 出力スキーマを返す、の順に処理します。欠落フィールドを捏造せず、ソースの単位と年間期間の区別を保持してください
  • content[] と structuredContent には、同じ完全なデータを格納してください

コントリビューション

イシューを歓迎します。提出前にチェックとテストを実行してください。

bun run devcheck
bun run test

ライセンス

このプロジェクトは Apache 2.0 License の下でライセンスされています。詳細は LICENSE ファイルを参照してください。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。