请勿转载,违法必究

研究动机

2025年AI大模型应用开发火热,MCP(model context protocol)成为了重要的方向之一,被OpenAI,阿里,百度等大公司支持,如下图所示:

阿里百炼MCP服务

开发者都想定制自己的MCP服务,那么阿里百炼平台给出的 ‘安装方式:npx,uvx和sse’ 都是什么呢?

MCP介绍

基于大模型构建复杂的智能体(Agents)和工作流(WorkFlow)是重要的大模型应用方向。MCP 是一种开放协议,官网:https://modelcontextprotocol.io/ 它标准化了应用程序向LLMs提供上下文的方式,将LLM连接到不同的数据源和工具。

Python环境下MCP开发

官方推荐使用uv工具构建MCP服务,我们先了解一下uv工具是什么?

uv工具

uv号称下一代的python工具箱,能够平替:pip, pip-tools, pipx, poetry, pyenv, twine, virtualenv等常见python工具,并且比pip快10~100倍。官网地址:GitHub – astral-sh/uv

管理python版本:uv python list uv python install 3.12

uv init --script example.py --python 3.12 动态修改脚本使用的python版本。

运行python脚本:

uv run example.py param1 其中param1是脚本的输入参数;

import sys

print(" ".join(sys.argv[1:]))

uv run --no-project example.py 表示不依赖当前项目中的配置文件pyproject.toml 运行脚本。

uv run --with 'rich>12,<13' example.py 表示依赖名字为rich的python库(版本12~13之间)运行脚本example.py

uv add --script example.py 'requests<3' 'rich' 动态修改脚本依赖的request库和rich库。

如何不用uv run xx 这种形式运行脚本,例如:

#!/usr/bin/env -S uv run --script

print("Hello, world!")

可以./xx 运行。

安装工具(tool):uv tool install ruff 安装后,工具ruff相关的可执行文件就无需用uv run xx运行了,但是它不同于uv pip install ruff, python -c "import ruff" 这句代码是不能执行的。

创建项目(project): uv init,类似git。

# 执行uv init后生成的代码结构如下:
.
├── .venv
│   ├── bin
│   ├── lib
│   └── pyvenv.cfg
├── .python-version
├── README.md
├── main.py
├── pyproject.toml
└── uv.lock

其中.venv 是传统的python隔离手段,uv安装的python库会放到这个隔离环境中

其中.python-version 是uv帮你设置的python版本(uv本身不依赖)。

其中pyproject.toml包含项目的meta信息,内容如下:

[project]
name = "hello-world"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
dependencies = []

如何编辑这些dependencies呢:

# 指定requests库的版本
uv add 'requests==2.31.0'

# 用github的最新版requests
uv add git+https://github.com/psf/requests

# 把别的项目写好的requirements.txt倒入
uv add -r requirements.txt -c constraints.txt

# 删除对requests库的依赖
uv remove requests

uv构建发行版: uv build, 例如:

uv build
ls dist/

uvx是uv tool run的简写:

uvx ruff 等同于 uv tool run ruff,表示调用工具ruff

调用github最新版本的 httpie 工具:uvx --from git+https://github.com/httpie/cli httpie