Koskamo

Sunvane Golden Hour MCP

Provides local sun times, photography light windows, sunrise/sunset, golden hour, blue hour, and twilight times for cities and dates. Supports planning up to 31 days of photography windows with calendar and CSV downloads, and comparing day length between dates.

Endpoint and access

No sign-in to connect and list tools. Individual tools may still need a vendor account, credentials, or permissions; check the documented prerequisites.

Sunvane Golden Hour MCP logo, by ZovoCommunity listingStreamable HTTPNo sign-inEndpoint checked 2026-11-01Published by Zovo
MCP endpoint (Streamable HTTP)
https://golden-hour.zovo.one/mcp
Vendor documentation

What you can do with it

  • Calculate golden hour times for a specific city and date
  • Plan evening shoots for multiple days with CSV download
  • Compare day length differences between two dates

Source and maintenance

Community listingRegistry 1.0.0

Protocol and capabilities

Server
golden-hour 1.0.0
MCP protocol
2025-06-18
Tools
3 advertised
Resources
1 advertised
Resource templates
1 advertised
Prompts
Not advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": true
  },
  "resources": {
    "listChanged": true
  }
}

Server-provided instructions

Untrusted server output shown for inspection. It is not Koskamo guidance and is excluded from knowledge search.

Calculate local sun and photography light times for cities. Include the matched city, IANA zone, definitions and polar absence. Pass user dates; if no date is given, use the current date in America/New_York and state that default. Calendar exports are downloadable files; they do not change a calendar.

Tools

3 advertised

find_sun_times — Find sun times
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks for a golden hour calculator, golden hour time, sunrise sunset times, sunset time today, what time is golden hour, blue hour, sunrise time, or twilight times for a city and local date. Returns local sunrise, sunset, solar noon, day length, twilight, light windows and sun azimuth. Limits: cities with population 50,000+ (plus Tromso), dates 1900–2100, flat sea-level horizon; Does not model weather or terrain.

find_sun_times input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "city",
    "date"
  ],
  "properties": {
    "city": {
      "type": "string",
      "maxLength": 100,
      "description": "City name, for example New York. Cities with population 50,000+ are supported; the largest same-name match is used."
    },
    "date": {
      "type": "string",
      "maxLength": 10,
      "description": "Local calendar date, YYYY-MM-DD, from 1900 to 2100; for example 2026-06-21."
    },
    "state": {
      "type": "string",
      "maxLength": 40,
      "description": "Optional US state name or abbreviation, for example NY or New York."
    },
    "country": {
      "type": "string",
      "maxLength": 60,
      "description": "Optional country name or two-letter code to narrow the match, for example US."
    }
  }
}
find_sun_times output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "mode",
    "location",
    "definitions",
    "limitations",
    "request"
  ],
  "properties": {
    "blue": {
      "type": "array",
      "items": {}
    },
    "date": {
      "type": "string"
    },
    "days": {
      "type": "number"
    },
    "mode": {
      "enum": [
        "sun",
        "plan",
        "compare"
      ],
      "type": "string"
    },
    "civil": {},
    "golden": {
      "type": "array",
      "items": {}
    },
    "period": {
      "type": "string"
    },
    "sunset": {},
    "values": {
      "type": "array",
      "items": {}
    },
    "changes": {
      "type": "array",
      "items": {}
    },
    "preview": {
      "type": "array",
      "items": {}
    },
    "request": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "sunrise": {},
    "location": {
      "type": "object",
      "required": [
        "city",
        "timeZone",
        "otherMatches",
        "otherMatchCount"
      ],
      "properties": {
        "city": {
          "type": "string"
        },
        "timeZone": {
          "type": "string"
        },
        "otherMatches": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "otherMatchCount": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "nautical": {},
    "timeZone": {
      "type": "string"
    },
    "dayLength": {
      "type": "string"
    },
    "dayStatus": {
      "type": "string"
    },
    "downloads": {
      "type": "object",
      "required": [
        "ics",
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        },
        "ics": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "solarNoon": {},
    "startDate": {
      "type": "string"
    },
    "eventCount": {
      "type": "number"
    },
    "definitions": {
      "type": "string"
    },
    "limitations": {
      "type": "string"
    },
    "astronomical": {},
    "sunsetAzimuth": {
      "type": [
        "number",
        "null"
      ]
    },
    "sunriseAzimuth": {
      "type": [
        "number",
        "null"
      ]
    },
    "dayLengthSeconds": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
find_sun_times annotations
{
  "title": "Find sun times",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
plan_golden_hour_shoot — Plan golden hour shoot
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user wants photography golden hour shoot windows for a city and a date range, with an ICS calendar file and CSV table. Choose morning, evening or both. Limits: 1–31 days, cities with population 50,000+ (plus Tromso), years 1900–2100, flat sea-level horizon; missing polar windows are reported and calendar events are only included for existing windows. Does not access or change a calendar.

plan_golden_hour_shoot input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "city",
    "start_date",
    "days",
    "period"
  ],
  "properties": {
    "city": {
      "type": "string",
      "maxLength": 100,
      "description": "City name, for example New York. Cities with population 50,000+ are supported; the largest same-name match is used."
    },
    "days": {
      "type": "integer",
      "maximum": 31,
      "minimum": 1,
      "description": "Number of consecutive days, 1 to 31, for example 7."
    },
    "state": {
      "type": "string",
      "maxLength": 40,
      "description": "Optional US state name or abbreviation, for example NY or New York."
    },
    "period": {
      "enum": [
        "morning",
        "evening",
        "both"
      ],
      "type": "string",
      "description": "Light windows to include, for example evening. A continuous window includes both periods."
    },
    "country": {
      "type": "string",
      "maxLength": 60,
      "description": "Optional country name or two-letter code to narrow the match, for example US."
    },
    "start_date": {
      "type": "string",
      "maxLength": 10,
      "description": "First local date in YYYY-MM-DD, for example 2026-10-12."
    }
  }
}
plan_golden_hour_shoot output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "mode",
    "location",
    "definitions",
    "limitations",
    "request"
  ],
  "properties": {
    "blue": {
      "type": "array",
      "items": {}
    },
    "date": {
      "type": "string"
    },
    "days": {
      "type": "number"
    },
    "mode": {
      "enum": [
        "sun",
        "plan",
        "compare"
      ],
      "type": "string"
    },
    "civil": {},
    "golden": {
      "type": "array",
      "items": {}
    },
    "period": {
      "type": "string"
    },
    "sunset": {},
    "values": {
      "type": "array",
      "items": {}
    },
    "changes": {
      "type": "array",
      "items": {}
    },
    "preview": {
      "type": "array",
      "items": {}
    },
    "request": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "sunrise": {},
    "location": {
      "type": "object",
      "required": [
        "city",
        "timeZone",
        "otherMatches",
        "otherMatchCount"
      ],
      "properties": {
        "city": {
          "type": "string"
        },
        "timeZone": {
          "type": "string"
        },
        "otherMatches": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "otherMatchCount": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "nautical": {},
    "timeZone": {
      "type": "string"
    },
    "dayLength": {
      "type": "string"
    },
    "dayStatus": {
      "type": "string"
    },
    "downloads": {
      "type": "object",
      "required": [
        "ics",
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        },
        "ics": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "solarNoon": {},
    "startDate": {
      "type": "string"
    },
    "eventCount": {
      "type": "number"
    },
    "definitions": {
      "type": "string"
    },
    "limitations": {
      "type": "string"
    },
    "astronomical": {},
    "sunsetAzimuth": {
      "type": [
        "number",
        "null"
      ]
    },
    "sunriseAzimuth": {
      "type": [
        "number",
        "null"
      ]
    },
    "dayLengthSeconds": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
plan_golden_hour_shoot annotations
{
  "title": "Plan golden hour shoot",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}
compare_day_length — Compare day length
Advertised by the server during the last successful anonymous check.
Advertised read-only

Use this when the user asks for day length differences and average change per day between two local dates, or the solstices and equinoxes of a year. Returns daylight duration for each date and signed changes. Limits: cities with population 50,000+ (plus Tromso), dates/years 1900–2100, flat sea-level horizon; use either date_a and date_b or year, and not both. Does not forecast weather.

compare_day_length input schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "city"
  ],
  "properties": {
    "city": {
      "type": "string",
      "maxLength": 100,
      "description": "City name, for example New York. Cities with population 50,000+ are supported; the largest same-name match is used."
    },
    "year": {
      "type": "integer",
      "maximum": 2100,
      "minimum": 1900,
      "description": "Year whose equinox and solstice local dates to compare, for example 2026. Omit date_a/date_b."
    },
    "state": {
      "type": "string",
      "maxLength": 40,
      "description": "Optional US state name or abbreviation, for example NY or New York."
    },
    "date_a": {
      "type": "string",
      "maxLength": 10,
      "description": "First local date for a two-date comparison, for example 2026-03-20. Required with date_b; omit with year."
    },
    "date_b": {
      "type": "string",
      "maxLength": 10,
      "description": "Second local date, for example 2026-06-21. Required with date_a; omit with year."
    },
    "country": {
      "type": "string",
      "maxLength": 60,
      "description": "Optional country name or two-letter code to narrow the match, for example US."
    }
  }
}
compare_day_length output schema
{
  "type": "object",
  "$schema": "http://json-schema.org/draft-07/schema#",
  "required": [
    "mode",
    "location",
    "definitions",
    "limitations",
    "request"
  ],
  "properties": {
    "blue": {
      "type": "array",
      "items": {}
    },
    "date": {
      "type": "string"
    },
    "days": {
      "type": "number"
    },
    "mode": {
      "enum": [
        "sun",
        "plan",
        "compare"
      ],
      "type": "string"
    },
    "civil": {},
    "golden": {
      "type": "array",
      "items": {}
    },
    "period": {
      "type": "string"
    },
    "sunset": {},
    "values": {
      "type": "array",
      "items": {}
    },
    "changes": {
      "type": "array",
      "items": {}
    },
    "preview": {
      "type": "array",
      "items": {}
    },
    "request": {
      "type": "object",
      "propertyNames": {
        "type": "string"
      },
      "additionalProperties": {}
    },
    "sunrise": {},
    "location": {
      "type": "object",
      "required": [
        "city",
        "timeZone",
        "otherMatches",
        "otherMatchCount"
      ],
      "properties": {
        "city": {
          "type": "string"
        },
        "timeZone": {
          "type": "string"
        },
        "otherMatches": {
          "type": "array",
          "items": {
            "type": "string"
          }
        },
        "otherMatchCount": {
          "type": "number"
        }
      },
      "additionalProperties": false
    },
    "nautical": {},
    "timeZone": {
      "type": "string"
    },
    "dayLength": {
      "type": "string"
    },
    "dayStatus": {
      "type": "string"
    },
    "downloads": {
      "type": "object",
      "required": [
        "ics",
        "csv"
      ],
      "properties": {
        "csv": {
          "type": "string"
        },
        "ics": {
          "type": "string"
        }
      },
      "additionalProperties": false
    },
    "solarNoon": {},
    "startDate": {
      "type": "string"
    },
    "eventCount": {
      "type": "number"
    },
    "definitions": {
      "type": "string"
    },
    "limitations": {
      "type": "string"
    },
    "astronomical": {},
    "sunsetAzimuth": {
      "type": [
        "number",
        "null"
      ]
    },
    "sunriseAzimuth": {
      "type": [
        "number",
        "null"
      ]
    },
    "dayLengthSeconds": {
      "type": "number"
    }
  },
  "additionalProperties": false
}
compare_day_length annotations
{
  "title": "Compare day length",
  "readOnlyHint": true,
  "openWorldHint": false,
  "destructiveHint": false
}

Prompts

Not advertised

No prompt definitions available.

Resources

1 advertised

golden-hour-widget — Sunvane Golden Hour view

Advertised by the server during the last successful anonymous check.

Interactive view for Sunvane Golden Hour.

golden-hour-widget URI
ui://widget/golden-hour-v3-1.0.0-0cdcf822c109b610a073547f7eb0ac9ce2eaf7ef6dfc8ed802c96b3e94110d3d.html

MIME type: text/html;profile=mcp-app

golden-hour-widget-legacy — Sunvane Golden Hour view (previous versions)

Advertised by the server during the last successful anonymous check.

golden-hour-widget-legacy URI template
ui://widget/golden-hour-{version}.html

MIME type: text/html;profile=mcp-app

30-day availability

Aggregated from read-only remote checks; this is not a tool-execution or security guarantee.

Successful checks
1 of 1 (100%)
Average latency
882 ms
95th percentile latency
882 ms

Maintenance history

Public check and source-refresh events. Editorial and ownership records remain private.

  • · probe · passed · 882 ms · metadata changed · 3 tool(s), 1 resource(s), 1 resource template(s)

Connect from your client

Each snippet registers the same endpoint; pick the client you use.

This server is operated by the named third party. Listing and endpoint checks are not an endorsement or a security audit. Review the operator's permissions, terms, and data handling before connecting. How listings are checked and corrected.

Claude Code

Run this once in a terminal. It registers the remote server. Use --scope project to write .mcp.json for the repo.
Claude Code configuration
claude mcp add --transport http sunvane-golden-hour-mcp https://golden-hour.zovo.one/mcp

Codex

Run this once. Codex stores MCP servers in ~/.codex/config.toml (or .codex/config.toml in a trusted project).
Codex configuration
codex mcp add sunvane-golden-hour-mcp --url https://golden-hour.zovo.one/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable sunvane-golden-hour-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "sunvane-golden-hour-mcp": {
      "url": "https://golden-hour.zovo.one/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "sunvane-golden-hour-mcp": {
      "type": "streamableHttp",
      "url": "https://golden-hour.zovo.one/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start sunvane-golden-hour-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "sunvane-golden-hour-mcp": {
      "type": "http",
      "url": "https://golden-hour.zovo.one/mcp"
    }
  }
}

Gemini CLI

Run this once. It writes .gemini/settings.json in the current project; pass --scope user for ~/.gemini/settings.json.
Gemini CLI configuration
gemini mcp add --transport http sunvane-golden-hour-mcp https://golden-hour.zovo.one/mcp

Claude Desktop

Merge this into claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\), then restart Claude Desktop.
Claude Desktop configuration
{
  "mcpServers": {
    "sunvane-golden-hour-mcp": {
      "url": "https://golden-hour.zovo.one/mcp"
    }
  }
}

Windsurf

Merge this into ~/.codeium/windsurf/mcp_config.json, then refresh MCP in Cascade. Windsurf remote servers use serverUrl, not url.
Windsurf configuration
{
  "mcpServers": {
    "sunvane-golden-hour-mcp": {
      "serverUrl": "https://golden-hour.zovo.one/mcp"
    }
  }
}

Let your agent find its tools

Find servers like Sunvane Golden Hour MCP from your agent. Add Koskamo once to search the index for endpoints, access requirements, and client setup. Public discovery needs no key.