vitamind-mcp
Connect an AI assistant to Vitamin D Explorer for location- and profile-specific sun/vitamin D guidance, plus optional signed-in account tools.
Search cities in six languages and get coordinates, timezone, and elevation.
Get sunrise, sunset, solar noon, civil dawn/dusk, golden hours, and day length for a location/date.
Compute a single day's vitamin D synthesis window, best hour, required minutes, UV peak, and whether synthesis is possible.
Summarize an entire year's viable months, solid months, and exact season boundaries for a location.
Check whether right now is good for vitamin D synthesis using live UV/cloud data or clear-sky fallback.
Estimate vitamin D IU produced and time until burning for a sun session.
With OAuth, read a saved profile, favorite cities, and sun history, and log sun sessions.
vitamind-mcp
Connect your AI assistant to Vitamin D Explorer — so it can answer, for your actual location and skin type, whether the sun can make vitamin D right now, how long you'd need, and which months of the year it's possible at all.
Generic advice says "get 15 minutes of sun". That answer is wrong most of the time: skin type I in London and skin type V in Madrid need completely different exposure, and above about 40° latitude there are months where synthesis is physically impossible no matter how long you stay out.
Try it
"I'm in Vilnius, skin type II. Can I make vitamin D today?"
"Which months of the year can I get vitamin D in London?"
"I was out 25 minutes at noon in Madrid, arms and legs bare — how much did I make?"
"When's golden hour in Lisbon on Friday?"
Related MCP server: CoastWise MCP
Install
Most clients can connect to the hosted server directly, with no install at all — see getvitamind.app/connect for per-client steps. Use this package when your client only launches local commands.
The local bridge requires Node.js 24.22.1 or newer.
{
"mcpServers": {
"vitamind": {
"command": "npx",
"args": ["-y", "vitamind-mcp"]
}
}
}That's the whole configuration. No API key, no account.
Tools
Six public tools, no account needed:
Tool | Answers |
| Find a city and its coordinates, in any of the app's six languages |
| Sunrise, sunset, solar noon, civil dawn/dusk, both golden hours, day length |
| The synthesis window for one day: minutes needed, best hour, UV peak |
| The whole year in one call: which months work, which don't |
| Whether right now is a good moment, from live UV and cloud data |
| What a session produced — IU made, and minutes until burning |
Four more read your saved profile, favourite cities and sun history if you sign in
(get_my_profile, get_my_cities, get_my_history, log_sun_session). Those need
OAuth, which this bridge does not implement — connect the account endpoint directly, or:
npx mcp-remote https://getvitamind.app/api/mcp-auth/mcpWhat's behind the numbers
Not a lookup table. Every answer is computed from:
Solar geometry — NOAA declination and elevation formulas.
UV model — Madronich (2007) clear-sky UVI with van Heuklon ozone by latitude, longitude and season, plus an altitude correction (~8% per km — enough to change which months work for a city like Bogotá).
Vitamin D synthesis — Holick & Dowdy (2010), with MED by Fitzpatrick skin type (I-VI) and the Holick (1989) age factor. Sessions saturate: past roughly ⅓ MED you gain little and burn risk rises, and the tools say so.
Live weather — Open-Meteo UV index and cloud cover.
Threshold for any synthesis at all: UV index ≥ 3. Below that the answer is honestly "not today, consider supplementing" rather than a smaller number.
Configuration
| Endpoint to bridge to. Default |
| Same, as an environment variable |
How it works
A stdio↔HTTP relay, and nothing more. It forwards JSON-RPC messages verbatim between your client and the hosted server, so new tools appear without a release here. All the vitamin D logic lives in the hosted server — deliberately, since a second copy of the model in this package would drift from the app that people actually use.
Not medical advice
Estimates for healthy skin under clear-sky or forecast conditions. They ignore aerosols, ground reflectance, sunscreen and individual variation, and they are not a substitute for advice from a professional. Do not use them to plan an intentional burn.
Development checks
Use npm ci --ignore-scripts to install the committed dependency lock. npm test
spawns the CLI with a synthetic upstream through mocked fetch; it opens no TCP
listener and does not contact the hosted service. CI runs these offline contracts
on Ready PRs; drafts run parse and CLI checks.
npm run test:live contacts production. It is available only as an explicit local
command or the live_handshake workflow-dispatch opt-in, never on PR events.
The offline checks do not establish production availability or real UV results.
Links
App: getvitamind.app
Setup guide: getvitamind.app/connect
Main repository: JaviMaligno/vitamind
MIT
Available Tools
10 toolsestimate_sun_sessionA
Estimate a sun session's outcome: 'I was (or will be) out N minutes — how much vitamin D did I make?' plus 'how long before I'd burn?' for the profile. Takes a start time (defaults to the day's best hour) and session minutes; returns estimated IU (with the physiological cap), average UV and clear-sky minutes-to-sunburn. Use for any 'how much did I get / can I get in X minutes' or 'how long without burning' question.
Inputs: lat (required), lon (required), minutes (required), age, +6 more.
get_current_statusA
Whether RIGHT NOW is a good moment for vitamin D synthesis at a location, using live Open-Meteo UV/cloud data when reachable (clear-sky model otherwise): current UV index, minutes needed now, and when today's window opens or closes.
Inputs: lat (required), lon (required), age, skinType, +4 more.
get_my_citiesA
The signed-in user's current city and favorite cities with coordinates and timezones, ready to feed into the public tools. Requires OAuth (scope profile:read).
Inputs: no named parameters.
get_my_historyA
The signed-in user's sun history from the app's calendar: which recent days had viable sun, which they confirmed going outside, and their current streak. Requires OAuth (scope history:read).
Inputs: days.
get_my_profileA
The signed-in user's saved Vitamin D profile: skin type, exposed-skin default, age, target IU and their current city. Requires connecting with OAuth (scope profile:read). Call this FIRST for any personal question, then pass its values to the public tools instead of asking the user.
Inputs: no named parameters.
get_sun_timesA
Sunrise, sunset, solar noon, civil dawn/dusk, morning AND evening golden hour, and day length (with day-over-day trend) for a location and date. Handles midnight sun and polar night. Pure sun times — for vitamin D questions use the vitamin_d tools instead.
Inputs: lat (required), lon (required), date, timezone.
get_vitamin_d_windowA
The solar vitamin D synthesis window for ONE specific day at a location, for a personal profile: when UV is strong enough (index ≥ 3), the best hour, the clear-sky minutes needed to reach the target IU, and (with atTime) the minutes at the specific hour the user plans to go out. Returns synthesisPossible=false when the sun never gets high enough that day. Only for single-day questions — for months, seasons or 'when during the year', call get_vitamin_d_year instead of calling this once per date.
Inputs: lat (required), lon (required), age, date, +6 more.
get_vitamin_d_yearA
The WHOLE YEAR of solar vitamin D for a location in a single call. monthsWithSun lists every month with at least one viable day (season edges count as partial months, see byMonth[].viableDays); solidMonths lists months where most days work; exactViableSpan gives the exact season boundaries; summary carries per-year aggregates for comparing places. Use this for any question about months, seasons, winter/summer or 'when during the year can I…' — never probe individual dates with get_vitamin_d_window for that.
Inputs: lat (required), lon (required), age, skinType, +4 more.
log_sun_sessionA
Marks a day as sun-confirmed in the signed-in user's history calendar — use when the user says they went (or will have gone) outside for their sun. Defaults to today. Requires OAuth (scope history:write).
Inputs: date, minutes.
search_cityA
Find a city in the app's database by name (any of the app's six languages works) and get its coordinates, IANA timezone and elevation — feed those into the other tools.
Inputs: query (required).
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 10 tools
Each tool targets a distinct function: city lookup, sun times, vitamin D windows (daily/annual), current status, session estimation, and user profile/history. Descriptions explicitly differentiate overlapping areas (e.g., 'for vitamin D questions use the vitamin_d tools instead'). No ambiguity.
All tool names follow a consistent verb_noun pattern using snake_case: get_my_cities, search_city, get_sun_times, get_vitamin_d_window, get_vitamin_d_year, get_current_status, estimate_sun_session, get_my_profile, get_my_history, log_sun_session. Predictable and clear.
10 tools is well-suited for the domain. The set covers location setup, sun data, vitamin D planning across timescales, current status, session estimation, and user management. No unnecessary tools, and the scope is focused.
The tool surface is comprehensive for vitamin D assistance: city search, sun times, daily/yearly vitamin D windows, current status, session estimation, and user profile/history. Minor gaps exist (no profile update or data deletion), but core workflows are covered.
Maintenance
Related MCP Connectors
Vitamin D synthesis calculator: sun position, UV, IU/min, time to dose, sunburn risk, daily window.
Know when the sun can make vitamin D where you are, for your skin type. Live UV data.
Elevation-corrected sun, moon, twilight, solar and tide data for any point on Earth
Today's UV Index forecast by US ZIP code or city, with hourly peak and UV Alert, from EPA and NWS.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables users to calculate chronotype-aligned sleep schedules, optimize 90-minute ultradian cycles, determine caffeine cutoffs, and plan light exposure for better recovery and circadian alignment.7-
- AlicenseAqualityBmaintenanceEnables users to check whether a beach suits a beach day or a surf session today or up to six days ahead, using Open-Meteo weather and marine forecasts scored by deterministic, documented rules. It exposes tools for raw hourly forecast data, suitability scores and verdicts by activity and skill level, and finding the best multi-hour window within a day.4MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables users to model cumulative sleep deficits, estimate cognitive impairment using Van Dongen PVT kinetics, audit social jetlag, and generate circadian-safe gradual sleep repayment schedules.MIT
- AlicenseNot gradedqualityNot gradedmaintenanceEnables users to estimate fasting metabolic phases, BHB ketone kinetics, autophagy activation scores, and optimal circadian eating windows from fasting duration and sleep constraints.MIT