PyPI Query MCP Server

Un servidor para consultar el Índice de Paquetes de Python (PyPI) sobre información de paquetes, dependencias y compatibilidad.

Documentación

PyPI Query MCP Server

PyPI version

Un servidor de Model Context Protocol (MCP) para consultar información de paquetes PyPI, dependencias y verificación de compatibilidad.

Características

  • 📦 Consulta información de paquetes PyPI (nombre, versión, descripción, dependencias)
  • 🐍 Verificación de compatibilidad de versiones de Python
  • 🔍 Análisis avanzado de dependencias y resolución recursiva
  • 📥 Descarga de paquetes con recopilación de dependencias
  • 📊 Estadísticas de descargas y análisis de popularidad
  • 🏆 Ranking de paquetes principales y tendencias
  • 🎯 Plantillas de prompts MCP para análisis guiado y toma de decisiones
  • 🏢 Soporte para repositorios PyPI privados
  • ⚡ Operaciones asíncronas rápidas con caché
  • 🛠️ Integración sencilla con clientes MCP

Instalación

Usando uvx (recomendado)

# 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

Usando pip

# Install from PyPI
pip install pypi-query-mcp-server

# Run the server
python -m pypi_query_mcp.server

Desde el código fuente

git clone https://github.com/loonghao/pypi-query-mcp-server.git
cd pypi-query-mcp-server
uv sync
uv run pypi-query-mcp

Configuración

Claude Code (Recomendado)

Agregue el PyPI Query MCP Server a Claude Code usando la gestión MCP integrada:

# 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

📖 Guía detallada: Consulte CLAUDE_CODE_INTEGRATION.md para obtener documentación completa sobre la integración con Claude Code.

Claude Desktop

Agregue a su archivo de configuración de 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"
      }
    }
  }
}

Con repositorio privado

{
  "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

Agregue a la configuración MCP de Cline (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

Agregue a la configuración MCP de Cursor (.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

Agregue a la configuración MCP de Windsurf (~/.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"
      }
    }
  }
}

Variables de entorno

Configuración básica

  • PYPI_INDEX_URL: URL del índice PyPI principal (predeterminado: https://pypi.org/pypi)
  • PYPI_CACHE_TTL: Tiempo de vida de la caché en segundos (predeterminado: 3600)
  • PYPI_LOG_LEVEL: Nivel de registro (predeterminado: INFO)
  • PYPI_REQUEST_TIMEOUT: Tiempo de espera de solicitudes HTTP en segundos (predeterminado: 30.0)

Soporte de múltiples fuentes espejo

  • PYPI_INDEX_URLS: URLs adicionales del índice PyPI (separadas por comas, opcional)
  • PYPI_EXTRA_INDEX_URLS: URLs adicionales del índice PyPI para respaldo (separadas por comas, opcional)

Soporte de repositorios privados

  • PYPI_PRIVATE_PYPI_URL: URL del repositorio PyPI privado (opcional)
  • PYPI_PRIVATE_PYPI_USERNAME: Nombre de usuario del PyPI privado (opcional)
  • PYPI_PRIVATE_PYPI_PASSWORD: Contraseña del PyPI privado (opcional)

Análisis avanzado de dependencias

  • PYPI_DEPENDENCY_MAX_DEPTH: Profundidad máxima para el análisis recursivo de dependencias (predeterminado: 5)
  • PYPI_DEPENDENCY_MAX_CONCURRENT: Máximo de consultas de dependencias concurrentes (predeterminado: 10)
  • PYPI_ENABLE_SECURITY_ANALYSIS: Habilitar análisis de vulnerabilidades de seguridad (predeterminado: false)

Ejemplo de configuración

# 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"

Herramientas MCP disponibles

El servidor proporciona las siguientes herramientas MCP:

Información básica de paquetes

  1. get_package_info - Obtener información completa del paquete
  2. get_package_versions - Listar todas las versiones disponibles de un paquete
  3. get_package_dependencies - Analizar las dependencias del paquete

Compatibilidad con Python

  1. check_package_python_compatibility - Verificar la compatibilidad de versiones de Python
  2. get_package_compatible_python_versions - Obtener todas las versiones de Python compatibles

Análisis avanzado de dependencias

  1. resolve_dependencies - Resolver recursivamente todas las dependencias del paquete con análisis detallado
  2. download_package - Descargar el paquete y todas sus dependencias a un directorio local

Estadísticas de descargas y popularidad

  1. get_download_statistics - Obtener estadísticas completas de descargas para cualquier paquete
  2. get_download_trends - Analizar tendencias de descargas y datos de series temporales (últimos 180 días)
  3. get_top_downloaded_packages - Obtener los paquetes más populares por número de descargas

Plantillas de prompts MCP

  1. analyze_package_quality - Generar prompts de análisis integral de calidad de paquetes
  2. compare_packages - Generar prompts detallados de comparación de paquetes
  3. suggest_alternatives - Generar prompts para encontrar alternativas a paquetes
  4. resolve_dependency_conflicts - Generar prompts para resolver conflictos de dependencias
  5. plan_version_upgrade - Generar prompts para planificar actualizaciones de versiones de paquetes
  6. audit_security_risks - Generar prompts para auditorías de riesgos de seguridad
  7. plan_package_migration - Generar prompts de planes integrales de migración de paquetes
  8. generate_migration_checklist - Generar prompts de listas de verificación detalladas de migración

Plantillas de análisis de entorno

  1. analyze_environment_dependencies - Generar prompts para analizar las dependencias del entorno actual
  2. check_outdated_packages - Generar prompts para verificar paquetes desactualizados con prioridades de actualización
  3. generate_update_plan - Generar prompts para crear planes integrales de actualización de paquetes

Plantillas de análisis de tendencias

  1. analyze_daily_trends - Generar prompts para analizar tendencias diarias de descargas de PyPI
  2. find_trending_packages - Generar prompts para descubrir paquetes en tendencia durante períodos de tiempo
  3. track_package_updates - Generar prompts para rastrear actualizaciones y lanzamientos recientes de paquetes

📖 Más información sobre plantillas de prompts: Consulte PROMPT_TEMPLATES.md para obtener documentación detallada y ejemplos.

Ejemplos de uso

Una vez configurado en su cliente MCP (Claude Desktop, Cline, Cursor, Windsurf), puede hacer preguntas como:

Consultas básicas de paquetes

  • "¿Cuáles son las dependencias de Django 4.2?"
  • "¿Es FastAPI compatible con Python 3.9?"
  • "Muéstrame todas las versiones del paquete requests"
  • "¿Qué versiones de Python soporta numpy?"
  • "Obtén información detallada sobre el paquete pandas"

Análisis avanzado de dependencias

  • "Por favor, ayúdame a analizar el árbol de dependencias completo de PySide2 con Python 3.10"
  • "Resuelve todas las dependencias de Django incluyendo las dependencias de desarrollo"
  • "¿Cuáles son todas las dependencias transitivas de FastAPI?"

Descarga de paquetes

  • "Por favor, ayúdame a descargar PySide2 y todas sus dependencias para Python 3.10 en mi máquina local"
  • "Descarga el paquete requests con todas sus dependencias en la carpeta ./downloads"
  • "Recopila todos los paquetes necesarios para el desarrollo con Django"

Estadísticas de descargas y análisis de popularidad

  • "¿Cuáles son las estadísticas de descargas del paquete requests este mes?"
  • "Muéstrame las tendencias de descargas de numpy en los últimos 180 días"
  • "¿Cuáles son los 10 paquetes de Python más descargados hoy?"
  • "Compara la popularidad de Django vs Flask vs FastAPI"
  • "¿Qué framework web tiene el mayor número de descargas esta semana?"

Plantillas de prompts MCP

  • "Usa el prompt analyze_package_quality para evaluar el paquete requests"
  • "Genera un prompt de comparación para Django vs FastAPI vs Flask para crear APIs"
  • "Crea un prompt de plan de migración para pasar de Flask a FastAPI"
  • "Ayúdame a resolver conflictos de dependencias con un prompt estructurado"
  • "Genera un prompt de auditoría de seguridad para mis paquetes de producción"

Análisis de entorno

  • "Analiza las dependencias de mi entorno Python actual y verifica si hay paquetes desactualizados"
  • "Verifica qué paquetes de mi entorno tienen actualizaciones de seguridad disponibles"
  • "Genera un plan de actualización para mi entorno de producción con estrategia conservadora"
  • "Ayúdame a identificar paquetes que necesitan actualizaciones inmediatas frente a actualizaciones planificadas"

Análisis de tendencias

  • "¿Cuáles son los paquetes de Python más descargados hoy?"
  • "Muéstrame los paquetes en tendencia en el dominio de aprendizaje automático esta semana"
  • "Rastrea actualizaciones de seguridad recientes y nuevos lanzamientos de paquetes"
  • "Encuentra paquetes emergentes en desarrollo web que debería considerar"

Conversaciones de ejemplo

Usuario: "Verifica si Django 4.2 es compatible con Python 3.9"

Asistente de IA: Verificaré la compatibilidad de Django 4.2 con Python 3.9 para usted.

[Usa las herramientas get_package_info y check_package_python_compatibility]

Usuario: "¿Cuáles son las dependencias principales de FastAPI?"

Asistente de IA: Déjame obtener la información de dependencias de FastAPI.

[Usa la herramienta get_package_dependencies]

Usuario: "Muéstrame las estadísticas de descargas del paquete requests y dime cuál es más popular: ¿requests o urllib3?"

Asistente de IA: Obtendré las estadísticas de descargas de ambos paquetes y compararé su popularidad.

[Usa la herramienta get_download_statistics para ambos paquetes]

Uso programático

# 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
})

Estado de desarrollo

🎉 Funcionalidad principal implementada y lista para usar.

Estado actual de implementación:

  • ✅ Estructura básica del proyecto
  • ✅ Cliente API de PyPI con caché
  • ✅ Implementación de herramientas MCP (información de paquetes, versiones, dependencias)
  • ✅ Verificación de compatibilidad de versiones de Python
  • ✅ Análisis avanzado de dependencias y resolución recursiva
  • ✅ Descarga de paquetes con recopilación de dependencias
  • Estadísticas de descargas y análisis de popularidad
  • Ranking de paquetes principales y tendencias
  • ✅ Pipeline CI/CD con pruebas multiplataforma
  • ⏳ Soporte de repositorios privados (planificado)

Contribuciones

¡Las contribuciones son bienvenidas! No dude en enviar una solicitud de extracción (Pull Request).

Licencia

Este proyecto está licenciado bajo la Licencia MIT; consulte el archivo LICENSE para más detalles.