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
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
- get_package_info - Obtener información completa del paquete
- get_package_versions - Listar todas las versiones disponibles de un paquete
- get_package_dependencies - Analizar las dependencias del paquete
Compatibilidad con Python
- check_package_python_compatibility - Verificar la compatibilidad de versiones de Python
- get_package_compatible_python_versions - Obtener todas las versiones de Python compatibles
Análisis avanzado de dependencias
- resolve_dependencies - Resolver recursivamente todas las dependencias del paquete con análisis detallado
- download_package - Descargar el paquete y todas sus dependencias a un directorio local
Estadísticas de descargas y popularidad
- get_download_statistics - Obtener estadísticas completas de descargas para cualquier paquete
- get_download_trends - Analizar tendencias de descargas y datos de series temporales (últimos 180 días)
- get_top_downloaded_packages - Obtener los paquetes más populares por número de descargas
Plantillas de prompts MCP
- analyze_package_quality - Generar prompts de análisis integral de calidad de paquetes
- compare_packages - Generar prompts detallados de comparación de paquetes
- suggest_alternatives - Generar prompts para encontrar alternativas a paquetes
- resolve_dependency_conflicts - Generar prompts para resolver conflictos de dependencias
- plan_version_upgrade - Generar prompts para planificar actualizaciones de versiones de paquetes
- audit_security_risks - Generar prompts para auditorías de riesgos de seguridad
- plan_package_migration - Generar prompts de planes integrales de migración de paquetes
- generate_migration_checklist - Generar prompts de listas de verificación detalladas de migración
Plantillas de análisis de entorno
- analyze_environment_dependencies - Generar prompts para analizar las dependencias del entorno actual
- check_outdated_packages - Generar prompts para verificar paquetes desactualizados con prioridades de actualización
- generate_update_plan - Generar prompts para crear planes integrales de actualización de paquetes
Plantillas de análisis de tendencias
- analyze_daily_trends - Generar prompts para analizar tendencias diarias de descargas de PyPI
- find_trending_packages - Generar prompts para descubrir paquetes en tendencia durante períodos de tiempo
- 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.