DEV Community

easysolutions906
easysolutions906

Posted on

A Healthcare Data MCP Server: ICD-10, NPI, NDC, and DEA Tools for AI Agents

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"]
    }
  }
}
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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
Enter fullscreen mode Exit fullscreen mode

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');
Enter fullscreen mode Exit fullscreen mode

Or install the npm package directly: npm install @easysolutions906/mcp-healthcare

Getting started

  1. Add the config snippet above to Claude Desktop or Cursor
  2. Restart and verify the 10 tools appear in the tools panel
  3. Try: "Look up ICD-10 code E11.9" or "Search for cardiologists in New York"
  4. For programmatic use: npx @easysolutions906/mcp-healthcare

Healthcare data is fragmented across dozens of systems. One MCP server brings it together.

Top comments (0)