MANNA について
MANNAは、IVOAインターフェース経由で天文アーカイブを検索するLLMクライアント向けのMCPサーバーです。天文学研究者向けに、アーカイブ固有の注記や複数段階のワークフロー、大規模TAP結果の非同期処理を提供します。
主な機能
- 01TAP/ADQLクエリの実行
- 02画像とカタログソースの検索
- 03天体名の解決とレジストリ検索
- 04複数段階のアーカイブ検索ワークフロー
- 05アーカイブ固有の注記と検証
- 06大規模TAP結果の非同期処理
活用シーン
- 01位置を指定した画像やカタログソースの検索
- 02IVOAアーカイブの天文データ照会
- 03アーカイブ固有の項目情報を使ったADQL作成
- 04結果URLから大規模クエリ結果を取得
MCP 対応
MANNAはMCP経由でLLMクライアントにIVOAアーカイブのインターフェースを公開します。TAP/ADQL、SIA、コーン検索、レジストリ検索、名称解決に対応します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
uvx manna-mcpMANNA_ARCHIVESComma-separated archive short_names to activate (e.g. 'datalab,alma'). Unset means all.MANNA_ALLOWED_HOSTSComma-separated hostnames the server may fetch. Unset means any public host.MANNA_LOG_LEVELLogging verbosity.MANNA_INLINE_ROW_LIMITMax rows returned inline before a result is promoted to an async job or truncated.ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。
ツール
15掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| waveband | any | いいえ | 省略可能。この波長帯のアーカイブのみを返します(大文字と小文字を区別しません)。例:'radio'、'optical'、'millimeter'。short_name と組み合わせることができ、両方が一致する必要があります。 |
| short_name | any | いいえ | 省略可能。この short_name に一致するアーカイブのみを返します(大文字と小文字を区別しません)。例:'alma'。対象のアーカイブが分かっている場合に使用してください。全件ではなく単一のエントリを返すため、コンテキストを節約できます。不明な名前の場合は空のリスト(count: 0)を返します。 |
詳細
MANNA
MANNA(MCP Architecture for NOIRLab, NRAO, and additional Archives)は、Claude Code、Claude Desktop、Jupyter AI などの LLM クライアントが、標準的な IVOA インターフェース(TAP/ADQL、SIA 画像検索、コーン検索、IVOA レジストリ、Sesame 名称解決)を通じて天文アーカイブにアクセスできるMCP サーバーです。NOIRLab Astro Data Lab、ALMA、CADC、ESO、Gaia、SDSS の厳選されたノートを収録しており、IVOA レジストリに掲載されている任意のアーカイブにアクセスできます。
ツールは次の 4 つのグループに分かれています。
- 接続は IVOA インターフェースを直接呼び出します。天体名の解決、ADQL クエリの実行、位置による画像やカタログソースの検索、レジストリの検索を行います。
- ワークフローツールは複数ステップのタスクを 1 回の呼び出しで実行します。天体を解決し、アーカイブを選び、検索または件数の取得を行います。
- 結果の処理では、小さな結果をインラインで返します。大きな TAP 結果は非同期ジョブになり、クライアントには結果 URL と取得用の pyvo スニペットが返されます。サーバーはリクエスト間で情報を保持しません。
- アーカイブノートには、各アーカイブ固有の注意点(欠落している列、列挙値、空間インデックスのヒント)が記録されており、モデルは ADQL を作成する前にそれらを確認できます。各ノートには、内容を再検証するチェックが付いています。
すべてのツールのリファレンスを含む完全なドキュメントは、 https://manna.readthedocs.io にあります。
インストール
Python 3.12 以降が必要です。PyPI ディストリビューション名は manna-mcp、インポートパッケージ名とコマンド名はどちらも manna です。
uvx manna-mcp --stdio # run without installing: MCP over stdio
pip install manna-mcp # or install it; `manna` then serves HTTP on :8000
初回起動時には astropy と pyvo がダウンロードされるため、時間がかかります。起動タイムアウトの短いクライアントに追加する前に、ターミナルで uvx manna-mcp --stdio を一度実行してください。
Docker イメージと MCP Registry エントリーについては、 インストールをご覧ください。
クライアントの接続
Claude Code:
claude mcp add manna -- uvx manna-mcp --stdio
Claude Desktop、または JSON 設定を使用する任意のクライアント:
{"mcpServers": {"manna": {"command": "uvx", "args": ["manna-mcp", "--stdio"]}}}
共有 HTTP サーバーまたは Jupyter AI の場合は、manna を実行し、クライアントの接続先を
http://localhost:8000/mcp/ に設定してください。
ガイド: Claude Code、 Claude Desktop、 Jupyter AI、 最初のクエリ。
設定
すべての設定は省略可能で、MANNA_* 環境変数または .env ファイルから読み込まれます。特によく変更される設定は次の 2 つです。
MANNA_ARCHIVES=datalab,almaを指定すると、厳選されたノートを使用するアーカイブを限定できます。未設定の場合は、ここで指定するまで無効なnraoを除くすべてのアーカイブが対象になります。MANNA_INLINE_ROW_LIMIT=2000とMANNA_INLINE_BYTE_LIMIT=262144を指定すると、インライン結果の上限を、小規模モデル向けの低い既定値から、Claude のような大きなコンテキストウィンドウに適した値へ引き上げられます。
すべての設定は設定ガイドに記載されています。 アーカイブの追加や削除については、アーカイブガイドをご覧ください。
開発
git clone https://github.com/NSF-Simons-CosmicAI-Institute/manna
cd manna
uv sync
uv run pytest --record-mode=none # offline replay of recorded archive traffic
uv run python -m manna # server on http://localhost:8000
機能ブランチは dev から作成し、プルリクエストで dev にマージします。テスト、リント、記録済みカセット、ドキュメントのビルド、リリースについては、
貢献をご覧ください。
License
MIT. Developed by the NSF-Simons CosmicAI Institute.
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。