A clinical decision support system using multi-agent architecture with Google Gemini for diabetes risk prediction and guideline-based clinical auditing
Both tools have basic schemas and descriptions, but critical gaps prevent production use. predict_diabetes has 8 required parameters with types but lacks parameter-level descriptions (only tool-level description exists). search_guidelines has minimal schema (single STRING param, no description). Neither tool documents output schemas, error handling, or recovery guidance. Tool names lack action verbs (predict_* is weak; search_* is acceptable). No evidence of idempotency, permission gates, or audit logging. The codebase shows mock implementations and Streamlit UI scaffolding, not a real MCP server with proper tool registration.
Calculates diabetes risk using 8 clinical features (Age, BMI, Glucose, etc.).
Retrieves medical diagnostic thresholds from the clinical knowledge base.
No parameter-level descriptions. predict_diabetes has 8 parameters (pregnancies, glucose, bp, skin, insulin, bmi, dpf, age) with types but zero descriptions. LLMs cannot infer what 'dpf' means or valid ranges. search_guidelines 'query' param has no description.
No output schemas documented. Both tools lack return type definitions. Agents cannot plan downstream calls or extract required fields (e.g., does predict_diabetes return confidence, risk_level, recommendations?).
No error handling or recovery guidance. Code shows basic 'Tool not found' error but no guidance for invalid inputs (e.g., glucose=999, age=-5), missing parameters, or API failures. LLMs receive no actionable next steps.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 35 | 2026-07-28+ | v2 |
Transport unknown. mcp_server.py defines a custom ClinicalMCPServer class but no evidence of HTTP, SSE, or STDIO transport implementation. No MCP protocol handshake, message routing, or spec compliance visible.
No input validation or constraint documentation. predict_diabetes accepts NUMBER for all params but lacks min/max bounds, format specs, or validation logic. E.g., age should be 0-120, glucose 40-400. Invalid inputs silently fail or produce nonsense predictions.