ckd-parent-guide-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@ckd-parent-guide-mcpCan my stage 3 CKD kid eat oranges?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
NFYY038 童肾家长助手 · 科普与日常咨询 MCP Server
面向儿童慢性肾脏病(CKD)患儿家长的确定性咨询服务。把专业医学语言翻译成家长听得懂的话, 回答家长最高频的日常问题:
「XX 能不能吃」 —— 先按红黄牌规则拦截,再结合患儿 CKD 分期 / 年龄 / 体重 / 化验结果,算清楚这一顿最多能吃多少克;
「化验单怎么解读」 —— 把血肌酐、白蛋白、血钾、血磷、尿蛋白等指标逐条翻译成大白话;
「XX 没有了,用什么替」 —— 按蛋白质 / 能量等价自动换算,并评估替换后钾磷钠会不会对孩子更不利;
科普答疑 —— 医学术语翻译、医嘱整段翻译、家长高频问题库、厨房去钾去磷控钠实操。
团队:南方医科大学南方医院 NFYY038(2026 儿童肾病智能体比赛)
核心设计原则:确定性
所有阈值判断、营养素计算、等价换算全部在 Python 代码层完成,不依赖大模型现场心算:
同样的输入 → 永远得到同样的输出(已用
tests/test_engine.py验证);临床阈值(eGFR 分期、贫血 Hb、血钾上限、限钾限磷起始值等)硬编码并标注权威来源;
遇到权威指南有分歧处(如血磷参考区间、白蛋白 25 vs 30 g/L),同时列出并提示以本院参考值为准。
Related MCP server: ckd-meal-plan-mcp
技术栈与运行方式
Python 3.10+ + FastMCP >= 2.0.0
stdio 传输,靠
pyproject.toml的 console-script 入口支持uvx拉起
方式一:uvx(推荐,免安装)
uvx nfyy-ckd-parent-guide-mcp方式二:本地源码运行
pip install -e .
python -m nfyy_ckd_parent_guide # 等同 console-script:nfyy-ckd-parent-guide-mcp接入智能体(MCP 客户端配置示例)
{
"mcpServers": {
"nfyy-ckd-parent-guide": {
"command": "uvx",
"args": ["nfyy-ckd-parent-guide-mcp"]
}
}
}若用本地源码,可替换为:
{
"mcpServers": {
"nfyy-ckd-parent-guide": {
"command": "python",
"args": ["-m", "nfyy_ckd_parent_guide"]
}
}
}提供的工具(12 个)
工具 | 用途 | 关键行为 |
| 「XX 能不能吃」 | 红黄牌拦截 → 缺分期主动追问并列出各分期标准 → 算每顿上限(绿/黄/红灯) |
| 「XX 没有了用什么替」 | 蛋白/能量等价换算 + 钾磷钠增量惩罚打分,过滤红黄牌 |
| 「化验单怎么看」 | 逐指标翻译,标 red_flags 与 next_actions |
| 术语翻译 | 从一段话里识别术语并逐个翻译成大白话 |
| 医嘱整段翻译 | 翻译诊断/医嘱 + 生成「复诊该问医生什么」清单 |
| 高频问题检索 | 低盐、激素、疫苗、复查等 16 个主题 |
| 问题库总览 | 列出全部主题便于引导提问 |
| 厨房实操 | 去钾 / 去磷 / 控钠 / 补热量 |
| CKD 分期每日营养标准 | 能量/蛋白/钠/钾/磷/钙/液体目标 |
| 食物检索 | 《中国食物成分表》模糊检索,确认条目 |
| 分期饮食要点 | 7 个分期的钾/磷/蛋白/钠管理原则 |
| eGFR 计算 | bedside Schwartz 公式 + KDIGO 分期(<2 岁不套 G1–G5) |
权威依据(数据来源)
食物成分:《中国食物成分表》(用户提供的
中国食物成分表.xlsx,1752 条 × 35 营养素),已转换为data/food_data.csv;能量 / 蛋白目标:PRNT 2020 共识(SDI 表,按实际年龄);
钙磷 / 钾 / 钠:PRNT 2020 钙磷共识、PRNT 2021 钾共识、PRNT 钠共识;
CKD 分期 / 蛋白尿分级:KDIGO 2012 / 2024、中华医学会儿科学分会肾脏学组 2017 肾病综合征指南;
eGFR 公式:bedside Schwartz(JASN 2009)、CKiD U25(1–25 岁连续);
贫血 / 代酸 / 检验参考区间:KDIGO 2012、KDOQI 2008、IOM 年龄参考。
所有引用点在代码 docstring 与返回结果的 依据 / source 字段中标注。
红黄牌规则(不依赖成分表)
绝对红灯(不分分期禁用):杨桃、低钠盐 / 代盐(含氯化钾)、米浆、含马兜铃酸药材;
用药红黄牌:NSAIDs 类(退烧止痛)红灯、肾毒性药物与造影剂黄牌;
黄牌(限量/注意):可乐等深色汽水、加工肉、腌菜、老火汤、果干、坚果等;
磷酸盐添加剂:包装上的「磷酸盐 / 焦磷酸钠 / 三聚磷酸钠 / 六偏磷酸钠 / 膨松剂」一律视为无机磷,吸收率 80–90%,必须避免。
目录结构
nfyy038-ckd-parent-guide-mcp/
├── pyproject.toml # uvx 入口与依赖
├── README.md
├── LICENSE
├── src/nfyy_ckd_parent_guide/
│ ├── server.py # MCP 工具注册 + run() 入口
│ ├── verdict.py # 「XX 能不能吃」引擎
│ ├── substitute.py # 等价替换引擎
│ ├── labs.py # 化验单解读引擎
│ ├── stages.py # CKD 分期 / 每日营养标准
│ ├── foods.py # 食物成分数据层
│ ├── education.py # 科普层(术语/医嘱/FAQ/厨房)
│ └── data/
│ ├── food_data.csv # 中国食物成分表(1752 条)
│ ├── food_alias.json # 家长口语 → 标准条目
│ ├── food_flags.json # 红黄牌清单
│ ├── portion_reference.json # 儿童单次食用量
│ ├── glossary.json # 童肾高频术语词典
│ └── faq.json # 家长高频问题库
├── tests/test_engine.py # 确定性引擎冒烟测试
├── scripts/_smoke_stdio.py # 真实 stdio(JSON-RPC) 冒烟测试
└── docs/测试
python tests/test_engine.py # 确定性引擎测试(8 项全过)
python scripts/_smoke_stdio.py # 真实 stdio 传输冒烟测试免责声明
本服务仅用于家长科普与日常咨询辅助,所有结论须以主管医生、营养师的个体化处方为准。 涉及用药、急诊、透析通路等问题,请直接联系医疗团队,本工具不提供医疗决策。
Available Tools
12 toolscan_eatA
家长问「XX 能不能吃」时调用。
先按红黄牌规则拦截(杨桃、低钠盐、NSAIDs 等不分分期禁止); 若家长没说 CKD 分期/年龄/体重,会返回 need_more_info 并主动列出各分期每日营养标准对照, 提醒你去追问;若信息齐全,则按该患儿当日钾/磷/钠/蛋白预算反算「这一顿最多吃多少克」, 给出绿灯/黄灯/红灯结论与家常量具换算;家长若给出想吃的克数(amount_g),会据此给出限量提示。
| Name | Required | Description | Default |
|---|---|---|---|
| sex | No | "male" 或 "female"。 | male |
| amount_g | No | 家长想给的克数;不填则按一次正常份量估算并给出上限。 | |
| dialysis | No | 透析方式,"none"/"PD"/"HD"。 | none |
| age_years | No | 患儿年龄(岁),缺省会追问。 | |
| ckd_stage | No | CKD 分期,可写 "1/2/3a/3b/4/5/5d"、"G3a"、"透析" 等,缺省会追问。 | |
| meal_type | No | 这一顿类型,"正餐"/"加餐"/"零食"/"饮料"/"全天"。 | 正餐 |
| weight_kg | No | 患儿体重(kg),缺省会追问。 | |
| food_query | Yes | 食物名称,如「香蕉」「土豆」「对虾」。 | |
| on_steroids | No | 是否在用激素(影响能量需求)。 | |
| diet_pattern | No | 饮食模式,"mixed"/"vegetarian"/"vegan"。 | mixed |
| serum_phosphate | No | 最近一次血磷(mmol/L),用于判断是否限磷。 | |
| serum_potassium | No | 最近一次血钾(mmol/L),用于判断是否限钾。 | |
| hypertension_or_edema | No | 有无高血压或水肿(影响限钠严格度)。 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden of behavioral disclosure. It thoroughly explains the tool's behavior: red/yellow card interception, returning need_more_info for incomplete input, reverse-calculating portion limits from daily budgets, providing green/yellow/red light conclusions, and applying amount_g restrictions. This goes beyond a basic summary and gives the agent a clear mental model of the tool's process.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every clause earns its place. It front-loads the trigger condition, then logically proceeds through interception, missing-info handling, complete-information calculation, and amount_g-specific guidance. No filler words, and the structure mirrors the tool's execution flow.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with 13 parameters, an output schema, and complex decision rules, the description gives a complete overview: it covers the rule-based interception, the need_more_info branch, the calculation methodology (potassium/phosphorus/sodium/protein budgets), the output conclusion format (traffic light), and the handling of optional amount_g. This is enough for an agent to invoke the tool correctly even in edge cases.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Although schema coverage is 100%, the description adds significant meaning beyond the field descriptions. It explains that ckd_stage, age_years, and weight_kg are triggers for need_more_info if missing, and that amount_g is used to provide a limit reminder. This connects the parameters to the tool's decision logic, which the schema alone does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific trigger condition ('家长问「XX 能不能吃」时调用') and clearly states the tool's function: to evaluate whether a food is safe for a CKD patient, using red/yellow card rules, nutritional budgets, and portion calculations. This distinguishes it from sibling tools like find_substitutes or cooking_tips, which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to call (when a parent asks if a food can be eaten) and provides context for handling missing information (asking for CKD stage/age/weight). However, it does not explicitly mention when not to use the tool or name alternative sibling tools, so it lacks the full when/when-not/alternatives guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
ckd_stage_overviewA
列出所有 CKD 分期的饮食管理要点与钾/磷/蛋白/钠管理原则(家长版)。
当家长没说分期、需要让他了解「不同分期差别很大」时调用。
Returns: 每条含 stage、focus、potassium、phosphorus、protein、sodium。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses the intended audience (parent version), the trigger scenario, and the return structure (each entry contains stage, focus, potassium, phosphorus, protein, sodium). This gives sufficient context for a safe read-only list operation, though it does not explicitly state that it is a static overview.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is short and front-loaded. The first sentence states the main purpose, the second provides usage guidance, and the final line lists the output fields. Every word earns its place without fluff or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity and existing output schema, the description is complete enough. It explains what it does, when to use it, and what is returned. However, it does not explicitly differentiate itself from sibling tools like daily_standards, which might also provide dietary recommendations, leaving some potential ambiguity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so the baseline is 4. The description does not need to explain input semantics and instead focuses on what the output will be, which is appropriate for a parameterless lookup tool.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: listing all CKD stages' dietary management principles (potassium/phosphorus/protein/sodium) for parents. The verb 'list' and specific resource 'all CKD stages' make it unambiguous, and the audience (parent version) distinguishes it from potentially similar clinical tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly states when to call: when the parent has not specified the stage and needs to understand that different stages are very different. This provides a clear trigger and implies when not to use it (when the stage is already known), but it does not explicitly name alternatives among siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
cooking_tipsB
厨房实操技巧:去钾、去磷、控钠、补热量。
| Name | Required | Description | Default |
|---|---|---|---|
| goal | No | "去钾"/"去磷"/"控钠"/"补热量"/"all"(默认全部)。 | all |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It transparently lists the covered dietary goals, but does not disclose whether tips are generic/personalized, whether they include warnings, or whether the tool returns a static list. The content scope is clear, but behavioral details are minimal.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact, front-loaded sentence that immediately conveys the tool's purpose and scope with zero filler. It earns its place entirely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (one optional parameter, high schema coverage, and an output schema), the description is sufficient to inform basic usage. It could be slightly richer by mentioning the 'all' default or return style, but it is not incomplete for practical invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for the single `goal` parameter, so the schema already provides the parameter's meaning. The description repeats the goal categories but adds no extra semantic detail (e.g., format, defaults, or examples), fitting the baseline for high coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's scope: practical kitchen techniques for removing potassium/phosphorus, controlling sodium, and supplementing calories. It distinguishes this from sibling tools by focusing on cooking methods rather than food eligibility, substitution, or lab interpretation, though it lacks an explicit verb.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description offers no explicit guidance on when to use this tool versus alternatives. There are no references to sibling tools or any 'when-to-use/not-use' statements, leaving the agent to infer usage from the name and context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
daily_standardsA
给出该患儿每日各项营养摄入标准(能量/蛋白/钠/钾/磷/钙/液体)。
当家长问「XX 能不能吃」但没给分期时,可先调用此工具列出各分期标准让其对照; 也可在确认分期后给出个体化目标。
| Name | Required | Description | Default |
|---|---|---|---|
| sex | No | "male"/"female"。 | male |
| dialysis | No | "none"/"PD"/"HD"。 | none |
| age_years | Yes | 患儿年龄(岁,必填)。 | |
| ckd_stage | No | CKD 分期,缺省仍按年龄给通用 SDI 参考。 | |
| height_cm | No | 身高(cm),用于体表面积与限水估算。 | |
| weight_kg | Yes | 患儿体重(kg,必填)。 | |
| on_steroids | No | 是否用激素。 | |
| diet_pattern | No | "mixed"/"vegetarian"/"vegan"。 | mixed |
| serum_phosphate | No | 最近一次血磷(mmol/L)。 | |
| serum_potassium | No | 最近一次血钾(mmol/L)。 | |
| urine_output_ml | No | 24h 尿量(ml),用于限水判断。 | |
| hypertension_or_edema | No | 有无高血压/水肿。 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
There are no annotations, so the description carries the transparency burden. It discloses two behavioral modes: listing stage-wise standards and producing individualized goals. It doesn't explain calculation details or side effects, but for an informational/reference tool, this is adequate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences, front-loaded with the main function in the first sentence and usage guidance in the second. It is concise with no redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (12 params, many optional) and the existence of an output schema, the description covers the primary use cases and output scope well. It doesn't address edge cases or interactions with other tools, but the essential context for when to use it is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% (every parameter has a description), so the baseline is 3. The tool description adds no parameter-level meaning beyond mentioning that the tool handles nutrients and stages, but it doesn't elaborate on any specific parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool provides daily nutritional intake standards for energy, protein, sodium, potassium, phosphorus, calcium, and fluid for the child. It uses a specific verb ('给出' / provide) and a defined resource, and it distinguishes itself from sibling tools like can_eat by explaining when it should be used (e.g., when stage is unknown).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly gives two usage scenarios: when a parent asks 'can XX eat' without a CKD stage, call this tool to list standards for each stage for comparison; after confirming stage, use it to give individualized goals. It does not mention alternative tools by name, but the contextual triggers are clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
egfr_calculatorA
用 bedside Schwartz 公式算 eGFR 并判 CKD 分期(<2 岁不套 G1–G5)。
| Name | Required | Description | Default |
|---|---|---|---|
| age_years | No | 年龄(岁),用于 <2 岁特殊判断。 | |
| height_cm | Yes | 身高(cm,必填)。 | |
| creatinine_mg_dl | No | 血肌酐(mg/dL),与上面二选一。 | |
| creatinine_umol_l | No | 血肌酐(μmol/L)。 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden. It discloses the formula used (bedside Schwartz) and the special rule for children under 2 (not applying G1–G5), which are valuable behavioral traits. However, it does not mention error handling, unit handling (e.g., both creatinine units provided), or prerequisites beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence that is front-loaded with the core purpose and immediately states the key exception. No wasted words or redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
An output schema exists, so return values are covered separately. The description adequately conveys the calculation method and an important clinical caveat. However, it lacks guidance on when to use this tool versus related tools, making it slightly less complete for an agent deciding among siblings.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description does not add parameter-specific meaning beyond the schema; it only mentions the formula and age rule. The schema already documents each parameter with units and required status, so the description adds marginal value here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action: calculate eGFR using the bedside Schwartz formula and determine CKD stage, with an explicit exception for children under 2 years. This distinguishes it from siblings like ckd_stage_overview, which likely provides general staging context rather than calculation.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage context is implied by the function name and description, but there is no explicit guidance on when to use this tool versus alternatives like interpret_lab_report. No exclusions or alternative recommendations are provided, leaving the agent to infer suitability.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
explain_termsA
把一段医学文字(医嘱、诊断、检查报告)里的专业术语逐个翻译成大白话。
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | 要解释的原文(医嘱、病历、化验单文字均可)。 | |
| limit | No | 最多解释几个术语。 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the basic transformation (translating terms to plain language), but does not disclose any limitations, edge cases, or output specifics. Since this is a simple, non-mutating text tool, the lack of extra context is not severe, but it is still only minimally sufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, compact sentence that leads with the action ('把…翻译成大白话'), with no redundant words. It is appropriately concise and structurally clear.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple with two parameters and an output schema, and the description adequately captures its core purpose. However, it lacks explicit usage guidance and sibling differentiation, which prevents a higher score given the existence of related tools like 'translate_doctor_note'.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% for both parameters, so the baseline is 3. The description adds small context by specifying text types ('医嘱、诊断、检查报告') and implying '逐个' (one-by-one) behavior, but this does not significantly go beyond what the schema already states.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('翻译' / translate) and resource ('医学文字里的专业术语' / professional terms in medical text), clearly stating that terms are explained one by one in plain language. This makes the function clear, but it does not explicitly distinguish itself from sibling tool 'translate_doctor_note', though the term-level focus implicitly differentiates.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies use when a user wants plain-language explanations of medical terms, but it offers no explicit when-to-use/when-not-to-use guidance nor mentions alternatives among sibling tools. This is implied usage rather than clear context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
find_substitutesA
家长问「家里没有 XX 了,用什么替换」时调用。
先按蛋白质或能量等价换算出替代食物的克数,再逐项核对替换后钾/磷/钠增量对这个 分期的孩子是否更不利,最后按安全分排序。全部为确定性计算,且会自动过滤红黄牌食物。
| Name | Required | Description | Default |
|---|---|---|---|
| sex | No | "male"/"female"。 | male |
| basis | No | 等价基准,"auto"(蛋白≥3g按蛋白等价,否则按能量)/"protein"/"energy"/"weight"。 | auto |
| limit | No | 返回候选数量上限。 | |
| scope | No | 候选范围,"same_sub"(同小类)/"same_group"(同大类)/"all"(全表)。 | same_group |
| amount_g | No | 原来打算吃的克数,不填按儿童一次正常份量。 | |
| dialysis | No | "none"/"PD"/"HD"。 | none |
| original | Yes | 想替换掉的食物名,如「对虾」「鸡蛋」。 | |
| age_years | No | 患儿年龄(岁)。 | |
| ckd_stage | No | CKD 分期,影响钾磷钠预算与惩罚打分。 | |
| weight_kg | No | 患儿体重(kg)。 | |
| serum_phosphate | No | 最近一次血磷(mmol/L)。 | |
| serum_potassium | No | 最近一次血钾(mmol/L)。 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses that the operation is deterministic, involves calculating equivalent amounts, checking electrolyte increments, and automatically filtering red/yellow card foods. It also explains sorting by safety score, which is valuable behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured, front-loading the trigger condition and using a few sentences to convey the algorithm and key behaviors. There is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 12 parameters and an output schema, the description provides a high-level but sufficient overview of purpose, algorithm, and safety filtering. It doesn't explain every parameter, but schema descriptions cover that. It is complete enough for an agent to understand when and how to invoke it.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% description coverage, so the baseline is 3. The description adds context by explaining how parameters relate, such as basis determining protein vs energy equivalence and ckd_stage affecting penalty scoring. This goes slightly beyond individual parameter descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: to find food substitutes when a parent asks what to replace. It uses a specific trigger phrase and describes the core functionality. This distinguishes it from sibling tools like can_eat or search_food.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to call: when a parent asks about substituting a missing food item. It provides clear contextual guidance but does not explicitly name alternatives to avoid, though the trigger is specific enough to guide usage.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
interpret_lab_reportA
家长问「化验单怎么看」时调用,把检验单逐项翻译成家长听得懂的话。
阈值来自 KDIGO 2012/2024、KDOQI、中华医学会儿肾学组 2017 NS 指南、PRNT 2020/2021 共识; 各家有分歧的会同时列出并提示以本院参考值为准。会标出 red_flags 与 next_actions。
| Name | Required | Description | Default |
|---|---|---|---|
| sex | No | "male"/"female"。 | male |
| age_years | Yes | 患儿年龄(岁,必填)。 | |
| height_cm | No | 身高(cm),配合血肌酐可算 eGFR(Schwartz)。 | |
| pth_pg_ml | No | 甲状旁腺激素(CKD-MBD)。 | |
| uacr_mg_g | No | 尿白蛋白/肌酐比。 | |
| weight_kg | No | 体重(kg)。 | |
| upcr_mg_mg | No | 尿蛋白/肌酐比。 | |
| albumin_g_l | No | 血清白蛋白(g/L),肾病综合征看它。 | |
| urea_mmol_l | No | 血尿素 / BUN。 | |
| calcium_mmol_l | No | 血钙。 | |
| hemoglobin_g_l | No | 血红蛋白(贫血看它)。 | |
| urine_dipstick | No | 尿常规尿蛋白定性,如「+」「3+」「阴性」。 | |
| known_ckd_stage | No | 已知 CKD 分期(若有)。 | |
| vitd_25oh_ng_ml | No | 25-羟维生素 D。 | |
| creatinine_mg_dl | No | 血肌酐(mg/dL),与上面二选一。 | |
| phosphate_mmol_l | No | 血磷。 | |
| potassium_mmol_l | No | 血钾。 | |
| creatinine_umol_l | No | 血肌酐(μmol/L)。 | |
| bicarbonate_mmol_l | No | 血碳酸氢盐(代酸看它)。 | |
| cholesterol_mmol_l | No | 胆固醇。 | |
| urine_protein_24h_mg_kg | No | 24h 尿蛋白/体重。 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden. It discloses key behaviors: item-by-item translation, reliance on specific guidelines (KDIGO, KDOQI, etc.), handling of discrepancies by listing options and deferring to local reference values, and output of red_flags and next_actions. This is substantive, though it could also mention how missing inputs are handled.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three concise sentences. The first sentence immediately captures the trigger and action. The second and third add valuable context about evidence sources, handling of disagreements, and output features without redundancy or filler. Every sentence earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has 21 parameters (all schema-described) and an output schema, so parameter and return details are covered elsewhere. The description fills in the purpose, use case, evidence basis, and behavior (red_flags/next_actions). It could be slightly more explicit about expected input combinations (e.g., which labs are needed), but overall it is complete enough for effective selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema has 100% description coverage, so the baseline is 3. The tool description does not add any parameter-specific meaning beyond the schema; it only explains the overall purpose. The schema already documents each parameter's units and significance, so no deduction is warranted.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific verb ('translate') and resource ('lab report'), with a concrete trigger scenario ('when parents ask how to read it'). It distinguishes itself from sibling tools like translate_doctor_note (which handles notes) and explain_terms (which likely explains individual terms) by focusing on interpreting lab report items into plain language for parents.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says when to use ('when parents ask how to read the lab report'), which is clear context. However, it does not explicitly mention when not to use it or point to alternative tools (e.g., explain_terms for single terms), so it falls short of the highest bar.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_faq_topicsA
列出家长高频问题库的全部主题,便于引导家长提问。
Returns: 每条含 id、category、question。
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It adds a return format (id, category, question), which is useful. However, it does not clarify that the operation is read-only, possible absence of authentication, or any pagination/sorting behavior. For a simple list tool, this is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is one sentence plus a brief returns line. It is front-loaded with the main purpose and contains no redundant information. Every word contributes value, making it concise and well-structured.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's low complexity (no parameters, simple list operation) and the existence of an output schema, the description provides enough context: it states the purpose and the expected shape of the return. It does not need to elaborate further, as the output schema covers the detailed return structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, and the schema is empty. Per the guidelines, the baseline is 4 for 0 params. The description does not need to explain parameters, but it also does not explicitly confirm 'no parameters' to the user, so it does not earn a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: listing all topics of the parents' FAQ bank. The verb '列出' (list) and resource '全部主题' (all topics) are specific, and the purpose '便于引导家长提问' adds context. This distinguishes it from siblings like search_faq, which searches rather than lists.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a clear use case: when you need to guide parents by showing available FAQ topics. It does not explicitly mention alternatives or exclusions, but the purpose provides enough context to know when to use it. Since no sibling is mentioned, it stops short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_faqA
检索家长高频问题库(如低盐饮食、激素副作用、能不能打疫苗、复查注意等)。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 返回几条最匹配答案。 | |
| question | Yes | 家长的问题,如「可以吃盐吗」「激素有什么副作用」。 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It only says 'search' and gives examples, but does not disclose whether it returns full Q&A pairs, how matching works, or that it is a read-only operation. No additional behavioral context is provided beyond the raw action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that efficiently conveys the purpose with relevant examples. There is no redundant or filler content; it is appropriately front-loaded and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The schema fully documents parameters and an output schema exists, so return handling is covered. However, the description lacks usage guidance and behavioral expectations, which leaves some gaps for a search tool with multiple siblings. It is adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, meaning both parameters (question and limit) are already documented in the schema. The tool description adds no extra parameter-level meaning, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses the verb '检索' (search) and specifies the resource '家长高频问题库' (parents' high-frequency question bank), with clarifying examples like low-salt diet and hormone side effects. This clearly differentiates it from sibling tools such as search_food and list_faq_topics.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for looking up common parental questions but does not explicitly state when to use this tool over siblings like list_faq_topics or explain_terms. There are no explicit exclusions or alternative tool names, leaving the when-to-use conditions to be inferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_foodA
在《中国食物成分表》里按名称模糊检索食物,返回打分排序的候选。
用于确认家长说的食物在成分表里叫什么、核对是否查对条目。
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | 返回候选数量。 | |
| keyword | Yes | 食物关键词,如「香蕉」「土豆」「虾」。 |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the burden. It discloses the fuzzy search behavior and score-based sorting, and explains the data source. It does not explicitly state read-only behavior, but for a search tool this is implied; the added purpose gives useful context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences: first the action and output, second the purpose. It is concise, front-loaded, and contains no unnecessary words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with an output schema, the description is complete. It covers the domain, matching behavior, and intended use case. There is no need to explain return values since the output schema exists.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema already documents both parameters (keyword, limit) with 100% coverage. The description adds value by clarifying that the search is fuzzy by food name and scoped to the food composition table, giving more meaning to the keyword parameter beyond the schema's generic 'food keyword'.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool's action (fuzzy search food by name), the specific resource (China Food Composition Table), and the output (candidates sorted by score). It distinguishes itself from sibling tools like find_substitutes or can_eat by focusing on name lookup/verification.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides a clear use case: confirming what a parent's mentioned food is called in the composition table and verifying the correct entry. It does not explicitly mention when not to use the tool or name alternative tools, but the context is sufficient for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
translate_doctor_noteA
把医生写的诊断/医嘱整段翻译,并生成「下次复诊该问医生什么」清单。
| Name | Required | Description | Default |
|---|---|---|---|
| text | Yes | 医生诊断或医嘱原文。 |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the burden of behavioral disclosure. It states the two outputs (translation and question list) but does not disclose limitations such as translation accuracy, scope of generated questions, or any prerequisites for the input. This is adequate but not rich.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence that immediately states the action and output, with no redundant words. It is appropriately front-loaded and concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple one-parameter tool with an output schema present, the description fully captures what the tool does and what to expect. No annotations are needed given the low complexity, and the description is complete for selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema already has a description for the 'text' parameter ('医生诊断或医嘱原文。') that fully covers its meaning. The tool description adds no additional semantic detail beyond that, and schema coverage is 100%, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses specific verbs 'translate' and 'generate' applied to a defined resource (医生写的诊断/医嘱) and names a concrete output (下次复诊该问医生什么清单). It clearly differentiates from sibling tools like explain_terms (individual term explanation) and interpret_lab_report (lab interpretation) by focusing on whole-note translation plus follow-up questions.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly implies when to use it: when a user has a full doctor's note and wants a translation plus a list of questions for the next visit. It provides this context clearly but does not explicitly mention alternatives or exclusions, which would warrant a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
12 tool updates
v1.0.0- First observed
can_eat - First observed
ckd_stage_overview - First observed
cooking_tips - First observed
daily_standards - First observed
egfr_calculator - First observed
explain_terms - First observed
find_substitutes - First observed
interpret_lab_report - First observed
list_faq_topics - First observed
search_faq - First observed
search_food - First observed
translate_doctor_note
TDQS
Scored across 12 tools
Tools are mostly distinct, but interpret_lab_report, explain_terms, and translate_doctor_note all deal with explaining medical information and could be confused. search_faq and list_faq_topics also overlap, though each has a clear role. Overall, the purposes are distinguishable but not always obvious.
All names are snake_case, but the pattern is inconsistent: some are verb-first (can_eat, find_substitutes, interpret_lab_report) while others are noun-phrases (cooking_tips, daily_standards, ckd_stage_overview, egfr_calculator). This mixed convention reduces predictability.
With 12 tools, the server is well-scoped for a parent guide covering food safety, lab interpretation, education, and cooking. The count feels appropriate and each tool earns its place; it is neither too sparse nor overwhelming.
The tool surface covers key parent needs: food safety checks, substitutions, lab report interpretation, FAQ retrieval, cooking tips, daily standards, stage overview, and eGFR calculation. A notable gap is the lack of dedicated medication or supplement guidance, but overall the set is complete for its apparent focus.
Maintenance
Related MCP Connectors
Household-aware cooking brain: pantry, meal suggestions, dietary safety, recipes, shopping lists.
Patient, meal plan, prescription, chart and anthropometry management for dietitians.
Evidence-based plant-based food-as-medicine protocols for 47 chronic conditions. ACLM-aligned.
Food-drug interaction and nutrient depletion checks for 30+ common medications.
Related MCP Servers
- AlicenseAqualityCmaintenanceMock MCP server for pediatric CKD risk warning, enabling patient biochemical trend retrieval, deterministic risk rule evaluation, structured alert triggering, and clinical SOP lookup using simulated data.5MIT
- AlicenseAqualityBmaintenanceThis MCP server generates individualized meal plans for children with chronic kidney disease (CKD) based on KDIGO 2024/PRNT 2020/KRCP 2025 guidelines, incorporating patient age, CKD stage, allergies, dietary culture, and diet diary analysis. It provides deterministic nutrient computations and tools for meal plan generation, food database lookup, and risk analysis.13MIT
- FlicenseAqualityBmaintenanceMCP server for pediatric CKD nutrition and food calculations, enabling energy/protein targets, food nutrient lookup, substitutions, meal summaries, and drug-nutrient interaction checks.8-
- FlicenseAqualityBmaintenanceEnables pediatric CKD nutrition assessment by calculating PRNT energy/protein targets, evaluating dietary intake against those targets, and screening for PEW risk, with support for dialysis, vegetarian diets, and edema corrections.5-