MIMIC-IV MCPStack tool (standalone package) with pluggable SQLite/BigQuery backends.
Strong tool naming (all verb_noun pattern) and comprehensive descriptions (50-200 chars, LLM-optimized with WHEN/WHAT/HOW structure). All 10 tools have input schemas with typed parameters and descriptions. However, output schemas are not documented, LLMs cannot infer what fields to expect from responses. No error handling guidance, no pagination metadata (limit/offset/total_count), and no tool annotations (readOnlyHint). Security is solid (READ_ONLY risk declared), but composition could be tighter, some tools (get_patient_summary, search_patients) could benefit from explicit chaining hints.
🔍 Discover what data is available in the MIMIC-IV database. **When to use:** Start here when you need to understand what tables exist, or when someone asks about data that might be in multiple tables. **What this does:** Shows all available tables so you can identify which ones contain the data you need. **Next steps after using this:** - If you see relevant tables, use `get_table_info(table_name)` to explore their structure - Common tables: `patients` (demographics), `admissions` (hospital stays), `icustays` (ICU data), `labevents` (lab results)
🏥 Retrieve diagnoses for a patient's hospital admission. **When to use:** When you need to see what diagnoses were recorded for a hospital stay. **What this does:** - Retrieves ICD-10 diagnoses for an admission - Shows diagnosis codes and descriptions - Helps you understand the clinical context **Note:** Diagnoses are recorded per hospital admission (hadm_id).
🧪 Retrieve laboratory test results for a patient or admission. **When to use:** When you need lab values (blood tests, chemistry, etc.) for a patient. **What this does:** - Retrieves all lab events for a patient or specific admission - Shows test names, values, units, and timestamps - Helps you analyze clinical trends **Common labs:** glucose, potassium, sodium, creatinine, hemoglobin, etc.
💊 Retrieve medication administration records for a patient. **When to use:** When you need to see what medications were given and when. **What this does:** - Retrieves medication administration records - Shows drug names, doses, routes, and timestamps - Helps you understand treatment history **Note:** Includes both ICU and hospital-wide medication records.
Output schemas not documented. LLMs cannot infer response structure (field names, types, nested objects). Forces agents to guess what data is available after each call.
No pagination metadata returned. Tools accept 'limit' but do not return total_count, next_cursor, or has_more. Large result sets risk context window exhaustion without visibility into total size.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are READ_ONLY but this is not declared in the tool definition, only in the Risk field. MCP spec requires tool annotations for proper agent planning.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 53 | <=2025-11-25 | v2 |
👤 Get a comprehensive summary of a patient's data from MIMIC-IV. **When to use:** When you need a quick overview of a specific patient's demographics, admissions, and ICU stays. **What this does:** - Retrieves patient demographics - Lists all hospital admissions - Shows ICU stay information - Provides a unified view of the patient's record **Note:** This is a convenience function that combines multiple queries.
🔧 Retrieve procedures performed during a hospital admission. **When to use:** When you need to see what procedures were performed on a patient. **What this does:** - Retrieves ICD-10 procedure codes - Shows procedure descriptions and dates - Helps you understand interventions **Note:** Procedures are recorded per hospital admission (hadm_id).
📋 Explore a specific table's structure and see sample data. **When to use:** After you know which table you need (from `get_database_schema()`), use this to understand the columns and data format. **What this does:** - Shows column names, types, and constraints - Displays sample rows so you understand the actual data format - Helps you write accurate SQL queries **Pro tip:** Always look at sample data! It shows you the actual values, date formats, and data patterns.
❤️ Retrieve vital signs (heart rate, blood pressure, temperature, etc.) for a patient. **When to use:** When you need continuous vital sign monitoring data from ICU stays. **What this does:** - Retrieves vital signs from chartevents table - Shows timestamps and values - Helps you analyze patient stability and trends **Common vitals:** heart rate, systolic/diastolic BP, temperature, respiratory rate, SpO2
🔍 Execute a SQL query against the MIMIC-IV database. **When to use:** When you need to retrieve specific data from the database using SQL. **What this does:** - Executes your SQL query against the configured backend (SQLite or BigQuery) - Returns results in a formatted table - Validates queries for security **Important:** Always use `get_database_schema()` and `get_table_info()` first to understand the data structure before writing queries.
🔎 Search for patients in MIMIC-IV by various criteria. **When to use:** When you need to find patients matching specific demographic or clinical criteria. **What this does:** - Searches patients by age range, gender, or admission date - Returns matching patient IDs and basic demographics - Helps you identify cohorts for analysis **Pro tip:** Use this to find patients for your analysis, then use `get_patient_summary()` for details.
No error recovery guidance. Tools do not document what errors are retryable, what user input is needed, or what to do if a query fails. Agents have no path forward on failure.
Chaining hints missing. get_patient_summary and search_patients do not explicitly state that their outputs (subject_id, hadm_id) feed into downstream tools (get_lab_events, get_medications, etc.). Agents must infer the chain.