"""M12 MCP 服务：循证知识库。

薄装配层。全读，无写操作。所有返回强制带 source 出处。
"""
from __future__ import annotations

from fastmcp import FastMCP

from .core import get_citation, search_guideline, search_sop
from .models import CitationRequest, GuidelineRequest, SopRequest

mcp = FastMCP("a207-knowledge-mcp")


@mcp.tool()
def search_guideline_tool(query: str, guideline_set: str | None = None) -> dict:
    """按角色切语料检索指南/共识条文（KDIGO2024/PRNT2020/中国2023/2025生长障碍）。

    语料视图由部署注入的调用方身份决定（医生助手/营养师/风险预警=全量专业；
    家长助手=通俗；患儿伙伴=儿童科普），调用方不可自选（P0-1）。
    每条约文均带推荐强度+证据级别+出处（循证红线技术保障）。
    """
    req = GuidelineRequest(query=query, guideline_set=guideline_set)
    return search_guideline(req.query, req.guideline_set)


@mcp.tool()
def search_sop_tool(query: str) -> dict:
    """检索院内临床 SOP（含适用场景、处置步骤、出处）。"""
    req = SopRequest(query=query)
    return search_sop(req.query)


@mcp.tool()
def get_citation_tool(ref_id: str) -> dict:
    """生成规范引用串（支持指南条目 id 与 SOP id）。"""
    req = CitationRequest(ref_id=ref_id)
    return get_citation(req.ref_id)


if __name__ == "__main__":
    mcp.run()
