MCP-Server

Juno Open Health Tools

io.github.MarshallBear1/juno-open-health-tools
Gesundheitswesen Öffentlich und erreichbar MCP 2025-11-25

Was dieses MCP kann

Converts consented, non-identifying user health notes into timelines, symptom descriptions, flare reflections, and appointment briefs without diagnosis or medical advice.

build_health_timeline
Build health timeline
After explicit consent, sort only non-identifying, user-authored observations into a factual chronology while preserving uncertainty. Do not accept PHI or invent dates or diagnoses.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['consentConfirmed', 'observations'], 'properties': {'observations': {'type': 'array', 'items': {'type': 'object', 'required': ['observation'], 'properties': {'date': {'type': 'string', 'maxLength': 80}, 'impact': {'type': 'string', 'maxLength': 1000}, 'category': {'type': 'string', 'maxLength': 120}, 'observation': {'type': 'string', 'maxLength': 2000}, 'uncertainty': {'type': 'string', 'maxLength': 500}}}, 'maxItems': 50, 'minItems': 1}, 'consentConfirmed': {'type': 'boolean', 'const': True, 'description': 'Set to true only after the user explicitly agrees to transient processing of their non-identifying, user-authored health notes. Do not submit PHI, medical-record identifiers, contact details, credentials, or provider documents.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['timeline', 'changePoints', 'disclaimer'], 'properties': {'timeline': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'observation', 'category', 'impact', 'uncertainty'], 'properties': {'date': {'type': 'string', 'maxLength': 80}, 'impact': {'type': 'string', 'maxLength': 1000}, 'category': {'type': 'string', 'maxLength': 120}, 'observation': {'type': 'string', 'maxLength': 2000}, 'uncertainty': {'type': 'string', 'maxLength': 500}}, 'additionalProperties': False}, 'maxItems': 50}, 'disclaimer': {'type': 'string', 'maxLength': 2000}, 'changePoints': {'type': 'array', 'items': {'type': 'object', 'required': ['date', 'observation', 'category', 'impact', 'uncertainty'], 'properties': {'date': {'type': 'string', 'maxLength': 80}, 'impact': {'type': 'string', 'maxLength': 1000}, 'category': {'type': 'string', 'maxLength': 120}, 'observation': {'type': 'string', 'maxLength': 2000}, 'uncertainty': {'type': 'string', 'maxLength': 500}}, 'additionalProperties': False}, 'maxItems': 6}}, 'additionalProperties': False}
find_symptom_words
Find symptom words
After explicit consent, organise only the user's non-identifying description into neutral sensation, timing, pattern, and impact vocabulary. Do not accept PHI or infer a diagnosis or cause.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['consentConfirmed', 'description'], 'properties': {'impact': {'type': 'string', 'maxLength': 2000}, 'timing': {'type': 'string', 'maxLength': 2000}, 'bodyArea': {'type': 'string', 'maxLength': 2000}, 'description': {'type': 'string', 'maxLength': 2000}, 'consentConfirmed': {'type': 'boolean', 'const': True, 'description': 'Set to true only after the user explicitly agrees to transient processing of their non-identifying, user-authored health notes. Do not submit PHI, medical-record identifiers, contact details, credentials, or provider documents.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['originalDescription', 'prompts', 'starterSentence', 'disclaimer'], 'properties': {'prompts': {'type': 'object', 'required': ['sensation', 'timing', 'pattern', 'impact'], 'properties': {'impact': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 30}, 'timing': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 30}, 'pattern': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 30}, 'sensation': {'type': 'array', 'items': {'type': 'string'}, 'maxItems': 30}}, 'additionalProperties': False}, 'disclaimer': {'type': 'string', 'maxLength': 2000}, 'starterSentence': {'type': 'string', 'maxLength': 10000}, 'originalDescription': {'type': 'string', 'maxLength': 2000}}, 'additionalProperties': False}
prepare_appointment_brief
Prepare appointment brief
After explicit consent, turn minimal non-identifying goals, changes, impact, user-stated medicines, and questions into a concise appointment brief. Do not accept PHI or provide medical advice.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['consentConfirmed', 'mainGoal'], 'properties': {'changes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1000}, 'default': [], 'maxItems': 25}, 'impacts': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1000}, 'default': [], 'maxItems': 25}, 'mainGoal': {'type': 'string', 'maxLength': 2000}, 'medicines': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1000}, 'default': [], 'maxItems': 25}, 'questions': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1000}, 'default': [], 'maxItems': 25}, 'detailsToBring': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1000}, 'default': [], 'maxItems': 25}, 'consentConfirmed': {'type': 'boolean', 'const': True, 'description': 'Set to true only after the user explicitly agrees to transient processing of their non-identifying, user-authored health notes. Do not submit PHI, medical-record identifiers, contact details, credentials, or provider documents.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['mainGoal', 'changes', 'impacts', 'medicines', 'questions', 'detailsToBring', 'disclaimer'], 'properties': {'changes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'impacts': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'mainGoal': {'type': 'string', 'maxLength': 2000}, 'medicines': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'questions': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'disclaimer': {'type': 'string', 'maxLength': 2000}, 'detailsToBring': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}}, 'additionalProperties': False}
reflect_on_flare
Reflect on a flare
After explicit consent, structure only non-identifying, user-authored before, during, and after observations; turn suspected patterns into questions, not causal claims. Do not accept PHI.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['consentConfirmed'], 'properties': {'during': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1000}, 'default': [], 'maxItems': 25}, 'recoveryAfter': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1000}, 'default': [], 'maxItems': 25}, 'baselineBefore': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1000}, 'default': [], 'maxItems': 25}, 'consentConfirmed': {'type': 'boolean', 'const': True, 'description': 'Set to true only after the user explicitly agrees to transient processing of their non-identifying, user-authored health notes. Do not submit PHI, medical-record identifiers, contact details, credentials, or provider documents.'}, 'possiblePatterns': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1000}, 'default': [], 'maxItems': 25}}}
Ausgabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['baselineBefore', 'during', 'recoveryAfter', 'possiblePatternsToObserve', 'disclaimer'], 'properties': {'during': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'disclaimer': {'type': 'string', 'maxLength': 2000}, 'recoveryAfter': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'baselineBefore': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'possiblePatternsToObserve': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}}, 'additionalProperties': False}
render_appointment_brief
Render appointment brief
After the user's existing consent, render the non-identifying output of prepare_appointment_brief as an accessible card. Call prepare_appointment_brief first; do not add PHI.
Nur Lesen
Eingabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['mainGoal', 'changes', 'impacts', 'medicines', 'questions', 'detailsToBring', 'disclaimer', 'consentConfirmed'], 'properties': {'changes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'impacts': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'mainGoal': {'type': 'string', 'maxLength': 2000}, 'medicines': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'questions': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'disclaimer': {'type': 'string', 'maxLength': 2000}, 'detailsToBring': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'consentConfirmed': {'type': 'boolean', 'const': True, 'description': 'Set to true only after the user explicitly agrees to transient processing of their non-identifying, user-authored health notes. Do not submit PHI, medical-record identifiers, contact details, credentials, or provider documents.'}}}
Ausgabeschema
{'type': 'object', '$schema': 'https://json-schema.org/draft/2020-12/schema', 'required': ['mainGoal', 'changes', 'impacts', 'medicines', 'questions', 'detailsToBring', 'disclaimer'], 'properties': {'changes': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'impacts': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'mainGoal': {'type': 'string', 'maxLength': 2000}, 'medicines': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'questions': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}, 'disclaimer': {'type': 'string', 'maxLength': 2000}, 'detailsToBring': {'type': 'array', 'items': {'type': 'string', 'maxLength': 1500}, 'maxItems': 25}}, 'additionalProperties': False}
Hinzugefügt
render_appointment_brief
17. September 2026 12:43
Hinzugefügt
reflect_on_flare
17. September 2026 12:43
Hinzugefügt
prepare_appointment_brief
17. September 2026 12:43
Hinzugefügt
build_health_timeline
17. September 2026 12:43
Hinzugefügt
find_symptom_words
17. September 2026 12:43