MCP Server for Diabetes:M integration with Claude Desktop - Secure access to diabetes management data
The server demonstrates good foundational quality with all 11 tools explicitly defined in src/types/tools.ts using Zod schemas and a TOOL_DEFINITIONS array. Tool names follow verb_noun patterns (get_*, search_*, etc.) and are action-oriented. Descriptions are present for all tools and most parameters, with lengths in the 100-200 character range for tools, well-aligned with baselines. However, several critical gaps emerge: (1) Output schemas are entirely undocumented, the server defines input schemas but provides no structured output specification for any tool, forcing LLMs to infer return types; (2) Tool descriptions lack actionable context about WHEN to use each tool vs. alternatives (e.g., when to call get_glucose_statistics vs. get_insulin_analysis); (3) Error handling and recovery guidance are absent, no indication of how failures should be handled or what the LLM should do next; (4) Parameter dependencies are mentioned in schemas but not consistently documented in descriptions (e.g., get_logbook_entries has mutual exclusivity constraints in Zod .refine() calls that are not visible in the JSON schema descriptions); (5) Missing parameter descriptions for credential setup tools (setup_credentials, clear_credentials have no parameter details visible). The credentials handling is thoughtfully secure (AES-256-GCM encryption, OS keyring), but the tools themselves lack error classification and recovery patterns.
Check credential status and authentication state.
Remove stored credentials from secure storage.
Generate a comprehensive health report suitable for medical professionals. Includes HbA1c analysis, glucose trends, insulin/carb analysis, and warnings.
Get glucose statistics including distribution (hypo/low/normal/high/hyper), average, min/max values, and estimated HbA1c for a specified period.
Get the configured Insulin-to-Carb (IC) ratios and Insulin Sensitivity Factors (ISF) from your Diabetes:M profile, organized by meal time (breakfast, lunch, dinner, night).
Analyze insulin usage including daily totals (bolus/basal/correction), carbohydrate totals, and insulin-to-carb ratio analysis.
No output schemas documented for any of the 11 tools. LLMs cannot know what fields to expect from tool responses, preventing proper chaining and data extraction. This violates the pattern:tool and pattern:response-shaper expectations.
Credential management tools (setup_credentials, clear_credentials) lack parameter documentation. The JSON schema properties are empty or missing in src/server.ts. LLMs cannot determine what inputs are required or what formats are expected.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 59 | 2026-07-28+ | v2 |
| 2026-03-09 | D | 55 | - | v1 |
Calculate the current Insulin on Board (IOB) - the amount of active insulin still working in the body. Uses recent insulin doses from the logbook and calculates decay based on Duration of Insulin Action (DIA).
Retrieve logbook entries from Diabetes:M including glucose readings, insulin doses, carbs, and notes. You can specify either a predefined date range OR a specific date OR a custom date range with startDate and endDate. Returns data grouped by day with summaries optimized for analysis.
Retrieve personal health metrics including weight, BMI, BMR, daily calorie needs, insulin sensitivity, blood pressure, and latest HbA1c.
Search the Diabetes:M food database for nutritional information. Returns foods with nutrition per 100g, serving sizes, and source.
Configure your Diabetes:M login securely using AES-256-GCM encryption. Credentials are stored in the OS keyring or encrypted file, never in config files.
No error handling or recovery guidance in any tool descriptions. Tools do not indicate which errors are retryable, user-fixable, or fatal. No guidance on what to do if credentials fail, API rate limits are hit, or date ranges are invalid.
Parameter constraints in Zod schemas (e.g., .refine() rules for mutual exclusivity on get_logbook_entries) are not reflected in the JSON schema descriptions. LLMs cannot see these constraints in the tool definition and may pass invalid combinations.
Tool descriptions lack contextual WHEN guidance. No indication of whether to prefer get_glucose_statistics for quick stats vs. generate_health_report for comprehensive analysis, or when to call get_iob vs. get_ic_ratios. This increases LLM decision friction.
get_personal_metrics has an empty required array (no required parameters) and minimal description ('Retrieve personal health metrics...'). The description is generic and does not explain why an LLM would call this vs. other stat tools.
Pagination support is absent. Tools returning lists (search_foods, get_logbook_entries) do not expose limit, offset, or cursor parameters. Large result sets could exhaust context windows, violating mxe:enforce-result-limits.