尧图精选

如何用 uv 搭建 Python MCP Server 的本地开发环境(uv sync、pytest、pyright、ruff)

🕒 发布时间:2026/9/9 18:58:28 📁 来源:尧图网络
如何用 uv 搭建 Python MCP Server 的本地开发环境uv sync、pytest、pyright、ruff【免费下载链接】serversModel Context Protocol Servers项目地址: https://gitcode.com/GitHub_Trending/se/servers本仓库servers是 Model Context Protocol 的参考实现集合其中 3 个 Python 服务器位于src/fetch、src/git、src/time对应发布包mcp-server-fetch、mcp-server-git、mcp-server-time。如果你要在本地运行、测试或二次开发这些 Python MCP Server需要按仓库约定使用 uv而非 pip管理依赖并跑通 pytest、pyright、ruff 三条检查。仓库的 Python 版本要求为 3.10每个服务器目录下还有一个.python-version文件用于固定 Python 版本CI 中actions/setup-python就读取该文件构建系统为 hatchling。以下以src/fetch为例给出完整操作路径src/git与src/time步骤完全相同。准备条件已安装 uv。仓库的 CI 通过astral-sh/setup-uvv7安装 uv本地可直接安装后使用仓库 README 指向官方 uv 安装说明。Python 版本满足 3.10各pyproject.toml中的requires-python均为3.10。在仓库根目录打开终端进入目标服务器目录。三个 Python 服务器的开发依赖都在各自的pyproject.toml中声明但声明位置不同后续添加依赖时要注意src/fetch/pyproject.toml 与 src/time/pyproject.toml 使用[tool.uv]段的dev-dependenciesfetch 为pyright1.1.389、ruff0.7.3、pytest8.0.0、pytest-asyncio0.21.0time 额外含freezegun且pytest8.3.3、ruff0.8.1src/git/pyproject.toml 使用[dependency-groups]段的devpyright1.1.407、ruff0.7.3、pytest8.0.0。同步依赖uv sync进入服务器目录后执行cd src/fetch uv sync --frozen --all-extras --dev这是 CLAUDE.md 中给出的标准命令参数含义按仓库约定理解--all-extras安装全部 extras当前各服务器的pyproject.toml未定义 extras此处为仓库统一写法--dev一并安装开发依赖pyright、ruff、pytest 等后续所有检查命令依赖这一步--frozen以现有锁文件为准不更新锁文件。CI 中两条流水线用的参数略有差异可以对照 .github/workflows/python.ymltestjob 使用uv sync --frozen --all-extras --devbuildjob 使用uv sync --locked --all-extras --dev--locked在锁文件过期时会直接报错。两个参数都表示不重新生成锁文件本地日常开发用--frozen即可。执行成功后会在该目录生成虚拟环境并写入锁文件解析出的依赖。若提示锁文件不一致说明pyproject.toml与uv.lock不同步需要先按仓库流程更新锁文件再提交而不是绕过锁文件运行。运行测试pytestfetch、git 有tests/目录time 有test/目录CI 中通过检测tests或test目录、或pyproject.toml中是否出现pytest来决定是否执行测试因此三个服务器都可以运行uv run pytest测试路径由各自pyproject.toml的[tool.pytest.ini_options]指定fetch 和 git 均为testpaths [tests]。fetch 的 pytest 配置额外含asyncio_mode auto并依赖pytest-asyncio因为其工具实现为 async/await 模式——这是仓库 CLAUDE.md 中明确列出的 Python 代码风格要求之一。测试通过pytest 无失败用例即表示该服务器当前代码可用。类型检查与 Lintpyright、ruff仓库对 Python 代码强制类型标注CI 的buildjob 会执行 pyright 和打包构建本地应跑同样的检查# 类型检查CI 中为 uv run --frozen pyright此处为 CLAUDE.md 给出的本地写法 uv run pyright # Lint 检查 uv run ruff check .pyright 无类型错误、ruff 无告警即与 CI 的检查项对齐。可选验证构建与运行服务器本体确认开发环境完整后可以用 CIbuildjob 的打包命令验证 hatchling 构建链uv build产物输出到该服务器目录的dist/CI 将dist/作为 artifact 上传。若还要实际启动服务器验证fetch 的 README 给出了 MCP inspector 的调试命令cd path/to/servers/src/fetch npx modelcontextprotocol/inspector uv run mcp-server-fetch其中path/to/servers是文档中的占位路径替换为你本地仓库目录。各服务器的入口脚本名见pyproject.toml的[project.scripts]段例如mcp-server-fetch mcp_server_fetch:main因此uv run mcp-server-fetch也可以直接以 stdio 方式启动服务器。添加自己的开发依赖在二次开发中需要新增开发依赖如新的测试工具时先看你所在服务器的pyproject.toml用的是哪种声明方式fetch 和 time 写在[tool.uv]的dev-dependenciesgit 写在[dependency-groups]的dev。按既有方式追加后重新执行uv sync --frozen --all-extras --dev若锁文件因此需要更新需同步提交更新后的uv.lock否则 CI 的--locked步骤会失败再依次跑uv run pytest、uv run pyright、uv run ruff check .三条检查。以上四步sync、pytest、pyright、ruff正是 CLAUDE.md Python servers 小节与 CI 工作流定义的完整检查路径全部通过即表示本地开发环境与仓库 CI 对齐。【免费下载链接】serversModel Context Protocol Servers项目地址: https://gitcode.com/GitHub_Trending/se/servers创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
上一篇/下一篇内容由系统自动关联 返回资讯列表 →