A Healthcare Data MCP Server: ICD-10, NPI, NDC, and DEA Tools for AI Agents
Healthcare applications juggle multiple data sources constantly. A single medical claim touches ICD-10 diagnosis codes, NPI provider numbers, NDC drug codes, and DEA registration numbers. Each of these has its own lookup system, its own data format, and its own quirks. If you are building AI-powered healthcare tools -- or if you are a healthcare professional who uses Claude Desktop or Cursor -- having all of these lookups available as MCP tools in one server changes how you work.
The healthcare MCP server (@easysolutions906/mcp-healthcare) bundles 10 tools across four healthcare data domains. This article walks through a real scenario: processing a medical claim using AI, hitting every tool along the way.
The 10 tools
| Tool | Description |
|---|---|
icd10_lookup |
Look up a specific ICD-10-CM code |
icd10_search |
Search 74,260 diagnosis codes by keyword |
icd10_validate |
Validate whether a code exists and is billable |
npi_search |
Search NPPES for providers by name, specialty, location |
npi_lookup |
Look up a specific provider by NPI number |
ndc_lookup |
Look up a drug by National Drug Code |
ndc_search |
Search 111,655 FDA drug products by name |
ndc_search_ingredient |
Find drugs by active ingredient |
dea_validate |
Validate a DEA registration number checksum |
dea_generate_test |
Generate valid test DEA numbers for development |
Installation
Add to your Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"healthcare": {
"command": "npx",
"args": ["-y", "@easysolutions906/mcp-healthcare"]
}
}
}
Restart Claude Desktop. All 10 tools become available immediately.
Scenario: Processing a medical claim
Imagine you are reviewing a medical claim with the following information:
- Provider NPI: 1629067153
- Diagnosis code: E11.65
- Drug prescribed: NDC 0002-1433-80
- Prescriber DEA: AS1234563
You paste this into Claude and ask: "Verify all the identifiers on this claim."
Here is what happens.
Step 1: Verify the provider NPI
Claude calls npi_lookup with number 1629067153 and gets back:
Provider: John Smith, M.D.
Type: Individual
Specialty: Internal Medicine (primary)
Practice: 123 Medical Center Dr, Dallas, TX 75230
License: TX MD12345
Status: Active
The NPI is valid, the provider is active, and the specialty is documented.
Step 2: Validate the diagnosis code
Claude calls icd10_lookup with code E11.65:
Code: E11.65
Description: Type 2 diabetes mellitus with hyperglycemia
Chapter: 4 - Endocrine, nutritional and metabolic diseases
Range: E00-E89
Billable: Yes
The code exists in the CMS 2025 code set and is billable -- it will not get rejected by the payer.
Step 3: Look up the drug NDC
Claude calls ndc_lookup with 0002-1433-80:
Product: HUMALOG
Generic: insulin lispro
Manufacturer: Eli Lilly and Company
Dosage: INJECTION, SOLUTION
Route: SUBCUTANEOUS
Active ingredients: INSULIN LISPRO (100 UNT/ML)
DEA Schedule: None
The NDC is valid. Humalog (insulin lispro) is consistent with a Type 2 diabetes diagnosis.
Step 4: Validate the DEA number
Claude calls dea_validate with AS1234563:
DEA Number: AS1234563
Valid: true
Registrant type: Deprecated (A-prefix)
Last name initial: S
Checksum: Valid
The DEA number passes checksum validation. The "S" initial matches "Smith" from the NPI lookup.
The summary
Claude synthesizes all four results into a coherent review:
All identifiers on this claim are valid. Provider NPI 1629067153 belongs to Dr. John Smith, Internal Medicine, Dallas TX. Diagnosis E11.65 (Type 2 diabetes with hyperglycemia) is a valid billable ICD-10 code. NDC 0002-1433-80 is Humalog (insulin lispro), which is clinically consistent with the diabetes diagnosis. DEA AS1234563 passes checksum validation with last name initial "S" matching the provider.
This took 10 seconds. Doing it manually across four different websites takes 5-10 minutes.
Other workflows
Clinical coding assistance
Ask Claude: "What ICD-10 codes should I use for a patient with type 2 diabetes, diabetic retinopathy, and chronic kidney disease stage 3?"
Claude searches ICD-10 codes for each condition and returns the most specific billable codes:
- E11.319 -- Type 2 diabetes with unspecified diabetic retinopathy without macular edema
- N18.3 -- Chronic kidney disease, stage 3
Drug interaction research
Ask: "Find all NDC products containing metformin and tell me the manufacturers."
Claude calls ndc_search_ingredient with "metformin" and returns a summary of all formulations, manufacturers, and dosage forms across the FDA database.
Provider directory building
Ask: "Find all cardiologists in Los Angeles, California."
Claude calls npi_search with taxonomy_description: "Cardiology", city: "Los Angeles", state: "CA" and returns a formatted list of providers with their NPI numbers, practice addresses, and credentials.
DEA number validation for e-prescribing
Ask: "Validate these DEA numbers for our prescriber onboarding: AB1234563, MJ9876541, FP5432167."
Claude validates each one and flags any that fail checksum, have invalid prefixes, or have mismatched name initials.
For developers: using it programmatically
If you are building an application and want the same data programmatically, each tool corresponds to a REST API endpoint:
// ICD-10 search
const icd10Results = await fetch('https://icd10-api-production.up.railway.app/search?q=diabetes&limit=5');
// NPI lookup
const provider = await fetch('https://npi-lookup.up.railway.app/lookup?number=1629067153');
// NDC search
const drugs = await fetch('https://ndc-api-production.up.railway.app/search?q=metformin&limit=10');
// DEA validation
const dea = await fetch('https://dea-validator-production.up.railway.app/validate?dea=AS1234563');
Or install the npm package directly: npm install @easysolutions906/mcp-healthcare
Getting started
- Add the config snippet above to Claude Desktop or Cursor
- Restart and verify the 10 tools appear in the tools panel
- Try: "Look up ICD-10 code E11.9" or "Search for cardiologists in New York"
- For programmatic use:
npx @easysolutions906/mcp-healthcare
Healthcare data is fragmented across dozens of systems. One MCP server brings it together.
Top comments (0)