Azure AHDS FHIR MCP Server for accessing FHIR healthcare data via the Model Context Protocol
The server defines 5 FHIR tools with basic structure but significant quality gaps. All tools have descriptions, but they are generic and lack LLM-actionable guidance. Input schemas are present but incomplete, parameters lack detailed descriptions, constraints, and format specifications. No output schemas are documented. Error handling is absent. The tool names are reasonably clear (search_fhir, read_fhir_resource, create_fhir_resource, update_fhir_resource, delete_fhir_resource) but descriptions do not explain WHEN to use each tool, what it returns, or how to chain them. Parameter schemas define types but omit critical details like valid resource types, pagination limits, or field constraints. This is a typical community server stuck at the definition-quality baseline (50-59 range).
Create a new FHIR resource
Delete a FHIR resource
Read a specific FHIR resource by ID
Search for FHIR resources
Update an existing FHIR resource
No output schemas documented for any tool. LLMs cannot plan downstream calls or extract needed fields.
Parameter descriptions are generic or missing. 'Search parameters as key-value pairs' does not explain valid keys, formats, or constraints. 'FHIR resource data' does not specify required fields, validation rules, or nesting.
Tool descriptions lack LLM-actionable context. No WHEN-to-use guidance, no return-value hints, no chaining information. E.g., search_fhir description does not mention result limits, pagination, or how many results to expect.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 48 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 0 | - | v1 |
Destructive tool (delete_fhir_resource) has no confirmation mechanism, dry-run option, or explicit warning in description. Tool should implement pattern:confirmation-request or pattern:command-tool safety patterns.
searchParams and resource parameters are unstructured objects with no schema guidance. LLMs will hallucinate valid field names, formats, and nesting. Should define strict JSON Schema or document valid fields exhaustively.
No error handling guidance. What happens on 404? Validation error? Permission denied? LLMs have no recovery path documented.
No pagination defined. search_fhir returns results but does not document limit, offset, total_count, or next_cursor. Large result sets will blow context windows.
No tool chaining information. create_fhir_resource does not document what ID field is returned so downstream tools can reference it. Missing tool-chain data.
resourceType parameter is a free-form string. Should be an enum of valid FHIR resource types (Patient, Observation, Medication, etc.) to prevent hallucinated invalid types.