没有我的命令不可以修改代码！！！

docs\spectest_plan.md、README.md阅读这两个，了解我现在的背景，然后我现在开始学着写mcp代码，但是看了anthropic官方的文档，只会写到了server.py中的内容，后续不知道怎么写了

generate_test_cases 这个工具按 README 的设计是"不调用 LLM，只组装数据"，但实际上如果你想让它直接生成测试用例文本，需要知道你接入哪个 API。

先按 README 的设计走（工具只提供数据，推理交给 Kiro）
如果是后续改成调用LLM，改动大吗？

我是虚拟环境，我是在kiro idea中打开？还是pycharm中打开安装包

这个case能优化成xmind格式吗？
标题、前置条件、操作步骤、预期结果

我说了没有我的命令不许先修改代码！！！必须等我命令,不可在原文件上修改代码，必须新建一个带有后缀的py文件，在此上修改！！,为啥我之前在skills下写了要求但是你没遵守，但是我在这个文件写了你就可以遵守

ok现在是可以的。生成的xmind内容符合要求，优化一下，把 测试用例标题、前置条件、步骤、预计结果放在一行的4个节点那样，不要现在的这种用例标题后3个节点分开的
测试用例
  └── 功能测试
        └── TC001 用例标题 ──► 前置条件：xxx ──► 操作步骤：xxx ──► 预期结果：xxx
        └── TC002 用例标题 ──► 前置条件：xxx ──► 操作步骤：xxx ──► 预期结果：xxx

ok基于现在的代码、prd文档、html原型、测试用例，我有问题要问
如“TC013 关联改进单-正常关联”这条case，你怎么判断出来的。哪里说了要关联改进单

你为啥不用mcpserver读取prd，我已经reload过了

感觉现在写的mcp效果不错，但是现在是用的我本地python创建的虚拟环境，如果我要打包成一个通用的，其他人可以安装的工具，怎么处理



---
**打包成其他人可以安装的 MCP 工具，有两种方向：**
---

## 方向一：发布到 PyPI（pip 安装）

别人可以直接 `pip install spectest-mcp` 来安装使用。

**需要做的事：**

1. **整理项目结构**，加上 `pyproject.toml`（现代打包标准）
2. **注册 PyPI 账号**，用 `twine` 上传
3. 别人安装后，在自己的 `mcp.json` 里配置：

```json
{
  "mcpServers": {
    "spectest": {
      "command": "python",
      "args": ["-m", "spectest_mcp"]
    }
  }
}
```

---

## 方向二：用 `uvx` 分发（更推荐，零安装体验）

这是目前 MCP 生态最主流的分发方式，Kiro 官方文档里的示例 MCP Server 都是这种。

别人只需要在 `mcp.json` 里写：

```json
{
  "mcpServers": {
    "spectest": {
      "command": "uvx",
      "args": ["spectest-mcp@latest"]
    }
  }
}
```

`uvx` 会自动从 PyPI 下载并运行，**不需要手动 pip install，不需要虚拟环境**，完全隔离。

---

## 两种方向的对比

| | PyPI + pip | uvx（推荐） |
|---|---|---|
| 安装方式 | `pip install spectest-mcp` | 无需安装，`uvx` 自动处理 |
| 虚拟环境 | 用户自己管理 | 自动隔离 |
| 更新 | 手动 `pip install --upgrade` | `@latest` 自动拉最新 |
| 配置复杂度 | 中 | 低 |
| 依赖 | 无额外工具 | 需要安装 `uv` |

---

## 核心工作量

不管哪种方向，主要工作是一样的：

1. **整理 `pyproject.toml`**（声明包名、版本、依赖、入口点）
2. **把 `docs/devploy/` 下的代码整理成正式的包结构**
3. **发布到 PyPI**

---

 `pyproject.toml` 怎么写？

 先看一下现在的项目结构，再讲怎么写：

好，现在讲 `pyproject.toml` 怎么写。

---

## 先理解它的作用

`pyproject.toml` 是 Python 现代打包的标准配置文件，替代了以前的 `setup.py`。它告诉 pip/uv：
- 这个包叫什么名字
- 版本是多少
- 依赖哪些库
- 入口点在哪（别人安装后怎么运行）

---

## 你的包需要什么

根据你的项目，需要声明这些依赖：

| 依赖 | 用途 |
|------|------|
| `mcp` | MCP SDK |
| `beautifulsoup4` | HTML 解析 |
| `python-docx` | 读取 docx |
| `pymupdf` | 读取 PDF（可选） |
| `openpyxl` | 导出 Excel（可选） |

---

## `pyproject.toml` 的结构

分三个部分：

**1. `[build-system]`** — 告诉 pip 用什么工具来构建这个包

```toml
[build-system]
requires = ["hatchling"]   # 构建工具，uv/pip 都支持
build-backend = "hatchling.build"
```

**2. `[project]`** — 包的基本信息和依赖

```toml
[project]
name = "spectest-mcp"          # pip install 时用的名字
version = "0.1.0"
description = "基于 HTML 原型和 PRD 文档生成测试用例的 MCP Server"
requires-python = ">=3.10"

dependencies = [
    "mcp>=1.0.0",
    "beautifulsoup4>=4.12.0",
    "python-docx>=1.1.0",
    "openpyxl>=3.1.0",
]
```

**3. `[project.scripts]`** — 入口点，安装后可以直接运行的命令

```toml
[project.scripts]
spectest-mcp = "spectest_mcp.server:main"
# 意思是：运行 spectest-mcp 命令时，调用 spectest_mcp 包里 server.py 的 main() 函数
```

---

## 对应的包结构调整

打包前需要把 `docs/devploy/` 下的代码整理成标准包结构：

```
spectest-mcp/               ← 项目根目录
├── pyproject.toml
├── README.md
└── src/
    └── spectest_mcp/       ← 包名（import 时用这个）
        ├── __init__.py
        ├── server.py       ← 加一个 main() 函数
        ├── tools/
        │   ├── __init__.py
        │   ├── html_parser.py
        │   ├── prd_reader.py
        │   ├── testcase_generator.py
        │   └── exporter_v2.py
        └── prompts/
            ├── __init__.py
            └── testcase_prompt.py
```

`server.py` 里需要加一个 `main()` 函数作为入口：

```python
def main():
    mcp.run()

if __name__ == "__main__":
    main()
```

---

## 完整的 `pyproject.toml`

```toml
[build-system]
requires = ["hatchling"]
build-backend = "hatchling.build"

[project]
name = "spectest-mcp"
version = "0.1.0"
description = "基于 HTML 原型和 PRD 文档生成测试用例的 MCP Server"
readme = "README.md"
requires-python = ">=3.10"
dependencies = [
    "mcp>=1.0.0",
    "beautifulsoup4>=4.12.0",
    "python-docx>=1.1.0",
    "openpyxl>=3.1.0",
]

[project.scripts]
spectest-mcp = "spectest_mcp.server:main"

[tool.hatch.build.targets.wheel]
packages = ["src/spectest_mcp"]
```

---

## 别人安装后怎么用

安装：
```bash
pip install spectest-mcp
# 或者
uvx spectest-mcp@latest
```

`mcp.json` 配置：
```json
{
  "mcpServers": {
    "spectest": {
      "command": "uvx",
      "args": ["spectest-mcp@latest"]
    }
  }
}
```

---

**你现在想做什么？**

- 如果想先把代码整理成标准包结构，我可以帮你规划怎么迁移
- 如果想直接写 `pyproject.toml` 放到现有项目里，也可以

等你的指令。


ok现在我回看了下工程文件，发现testcase_prompt中有_format_html_structure这个方法，这个和parse_html中的方法有啥区别，为什么要这样设计
数据与展示分离原则：
HTML 文件
  ↓ parse_html（解析层）解析成结构化的 Python 字典
结构化字典（机器可读）
  ↓ _format_html_structure（展示层） 格式化成人类可读的文本，塞进 Prompt
可读文本（LLM 可读）
  ↓ LLM 推理
测试用例

ok我还有个问题啊，就是我看这种通过mcpserver方式，我可以把一个很大的html原型和prd docx发送给你进行处理，
看起来是不需要考虑文本长度的，而且我看spectest_mcp.prompts.testcase_prompt.build_prompt这里构建prompt中带有变量，是不用考虑文本长度吗？
因为我之前在一个平台搭建agent单独调用大模型节点的时候，会额外注意输入给大模型的文本长度，所以我想搞清楚，你这里是有控制吗？还是说不用控制，底层原理

那么现在支持多个html和1个prd文档吗

问题
1. MCP 工具本身不调用 LLM，它只是返回数据给 Kiro，那是不是在写这种不内部调用LLM的MCP就不用关注是否会炸LLM？
2. 那现在的多个html是可以自动识别还是说咋样啊？调用工具是你自己识别呀，不是我命令呀

按照更加灵活的使用mcp工具来说，我认为需要兼容文件分散在不同地方，不需要限制文件的location，你觉得呢

ok我想知道我现在写的mcp是属于skill的一种吗？还是啥和普通skill的区别是啥，往高级方向发展的话有啥方向呢？开放性讨论

我感觉工具能力、独立部署、还是Agent化都可以走，工具能力是对模型的增强，独立部署类似于数据可控，Agent的最终目标，测试流程完整闭环 
想搞subAgent架构的，可以抽象理解为主Agent对子Agent运行进行管理调度，如“心跳检测”、“记忆memory”等方向

而且还有个问题是，我的mcp现在是可以让你解析HTML文件，但是你本身就有这个能力，而且还能检索联网资料，所以有时候我又感觉我的这个工具对你的能力没有增强？还是说你本身内部已经实现或内嵌各种mcpservers

本地文件访问能力（我没有）你怎么没有，我看有时候你是可以看到本地文件的，那之前你是如何看的
确定性的结构化解析（比我的文本理解更可靠）√
Token 压缩（把大文件变成精简的结构化数据）√
可复用的工具链（任何人安装后都能用，不依赖我的临时理解）√