Skip to main content
Glama

Doctor Claude

An MCP server that:

  1. Provides Claude Code with access to peer-reviewed medical information from trusted sources: MedlinePlus and StatPearls (NCBI).

  2. Acts as an unliscensed diagnostic medical expert.

Installation

  1. Clone and navigate to the repository:

git clone https://github.com/gholtzap/doctor-claude.git
cd doctor-claude
  1. Run the setup script:

./setup.sh

Manual Setup

  1. Clone and navigate to the repository:

git clone https://github.com/gholtzap/doctor-claude.git
cd doctor-claude
  1. Install dependencies and build:

npm install
npm run build
  1. Add to Claude Code (must be run from the repository directory):

claude mcp add --transport stdio doctor-claude -- node $(pwd)/build/index.js

Important: Make sure you're in the doctor-claude directory when running the above command.

Next Steps

  1. (Optional) Set your patient profile (see below)

  2. Launch Claude Code and type /doctor-claude:diagnostic_consultation

Related MCP server: StatPearls MCP Server

Patient Profile

Create a patient-profile.json file in your working directory to provide personalized medical context during consultations. This file is automatically loaded when you start a diagnostic consultation.

Example file (patient-profile.json):

{
  "age": 45,
  "sex": "female",
  "weight": { "value": 150, "unit": "lbs" },
  "height": { "value": 65, "unit": "in" },
  "chronicConditions": ["Type 2 Diabetes", "Hypertension"],
  "medications": ["Metformin 500mg twice daily", "Lisinopril 10mg daily"],
  "allergies": ["Penicillin", "Shellfish"],
  "surgicalHistory": ["Appendectomy (2015)"],
  "familyHistory": ["Mother: Breast cancer", "Father: Heart disease"]
}

All fields are optional. Copy patient-profile.example.json to patient-profile.json and customize it.

Privacy: Your profile has the same privacy level as sending it in a claude chat. I, the developer, have 0 access to any profiles, as they are stored locally on your machine.

Prompts

diagnostic_consultation

Engages Claude in a systematic medical consultation process. Automatically includes your patient profile if available.

Important: This is for educational purposes only. If you are feeling unwell, see a doctor.

Usage in Claude Code:

/doctor-claude:diagnostic_consultation

Available Tools

6 tools
calculate_clinical_scoreA

Calculate clinical decision rule scores to help assess disease severity, risk stratification, and guide clinical decision-making. Supports multiple evidence-based calculators: CURB-65 (pneumonia severity), Centor Score (strep throat probability), Wells DVT (deep vein thrombosis risk), Wells PE (pulmonary embolism risk), HEART Score (chest pain cardiac risk), CHA2DS2-VASc (stroke risk in atrial fibrillation), GCS (Glasgow Coma Scale for consciousness assessment), qSOFA (sepsis screening), Alvarado Score (appendicitis), Glasgow-Blatchford Score (upper GI bleeding risk), NIHSS (NIH Stroke Scale for stroke severity), SOFA (Sequential Organ Failure Assessment), PERC (Pulmonary Embolism Rule-out Criteria), TIMI (Thrombolysis in Myocardial Infarction Risk Score), MELD (Model for End-Stage Liver Disease), GAD-7 (Generalized Anxiety Disorder-7). These tools help determine appropriate level of care (outpatient vs hospital) and testing strategies. This tool provides EDUCATIONAL information only - all clinical decisions must be made by qualified healthcare providers.

ParametersJSON Schema
NameRequiredDescriptionDefault
inputsYesInput parameters for the selected calculator. Varies by calculator - see tool schemas for details.
calculatorYesWhich clinical calculator to use: curb65 (pneumonia severity/mortality risk), centor (streptococcal pharyngitis probability), wells_dvt (DVT probability), wells_pe (PE probability), heart (chest pain cardiac event risk), cha2ds2_vasc (stroke risk in atrial fibrillation), gcs (Glasgow Coma Scale for consciousness), qsofa (sepsis screening), alvarado (appendicitis risk), glasgow_blatchford (upper GI bleeding risk), nihss (NIH Stroke Scale for stroke severity), sofa (Sequential Organ Failure Assessment for ICU mortality), perc (Pulmonary Embolism Rule-out Criteria), timi (TIMI Risk Score for NSTEMI/UA), meld (Model for End-Stage Liver Disease), gad7 (Generalized Anxiety Disorder-7 for anxiety screening)

TDQS

A3.8/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the burden. It explicitly discloses that the tool provides educational information only and that clinical decisions must be made by qualified providers. It also enumerates the full scope of supported calculators. It does not describe output format or error behavior, but for a stateless calculator, the educational disclaimer and scope are key behavioral traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with purpose and ends with a vital disclaimer, but it is overly long because it repeats the full calculator list already present in the schema's enum descriptions. The list could be condensed, and the redundancy makes it less concise than optimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

This is a complex tool with 16 calculators requiring different input structures. The description gives names and clinical uses but does not explain how to structure 'inputs' for each calculator, saying only 'see tool schemas for details' (not provided here). There is no output schema, so return values are also unspecified. The description is incomplete for an agent to correctly invoke the tool in many cases.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, including detailed enum values for 'calculator' and a description for 'inputs' (though vague). The description largely duplicates the enum list without adding new parameter-level meaning, especially for the nested 'inputs' object. Baseline 3 applies because the schema carries the weight.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool calculates clinical decision rule scores for severity/risk assessment. It lists 16 specific calculators, which strongly distinguishes it from sibling tools that fetch articles, manage patient profiles, or search medical info. The verb 'calculate' and resource 'clinical decision rule scores' are explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool: to assess disease severity, stratify risk, and guide decision-making, including determining level of care. It does not explicitly mention when not to use it or name alternative tools, but the context is sufficient for a calculator with obvious use cases.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

delete_patient_profileB

Delete the saved patient profile information.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description must disclose behavioral traits. It only restates the tool name's action ('Delete') without explaining consequences such as permanence, reversibility, or impact on related data. This is a significant gap for a destructive operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, focused sentence with no extraneous words. It immediately conveys the core function while remaining simple and appropriate for a zero-parameter tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite the tool's simplicity, the description lacks critical context for a deletion operation. It does not explain whether deletion is permanent, whether it affects other data, or any side effects. Without annotations or an output schema, the description leaves significant gaps for an agent to understand the full implications.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool has zero parameters and the schema is empty with 100% coverage. Baseline for no parameters is 4, and the description correctly does not reference any parameters. No additional semantic value is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb ('Delete') and resource ('saved patient profile information'), clearly stating the tool's function. It distinguishes from sibling tools like get_patient_profile, set_patient_profile, and fetch_medical_article by indicating a destructive action on the profile.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It does not mention situations where deletion is appropriate, prerequisites, or alternatives like updating the profile. The agent is left to infer usage solely from the tool name and description.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_medical_articleA

Fetch and parse the full content of a medical article from MedlinePlus or StatPearls. Only URLs from medlineplus.gov and ncbi.nlm.nih.gov are allowed for security. This tool provides EDUCATIONAL information only - not medical advice, diagnoses, or treatment recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlYesThe URL of the medical article to fetch (must be from medlineplus.gov or ncbi.nlm.nih.gov)

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It states the security domain restriction and the educational-only disclaimer, which are important behavioral traits. It also implies a read-only fetch operation and return of parsed content, but could elaborate slightly on error handling or return format.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the primary purpose, followed by security and educational caveats. Every sentence contributes useful information without unnecessary padding.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one parameter) and no output schema, the description adequately explains the fetch-and-parse behavior, domain restrictions, and the non-clinical nature of the content. It could specify the output format, but the current level is sufficient for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema already provides 100% coverage for the single parameter (URL with domain restriction). The description repeats the same allowed-domain constraint without adding additional semantic detail, so it meets the baseline but adds nothing beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's verb ('Fetch and parse') and resource ('medical article from MedlinePlus or StatPearls'), distinguishing it from sibling tools like search_medical_info. It is specific and unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context that only URLs from medlineplus.gov and ncbi.nlm.nih.gov are allowed, which acts as an implicit exclusion for other sources. However, it does not explicitly mention alternatives like search_medical_info for when to search rather than fetch.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_patient_profileA

Retrieve the saved patient profile information. Returns null if no profile has been saved.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses a key behavioral trait: returns null if no profile has been saved. However, it does not elaborate on safety, permissions, or other edge cases, which is acceptable for a simple read operation but not exhaustive.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, front-loaded with the action, and includes only the essential extra detail about the null return. No waste or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with no parameters, no annotations, and no output schema, the description covers the main purpose and the most important behavior (null return). It is complete enough for an agent to know when to invoke it and what to expect in the missing case, though it does not describe the payload structure (not required here).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With zero parameters, the schema provides no information to describe. The description does not need to add parameter details, and the baseline for 0 params is 4. The description correctly says nothing about parameters, which is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Retrieve') and the resource ('saved patient profile information'). It distinguishes itself from sibling tools like set_patient_profile (write), delete_patient_profile (remove), and search_medical_info (different resource).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the action of retrieving a saved profile, but there is no explicit guidance on when to use this tool versus alternatives. The description does not mention conditions or exclusions, but the simple getter nature makes the intended use reasonably clear.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_medical_infoA

Search for peer-reviewed medical information from MedlinePlus and StatPearls (NCBI). Returns a list of relevant articles with titles, URLs, and descriptions. IMPORTANT: Use simple, focused queries with 1-3 key medical terms for best results. Avoid overly complex multi-word queries. If searching for specific patterns or presentations, use the core condition/topic (e.g., "child abuse burns" instead of "geometric patterned skin lesions burns infants child abuse"). The tool will automatically try simpler queries if the initial search returns no results. This tool provides EDUCATIONAL information only - not medical advice, diagnoses, or treatment recommendations.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesThe medical topic or condition to search for. Keep it simple with 1-3 key terms for best results.
sourceNoWhich source(s) to search: medlineplus, statpearls, or bothboth

TDQS

A4.7/5.0
Behavior5/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description fully carries the burden of behavioral disclosure. It explains the return format, automatic query simplification, and the educational-only limitation. This provides rich context beyond what any schema could, and no contradictions exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized—every sentence contributes meaning, from the search function, to return format, to query tips, fallback behavior, and the disclaimer. The IMPORTANT callout and clear flow make it easy to parse without wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a search tool with two parameters and no output schema, the description is remarkably complete. It tells the agent what kind of queries work best, what happens on empty results, what to expect in the return list, and the educational scope. No further context is needed to invoke it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the baseline is 3. The description adds extra value by reinforcing query simplicity and explaining the automatic retry behavior, which is not in the schema. It also clarifies the source parameter's role in searching both or one source, though the schema already describes that.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it searches peer-reviewed medical information from MedlinePlus and StatPearls, and specifies the return of a list of articles with titles, URLs, and descriptions. It differentiates itself from the sibling 'fetch_medical_article' by emphasizing search rather than retrieval of a specific article.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit usage guidance on query formulation, advising simple 1-3 term queries and giving a concrete example of simplification. It also notes the automatic fallback to simpler queries, which helps agents understand behavior. It does not explicitly compare with sibling tools or state exclusions, but the context is clear enough.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

set_patient_profileA

Save patient profile information (age, weight, height, chronic conditions, medications, allergies, etc.). This information is stored locally and will be used to provide more personalized medical information during consultations. All fields are optional - you can provide as much or as little information as you want.

ParametersJSON Schema
NameRequiredDescriptionDefault
ageNoPatient age in years
sexNoBiological sex
heightNoPatient height
weightNoPatient weight
allergiesNoList of allergies (medications, food, environmental)
medicationsNoList of current medications
familyHistoryNoList of relevant family medical history
surgicalHistoryNoList of previous surgeries
chronicConditionsNoList of chronic medical conditions (e.g., diabetes, hypertension)

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden. It discloses that data is stored locally and used for personalization, which is useful. However, it does not mention whether saving overwrites existing data, merges, or what response to expect. For a mutation tool, this is a moderate transparency gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences: the first states the action and examples, the second explains storage, purpose, and optionality. It is front-loaded with the verb, has no filler, and every sentence contributes to understanding the tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (9 parameters, nested objects, no output schema), the description provides essential context: what it does, where data is stored, why it's useful, and that all fields are optional. It omits details like overwrite semantics, but this is not critical for deciding to use the tool. Overall, it is sufficiently complete for selection and invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema descriptions cover 100% of parameters, so the baseline is 3. The description adds 'All fields are optional,' which is a critical semantic not explicitly stated in the schema (though required count is 0). It also lists key fields, reinforcing the schema without redundancy, but doesn't elaborate on nested objects or units, which are already documented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description opens with 'Save patient profile information,' a clear verb and resource, and lists example fields (age, weight, height, chronic conditions, etc.). This distinguishes the tool from siblings like get_patient_profile and delete_patient_profile, which have different actions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: the information is stored locally and used for personalized medical information during consultations, implying when to use this tool. It doesn't explicitly state alternatives or exclusions, but the purpose and context are sufficient for an agent to choose it over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 6 tool updatesv1.0.0
    • First observedcalculate_clinical_score
    • First observeddelete_patient_profile
    • First observedfetch_medical_article
    • First observedget_patient_profile
    • First observedsearch_medical_info
    • First observedset_patient_profile

TDQS

A4.2/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct operation: searching for articles, fetching article content, managing patient profile (set/get/delete), and calculating clinical scores. No two tools overlap in purpose.

Naming Consistency5/5

All tool names follow a consistent `verb_noun` pattern with snake_case (e.g., `fetch_medical_article`, `get_patient_profile`), making the action and resource clear.

Tool Count5/5

With 6 tools, the server is well-scoped: 3 for patient profile management, 2 for medical information retrieval, and 1 for clinical scoring. This covers core functionality without unnecessary bloat.

Completeness5/5

The tool set covers the full lifecycle: search/fetch medical info, save/retrieve/delete patient context, and calculate relevant clinical scores. No obvious missing operations for the stated purpose.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    A specialized Model Context Protocol server that enhances AI-assisted medical learning by connecting Claude Desktop to PubMed, NCBI Bookshelf, and user documents for searching, retrieving, and analyzing medical education content.
    7
    MIT
  • F
    license
    Not graded
    quality
    C
    maintenance
    Provides AI systems with access to peer-reviewed medical information from StatPearls, enabling searches for diseases and medical conditions with comprehensive, reliable content formatted in AI-friendly Markdown.
    1
    -
  • A
    license
    Not graded
    quality
    F
    maintenance
    Provides comprehensive medical information by querying authoritative sources including FDA drug database, WHO health statistics, PubMed literature, RxNorm nomenclature, Google Scholar, and Australia's PBS API through 22+ specialized tools.
    75 npm
    3
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Provides access to MedlinePlus consumer health information from NIH, enabling free-text search across health topics.
    3 npm
    MIT