MedPrice AI
Hosted MCP server exposing US hospital procedure cost data to AI assistants
Installation
Ajoutez ceci à la configuration MCP de votre client (Claude Desktop : claude_desktop_config.json ; Cursor : .cursor/mcp.json ; VS Code et les autres utilisent la même forme « mcpServers »).
claude mcp add --transport http medprice-ai 'https://mcp.medprice.ai/mcp'
{
"mcpServers": {
"medprice-ai": {
"type": "http",
"url": "https://mcp.medprice.ai/mcp"
}
}
}
Documentation
Tirée du README du projet sur GitHub, actualisée chaque semaine. Les liens ouvrent GitHub.
mcp-medprice-ai
A hosted MCP server exposing US hospital chargemaster cost data to AI assistants.
- MCP endpoint:
https://mcp.medprice.ai/mcp - gRPC backend:
api.medprice.ai:443
Install in Claude Code
claude mcp add --transport http mcp-medprice-ai https://mcp.medprice.ai/mcp
To share with everyone in a project, add --scope project (writes to .mcp.json). To make it available across all your projects, use --scope user.
Usage
The server exposes five tools:
list_hospitals— returns the supported hospitals with theirhospital_id, EIN, name, structured_locations (addresses with geocoded coordinates where available), last_updated_on, and revision history (each revision's date,revision_id, and whether it has payer-specific rate data).get_hospital_chargemaster_cost— looks up cost stats for a billing code at a single hospital.list_hospital_code_costs— looks up cost stats for a billing code across every hospital that has a matching chargemaster entry, paginated. Use this instead of callingget_hospital_chargemaster_costonce per hospital when comparing prices for the same procedure across hospitals.get_code_price_distribution— returns the distribution of every hospital's price for a billing code (percentiles, histogram, and the real hospital at each percentile), computed server-side. Use instead of paging throughlist_hospital_code_costsfor "is this price high?" questions.list_code_types— lists every distinct billing code type (e.g. CPT, MS-DRG) with catalogued cost data, along with each type's distinct code count and total hospital reports.list_codes— lists every distinct code under a given code type, paginated, with a raw chargemaster description and reporting-hospital count per code. Use this to discover which codes exist under a code system before pricing them.
The typical flow is to call list_hospitals first to discover available hospitals and their IDs, then call get_hospital_chargemaster_cost with the desired hospital_id — or call list_hospital_code_costs directly when the question is about a code across hospitals rather than one specific hospital. Once installed, you can just ask your assistant something like:
What's the fee schedule cost of MS-DRG 652 at Medical City Alliance?
The assistant will call list_hospitals to find the hospital's ID, then call get_hospital_chargemaster_cost with:
{
"hospital_id": "3f9a1c2b8e4d5f6a7b8c9d0e1f2a3b4c",
"code_type": "MS-DRG",
"code": "652",
"methodologies": ["fee schedule"]
}
and returns:
{
"hospital": "MEDICAL CITY ALLIANCE",
"found": true,
"hospital_id": "3f9a1c2b8e4d5f6a7b8c9d0e1f2a3b4c",
"results": [
{
"methodology": "fee schedule",
"found": true,
"cost": {
"code_type": "MS-DRG",
"code": "652",
"min": "26851.11",
"max": "190885.00",
"avg": "34387.70",
"median": "28084.07",
"std_dev": "13735.94"
},
"description": {
"hospital_name": "MEDICAL CITY ALLIANCE",
"location": "3101 N Tarrant Pkwy, Fort Worth, TX, 76177",
"code_description": "KIDNEY TRANSPLANT",
"methodology_note": "fee schedule"
}
}
]
}
Tool reference
list_hospitals
page_size(optional) — maximum number of hospitals to return. Defaults to 500 (the entire current registry in one call), capped at 500.page_token(optional) — opaque token from a previous response'snext_page_token, for pagination. Ifnext_page_tokenis non-empty, keep calling with it until it's empty rather than assuming one page is the full list.
Each hospital's revisions array now includes a revision_id per revision (in addition to revision_date and has_payer_data) — pass it as get_hospital_chargemaster_cost's revision_id to price that specific past revision instead of the hospital's latest one.
get_hospital_chargemaster_cost
hospital_id(required) — opaque hospital identifier fromlist_hospitals.code_type(required) — code system, e.g.APR-DRG,CDM,CPT,HCPCS,MS-DRG,RC. Hospitals may also support additional proprietary code types.code(required) — the billing/chargemaster code.methodologies(optional) — array ofcase rate,fee schedule,other,percent of total billed charges,per diem. One result per entry, in request order, each with its ownfound/cost/description. Omit or pass an empty array to get a single aggregate result across all methodologies.revision_id(optional) — arevision_idfromlist_hospitals, to price that specific past revision instead of the hospital's latest one.
Returns hospital, found (true if at least one entry in results was found), hospital_id, and results — one entry per requested methodology (or one aggregate entry when methodologies is omitted), each shaped like { methodology, found, cost, description }.
list_hospital_code_costs
Like get_hospital_chargemaster_cost, but returns one result per hospital that has a matching chargemaster entry for the code, instead of requiring a hospital_id up front — useful for "which hospital is cheapest for X" questions without a list_hospitals + N × get_hospital_chargemaster_cost round trip.
code_type(required) — same as above.code(required) — same as above.methodology(optional) — single methodology string, same options as above. Unlikeget_hospital_chargemaster_cost, this filter stays singular — it still only aggregates or narrows to one methodology, it doesn't fan out to multipleresultsentries per hospital.page_size(optional) — maximum number of results to return. Defaults to 500 (every matching hospital in one call at the current registry size), capped at 500.page_token(optional) — opaque token from a previous response'snext_page_token, for pagination. Ifnext_page_tokenis non-empty, keep calling with it until it's empty rather than assuming one page is the full list.
Returns results (each hospital shaped like a get_hospital_chargemaster_cost response — hospital, found, hospital_id, and a results array with exactly one entry given the singular methodology filter) and next_page_token. Only hospitals with a matching entry (their latest revision) are included — there are no found: false entries.
get_code_price_distribution
Distribution of one per-hospital price figure across every hospital reporting the code, computed server-side in one call.
code_type(required),code(required) — same as above.methodology(optional) — same options aslist_hospital_code_costs; omit to aggregate across all.min_sample_count(optional) — same semantics aslist_hospital_code_costs.bin_count(optional) — histogram bars; defaults to 16, max 200.reference_price(optional) — when positive,hospitals_below_referencecounts hospitals priced strictly below it.statistic(optional) —PRICE_STATISTIC_AVERAGE(default),PRICE_STATISTIC_MEDIAN,PRICE_STATISTIC_MINorPRICE_STATISTIC_MAX: the per-hospital figure being distributed.
Returns hospital_count, min/p10/q1/median/q3/p90/max, std_dev, histogram (histogram_lo, histogram_hi, histogram_bins, overflow_count), a *_hospital point (hospital_id, hospital_name, location, price) for each percentile, and hospitals_below_reference. hospital_count 0 means no hospital reports a price.
list_code_types
No arguments. Returns code_types, one entry per distinct code type present in the catalog (most code-rich first), each with code_type, code_count (distinct codes catalogued under that type), and total_hospital_reports (sum of hospital_count across every code under that type — not a distinct-hospital count). Unpaginated.
Use this to discover which code systems have data before drilling into list_codes.
list_codes
code_type(required) — code system to list codes for, e.g.CPT. Fromlist_code_types.page_size(optional) — maximum number of results to return. Defaults to 500, capped at 500.page_token(optional) — opaque token from a previous response'snext_page_token, for pagination. Ifnext_page_tokenis non-empty, keep calling with it until it's empty rather than assuming one page is the full list.
Returns codes (each with code, raw_description — raw chargemaster text, not necessarily a human-readable procedure name — and hospital_count, distinct hospitals reporting that code on their latest revision), next_page_token, and total_count (total matching codes across all pages). Use this to discover which codes exist under a code system before pricing them with get_hospital_chargemaster_cost or list_hospital_code_costs.
Development
Run locally against the production gRPC backend
GRPC_HOST=api.medprice.ai:443 npx tsx src/index.ts
Run locally against a custom gRPC backend
GRPC_HOST=<host:port> npx tsx src/index.ts
Run as HTTP server
TRANSPORT=http GRPC_HOST=api.medprice.ai:443 npx tsx src/index.ts
All MCP requests go to POST /mcp. PORT defaults to 3000.
Test gRPC connectivity
GRPC_HOST=api.medprice.ai:443 npx tsx src/test.ts
Docker
Build
docker build -t mcp-medprice-ai .
Run
docker run --rm -p 3000:3000 \
-e GRPC_HOST=api.medprice.ai:443 \
mcp-medprice-ai
TRANSPORT=http and PORT=3000 are set by default in the image. Override PORT if needed:
docker run --rm -p 8080:8080 \
-e GRPC_HOST=api.medprice.ai:443 \
-e PORT=8080 \
mcp-medprice-ai
Questions fréquentes
Qu'est-ce que MedPrice AI ?
Hosted MCP server exposing US hospital procedure cost data to AI assistants
Comment installer MedPrice AI ?
Il fonctionne comme serveur distant. Dans Claude Code : claude mcp add --transport http medprice-ai 'https://mcp.medprice.ai/mcp'. Pour les autres clients, collez la configuration JSON de cette page dans leurs réglages MCP.
Faut-il une clé API pour MedPrice AI ?
Son entrée au registre n'indique aucune clé ni secret obligatoire. Certaines fonctions peuvent tout de même demander un compte auprès du service auquel il se connecte.
MedPrice AI est-il open source ?
Son code est public sur GitHub, mais le dépôt ne déclare pas de licence standard.
Qui maintient MedPrice AI ?
Il est publié par medprice-ai. AI.tn le référence sans le maintenir ni le recommander.
Issu du registre MCP officiel. Être listé n'est pas une recommandation : vérifiez le code et les permissions d'un serveur avant de lui donner accès à vos données.