# 发布到 PyPI：像原版一样用 uvx 直接启动

发布后即可在 Windsurf 里用下面配置，**无需在本地下载源码**：

```json
{
  "mcpServers": {
    "mcp-user-confirm": {
      "command": "uvx",
      "args": ["mcp-user-confirm@latest"],
      "timeout": 600,
      "env": {
        "MCP_LANGUAGE": "zh-CN",
        "MCP_DEBUG": "false",
        "MCP_WEB_HOST": "127.0.0.1",
        "MCP_WEB_PORT": "8765"
      },
      "autoApprove": ["dev_checkpoint", "get_env_info"]
    }
  }
}
```

---

## 一、发布前检查

1. **PyPI 账号**  
   - 打开 https://pypi.org/ 注册账号。  
   - 在账号设置里创建 **API Token**（Scope 选整个账号或只选这个项目），用于上传。

2. **包名是否可用**  
   - 在 https://pypi.org/project/mcp-user-confirm/ 看是否已被占用。  
   - 若被占用，在 `pyproject.toml` 里把 `name = "mcp-user-confirm"` 改成未占用的名字（如 `your-username-mcp-user-confirm`），下文配置里的 `args` 同步改成 `["你的包名@latest"]`。

3. **本地能正常安装、运行**  
   在项目根目录执行：
   ```bash
   cd /Volumes/13759427003/AI/mcp-user-confirm
   uv build
   uv run python -m mcp_user_confirm version
   ```
   确认无报错、版本号正确。

---

## 二、构建

在项目根目录执行：

```bash
cd /Volumes/13759427003/AI/mcp-user-confirm
uv build
```

会在 `dist/` 下生成 `mcp-user-confirm-2.0.0.tar.gz` 和 `mcp_user_confirm-2.0.0-*.whl`（版本号以你 `pyproject.toml` 里为准）。

---

## 三、上传到 PyPI

### 方式 A：用 uv（推荐）

先配置 Token（只需一次）：

```bash
export UV_PUBLISH_TOKEN=pypi-你的API-Token
```

然后发布：

```bash
uv publish
```

若希望用配置文件而不是环境变量，可把 token 写在 `~/.pypirc`（见下方「方式 B」），再执行 `uv publish`。

### 方式 B：用 twine

```bash
pip install twine
twine upload dist/*
```

按提示输入用户名和密码时：
- Username: `__token__`
- Password: 你的 PyPI API Token

---

## 四、发布后验证

在**任意目录**（不要进项目源码）执行：

```bash
uvx mcp-user-confirm@latest version
```

若能看到版本号，说明已可从 PyPI 安装并运行。然后在 Windsurf 的 `mcp_config.json` 里加上面「一」里的配置，重启 Windsurf 即可像原版那样用 `uvx` 启动，无需本地源码。

---

## 五、以后更新版本

1. 在 `pyproject.toml` 里改 `version = "2.0.1"`（或按语义化版本递增）。  
2. 重新执行：
   ```bash
   uv build
   uv publish
   ```
3. 用户端无需改配置，继续用 `mcp-user-confirm@latest` 就会拉到新版本。

---

## 六、可选：从 Git 安装（不发布 PyPI）

若暂时不想发到 PyPI，也可以让用户通过 Git 用 uvx 安装（仍会从网络拉代码，但不需要 PyPI）：

```json
{
  "mcpServers": {
    "mcp-user-confirm": {
      "command": "uvx",
      "args": ["mcp-user-confirm@git+https://github.com/你的用户名/mcp-user-confirm.git"],
      "timeout": 600,
      "autoApprove": ["dev_checkpoint", "get_env_info"]
    }
  }
}
```

前提是仓库是公开的，且 `pyproject.toml` 里 `name` 与这里一致。发布到 PyPI 后，推荐改用 `mcp-user-confirm@latest`，更稳定、更快。
