返回市场
PyPI查询MCP服务器

PyPI查询MCP服务器

作者:loonghao13 星标更新:2025-11-23

项目介绍

PyPI 查询 MCP 服务器

PyPI 版本

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

功能

  • 📦 查询 PyPI 包信息(名称、版本、描述、依赖)
  • 🐍 Python 版本兼容性检查
  • 🔍 高级依赖分析和递归解析
  • 📥 带依赖收集的包下载
  • 📊 下载统计和流行度分析
  • 🏆 顶级包排名和趋势
  • 🎯 MCP 提示模板,用于指导分析和决策
  • 🏢 私有 PyPI 存储库支持
  • ⚡ 快速异步操作并带有缓存
  • 🛠️ 易于与 MCP 客户端集成

安装

使用 uvx(推荐)

# 直接运行
uvx pypi-query-mcp-server

# 或安装并运行特定脚本
uvx --from pypi-query-mcp-server pypi-query-mcp

使用 pip

# 从 PyPI 安装
pip install pypi-query-mcp-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 查询 MCP 服务器添加到 Claude Code 中:

# 添加本地作用域(项目特定)
claude mcp add pypi uvx pypi-query-mcp-server -s local

# 添加用户作用域(适用于所有项目)
claude mcp add pypi uvx pypi-query-mcp-server -s user

📖 详细指南:参见 CLAUDE_CODE_INTEGRATION.md 获取全面的 Claude Code 集成文档。

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)

示例配置

# 使用多个镜像源以提高可用性
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/"

# 私有存储库配置
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_dependencies - 分析包的依赖关系

Python 兼容性

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

高级依赖分析

  1. resolve_dependencies - 递归解析所有包的依赖关系,并进行详细分析
  2. download_package - 下载包及其所有依赖项到本地目录

下载统计及流行度

  1. get_download_statistics - 获取任何包的综合下载统计信息
  2. get_download_trends - 分析下载趋势和时间序列数据(最近 180 天)
  3. get_top_downloaded_packages - 获取按下载量排序的最热门包

MCP 提示模板

  1. analyze_package_quality - 生成综合包质量分析提示
  2. compare_packages - 生成详细的包比较提示
  3. suggest_alternatives - 生成查找包替代品的提示
  4. resolve_dependency_conflicts - 生成解决依赖冲突的提示
  5. plan_version_upgrade - 生成规划包版本升级的提示
  6. audit_security_risks - 生成安全风险审计的提示
  7. plan_package_migration - 生成综合包迁移计划提示
  8. generate_migration_checklist - 生成详细的迁移检查清单提示

环境分析模板

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

趋势分析模板

  1. analyze_daily_trends - 生成分析每日 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?"
  • "显示 requests 包的所有版本"
  • "numpy 支持哪些 Python 版本?"
  • "获取 pandas 包的详细信息"

高级依赖分析

  • "请帮我分析 PySide2 在 Python 3.10 上的完整依赖树"
  • "解析 Django 包的所有依赖项,包括开发依赖项"
  • "FastAPI 的所有传递依赖项是什么?"

包下载

  • "请帮我下载 PySide2 及其所有依赖项到我的本地机器上"
  • "将 requests 包及其所有依赖项下载到 ./downloads 文件夹"
  • "收集 Django 开发所需的所有包"

下载统计及流行度分析

  • "requests 包本月的下载统计是多少?"
  • "显示 numpy 在过去 180 天内的下载趋势"
  • "今天下载量最多的 10 个 Python 包是什么?"
  • "比较 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 工具获取两个包的信息]

程序化使用

# 示例: 检查 Django 是否兼容 Python 3.9
result = await mcp_client.call_tool("check_package_python_compatibility", {
    "package_name": "django",
    "target_python_version": "3.9"
})

# 示例: 获取包信息
info = await mcp_client.call_tool("get_package_info", {
    "package_name": "requests"
})

# 示例: 获取下载统计信息
stats = await mcp_client.call_tool("get_download_statistics", {
    "package_name": "numpy",
    "period": "month"
})

# 示例: 获取下载量最多的包
top_packages = await mcp_client.call_tool("get_top_downloaded_packages", {
    "period": "week",
    "limit": 10
})

开发状态

🎉 核心功能已实现并准备好使用!

当前实现状态:

  • ✅ 基本项目结构
  • ✅ 带缓存的 PyPI API 客户端
  • ✅ MCP 工具实现(包信息、版本、依赖)
  • ✅ Python 版本兼容性检查
  • ✅ 高级依赖分析和递归解析
  • ✅ 带依赖收集的包下载
  • 下载统计和流行度分析
  • 顶级包排名和趋势
  • ✅ 多平台测试的 CI/CD 流水线
  • ⏳ 私有存储库支持(计划中)

贡献

欢迎贡献!请随意提交 Pull Request。

许可证

此项目根据 MIT 许可证发布 - 详情请参阅 LICENSE 文件。