D Fetcher

Vitamin D synthesis calculator: sun position, UV, IU/min, time to dose, sunburn risk, daily window.

Should I use this

Quality & Safety

A
Description quality
100%
Schema completeness
77%
Naming quality
87%
Poisoning risk
100%
Permission match
100%
Protocol compliance
100%

Based on automated analysis of tool definitions and protocol compliance.

Context Cost

~618Tokens (tool definitions)
~1.4 KBTypical response size
Minimal attention impact (0.48% of 128k context)

This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.

Install

One-Click Install

Add this to your `claude_desktop_config.json` file:

{
  "mcpServers": {
    "vitamin-d": {
      "url": "https://dfetcher.com/mcp"
    }
  }
}

Remote endpoints

https://dfetcher.com/mcpstreamable-http

What it can do

Tool inventory

Tools (3)

🟢 Read-only🟡 Write🔴 Delete⚪ Unknown
🔴calculate(lat, lon, skin, area, scalp, ...)

Calculate vitamin D synthesis at a given location and time. Returns sun position, UV index, IU/min, minutes to reach the target dose, MED (sunburn threshold), the peak window, and optional 15-min day / monthly year curves. UV index uses a live satellite-driven forecast where available, with a clear-sky fallback.

Input Schema

{
  "type": "object",
  "properties": {
    "lat": {
      "type": "number",
      "minimum": -90,
      "maximum": 90,
      "description": "Latitude in degrees."
    },
    "lon": {
      "type": "number",
      "minimum": -180,
      "maximum": 180,
      "description": "Longitude in degrees."
    },
    "skin": {
      "type": "integer",
      "minimum": 1,
      "maximum": 6,
      "default": 3,
      "description": "Fitzpatrick skin type 1–6. Use describe_skin_types if unknown."
    },
    "area": {
      "type": "number",
      "minimum": 0,
      "maximum": 1,
      "default": 0.25,
      "description": "Exposed body fraction. 0.10 face+hands, 0.25 arms+face, 0.40 t-shirt+shorts, 0.85 near-full body."
    },
    "scalp": {
      "type": "string",
      "enum": [
        "hair",
        "bald"
      ],
      "default": "hair",
      "description": "Scalp coverage. \"bald\" adds ~3.5% BSA."
    },
    "age": {
      "type": "integer",
      "minimum": 1,
      "maximum": 120,
      "default": 45,
      "description": "Age in years (used for the age factor)."
    },
    "target": {
      "type": "integer",
      "minimum": 100,
      "maximum": 50000,
      "default": 1000,
      "description": "Daily vitamin D target in IU."
    },
    "date": {
      "type": "string",
      "description": "ISO 8601 timestamp or epoch ms. Defaults to now."
    },
    "day": {
      "type": "boolean",
      "default": true,
      "description": "Include 15-min samples through the local day."
    },
    "year": {
      "type": "boolean",
      "default": true,
      "description": "Include monthly solar-noon samples with cloud climatology."
    }
  },
  "required": [
    "lat",
    "lon"
  ]
}
🟢geocode(query)

Turn a place name, postal code, or "code, CC" string into { lat, lon, label }. Auto-detects US/CA/GB/NL/JP/BR postal patterns; ambiguous digit-only codes default to US unless the caller appends a country code (e.g. "10115, DE"). Falls back to Open-Meteo place-name search for everything else.

Input Schema

{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 1,
      "description": "City name, postal code, or \"CODE, CC\" (e.g. \"75001, FR\")."
    }
  },
  "required": [
    "query"
  ]
}
🟢describe_skin_types

Returns the six Fitzpatrick skin types with sun-reactivity behavior and descriptive ancestry hints. Call this when the user's skin type is unknown so you can pick the closest match before calling calculate.

Input Schema

{
  "type": "object",
  "properties": {}
}

Community

Rate this Server

Evidence

Recent observations

verifiedversion not recorded3 tools
verifiedversion not recorded3 tools
verifiedversion not recorded3 tools