repo-template について
PyPI Query MCP サーバーは、PyPI パッケージのメタデータ、依存関係、Python バージョンの互換性を構造化して照会する MCP サーバーです。LLM から Python パッケージ情報を取得したい開発者を対象としています。
主な機能
- 01パッケージのバージョン、説明、メタデータの照会
- 02Python バージョンの互換性確認
- 03依存関係の再帰的な解決
- 04パッケージと依存関係のダウンロード
- 05ダウンロード統計と人気ランキングの取得
活用シーン
- 01パッケージが対象の Python バージョンに対応しているかの確認
- 02プロジェクトの推移的依存関係の分析
- 03Python Web フレームワークのダウンロード数の比較
MCP 対応
本プロジェクトは MCP サーバーとして、パッケージ照会、依存関係分析、ダウンロード統計のツールを MCP クライアントに公開し、プロンプトテンプレートも提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
PyPI Query MCP サーバー
PyPI パッケージの情報や依存関係を照会し、互換性を確認するための Model Context Protocol(MCP)サーバーです。
特長
- 📦 PyPI パッケージの情報(名前、バージョン、説明、依存関係)を照会
- 🐍 Python のバージョン互換性を確認
- 🔍 高度な依存関係の分析と再帰的な解決
- 📥 パッケージのダウンロードと依存関係の収集
- 📊 ダウンロード統計と人気度の分析
- 🏆 人気パッケージのランキングとトレンド
- 🎯 分析や意思決定をガイドする MCP プロンプトテンプレート
- 🏢 プライベート PyPI リポジトリに対応
- ⚡ キャッシュによる高速な非同期処理
- 🛠️ MCP クライアントと簡単に連携
インストール
uvx を使用する(推奨)
# Run directly with uvx
uvx pypi-query-mcp-server
# Or install and run with specific script
uvx --from pypi-query-mcp-server pypi-query-mcp
pip を使用する
# Install from PyPI
pip install pypi-query-mcp-server
# Run the server
python -m pypi_query_mcp.server
ソースからインストールする
git clone https://github.com/loonghao/pypi-query-mcp-server.git
cd pypi-query-mcp-server
uv sync
uv run pypi-query-mcp
設定
Claude Code(推奨)
組み込みの MCP 管理機能を使って、PyPI Query MCP サーバーを Claude Code に追加します。
# Add with local scope (project-specific)
claude mcp add pypi uvx pypi-query-mcp-server -s local
# Add with user scope (available across all projects)
claude mcp add pypi uvx pypi-query-mcp-server -s user
📖 詳しいガイド:Claude Code との連携について詳しくは、CLAUDE_CODE_INTEGRATION.md をご覧ください。
Claude Desktop
Claude Desktop の設定ファイルに追加します。
MacOS:~/Library/Application Support/Claude/claude_desktop_config.json
Windows:%APPDATA%/Claude/claude_desktop_config.json
{
"mcpServers": {
"pypi-query": {
"command": "uvx",
"args": ["--from", "pypi-query-mcp-server", "pypi-query-mcp"],
"env": {
"PYPI_INDEX_URL": "https://pypi.org/pypi",
"PYPI_INDEX_URLS": "https://mirrors.aliyun.com/pypi/simple/,https://pypi.tuna.tsinghua.edu.cn/simple/",
"PYPI_CACHE_TTL": "3600",
"PYPI_LOG_LEVEL": "INFO"
}
}
}
}
プライベートリポジトリを使用する場合
{
"mcpServers": {
"pypi-query": {
"command": "uvx",
"args": ["--from", "pypi-query-mcp-server", "pypi-query-mcp"],
"env": {
"PYPI_INDEX_URL": "https://pypi.org/pypi",
"PYPI_PRIVATE_PYPI_URL": "https://private.pypi.company.com",
"PYPI_PRIVATE_PYPI_USERNAME": "your_username",
"PYPI_PRIVATE_PYPI_PASSWORD": "your_password",
"PYPI_CACHE_TTL": "3600"
}
}
}
}
Cline
Cline の MCP 設定(cline_mcp_settings.json)に追加します。
{
"mcpServers": {
"pypi-query": {
"command": "uvx",
"args": ["--from", "pypi-query-mcp-server", "pypi-query-mcp"],
"env": {
"PYPI_INDEX_URL": "https://pypi.org/simple/",
"CACHE_TTL": "3600"
}
}
}
}
Cursor
Cursor の MCP 設定(.cursor/mcp.json)に追加します。
{
"mcpServers": {
"pypi-query": {
"command": "uvx",
"args": ["--from", "pypi-query-mcp-server", "pypi-query-mcp"],
"env": {
"PYPI_INDEX_URL": "https://pypi.org/simple/",
"CACHE_TTL": "3600"
}
}
}
}
Windsurf
Windsurf の MCP 設定(~/.codeium/windsurf/mcp_config.json)に追加します。
{
"mcpServers": {
"pypi-query": {
"command": "uvx",
"args": ["--from", "pypi-query-mcp-server", "pypi-query-mcp"],
"env": {
"PYPI_INDEX_URL": "https://pypi.org/simple/",
"CACHE_TTL": "3600"
}
}
}
}
環境変数
基本設定
PYPI_INDEX_URL:主要な PyPI インデックス URL(デフォルト:https://pypi.org/pypi)PYPI_CACHE_TTL:キャッシュの有効期間(秒)(デフォルト:3600)PYPI_LOG_LEVEL:ログレベル(デフォルト:INFO)PYPI_REQUEST_TIMEOUT:HTTP リクエストのタイムアウト時間(秒)(デフォルト:30.0)
複数のミラーソースへの対応
PYPI_INDEX_URLS:追加の PyPI インデックス URL(カンマ区切り、任意)PYPI_EXTRA_INDEX_URLS:フォールバック用の追加 PyPI インデックス URL(カンマ区切り、任意)
プライベートリポジトリへの対応
PYPI_PRIVATE_PYPI_URL:プライベート PyPI リポジトリの URL(任意)PYPI_PRIVATE_PYPI_USERNAME:プライベート PyPI のユーザー名(任意)PYPI_PRIVATE_PYPI_PASSWORD:プライベート PyPI のパスワード(任意)
高度な依存関係の分析
PYPI_DEPENDENCY_MAX_DEPTH:依存関係を再帰的に分析する際の最大深度(デフォルト:5)PYPI_DEPENDENCY_MAX_CONCURRENT:依存関係の照会を同時に実行する最大数(デフォルト:10)PYPI_ENABLE_SECURITY_ANALYSIS:セキュリティ脆弱性の分析を有効にするかどうか(デフォルト:false)
設定例
# Use multiple mirror sources for better availability
export PYPI_INDEX_URL="https://pypi.org/pypi"
export PYPI_INDEX_URLS="https://mirrors.aliyun.com/pypi/simple/,https://pypi.tuna.tsinghua.edu.cn/simple/"
export PYPI_EXTRA_INDEX_URLS="https://test.pypi.org/simple/"
# Private repository configuration
export PYPI_PRIVATE_PYPI_URL="https://private.pypi.company.com"
export PYPI_PRIVATE_PYPI_USERNAME="your_username"
export PYPI_PRIVATE_PYPI_PASSWORD="your_password"
利用可能な MCP ツール
サーバーは次の MCP ツールを提供します。
基本的なパッケージ情報
- get_package_info - パッケージの包括的な情報を取得
- get_package_versions - パッケージで利用可能なすべてのバージョンを一覧表示
- get_package_dependencies - パッケージの依存関係を分析
Python との互換性
- check_package_python_compatibility - Python のバージョンとの互換性を確認
- get_package_compatible_python_versions - 互換性のある Python のバージョンをすべて取得
高度な依存関係の分析
- resolve_dependencies - 詳細な分析を行いながら、パッケージの依存関係をすべて再帰的に解決
- download_package - パッケージとすべての依存関係をローカルディレクトリにダウンロード
ダウンロード統計と人気度
- get_download_statistics - 任意のパッケージの包括的なダウンロード統計を取得
- get_download_trends - ダウンロードのトレンドと時系列データを分析(過去 180 日間)
- get_top_downloaded_packages - ダウンロード数をもとに、最も人気のあるパッケージを取得
MCP プロンプトテンプレート
- analyze_package_quality - 包括的なパッケージ品質分析プロンプトを生成します
- compare_packages - 詳細なパッケージ比較プロンプトを生成します
- suggest_alternatives - パッケージの代替候補を探すプロンプトを生成します
- resolve_dependency_conflicts - 依存関係の競合を解決するプロンプトを生成します
- plan_version_upgrade - パッケージのバージョンアップグレードを計画するプロンプトを生成します
- audit_security_risks - セキュリティリスクを監査するプロンプトを生成します
- plan_package_migration - 包括的なパッケージ移行計画のプロンプトを生成します
- generate_migration_checklist - 詳細な移行チェックリストのプロンプトを生成します
環境分析テンプレート
- analyze_environment_dependencies - 現在の環境の依存関係を分析するプロンプトを生成します
- check_outdated_packages - 更新の優先順位を付けて古いパッケージを確認するプロンプトを生成します
- generate_update_plan - 包括的なパッケージ更新計画を作成するプロンプトを生成します
トレンド分析テンプレート
- analyze_daily_trends - PyPI の日別ダウンロード傾向を分析するプロンプトを生成します
- find_trending_packages - 指定期間におけるトレンドのパッケージを見つけるプロンプトを生成します
- track_package_updates - パッケージの最近の更新とリリースを追跡するプロンプトを生成します
📖 プロンプトテンプレートについて詳しく見る:PROMPT_TEMPLATES.mdで、詳細なドキュメントと例をご覧ください。
使用例
MCP クライアント(Claude Desktop、Cline、Cursor、Windsurf)で設定すると、次のような質問をできます。
基本的なパッケージに関する質問
- 「Django 4.2 の依存関係は何ですか?」
- 「FastAPI は Python 3.9 と互換性がありますか?」
- 「requests パッケージのすべてのバージョンを表示してください」
- 「numpy はどの Python バージョンをサポートしていますか?」
- 「pandas パッケージの詳細情報を取得してください」
高度な依存関係分析
- 「Python 3.10 の PySide2 の依存関係ツリー全体を分析してください」
- 「開発用の依存関係も含めて、Django の依存関係をすべて解決してください」
- 「FastAPI のすべての推移的依存関係は何ですか?」
パッケージのダウンロード
- 「Python 3.10 用の PySide2 とそのすべての依存関係をローカルマシンにダウンロードしてください」
- 「requests パッケージとすべての依存関係を ./downloads フォルダーにダウンロードしてください」
- 「Django の開発に必要なすべてのパッケージを収集してください」
ダウンロード統計と人気度分析
- 「今月の requests パッケージのダウンロード統計はどうなっていますか?」
- 「過去 180 日間の numpy のダウンロード傾向を表示してください」
- 「今日、最もダウンロードされた Python パッケージの上位 10 件は何ですか?」
- 「Django、Flask、FastAPI の人気度を比較してください」
- 「今週、最もダウンロード数が多い Web フレームワークはどれですか?」
MCP プロンプトテンプレート
- 「analyze_package_quality プロンプトを使って requests パッケージを評価してください」
- 「API の構築に向けて、Django、FastAPI、Flask の比較プロンプトを生成してください」
- 「Flask から FastAPI への移行計画プロンプトを作成してください」
- 「構造化されたプロンプトを使って依存関係の競合を解決してください」
- 「本番環境のパッケージ向けにセキュリティ監査プロンプトを生成してください」
環境分析
- 「現在の Python 環境の依存関係を分析し、古いパッケージがないか確認してください」
- 「環境内でセキュリティ更新が利用可能なパッケージを確認してください」
- 「慎重な方針で本番環境向けの更新計画を生成してください」
- 「すぐに更新すべきパッケージと、計画的に更新すべきパッケージを特定してください」
トレンド分析
- 「今日、最もダウンロードされた Python パッケージは何ですか?」
- 「今週、機械学習分野でトレンドになっているパッケージを表示してください」
- 「最近のセキュリティ更新と新しいパッケージのリリースを追跡してください」
- 「Web 開発分野で人気が高まっている、検討すべきパッケージを見つけてください」
会話の例
ユーザー: 「Django 4.2 が Python 3.9 と互換性があるか確認してください」
AI アシスタント: Django 4.2 と Python 3.9 の互換性を確認します。
[get_package_info と check_package_python_compatibility ツールを使用します]
ユーザー: 「FastAPI の主な依存関係を教えてください」
AI アシスタント: FastAPI の依存関係の情報を取得します。
[get_package_dependencies ツールを使用します]
ユーザー: 「requests パッケージのダウンロード統計を表示して、requests と urllib3 のどちらが人気か教えてください」
AI アシスタント: 両方のパッケージのダウンロード統計を取得して、人気を比較します。
[両方のパッケージに対して get_download_statistics ツールを使用します]
プログラムからの使用
# Example: Check if Django is compatible with Python 3.9
result = await mcp_client.call_tool("check_package_python_compatibility", {
"package_name": "django",
"target_python_version": "3.9"
})
# Example: Get package information
info = await mcp_client.call_tool("get_package_info", {
"package_name": "requests"
})
# Example: Get download statistics
stats = await mcp_client.call_tool("get_download_statistics", {
"package_name": "numpy",
"period": "month"
})
# Example: Get top downloaded packages
top_packages = await mcp_client.call_tool("get_top_downloaded_packages", {
"period": "week",
"limit": 10
})
開発状況
🎉 コア機能の実装が完了し、使用できる状態です!
現在の実装状況:
- ✅ 基本的なプロジェクト構造
- ✅ キャッシュ機能付き PyPI API クライアント
- ✅ MCP ツールの実装(パッケージ情報、バージョン、依存関係)
- ✅ Python バージョンの互換性チェック
- ✅ 高度な依存関係の分析と再帰的な解決
- ✅ 依存関係を収集しながらパッケージをダウンロード
- ✅ ダウンロード統計と人気度の分析
- ✅ 人気パッケージのランキングとトレンド
- ✅ マルチプラットフォームテストを含む CI/CD パイプライン
- ⏳ プライベートリポジトリのサポート(予定)
コントリビューション
コントリビューションを歓迎します!お気軽にプルリクエストを送信してください。
ライセンス
このプロジェクトは MIT License の下でライセンスされています。詳細については LICENSE ファイルをご覧ください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。