# a207-knowledge-mcp（M12 · 循证知识库）

儿童 CKD 循证知识库检索。**按角色切语料**（医生/营养师全量、家长通俗、患儿科普），检索 KDIGO2024 / PRNT2020 / 中国2023共识 / 2025生长障碍指南与院内 SOP。**所有返回强制带出处**——这是"所有建议标注循证来源"红线的技术保障。全读，无写操作。

## 工具清单

| 工具 | 读/写 | 调用方 | 说明 |
|---|---|---|---|
| `search_guideline` | 读 | 矩阵放行方（按身份切语料） | 指南/共识条文 + 推荐强度 + 证据级别 + 出处 |
| `search_sop` | 读 | 矩阵放行方 | 院内临床 SOP |
| `get_citation` | 读 | 矩阵放行方 | 生成规范引用串 |

## 角色语料视图

调用方身份来自部署注入的环境变量 `A207_CALLER`（模型不可自证身份，缺失即 fail-closed 拒绝）；
身份 → 语料 profile 由 `a207_policy.knowledge_profile` 唯一裁定，工具入参**不含 `role`**。

| A207_CALLER | policy profile | 视图 | 适用 |
|---|---|---|---|
| `doctor_assistant` / `nutritionist` / `risk_warning` | `full` | `full`（专业版） | 医疗专业人员 |
| `parent_assistant` | `plain_language` | `popular`（通俗版） | 家长助手 |
| `child_companion` | `child_safe` | `child`（科普版） | 患儿伙伴 |
| `orchestrator` | —（矩阵为 `-`） | 拒绝访问 | — |

同一 MCP，三套检索视图按部署身份自动切换；家长/患儿绝不暴露专业原文。

## 运行与部署

```bash
cd /workspaces/a207-knowledge-mcp
python -m build
python -m twine upload dist/*   # NFYY 凭据
uvx --refresh a207-knowledge-mcp
```

## 测试

```bash
python tests/test_tools.py   # 21 断言全过（含 P0-1 身份闸门回归）
```

## 工程纪律

- core 纯函数 / server 薄装配 / **零跨包 import**（仅内置 `data/guidelines.json` + `data/sops.json`）。
- 每条知识强制 `source` 字段；`get_citation` 输出规范引用串，供循证校验 Skill 复用。
