# 发布到 PyPI 指南

## 准备工作

1. **安装构建工具**：
```bash
uv pip install build twine
```

2. **确保项目配置正确**：
   - 检查 `pyproject.toml` 中的版本号
   - 确保所有必需的文件都在 `MANIFEST.in` 中
   - 确保 `schemas/` 目录包含所有必要的 JSON 文件

## 构建分发包

```bash
# 清理旧的构建文件
rm -rf dist/ build/ *.egg-info/

# 构建分发包
uv build
```

这将创建：
- `dist/osim_mcp_server-{version}.tar.gz` - 源码分发包
- `dist/osim_mcp_server-{version}-py3-none-any.whl` - 轮子分发包

## 测试本地安装

在发布到 PyPI 之前，先测试本地安装：

```bash
# 从本地分发包安装
uv pip install dist/osim_mcp_server-*.whl

# 测试命令
uv run osim-mcp-server --help
```

## 发布到 PyPI

### 1. 注册 PyPI 账户

如果没有账户，先到 [PyPI](https://pypi.org/) 注册。

### 2. 配置认证

创建 `~/.pypirc` 文件：

```ini
[pypi]
username = __token__
password = pypi-你的API令牌
```

或者使用环境变量：
```bash
export TWINE_USERNAME=__token__
export TWINE_PASSWORD=pypi-你的API令牌
```

### 3. 上传到 PyPI

```bash
# 上传到测试 PyPI（可选，用于测试）
uv twine upload --repository-url https://test.pypi.org/legacy/ dist/*

# 上传到正式 PyPI
uv twine upload dist/*
```

或者直接使用 twine：

```bash
twine upload dist/*
```

## 使用 uvx 运行

发布到 PyPI 后，可以使用 `uvx` 直接运行：

```bash
# 运行最新版本
uvx osim-mcp-server

# 运行特定版本
uvx osim-mcp-server==1.0.0

# 在 MCP 客户端配置中使用
# command: uvx
# args: ["osim-mcp-server"]
```

## 版本更新

更新版本号：

1. 修改 `pyproject.toml` 中的 `version` 字段
2. 重新构建：`uv build`
3. 重新上传：`uv twine upload dist/*`

## 注意事项

- 确保每次发布都更新版本号
- 测试分发包是否包含所有必需文件
- 检查 `schemas/` 目录是否被正确包含
- 验证入口点是否正常工作

