这是一个可分发的 Model Context Protocol (MCP) 服务端示例,采用了 stdio 协议进行通讯。
项目采用了标准推荐的 src 布局:
src/stdio_python_demo/: 源代码目录pyproject.toml: 包含打包元数据和 entry points 配置
如果你将此项目上传到 GitHub,其他用户无需手动下载代码,可以直接通过 uvx 运行:
# 替换为你的 GitHub 仓库地址
uvx --from git+https://github.com/YOUR_USERNAME/stdio-python-demo.git stdio-python-demouv sync项目配置了 stdio-python-demo 入口点,可以直接运行:
uv run stdio-python-demo运行模拟客户端脚本:
uv run test_client.py或者使用 MCP Inspector:
npx @modelcontextprotocol/inspector uv run stdio-python-demo如果你想让用户直接通过 uvx stdio-python-demo 运行:
- 注册 PyPI 账号。
- 在项目根目录运行
uv build。 - 使用
uv publish将构建好的包发布。
发布后,用户的运行体验将非常顺滑:
uvx stdio-python-demo{
"mcpServers": {
"python-calc": {
"command": "uvx",
"args": [
"stdio-python-demo"
],
"env": {
"GREETING_PREFIX": "你好"
}
}
}
}{
"mcpServers": {
"python-calc": {
"command": "uv",
"args": [
"--directory",
"D:/payegis/mcp/base-demo/stdio-python-demo",
"run",
"stdio-python-demo"
],
"env": {
"GREETING_PREFIX": "你好"
}
}
}
}本项目演示了两种配置环境变量的方式:
在项目根目录下创建 .env 文件,你可以配置自定义的问候语前缀:
GREETING_PREFIX="你好"服务端在初始化时会调用 load_dotenv(),你可以通过 say_greeting 工具来验证配置是否生效。
如果你在 Claude Desktop 中使用此项目,可以在配置文件的 env 字段中注入环境变量:
{
"mcpServers": {
"python-calc": {
"command": "uv",
"args": [
"--directory",
"D:/payegis/mcp/base-demo/stdio-python-demo",
"run",
"stdio-python-demo"
],
"env": {
"GREETING_PREFIX": "尊敬的"
}
}
}
}add_numbers(a, b): 基础数值加法。say_greeting(name): 演示从环境变量获取前缀并拼接姓名。
- 不要提交
.env:敏感信息(如 API Key)应仅存在于本地.env中,本项目已将其加入.gitignore。 - 配置模板:参考
.env.example创建你自己的本地配置。