NPI MCP Server
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@NPI MCP Serverfind the NPI for Dr. Jane Smith in Chicago"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
NPI MCP Server
An offline-capable MCP (Model Context Protocol) server for the CMS NPPES NPI Registry, written in Python, deployable on Azure App Service as a Docker container.
Features
β Works offline β uses a local SQLite database
π Auto-updates every 7 days from CMS NPPES (background scheduler)
π³ Docker-ready with multi-stage build
βοΈ Azure App Service deployment with persistent storage
π Full-text search with wildcard support
βοΈ Luhn validation for NPI check digits
π ~8M+ provider records from the full NPPES dataset
MCP Tools
Tool | Description |
| Search by name, specialty, city, state, ZIP |
| Look up a specific NPI number |
| Validate NPI format + Luhn check digit (offline) |
| Check DB record count, last/next update time |
| Manually trigger a data refresh |
Quick Start (Local)
1. Build and run with Docker Compose
git clone <this-repo>
cd npi-mcp-server
# Build and start
docker compose up -d
# Trigger initial data load (one-time, ~30-60 min)
curl -X POST "http://localhost:8000/update?force=true"
# Monitor progress
docker compose logs -f2. Check health
curl http://localhost:8000/health3. Connect MCP client
Point your MCP client to: http://localhost:8000/sse
Azure Deployment
Prerequisites
Azure CLI installed:
brew install azure-clior see docsDocker installed
Azure subscription
Deploy
# Log in to Azure
az login
# Edit variables at top of script
nano deploy-azure.sh
# Run deployment (takes ~5 minutes)
chmod +x deploy-azure.sh
./deploy-azure.shAfter deployment
Trigger the initial NPI data load (one-time, requires internet):
curl -X POST "https://your-app.azurewebsites.net/update?force=true"The full NPPES file is ~900MB compressed / ~8GB uncompressed. Loading takes 30-60 minutes. After that, weekly incremental updates run automatically.
Architecture
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β Azure App Service β
β β
β ββββββββββββββββ ββββββββββββββββββββββββββββ β
β β FastAPI/SSE βββββΆβ MCP Server (mcp SDK) β β
β β HTTP layer β β - npi_search β β
β ββββββββββββββββ β - npi_lookup β β
β β - npi_validate β β
β ββββββββββββββββ β - db_status/update β β
β β Background β ββββββββββββββββββββββββββββ β
β β Scheduler β β β
β β (every 7d) β βΌ β
β ββββββββββββββββ ββββββββββββββββββββββββββββ β
β β SQLite Database β β
β β /data/npi.db β β
β β (~5-10 GB) β β
β ββββββββββββββββββββββββββββ β
β β β
β ββββββββββββββββββββββββββββ β
β β Azure File Share β β
β β (persistent volume) β β
β ββββββββββββββββββββββββββββ β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
β (weekly, when internet available)
βΌ
βββββββββββββββββββββββ
β CMS NPPES β
β download.cms.gov β
βββββββββββββββββββββββEnvironment Variables
Variable | Default | Description |
|
| SQLite database path |
|
| Days between auto-updates |
|
| Download timeout in seconds |
|
| HTTP server port |
API Endpoints
Endpoint | Method | Description |
| GET | Server info |
| GET | Health check (used by Azure) |
| GET | DB status (record count, last update) |
| POST | Trigger manual update ( |
| GET | MCP SSE connection endpoint |
| POST | MCP messages endpoint |
Storage Requirements
Component | Size |
NPPES ZIP download | ~900 MB |
SQLite database | ~5-10 GB |
Recommended Azure File Share | 50 GB |
Use Azure App Service B2 or higher (2 vCPU, 3.5 GB RAM minimum).
Connecting MCP Clients
Claude Desktop (claude_desktop_config.json)
{
"mcpServers": {
"npi-registry": {
"url": "https://your-app.azurewebsites.net/sse",
"transport": "sse"
}
}
}Local stdio mode (for dev/testing)
python main.pyData Source
Data comes from CMS NPPES, the official National Plan and Provider Enumeration System. Updated monthly (full) and weekly (incremental) by CMS.
Related MCP Connectors
Healthcare provider & compliance intel: NPPES lookup, OIG/SAM exclusion screening, FDA enforcement.
Search NPPES providers and resolve NUCC specialty codes via MCP over STDIO or Streamable HTTP.
Offline US medical code lookup and crosswalk β ICD-10-CM/PCS, HCPCS Level II, RxNorm. Keyless.
Offline, keyless lookup of the US civil aircraft registry β decode N-numbers, search records.