PyPI查询MCP服务器
](https://pypi.org/project/pypi-query-mcp-server/)
用于查询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工具:
核心包信息
- get_package_info -获取全面的包裹信息
- get_package_versions -列出软件包的所有可用版本
- get_package_dependency -分析包依赖关系
Python兼容性
- check_package_python_compatibility -检查Python版本兼容性
- get_package_compatible_python_versions -获取所有兼容的Python版本
高级依赖性分析
- resolve_dependency -通过详细分析递归解决所有包依赖关系
- download_package -将包和所有依赖项下载到本地目录
下载统计数据和流行度
- get_download_统计数据 -获取任何软件包的全面下载统计数据
- get_download_trends -分析下载趋势和时间序列数据(过去180天)
- get_top_downloaded_packages -按下载次数获取最受欢迎的软件包
MCP提示模板
- 分析包装质量 -生成全面的包装质量分析提示
- compare_包 -生成详细的包比较提示
- 建议_备选方案 -生成查找包替代方案的提示
- resolve_dependency冲突 -生成解决依赖关系冲突的提示
- 计划_版本_升级 -生成计划软件包版本升级的提示
- audit_security_risks -生成安全风险审计提示
- 计划包装迁移 -生成全面的包迁移计划提示
- generate_migration_checklist -生成详细的迁移检查表提示
环境分析模板
- 分析环境依赖性 -生成分析当前环境依赖关系的提示
- check_outdated_packages -生成检查具有更新优先级的过时软件包的提示
- generate_update_plan -生成创建综合包更新计划的提示
趋势分析模板
- 分析数据 -生成用于分析每日PyPI下载趋势的提示
- find_trending_packages -生成提示以发现一段时间内的趋势包
- 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许可证获得许可-请参阅 许可证 文件以获取详细信息。
