Token导航 LogoToken导航TokenDH.com
pycompat MCP logo
开发工具stdio官方级别未说明来源级核验

pycompat MCP

MCP Server

一个Python MCP服务器,用于解析、审计和查找PyPI包版本,并针对目标Python运行时进行完整的兼容性检查。可作为本地stdio进程或远程HTTP API服务器运行。

工具数

4

提示词数

0

GitHub Stars

0

资源数

0
PythonClaude开发工具Claude

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

Adhvyth-T

提供方

Adhvyth-T

最后核验

2026/5/17 20:21

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

pip install -r requirements.txt

详细介绍

pycompat_mcp

一个Python MCP服务器,用于解析、审核和查找PyPI包版本,并对目标Python运行时进行完全兼容性检查。作为本地stdio进程或远程HTTP API服务器运行。

实时端点: https://pycompat.duckdns.org/mcp (可用性可能因地区而异)

______________________________________________________________________

快速连接

克劳德代码

claude mcp add --transport http pycompat https://pycompat.duckdns.org/mcp

克劳德桌面

{
  "mcpServers": {
    "pycompat": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://pycompat.duckdns.org/mcp"]
    }
  }
}

语言链/语言图

from langchain_mcp_adapters.client import MultiServerMCPClient

client = MultiServerMCPClient({
    "pycompat": {
        "url": "https://pycompat.duckdns.org/mcp",
        "transport": "streamable_http",
    }
})
tools = await client.get_tools()

OpenAI/LiteLLM

response = litellm.completion(
    model="gpt-4o",
    mcp_servers=[{"url": "https://pycompat.duckdns.org/mcp"}],
    messages=[{"role": "user", "content": "Resolve fastapi and pydantic for Python 3.11"}]
)

健康检查

curl https://pycompat.duckdns.org/health
# → {"status": "ok", "server": "pycompat_mcp"}

______________________________________________________________________

工具(4)

pycompat_resolve

解析包列表和目标Python版本的最新相互兼容版本。

它是如何工作的:

  1. 从PyPI获取每个包的实时元数据
  2. 按以下方式筛选版本 requires_python 反对 目标 Python(不是主机解释器)
  3. 为每个包选择最新的传递版本(贪婪,最新优先)
  4. 约束传播 --检测到冲突时,扫描备选候选人以自动修复(最多5轮)
  5. 排放a requirements.txt 仅当已解决的集合完全无冲突时才阻止
  6. 否则,用可操作的提示抑制该块——建议增加 max_candidates 当冲突使用精确的针时(==)说明符

输入:

字段类型必填默认描述
packageslist[str]PyPI包名称(最多30个)
python_versionstr目标Python,例如。 "3.11"
max_candidatesint5每个包要评估的版本(1-20)

输出: Markdown表格+ requirements.txt block+EOL/预发布警告+冲突详细信息

______________________________________________________________________

pycompat_package_info

获取单个PyPI包的完整元数据,可以选择特定版本。

输入:

字段类型必填描述
packagestrPyPI包名称
versionstr——具体版本;省略为最新

输出(JSON):

{
  "name": "numpy",
  "version": "2.4.3",
  "summary": "...",
  "requires_python": ">=3.10",
  "license": "BSD-3-Clause",
  "author": "...",
  "home_page": "...",
  "requires_dist": ["..."],
  "latest_versions": ["2.4.3", "2.4.2", "..."],
  "only_prerelease_versions": false
}

______________________________________________________________________

pycompat_check_pinned

审核一组现有的固定版本的相互兼容性和Python运行时兼容性。

输入:

字段类型必填描述
pinneddict[str, str]{"numpy": "1.26.4", "pandas": "2.2.1"}
python_versionstr目标Python,例如。 "3.11"

输出: Markdown表——每包Python OK/fail+任何跨包约束违规

______________________________________________________________________

pycompat_latest_versions

在一次轻量级调用中获取最多50个包的最新稳定版本。

比...更快 pycompat_package_info -每个包同时调用一个API,只返回版本号、发布日期和PyPI链接。

输入:

字段类型必填默认描述
packageslist[str]PyPI包名称(最多50个)
include_prereleaseboolfalse当比稳定版本更新时,也返回最新的预发布版本

输出: Markdown表--包/最新稳定/(预发布)/已发布/PyPI链接

______________________________________________________________________

输入验证

检查行为
Python版本无效(abc)Pydantic验证错误
无意义次要版本(3.999)已拒绝--显示有效范围 3.0–3.13
EOL Python(2.7, 3.03.9)已接受,但在所有工具中都有警告
未来Python(3.14)已拒绝——请参阅中的维护者注释 models.py
重复的包(scikit-learn + scikit_learn)因归一化错误而被拒绝
重复的固定名称(Numpy + numpy)因归一化错误而被拒绝
包不在PyPI上清除错误,其他包继续解析
版本不在PyPI上与“找不到包”不同的错误

______________________________________________________________________

自足执行

运输方式

TRANSPORT env var模式用例
stdio (默认)本地子流程克劳德桌面,克劳德代码本地
http上的可流式HTTP API /mcp任何通过HTTP与MCP通信的LLM客户端

安装

git clone https://github.com/Adhvyth-T/pycompat_mcp.git
cd pycompat_mcp
pip install -r requirements.txt

在本地运行

标准 :

python server.py

HTTP:

# Windows (PowerShell)
$env:TRANSPORT="http"; python server.py

# Linux / macOS
TRANSPORT=http python server.py

Docker:

docker compose up --build

连接本地实例

克劳德代码--stdio:

claude mcp add pycompat python "/absolute/path/to/server.py"

克劳德代码——HTTP:

claude mcp add --transport http pycompat http://localhost:8000/mcp

______________________________________________________________________

文件结构

pycompat_mcp/
├── server.py         # Entry point — transport selection, health endpoint, mcp.run()
├── models.py         # Pydantic input models + shared validators (EOL list, version range)
├── pypi.py           # PyPI HTTP client + all metadata helpers
├── resolver.py       # Greedy resolver + constraint propagation loop
├── tools.py          # MCP tool definitions (4 tools)
├── requirements.txt
├── Dockerfile
├── docker-compose.yml
├── .mcp.json         # Claude Code project config (HTTP mode)
└── .gitignore

______________________________________________________________________

已知限制

限制详细信息
ABI/运行时不兼容numpy 2.0与pandas 1.5的C-ABI断点对PyPI元数据不可见——只捕获声明的约束违规
max_candidates window传播仅从已获取的版本中选取;可能需要严格的精确引脚冲突 max_candidates 提高到10-20
Python 3.14在验证时被拒绝,直到 VALID_PYTHON_MINORSmodels.py 被碰撞——已存在一个注释占位符
Python 3.10 EOL计划于2026年10月-已在中注释占位符 EOL_PYTHON_VERSIONSmodels.py

______________________________________________________________________

维护人员注意事项

Python 3.14发布时:models.py,颠簸 VALID_PYTHON_MINORS["3"]range(0, 14)range(0, 15). 轨道:https://www.python.org/downloads/

当Python 3.10达到EOL(2026年10月)时:models.py,取消评论 "3.10"EOL_PYTHON_VERSIONS. 轨道:https://devguide.python.org/versions/

______________________________________________________________________

依赖项

版本
mcp[cli]≥ 1.26.0
httpx≥ 0.28.1
packaging≥ 26.0
uvicorn≥ 0.42.0
starlette≥ 0.52.1

目录标签

目录标签

PythonClaude开发工具Python包管理本地部署兼容性检查依赖解析PyPI工具

支持客户端

Claude

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

none

工具数量(toolCount,工具数)

4

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdionone部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP