vitamind
What this MCP does
Uses location, UV, weather, solar, and personal skin-profile data to estimate vitamin D synthesis windows, sun exposure duration, and sunburn risk.
Tools
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['places'], 'properties': {'age': {'type': 'number', 'maximum': 120, 'minimum': 0, 'description': 'Age in years (synthesis declines with age); omit for adult baseline'}, 'places': {'type': 'array', 'items': {'type': 'object', 'required': ['name', 'lat', 'lon'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}, 'name': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'How to label this place in the comparison'}, 'timezone': {'type': 'string', 'maxLength': 64, 'description': "IANA timezone like 'Europe/Madrid'. Strongly recommended â\x80\x94 without it all times are UTC"}, 'elevationM': {'type': 'number', 'maximum': 6000, 'minimum': -100, 'description': 'Ground elevation in metres (UV rises ~8%/km); default sea level'}}, 'additionalProperties': False}, 'maxItems': 5, 'minItems': 2, 'description': 'The places to compare, 2 to 5'}, 'skinType': {'type': 'integer', 'maximum': 6, 'minimum': 1, 'description': 'Fitzpatrick skin type 1 (very fair) to 6 (very dark); default 3'}, 'targetIU': {'type': 'number', 'maximum': 10000, 'minimum': 100, 'description': 'Vitamin D target per session in IU; default 1000'}, 'exposedSkinFraction': {'type': 'number', 'maximum': 1, 'minimum': 0.05, 'description': 'Skin exposed: 0.10 face+hands, 0.18 face+arms, 0.25 t-shirt+shorts (default), 0.40 swimsuit'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'age': {'type': 'number', 'maximum': 120, 'minimum': 0, 'description': 'Age in years (synthesis declines with age); omit for adult baseline'}, 'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': "Latitude of the place being discussed, so the live estimate uses today's real UV there"}, 'lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude, paired with lat'}, 'skinType': {'type': 'integer', 'maximum': 6, 'minimum': 1, 'description': 'Fitzpatrick skin type 1 (very fair) to 6 (very dark); default 3'}, 'targetIU': {'type': 'number', 'maximum': 10000, 'minimum': 100, 'description': 'Vitamin D target per session in IU; default 1000'}, 'timezone': {'type': 'string', 'maxLength': 64, 'description': "IANA timezone like 'Europe/Madrid'. Strongly recommended â\x80\x94 without it all times are UTC"}, 'placeName': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': 'How to label that place in the widget'}, 'exposedSkinFraction': {'type': 'number', 'maximum': 1, 'minimum': 0.05, 'description': 'Skin exposed: 0.10 face+hands, 0.18 face+arms, 0.25 t-shirt+shorts (default), 0.40 swimsuit'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lat', 'lon', 'minutes'], 'properties': {'age': {'type': 'number', 'maximum': 120, 'minimum': 0, 'description': 'Age in years (synthesis declines with age); omit for adult baseline'}, 'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}, 'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Date as YYYY-MM-DD; defaults to today'}, 'minutes': {'type': 'number', 'maximum': 600, 'minimum': 1, 'description': 'Session length in minutes'}, 'skinType': {'type': 'integer', 'maximum': 6, 'minimum': 1, 'description': 'Fitzpatrick skin type 1 (very fair) to 6 (very dark); default 3'}, 'timezone': {'type': 'string', 'maxLength': 64, 'description': "IANA timezone like 'Europe/Madrid'. Strongly recommended â\x80\x94 without it all times are UTC"}, 'startTime': {'type': 'string', 'pattern': '^\\d{1,2}:\\d{2}$', 'description': "Local HH:MM the session starts; defaults to the day's best hour"}, 'elevationM': {'type': 'number', 'maximum': 6000, 'minimum': -100, 'description': 'Ground elevation in metres (UV rises ~8%/km); default sea level'}, 'exposedSkinFraction': {'type': 'number', 'maximum': 1, 'minimum': 0.05, 'description': 'Skin exposed: 0.10 face+hands, 0.18 face+arms, 0.25 t-shirt+shorts (default), 0.40 swimsuit'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lat', 'lon'], 'properties': {'age': {'type': 'number', 'maximum': 120, 'minimum': 0, 'description': 'Age in years (synthesis declines with age); omit for adult baseline'}, 'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}, 'skinType': {'type': 'integer', 'maximum': 6, 'minimum': 1, 'description': 'Fitzpatrick skin type 1 (very fair) to 6 (very dark); default 3'}, 'targetIU': {'type': 'number', 'maximum': 10000, 'minimum': 100, 'description': 'Vitamin D target per session in IU; default 1000'}, 'timezone': {'type': 'string', 'maxLength': 64, 'description': "IANA timezone like 'Europe/Madrid'. Strongly recommended â\x80\x94 without it all times are UTC"}, 'elevationM': {'type': 'number', 'maximum': 6000, 'minimum': -100, 'description': 'Ground elevation in metres (UV rises ~8%/km); default sea level'}, 'exposedSkinFraction': {'type': 'number', 'maximum': 1, 'minimum': 0.05, 'description': 'Skin exposed: 0.10 face+hands, 0.18 face+arms, 0.25 t-shirt+shorts (default), 0.40 swimsuit'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'days': {'type': 'integer', 'maximum': 365, 'minimum': 1, 'description': 'How many recent days to return; default 30'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {}}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lat', 'lon'], 'properties': {'age': {'type': 'number', 'maximum': 120, 'minimum': 0, 'description': 'Age in years (synthesis declines with age); omit for adult baseline'}, 'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}, 'days': {'type': 'integer', 'maximum': 7, 'minimum': 2, 'description': 'How many days ahead, 2 to 7; default 5'}, 'skinType': {'type': 'integer', 'maximum': 6, 'minimum': 1, 'description': 'Fitzpatrick skin type 1 (very fair) to 6 (very dark); default 3'}, 'targetIU': {'type': 'number', 'maximum': 10000, 'minimum': 100, 'description': 'Vitamin D target per session in IU; default 1000'}, 'timezone': {'type': 'string', 'maxLength': 64, 'description': "IANA timezone like 'Europe/Madrid'. Strongly recommended â\x80\x94 without it all times are UTC"}, 'elevationM': {'type': 'number', 'maximum': 6000, 'minimum': -100, 'description': 'Ground elevation in metres (UV rises ~8%/km); default sea level'}, 'exposedSkinFraction': {'type': 'number', 'maximum': 1, 'minimum': 0.05, 'description': 'Skin exposed: 0.10 face+hands, 0.18 face+arms, 0.25 t-shirt+shorts (default), 0.40 swimsuit'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lat', 'lon'], 'properties': {'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}, 'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Date as YYYY-MM-DD; defaults to today'}, 'timezone': {'type': 'string', 'maxLength': 64, 'description': "IANA timezone like 'Europe/Madrid'. Strongly recommended â\x80\x94 without it all times are UTC"}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lat', 'lon'], 'properties': {'age': {'type': 'number', 'maximum': 120, 'minimum': 0, 'description': 'Age in years (synthesis declines with age); omit for adult baseline'}, 'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}, 'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Date as YYYY-MM-DD; defaults to today'}, 'atTime': {'type': 'string', 'pattern': '^\\d{1,2}:\\d{2}$', 'description': 'Local HH:MM the user plans to go out â\x80\x94 adds minutesNeeded and UV at that exact time'}, 'skinType': {'type': 'integer', 'maximum': 6, 'minimum': 1, 'description': 'Fitzpatrick skin type 1 (very fair) to 6 (very dark); default 3'}, 'targetIU': {'type': 'number', 'maximum': 10000, 'minimum': 100, 'description': 'Vitamin D target per session in IU; default 1000'}, 'timezone': {'type': 'string', 'maxLength': 64, 'description': "IANA timezone like 'Europe/Madrid'. Strongly recommended â\x80\x94 without it all times are UTC"}, 'elevationM': {'type': 'number', 'maximum': 6000, 'minimum': -100, 'description': 'Ground elevation in metres (UV rises ~8%/km); default sea level'}, 'exposedSkinFraction': {'type': 'number', 'maximum': 1, 'minimum': 0.05, 'description': 'Skin exposed: 0.10 face+hands, 0.18 face+arms, 0.25 t-shirt+shorts (default), 0.40 swimsuit'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['lat', 'lon'], 'properties': {'age': {'type': 'number', 'maximum': 120, 'minimum': 0, 'description': 'Age in years (synthesis declines with age); omit for adult baseline'}, 'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude in decimal degrees'}, 'lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude in decimal degrees'}, 'skinType': {'type': 'integer', 'maximum': 6, 'minimum': 1, 'description': 'Fitzpatrick skin type 1 (very fair) to 6 (very dark); default 3'}, 'targetIU': {'type': 'number', 'maximum': 10000, 'minimum': 100, 'description': 'Vitamin D target per session in IU; default 1000'}, 'timezone': {'type': 'string', 'maxLength': 64, 'description': "IANA timezone like 'Europe/Madrid'. Strongly recommended â\x80\x94 without it all times are UTC"}, 'placeName': {'type': 'string', 'maxLength': 60, 'minLength': 1, 'description': "The place's name as the user said it â\x80\x94 used to caption the chart"}, 'elevationM': {'type': 'number', 'maximum': 6000, 'minimum': -100, 'description': 'Ground elevation in metres (UV rises ~8%/km); default sea level'}, 'exposedSkinFraction': {'type': 'number', 'maximum': 1, 'minimum': 0.05, 'description': 'Skin exposed: 0.10 face+hands, 0.18 face+arms, 0.25 t-shirt+shorts (default), 0.40 swimsuit'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'date': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Day to set, YYYY-MM-DD; defaults to today'}, 'minutes': {'type': 'number', 'maximum': 600, 'minimum': 1, 'description': 'Minutes the user reports having spent in the sun (acknowledged, not stored)'}, 'confirmed': {'type': ['boolean', 'null'], 'description': 'true (default) the user went out; false they had sun but stayed in; null clears the answer'}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['query'], 'properties': {'query': {'type': 'string', 'maxLength': 80, 'minLength': 1, 'description': "City name, e.g. 'Madrid', 'London', 'Nueva York'"}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'required': ['from', 'to'], 'properties': {'to': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'Last day of the stretch, YYYY-MM-DD; same as `from` for one day'}, 'lat': {'type': 'number', 'maximum': 90, 'minimum': -90, 'description': 'Latitude, for a place not in the database'}, 'lon': {'type': 'number', 'maximum': 180, 'minimum': -180, 'description': 'Longitude, paired with lat'}, 'from': {'type': 'string', 'pattern': '^\\d{4}-\\d{2}-\\d{2}$', 'description': 'First day of the stretch, YYYY-MM-DD'}, 'cityId': {'type': 'string', 'maxLength': 80, 'description': "City id from search_city, e.g. 'builtin:londres'"}}, 'additionalProperties': False}
Input schema
{'type': 'object', '$schema': 'http://json-schema.org/draft-07/schema#', 'properties': {'age': {'anyOf': [{'type': 'number', 'maximum': 120, 'minimum': 0}, {'type': 'null'}], 'description': 'Age in years, or null for the adult baseline'}, 'skinType': {'type': 'integer', 'maximum': 6, 'minimum': 1, 'description': 'Fitzpatrick skin type 1 (very fair) to 6 (very dark); default 3'}, 'targetIU': {'type': 'number', 'maximum': 10000, 'minimum': 100, 'description': 'Vitamin D target per session in IU; default 1000'}, 'exposedSkinFraction': {'type': 'number', 'maximum': 1, 'minimum': 0.05, 'description': 'Skin exposed: 0.10 face+hands, 0.18 face+arms, 0.25 t-shirt+shorts (default), 0.40 swimsuit'}}, 'additionalProperties': False}
Recent tool changes
Similar MCP servers
france-data-mcp
Queries French public data on healthcare facilities and professionals, companies, demographics, geography, and real estate for te…
decibel-shield
Provides modeled or measured transportation-noise data for addresses, neighborhoods, cities, and Europe, plus sound-level referen…
ITV España y farmacias de guardia Madrid
Provides Spanish vehicle inspection station, tariff, scheduling-link, and periodicity information, plus Madrid emergency pharmacy…
Alice — Santé territoriale France Care
Analyzes healthcare access and infrastructure across French territories and compares locations or nearby facilities.
Hera Fertility
Finds nearby fertility testing laboratories, provides test and pricing details, and supplies ordering and visit information.
VA Healthcare Facilities
Finds VA facilities and provides their locations, services, operating details, wait times, and satisfaction scores.
Vida de aquí
Provides verified local information about training and fitness options in Torremolinos and nearby areas.
MaCalculatriceEnLigne
Provides calculators for French and Belgian taxes, salaries, pensions, VAT, loans, health metrics, education scores, fitness, and…