painprep-mcp-server
An MCP server for interventional pain medicine that provides Medicare documentation checklists, CPT/ICD-10 coding, ASRA anticoagulation guidance, prior-authorization letters, denial appeals, and research evidence for 85+ procedures.
README
painprep-mcp-server
An MCP server for interventional pain medicine — Medicare documentation checklists, CPT/ICD-10 coding, ASRA anticoagulation guidance, prior-authorization letters, denial appeals, and research evidence for 85+ procedures.
Built from PainPrep by Keith Schmidt, MD (triple board-certified pain medicine). This server makes PainPrep's clinical reference data available to any MCP client — Claude Desktop, Claude Code, or your own agent.
⚠️ Clinical decision-support, not medical advice. All output must be reviewed by a licensed clinician. Coding, coverage, and anticoagulation guidance change frequently — always verify against current CMS/LCD policy and the latest ASRA guidelines.
What it does
| Tool | Tier | Description |
|---|---|---|
get_procedure_list |
Free | Full catalog of procedures grouped by category, with ids and headline CPT codes. |
get_cpt_codes |
Free | Primary + add-on CPT codes, work RVUs, facility setting, and billing notes. |
get_medicare_checklist |
Premium | Full LCD/Medicare documentation checklist with rationale, suggested wording, denial triggers, and admin checks. |
get_icd10_codes |
Premium | Approved/supportive ICD-10 codes, codes to avoid, and coding tips. |
get_contraindications |
Premium | Bleeding-risk tier + per-medication ASRA hold/resume guidance + safety checks. |
get_prior_auth_letter |
Premium | Generates a payer-ready prior-authorization / medical-necessity letter from patient details + procedure data. |
get_denial_reasons |
Premium | Common denial reasons with frequency, the fix for each, and an appeal letter snippet. |
get_research_evidence |
Premium | Evidence grade, summary, and key studies with citations. |
check_documentation_completeness |
Premium | Audits a note against the required checklist and scores completeness, highlighting commonly-missed gaps. |
Every tool accepts a procedure as a name, id, or CPT code (e.g. "Lumbar/Sacral Interlaminar ESI", "lesi", or "62323"). Unrecognized queries return "did you mean" suggestions.
Quick start (no install)
The fastest way to run the server — npx clones, builds, and launches it in one step:
npx -y github:Goingparabolic/painprep-mcp-server
Or wire it straight into an MCP client (see examples/claude_desktop_config.json):
{
"mcpServers": {
"painprep": {
"command": "npx",
"args": ["-y", "github:Goingparabolic/painprep-mcp-server"],
"env": { "PAINPREP_LICENSE_KEY": "PP-XXXX-XXXX-XXXX" }
}
}
}
Install & build (from source)
git clone https://github.com/Goingparabolic/painprep-mcp-server.git
cd painprep-mcp-server
npm install
# Extract the clinical data from the PainPrep source (one-time; see "Data" below)
npm run extract # reads the PainPrep HTML → src/data/*.json
npm run build # compile TypeScript → dist/ and copy data
npm run smoke # end-to-end test (optional)
The repository ships with the extracted JSON in
src/data/, sonpm run extractis only needed to regenerate it from an updated PainPrep source.
Use with Claude Desktop
Add to claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"painprep": {
"command": "node",
"args": ["/absolute/path/to/painprep-mcp-server/dist/index.js"],
"env": { "PAINPREP_LICENSE_KEY": "PP-XXXX-XXXX-XXXX" }
}
}
}
Restart Claude Desktop. You'll then be able to ask things like:
- "List the SI joint procedures."
- "What are the CPT codes and RVUs for lumbar RFA?"
- "Draft a prior-auth letter for a lumbar ESI for a patient with 5 months of L5 radiculopathy who failed 8 weeks of PT."
- "My note for an LESI documents MRI findings and pain score — what's missing for Medicare?"
See examples/claude_desktop_config.json for an npx variant.
Use with Claude Code
claude mcp add painprep -- node /absolute/path/to/painprep-mcp-server/dist/index.js
Inspect locally
npm run inspect # opens the MCP Inspector against the stdio server
Remote hosting (HTTP / SSE)
The same tools are served over Streamable HTTP for remote deployment (MCPize, a VPS, or serverless):
npm run build
PORT=3000 node dist/http.js
# → POST http://localhost:3000/mcp (GET /health for a liveness check)
The HTTP transport is stateless and multi-tenant: the per-customer license key is read from a request header, so a single deployment can serve many customers.
X-PainPrep-License: PP-XXXX-XXXX-XXXX (preferred)
Authorization: Bearer PP-XXXX-XXXX-XXXX (also accepted)
Pricing & availability
| Tier | Price | Tools included |
|---|---|---|
| Free | $0 | get_procedure_list, get_cpt_codes |
| Premium | $29/month | All 9 tools — Medicare checklists, ICD-10 guidance, ASRA anticoagulation checks, prior-auth letters, denial appeals, research evidence, documentation auditing |
Get Premium
Purchase a Premium license key via Stripe:
After subscribing you'll receive a license key in the format PP-XXXX-XXXX-XXXX. Set it in your MCP client configuration (see setup instructions above).
Where to find PainPrep
PainPrep is available on multiple MCP marketplaces:
- MCPize Marketplace — deploy-and-subscribe hosting with 80% revenue share
- Apify Store — pay-per-event pricing, distributed across Make, n8n, and partner platforms
- Self-hosted — clone this repo and run it yourself (see Remote hosting above)
Monetization & licensing
The server has a built-in free / premium split designed to be wired to a billing provider (Stripe, MCPize) with minimal change.
- Free tier:
get_procedure_list,get_cpt_codes. - Premium tier: everything else.
Premium tools are still discoverable (they appear in tools/list so clients can advertise the upgrade), but calling one without a valid entitlement returns an upgrade prompt instead of data.
Entitlement resolution
Configured via environment variables (stdio) or request headers (HTTP):
| Variable | Purpose |
|---|---|
PAINPREP_LICENSE_KEY |
The customer's license key. |
PAINPREP_TIER |
Force premium or free (self-hosted / enterprise override). |
PAINPREP_VALID_KEYS |
Comma-separated allowlist of keys treated as valid premium (manual provisioning / testing). |
PAINPREP_LICENSE_VERIFY_URL |
Optional HTTP endpoint for remote key verification. When set, keys are validated against this service instead of locally. |
A locally-issued key matches the format PP-XXXX-XXXX-XXXX. For production, point PAINPREP_LICENSE_VERIFY_URL at your billing webhook; it should accept { "key": "..." } and return { "valid": true, "tier": "premium", "expiresAt": "..." }.
The verification layer lives entirely in src/licensing.ts behind a LicenseProvider interface — swap the implementation without touching any tool.
Project structure
painprep-mcp-server/
├── src/
│ ├── index.ts # stdio entry point (Claude Desktop / Code)
│ ├── http.ts # Streamable HTTP entry point (remote hosting)
│ ├── server.ts # builds the MCP server + tier gating
│ ├── licensing.ts # free/premium entitlement (pluggable)
│ ├── data.ts # data loading + procedure resolver
│ ├── types.ts # clinical data types
│ ├── tools/ # one file per MCP tool
│ └── data/ # extracted clinical data (JSON)
├── scripts/
│ ├── extract-data.mjs # parse PainPrep HTML → src/data/*.json
│ ├── copy-assets.mjs # copy JSON into dist/ at build
│ └── smoke-test.mjs # end-to-end MCP client/server test
├── examples/
│ └── claude_desktop_config.json
├── package.json
├── tsconfig.json
├── LICENSE
└── README.md
Data
Clinical data is extracted from the PainPrep application source. The extractor
(scripts/extract-data.mjs) locates the embedded data objects (CATEGORIES,
CHECKLISTS, ANTICOAG, MED_NECESSITY, ICD10_REF, DENIAL_TEMPLATES,
CPT_DETAILS, RESEARCH_EVIDENCE), evaluates each literal in a sandbox, and
writes clean JSON to src/data/. To regenerate from an updated source:
npm run extract -- "/path/to/painprep-mvp.html"
License
MIT © 2026 Keith Schmidt, MD
The clinical reference content is provided for educational and decision-support purposes only and does not constitute medical advice.
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。