PyPI查询MCP服务器

一个用于查询PyPI包信息、依赖关系和兼容性检查的模型上下文协议(MCP)服务器。

  • by loonghao
  • Python
  • 本地部署
  • 19 星标
  • 更新于
在 GitHub 查看 loonghao/pypi-query-mcp-server

使用说明

PyPI查询MCP服务器

用于查询PyPI包信息、依赖关系和兼容性检查的模型上下文协议(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

配置

克劳德代码(推荐)

使用内置的MCP管理将PyPI查询MCP服务器添加到Claude代码中:

# 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_INTEGRATION.md 获取全面的Claude Code集成文档。

克劳德桌面

添加到您的Claude Desktop配置文件中:

MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json 视窗: %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 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"
      }
    }
  }
}

光标

添加到光标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 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工具:

核心包信息

  1. get_package_info -获取全面的包裹信息
  2. get_package_versions -列出软件包的所有可用版本
  3. get_package_dependency -分析包依赖关系

Python兼容性

  1. check_package_python_compatibility -检查Python版本兼容性
  2. get_package_compatible_python_versions -获取所有兼容的Python版本

高级依赖性分析

  1. resolve_dependency -通过详细分析递归解决所有包依赖关系
  2. download_package -将包和所有依赖项下载到本地目录

下载统计数据和流行度

  1. get_download_统计数据 -获取任何软件包的全面下载统计数据
  2. get_download_trends -分析下载趋势和时间序列数据(过去180天)
  3. get_top_downloaded_packages -按下载次数获取最受欢迎的软件包

MCP提示模板

  1. 分析包装质量 -生成全面的包装质量分析提示
  2. compare_包 -生成详细的包比较提示
  3. 建议_备选方案 -生成查找包替代方案的提示
  4. resolve_dependency冲突 -生成解决依赖关系冲突的提示
  5. 计划_版本_升级 -生成计划软件包版本升级的提示
  6. audit_security_risks -生成安全风险审计提示
  7. 计划包装迁移 -生成全面的包迁移计划提示
  8. generate_migration_checklist -生成详细的迁移检查表提示

环境分析模板

  1. 分析环境依赖性 -生成分析当前环境依赖关系的提示
  2. check_outdated_packages -生成检查具有更新优先级的过时软件包的提示
  3. generate_update_plan -生成创建综合包更新计划的提示

趋势分析模板

  1. 分析数据 -生成用于分析每日PyPI下载趋势的提示
  2. find_trending_packages -生成提示以发现一段时间内的趋势包
  3. track_package_updates -生成跟踪最近包更新和发布的提示

📖 了解有关提示模板的更多信息:参见 PROMPT_TEMPLATES.md 查看详细的文档和示例。

使用示例

在MCP客户端(Claude Desktop、Cline、Cursor、Windsurf)中配置后,您可以提出以下问题:

基本包查询

  • “Django 4.2的依赖关系是什么?”
  • FastAPI与Python 3.9兼容吗
  • “显示请求包的所有版本”
  • numpy支持哪些Python版本
  • “获取熊猫套餐的详细信息”

高级依赖性分析

  • “请帮我分析PySide2与Python 3.10的完整依赖树”
  • “解决Django的所有依赖关系,包括开发依赖关系”
  • “FastAPI的所有传递依赖关系是什么?”

软件包下载

  • “请帮我将PySide2及其Python 3.10的所有依赖项下载到我的本地计算机上”
  • “将请求包及其所有依赖项下载到./downloads文件夹”
  • “收集Django开发所需的所有包”

下载统计数据和流行度分析

  • “本月请求包的下载统计数据是什么?”
  • “显示numpy在过去180天的下载趋势”
  • “今天下载量最大的10个Python包是什么?”
  • “比较Django、Flask和FastAPI的受欢迎程度”
  • “本周哪个web框架的下载量最高?”

MCP提示模板

  • “使用analyze_package_quality提示符评估请求包”
  • “生成Django、FastAPI和Flask构建API的比较提示”
  • “创建从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_dependences工具]

用户:“显示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许可证获得许可-请参阅 许可证 文件以获取详细信息。