DESI MCP Server について
DESI MCP Serverは、天文学研究者向けのモジュール型MCPサーバーです。DESIを含む複数の天文データソースへのアクセスを統合し、検索、分析、ファイル管理を提供します。巡天データの照合や形式変換にも対応します。
主な機能
- 01DESIのスペクトルとカタログにアクセス
- 0240以上のastroqueryサービスを検索
- 03座標、天体種別、赤方偏移で検索
- 04複数巡天のデータを照合
- 05ファイル管理とFITS変換
活用シーン
- 01指定した天域の銀河やクエーサーを検索
- 02スペクトルを取得して赤方偏移を分析
- 03DESIとSDSSのデータを照合
- 04結果をプレビューしてFITSに変換
MCP 対応
MCPクライアントに、天文データ検索、スペクトル取得、サービス探索、ファイル管理、形式変換のツールを提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
Astro MCP - エージェント型天文データアクセス
洗練された拡張可能なアーキテクチャを通じて、複数の天文データセットに統一的にアクセスできる、モジュール式の Model Context Protocol(MCP)サーバーです。
ビジョン
この MCP サーバーは、ビッグデータ天文学をソフトウェアエンジニアリングの問題から、自然言語での会話へと変革することを目指しています。astroquery API の習得に何カ月も費やす代わりに、研究者は必要なものを尋ねるだけで、整理・処理済みの解析対応データを得られます。
一人の専門家が複雑さを一度解決すれば、何千人もの科学者がその恩恵を永続的に受けられます。プログラミング経験がほとんどない学生でも、自然言語と AI アシスタントだけを使って、専門の天文学者と同じ複数サーベイ解析を実行できるようになります。
これは天文学だけの話ではありません。あらゆる科学を民主化するためのひな型です。どの分野でも、優れた研究者が発見ではなくデータの整理に時間の 80%を費やしています。このボトルネックを取り除くことで、科学の進歩そのものを加速させます。
その結果、AI 科学者は数十の天文サーベイのデータにシームレスにアクセスして相互照合できるようになり、ほんの数年前なら準備に何カ月もかかっていた発見を可能にします。
Cursor と Claude Desktop のクイックセットアップ
1. クローンと環境のセットアップ
# Clone the repository
git clone https://github.com/SandyYuan/astro_mcp.git
cd astro_mcp
# Create a dedicated conda environment with Python 3.11+
conda create -n mcp python=3.11
conda activate mcp
# Install dependencies
pip install -r requirements.txt
# Install astronomical libraries for full functionality
pip install sparclclient datalab astropy astroquery
2. サーバーのテスト
# Test basic functionality
python test_server.py
# Test with a simple query (optional)
python -c "
import asyncio
from server import astro_server
async def test():
result = astro_server.get_global_statistics()
print('✅ Server working:', result['total_files'], 'files in registry')
services = astro_server.list_astroquery_services()
print(f'✅ Astroquery: {len(services)} services discovered')
asyncio.run(test())
"
3. Cursor の設定
以下の設定を Cursor の MCP 設定に追加します。
{
"mcpServers": {
"astro-mcp": {
"command": "/path/to/conda/envs/mcp/bin/python",
"args": ["/path/to/astro_mcp/server.py"],
"cwd": "/path/to/astro_mcp",
"env": {}
}
}
}
conda の Python パスを確認するには:
conda activate mcp
which python
# Copy this path for the "command" field above
4. Claude Desktop の設定
Claude Desktop の MCP 設定ファイルを編集します。
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"astro-mcp": {
"command": "/path/to/conda/envs/mcp/bin/python",
"args": ["/path/to/astro_mcp/server.py"],
"cwd": "/path/to/astro_mcp",
"env": {}
}
}
}
5. 再起動とテスト
- Cursor/Claude Desktop を再起動して、新しい MCP サーバーを読み込みます
- 次のようなクエリでテストします:
- 「RA=10.68、Dec=41.27 の近くにある銀河を検索して」
- 「SIMBAD からベテルギウスの座標を取得して」
- 「z=0.5 付近の BOSS 銀河を 10 個見つけて、FITS 形式で保存して」
- 「利用可能な astroquery サービスを一覧表示して」
6. トラブルシューティング
サーバーが起動しない場合:
# Check Python environment
conda activate mcp
python --version # Should be 3.11+
# Test server manually
python server.py
# Should start without errors
MCP 接続の問題:
- 設定内の Python パスが conda 環境を指していることを確認します
- 作業ディレクトリ(
cwd)が astro_mcp フォルダーを指していることを確認します - すべての依存関係が正しい環境にインストールされていることを確認します
天文データが見つからない場合:
# Install optional dependencies for full functionality
conda activate mcp
pip install sparclclient datalab astropy astroquery h5py
Cursor/Claude Desktop での使用例
設定が完了したら、天文データについて自然言語で質問できます。
基本的な検索
- 「RA=150.5、Dec=2.2 の近くで、0.1 度以内にある銀河を見つけて」
- 「赤方偏移が 2 から 3 のクエーサーを検索して」
- 「SIMBAD からベテルギウスの正確な座標を取得して」
- 「赤方偏移 0.5 付近の BOSS 銀河を 10 個見つけて」
複数サーベイへのアクセス
- 「VizieR でオリオン領域の恒星カタログをクエリして」
- 「SDSS で銀河を検索して、FITS 形式で保存して」
- 「複数の天文データベースから天体情報を取得して」
- 「銀河研究で利用可能な astroquery サービスをすべて一覧表示して」
スペクトルデータの解析
- 「ID が 1270d3c4-9d36-11ee-94ad-525400ad1336 の DESI 天体のスペクトルを取得して」
- 「見つけられる中で最も明るいクエーサーの詳細なスペクトル情報を表示して」
- 「銀河のスペクトルを見つけて、赤方偏移を解析して」
ファイル管理と変換
- 「保存済みの天文データファイルをすべて一覧表示して」
- 「銀河カタログを FITS 形式に変換して」
- 「最新の検索結果の構造をプレビューして」
- 「ダウンロードしたデータのストレージ統計を表示して」
高度なクエリ
- 「高赤方偏移銀河(z > 1.5)を見つけて、そのスペクトルを保存して」
- 「COSMOS フィールド内の天体を検索して、その種類を解析して」
- 「同じ天域の DESI と SDSS のデータを相互照合して」
サーバーは自動的に次の処理を行います。
- 複数のサーベイにまたがって適切なデータベースクエリを実行します
- 説明的なファイル名とメタデータを付けて結果を保存します
- 座標変換と天文計算を処理します
- 必要に応じてデータを標準形式(CSV、FITS)に変換します
アーキテクチャ
astro_mcp/
├── server.py # Main MCP server entry point
├── data_sources/ # Modular data source implementations
│ ├── __init__.py
│ ├── base.py # Base class for all data sources
│ ├── desi.py # DESI survey data access
│ ├── astroquery_universal.py # Universal astroquery wrapper
│ └── astroquery_metadata.py # Service metadata and capabilities
├── data_io/ # File handling and conversion
│ ├── __init__.py
│ ├── preview.py # Data preview and structure analysis
│ └── fits_converter.py # FITS format conversion
├── tests/ # Test suite
├── examples/ # Usage examples
└── requirements.txt # Project dependencies
機能
🔭 天文データへのユニバーサルアクセス
- DESI:SPARCL および Data Lab を介した Dark Energy Spectroscopic Instrument
- Astroquery:40 以上の天文サービス(SIMBAD、VizieR、SDSS、Gaia など)への自動アクセス
- 自動検出:利用可能な astroquery サービスを自動で検出し、設定します
- 統一インターフェース:すべてのデータソースで同じ API を使用できます
📁 インテリジェントなファイル管理
- 説明的なファイル名でデータを自動保存
- データソースをまたいだファイルの登録と整理
- 来歴を含む包括的なメタデータの追跡
- 読み込み例を含むスマートなファイルプレビュー
- 天文学との互換性を確保する FITS 形式への変換
🔍 強力な検索機能
- すべてのサーベイを対象とした座標ベースの検索(点、円錐、ボックス)
- 天体の種類と赤方偏移によるフィルタリング
- 空間インデックス(Q3C)を使用した SQL クエリ
- 自然言語クエリの解釈
- サーベイ間のデータ相関
📊 データ分析・変換ツール
- スペクトルデータの取得と分析
- カタログ、スペクトル、画像の自動 FITS 変換
- ファイル構造の検査とプレビュー
- 統計情報とストレージの管理
- カスタム分析に対応する拡張可能なツールアーキテクチャ
🤖 AI に最適化されたインターフェース
- パラメーターの前処理と検証
- 役立つ提案を含むインテリジェントなエラー処理
- 形式の自動検出と変換
- すべてのデータソースで一貫したメタデータ
インストール
クイックスタート: Cursor と Claude Desktop の連携については、上記のクイックセットアップセクションをご覧ください。
手動インストール
# Clone the repository
git clone https://github.com/SandyYuan/astro_mcp.git
cd astro_mcp
# Create and activate environment
conda create -n mcp python=3.11
conda activate mcp
# Install core dependencies
pip install -r requirements.txt
# Install astronomical libraries
pip install sparclclient datalab astropy astroquery
# Optional: Install development dependencies
pip install pytest coverage
インストールの確認
# Test the server components
python test_server.py
# Check available astroquery services
python -c "
import asyncio
from server import astro_server
async def show_services():
services = astro_server.list_astroquery_services()
print(f'✅ Discovered {len(services)} astroquery services')
for service in services[:5]: # Show first 5
print(f' - {service["full_name"]} ({service["service"]})')
asyncio.run(show_services())
"
クイックスタート
1. MCP サーバーを起動する
python server.py
2. 利用可能なツール
サーバーでは、次の主なツールを利用できます。
データアクセス:
search_objects- 天体を検索します(DESI)astroquery_query- 40 以上の天文サービスを横断してクエリを実行しますget_spectrum_by_id- 詳細なスペクトルデータを取得します(DESI)
サービスの検出:
list_astroquery_services- 利用可能なすべての天文データベースを表示しますget_astroquery_service_details- サービスの詳細情報を表示しますsearch_astroquery_services- 条件を指定してサービスを検索します
ファイル管理:
preview_data- 構造を分析して保存済みファイルを検査しますlist_files- すべてのデータソースにわたって保存データを管理しますfile_statistics- ストレージ使用量と整理状況を確認しますconvert_to_fits- データを FITS 形式に変換します
3. 使用例
# Get object coordinates from SIMBAD
astroquery_query(
service_name="simbad",
object_name="Betelgeuse"
)
# Search SDSS for galaxies with SQL
astroquery_query(
service_name="sdss",
query_type="query_sql",
sql="SELECT TOP 10 ra, dec, z FROM SpecObj WHERE class='GALAXY' AND z BETWEEN 0.1 AND 0.3"
)
# Search VizieR catalogs
astroquery_query(
service_name="vizier",
ra=10.68,
dec=41.27,
radius=0.1
)
# Convert results to FITS
convert_to_fits(
identifier="search_results.csv",
data_type="catalog"
)
データソース
DESI(Dark Energy Spectroscopic Instrument)
ステータス:✅ 実装済み
- SPARCL アクセス:スペクトルデータを完全に取得できます
- Data Lab SQL:高速なカタログクエリ(sparcl.main テーブル)
- カバレッジ:DESI EDR(約 180 万件)および DR1(約 1,800 万件以上)のスペクトル
- 波長:360~980 nm、分解能:R ~ 2000~5500
Astroquery によるユニバーサルアクセス
ステータス:✅ 実装済み
利用可能な主なサービス:
- SIMBAD:天体の識別と基本データ
- VizieR:天文カタログとサーベイ
- SDSS:Sloan Digital Sky Survey のデータとスペクトル
- Gaia:位置天文データと測光データ
- MAST:Hubble、JWST などの宇宙望遠鏡アーカイブ
- IRSA:赤外線およびサブミリ波のアーカイブ
- ESASky:複数のミッションにまたがる天文データ
- その他 30 以上のサービス...
機能:
- サービスの自動検出と設定
- クエリの種類をインテリジェントに検出
- パラメーターの前処理と検証
- 統一されたエラー処理とヘルプの生成
必須の依存関係:
pip install astroquery astropy
アーキテクチャの拡張
新しいデータソースの追加
- データソースクラスを作成します:
# data_sources/my_survey.py
from .base import BaseDataSource
class MySurveyDataSource(BaseDataSource):
def __init__(self, base_dir=None):
super().__init__(base_dir=base_dir, source_name="my_survey")
# Initialize survey-specific clients
def search_objects(self, **kwargs):
# Implement survey-specific search
pass
- メインサーバーを更新します:
# server.py
from data_sources import MySurveyDataSource
class AstroMCPServer:
def __init__(self, base_dir=None):
# ... existing code ...
self.my_survey = MySurveyDataSource(base_dir=base_dir)
Astroquery サービスの追加
astroquery 連携では、新しいサービスが自動的に検出されます。カスタムメタデータを追加するには:
# data_sources/astroquery_metadata.py
ASTROQUERY_SERVICE_INFO = {
"my_service": {
"full_name": "My Custom Service",
"description": "Custom astronomical database",
"data_types": ["catalogs", "images"],
"wavelength_coverage": "optical",
"object_types": ["stars", "galaxies"],
"requires_auth": False,
"example_queries": [
{
"description": "Search by object name",
"query": "astroquery_query(service_name='my_service', object_name='M31')"
}
]
}
}
ファイル構成
ファイルは、包括的なメタデータとともにデータソース別に自動で整理されます。
~/astro_mcp_data/
├── file_registry.json # Global file registry with metadata
├── desi/ # DESI-specific files
│ ├── desi_search_*.json # Search results
│ ├── spectrum_*.json # Spectral data
│ └── *.fits # FITS conversions
└── astroquery/ # Astroquery results
├── astroquery_simbad_*.csv # SIMBAD queries
├── astroquery_sdss_*.csv # SDSS results
├── astroquery_vizier_*.csv # VizieR catalogs
└── *.fits # FITS conversions
開発
プロジェクト構成のメリット
- モジュール性:新しいサーベイや解析ツールを簡単に追加できます
- ユニバーサルなアクセス:40 以上の天文学データベースに単一のインターフェースからアクセスできます
- 関心の分離:データアクセス、I/O、解析が分離されています
- テスト容易性:各モジュールを個別にテストできます
- スケーラビリティ:クリーンなアーキテクチャにより、無制限の拡張に対応できます
テスト
# Run all tests
pytest
# Test specific modules
pytest tests/test_desi.py
pytest tests/test_astroquery.py
# Test with coverage
pytest --cov=data_sources tests/
コントリビューション
- リポジトリをフォークします
- 機能ブランチを作成します(
git checkout -b feature/new-capability) - 既存のパターンに従って、データソースまたはツールを追加します
- 新しい機能のテストを作成します
- ドキュメントと例を更新します
- プルリクエストを送信します
依存関係
コア要件
mcp>=1.0.0- Model Context Protocol フレームワークpandas>=2.0.0- データ操作numpy>=1.24.0- 数値計算
天文学ライブラリ
astroquery>=0.4.6- 天文学データベースへのユニバーサルアクセスastropy>=5.0.0- FITS ファイルと天文学的計算sparclclient>=1.0.0- DESI SPARCL へのアクセスdatalab>=2.20.0- NOAO Data Lab クエリ
オプション機能
h5py>=3.8.0- HDF5 ファイルのサポートpytest>=7.0.0- テストフレームワーク
ライセンス
[Specify your license here]
引用
このソフトウェアを研究で使用する場合は、次のように引用してください:
@software{astro_mcp,
title={Astro MCP: Universal Astronomical Data Access for AI Agents},
author={[Your Name]},
year={2024},
url={[Repository URL]}
}
サポート
- 課題:GitHub Issues
- ドキュメント:完全なドキュメント
- ディスカッション:GitHub Discussions
ロードマップ
現在(v0.1.0)
- ✅ SPARCL と Data Lab による DESI データへのアクセス
- ✅ astroquery のユニバーサルな統合(40 以上のサービス)
- ✅ すべてのデータ形式に対応した FITS への自動変換
- ✅ 包括的なメタデータによるインテリジェントなファイル管理
- ✅ 自然言語クエリインターフェース
予定(v0.2.0)
- 🚧 サーベイをまたいだ天体の照合と相関分析
- 🚧 高度な天文学的計算(距離、等級)
- 🚧 変光天体の時系列解析
- 🚧 可視化ツールの統合
将来(v0.3.0+)
- 🔮 天体分類のための機械学習の統合
- 🔮 サーベイからのリアルタイムデータストリーミング
- 🔮 カスタム解析パイプラインの作成
- 🔮 多波長データの相関分析ツール
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。