Koskamo

Vigi-Sky MCP

An MCP server providing AI agents with tools to query live ISS and aurora data, identify celestial objects like planets and satellites, access historical Hatch UDB archives, retrieve NASA APOD/NEO data, and view cultural astronomy content from 'Ciel des peuples'. It also supports submitting and managing citizen science sighting reports with coordinate rounding for privacy.

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.

Vigi-Sky MCP logo, by Vigi-SkyVendor evidenceStreamable HTTPNo sign-inEndpoint checked 2026-11-06Operated by Vigi-Sky
MCP endpoint (Streamable HTTP)
https://vigi-sky.fr/mcp
Vendor documentation

What its tools do

29 tools, grouped by the hints the server advertises. Hints are self-declared, not verified behavior.

29 of 29 have a description · 29 of 29 declare behavior hints · 22 of 22 with parameters document them all

Checks and signals

Each line is separate evidence, not a trust score.

  • Passed Endpoint answered the live check ·
  • Passed Official MCP Registry namespace is tied to vigi-sky.fr ·
  • Passed Endpoint is on the registry namespace domain ·
  • Warning Advertises resources/templates/list but does not implement it
  • Availability 1 of 1 checks passed in 30 days

What you can do with it

  • Query live ISS and aurora data
  • Identify celestial objects like planets and satellites
  • Access historical Hatch UDB archives
  • Submit citizen science sighting reports

Source and maintenance

Vendor evidenceRegistry 2.9.0

Protocol and capabilities

Server
fr.vigi-sky/vigisky 2.9.0
MCP protocol negotiated in check
2025-11-25
Tools
29 advertised
Resources
30 advertised
Resource templates
Not advertised
Prompts
6 advertised
Server-advertised capabilities
{
  "tools": {
    "listChanged": false
  },
  "prompts": {
    "listChanged": false
  },
  "resources": {
    "listChanged": false
  }
}

Server-provided instructions

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

Vigi-Sky is a citizen sky observatory. Never say 'UFO detected'. Hatch UDB is a 1900–2002 imported archive, not live Vigi-Sky cases. In France, official UAP reporting is GEIPAN (CNES). Always include citations from tool output. Static methodology (glossary, PAN, agencies, cases, Sentinel contract) is in resources, not tools. Public consented dossiers = 0; do not confuse the internal inbox with a public corpus.

Tools

29 advertised

doctrine — Vigi-Sky identity and method
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return Vigi-Sky's identity card and method rules: founder, launch date, the book, the 'never UFO detected' rule, and the difference between the imported Hatch archive (18,116 historical cases) and Vigi-Sky's own public case files. Use it before describing Vigi-Sky or explaining its method; its counts are fixed at release, so for current numbers and API health use status, and for a page to cite use cite.

doctrine input schema
{
  "type": "object",
  "properties": {
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    }
  }
}
doctrine output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "entity": {
      "type": "object"
    },
    "summary": {
      "type": "string"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "public_consented_dossiers": {
      "type": "integer"
    }
  },
  "description": "Returns entity, book, summary (in lang), public_consented_dossiers, citations, provenance.",
  "additionalProperties": true
}
doctrine annotations
{
  "title": "Vigi-Sky identity and method",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
cite — Find the Vigi-Sky page to cite
Advertised by the server during the last successful anonymous check.
Advertised read-only

Map a user question to the single best Vigi-Sky page (or the official GEIPAN page for French UFO reports) to cite as a source, with alternatives. Use it when you need a URL to back an answer; it does not answer the question itself, so call the matching tool (aurora, iss_city_passes, what_did_i_see...) for live data. Keyword match over a fixed page catalogue, no network call.

cite input schema
{
  "type": "object",
  "required": [
    "query"
  ],
  "properties": {
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    },
    "query": {
      "type": "string",
      "description": "The user's question or topic, in French or English, e.g. 'aurore boréale en France'."
    }
  }
}
cite output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "best": {
      "type": "object"
    },
    "lang": {
      "type": "string"
    },
    "query": {
      "type": "string"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "alternatives": {
      "type": "array"
    }
  },
  "description": "Returns best {url, title}, alternatives [...], citations, provenance.",
  "additionalProperties": true
}
cite annotations
{
  "title": "Find the Vigi-Sky page to cite",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
aurora — Aurora odds for a latitude
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Return the current geomagnetic Kp index and whether an aurora can be seen from a given latitude, with the Kp needed there (France: Kp 6 in the far north, 7 to 8 in the centre, 9 in the south). Use it for 'can I see the aurora tonight'; for the solar storms behind it (CMEs) use solar, for a full night summary use tonight_sky. Live NOAA SWPC data through the Vigi-Sky API, cached 2 minutes; clouds and light pollution are not modelled.

aurora input schema
{
  "type": "object",
  "required": [
    "lat"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Observer latitude in decimal degrees, WGS84 (north positive)."
    },
    "lng": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    }
  }
}
aurora output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "aurora": {
      "type": "object",
      "properties": {
        "kp_needed": {
          "type": "integer",
          "maximum": 9,
          "minimum": 0
        },
        "kp_current": {
          "type": [
            "number",
            "null"
          ]
        },
        "visible_now": {
          "type": "boolean"
        },
        "user_latitude": {
          "type": "number"
        }
      }
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    }
  },
  "description": "Returns aurora {kp_current, kp_needed, visible_now, user_latitude}, citations, provenance.",
  "additionalProperties": true
}
aurora annotations
{
  "title": "Aurora odds for a latitude",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
iss_passes — Satellite passes over coordinates
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

List the next passes of the ISS and other bright satellites over any latitude/longitude, computed with SGP4 from current orbital elements, ISS first. By default only passes visible to the naked eye (dark sky, satellite lit by the Sun). Use it for arbitrary coordinates; for a named European city with a calendar feed use iss_city_passes, to explain something already seen use what_did_i_see. Orbital elements come from the Vigi-Sky API (cached 10 minutes).

iss_passes input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "lon"
      ]
    },
    {
      "required": [
        "lng"
      ]
    }
  ],
  "required": [
    "lat"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Observer latitude in decimal degrees, WGS84 (north positive)."
    },
    "lng": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    },
    "limit": {
      "type": "integer",
      "default": 3,
      "maximum": 30,
      "minimum": 1,
      "description": "Maximum number of passes to return (1-30, default 3)."
    },
    "night_only": {
      "type": "boolean",
      "default": true,
      "description": "true (default): only passes in a dark sky with the satellite sunlit. false: include daylight passes."
    },
    "include_tle": {
      "type": "boolean",
      "default": false,
      "description": "Also return the two-line orbital elements used for the calculation (default false)."
    }
  }
}
iss_passes output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "passes": {
      "type": "array"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "night_only": {
      "type": "boolean"
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "n_potentially_visible": {
      "type": "integer"
    }
  },
  "description": "Returns passes [{name, start, max_el, az_start, az_max, az_end, end, potentially_visible}], night_only, citations, provenance.",
  "additionalProperties": true
}
iss_passes annotations
{
  "title": "Satellite passes over coordinates",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
identify — Match a precise sighting to a satellite
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Check whether a precisely measured point in the sky (azimuth, elevation and exact time) matches one of about 160 bright satellites and rocket bodies within 2 degrees, also listing planets, the Moon and bright stars within 5 degrees. Use it when the witness measured the direction (compass, phone app); for a vague memory ('a light last night towards the west') use what_did_i_see, for a fixed star or planet use which_star. Returns insufficient_data when orbital elements are older than 72 hours. A match means compatible with the observation, not proven; the tool never says 'UFO detected'.

identify input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "lon"
      ]
    },
    {
      "required": [
        "lng"
      ]
    }
  ],
  "required": [
    "lat",
    "az",
    "el",
    "time"
  ],
  "properties": {
    "az": {
      "type": "number",
      "maximum": 360,
      "minimum": 0,
      "description": "Direction in degrees from true north, clockwise: 0 = north, 90 = east, 180 = south, 270 = west."
    },
    "el": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Height above the horizon in degrees: 0 = horizon, 90 = straight overhead."
    },
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Observer latitude in decimal degrees, WGS84 (north positive)."
    },
    "lng": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    },
    "time": {
      "type": "string",
      "description": "Moment of the observation, ISO-8601 with a time zone, e.g. 2026-11-01T19:30:00Z."
    }
  }
}
identify output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "answer": {
      "enum": [
        "satellite",
        "natural_object",
        "nothing_known",
        "unknown_catalog_stale"
      ],
      "type": "string"
    },
    "matches": {
      "type": "array"
    },
    "verdict": {
      "enum": [
        "compatible",
        "no_catalog_match",
        "insufficient_data"
      ],
      "type": "string"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "best_match": {},
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "separation_deg": {
      "type": [
        "number",
        "null"
      ]
    },
    "rejected_matches": {
      "type": "array"
    },
    "natural_objects_within_5deg": {
      "type": "array"
    }
  },
  "description": "Returns verdict (compatible | no_catalog_match | insufficient_data), answer, best_match, matches, natural_objects_within_5deg, rejected_matches, separation_deg.",
  "additionalProperties": true
}
identify annotations
{
  "title": "Match a precise sighting to a satellite",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
nearby_cases — Historical UFO cases near a place
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

List historical UFO/UAP reports from the Hatch UDB archive (1900-2002, compiled by Larry Hatch) near a point, optionally filtered by country or text. Use it for the history of a region; it is not a live feed of recent sightings (use sky_events) and geocoding is approximate. Read-only query of the Vigi-Sky API; default radius 50 km, 200 km when filtering by country or text.

nearby_cases input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "lon"
      ]
    },
    {
      "required": [
        "lng"
      ]
    }
  ],
  "required": [
    "lat"
  ],
  "properties": {
    "q": {
      "type": "string",
      "description": "Optional text filter on the case summary, e.g. 'cigar' or 'Valensole'."
    },
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Observer latitude in decimal degrees, WGS84 (north positive)."
    },
    "lng": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    },
    "country": {
      "type": "string",
      "description": "Optional country filter as written in the archive, e.g. FRANCE, USA."
    },
    "radius_km": {
      "type": "number",
      "maximum": 20000,
      "description": "Search radius in kilometres (default 50, or 200 with country/q; maximum 20000).",
      "exclusiveMinimum": 0
    }
  }
}
nearby_cases output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "cases": {
      "type": "array"
    },
    "query": {
      "type": "object"
    },
    "archive": {
      "type": "object"
    },
    "returned": {
      "type": "integer"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "not_vigisky_live": {
      "type": "boolean"
    }
  },
  "description": "Returns archive, query, returned, cases [...], not_vigisky_live (always true).",
  "additionalProperties": true
}
nearby_cases annotations
{
  "title": "Historical UFO cases near a place",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
first_skies — Indigenous sky knowledge (Ciel des peuples)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Query Ciel des peuples: how 9 named nations (Diné, Pawnee, Inca, Maya, Mexica, Polynesia...) read the sky, with asterisms, coordinates, sources, and what is attested versus interpreted or kept private. Filter by nation, by a western constellation to compare cultures, by theme, or by free text; give lat to know which objects never rise there. Use it for cultural astronomy; for what is in the sky tonight use tonight_sky. Local curated data, no network call; never uses the generic 'the Indians'.

first_skies input schema
{
  "type": "object",
  "properties": {
    "q": {
      "type": "string",
      "description": "Free-text search over names and captions, e.g. 'pléiades', 'vénus'."
    },
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Optional observer latitude, to flag objects that never rise there."
    },
    "lng": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    },
    "theme": {
      "enum": [
        "calendar",
        "agriculture",
        "navigation",
        "ceremony",
        "winter_protocol",
        "architecture"
      ],
      "type": "string",
      "description": "Restrict to one use of the sky."
    },
    "nation": {
      "type": "string",
      "description": "Nation slug or name, e.g. dine (or navajo), pawnee, inca, maya, mexica, polynesie."
    },
    "western": {
      "type": "string",
      "description": "Western constellation or asterism to compare across nations, e.g. orion, pleiades."
    }
  }
}
first_skies output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "slug": {
      "type": "string"
    },
    "ethics": {
      "type": "string"
    },
    "objects": {
      "type": "array"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "n_nations": {
      "type": "integer"
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    }
  },
  "description": "Returns n_nations or nation detail {slug, objects, sections, ethics}, or search hits.",
  "additionalProperties": true
}
first_skies annotations
{
  "title": "Indigenous sky knowledge (Ciel des peuples)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
tonight_sky — Tonight's sky summary
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

One-call summary of tonight at a place: aurora chances (Kp), the next naked-eye satellite pass and cultural asterisms from Ciel des peuples. Use it for an overview; for details call aurora, iss_passes or first_skies directly, and for a score of observing conditions use observation_conditions. Combines live Vigi-Sky API data; by default ignores daylight passes. Not a UFO forecast.

tonight_sky input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "lon"
      ]
    },
    {
      "required": [
        "lng"
      ]
    }
  ],
  "required": [
    "lat"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Observer latitude in decimal degrees, WGS84 (north positive)."
    },
    "lng": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    },
    "night_only": {
      "type": "boolean",
      "default": true,
      "description": "true (default): only passes in a dark sky. false: include daylight ISS passes."
    }
  }
}
tonight_sky output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "next_pass": {},
    "night_only": {
      "type": "boolean"
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "not_a_ufo_forecast": {
      "type": "boolean"
    },
    "observer_condition": {
      "type": "string"
    },
    "observer_sun_altitude": {
      "type": "number"
    }
  },
  "description": "Returns observer_sun_altitude, observer_condition, next_pass, aurora, asterisms, not_a_ufo_forecast.",
  "additionalProperties": true
}
tonight_sky annotations
{
  "title": "Tonight's sky summary",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
observation_conditions — Observing conditions score
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Return a score of how good the sky is for observing at a latitude right now (night, Moon, quiet Sun). Use it to decide whether to go out; it is not a probability of seeing a UFO. For the Moon alone use moon, for aurora use aurora. Live Vigi-Sky API; clouds are not included.

observation_conditions input schema
{
  "type": "object",
  "required": [
    "lat"
  ],
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Observer latitude in decimal degrees, WGS84 (north positive)."
    },
    "lng": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    }
  }
}
observation_conditions output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "interpretation": {
      "type": "string"
    },
    "not_ufo_probability": {
      "type": "boolean"
    },
    "observation_conditions_score": {
      "type": [
        "number",
        "null"
      ]
    }
  },
  "description": "Returns observation_conditions_score (or null when unavailable), interpretation, not_ufo_probability (always true).",
  "additionalProperties": true
}
observation_conditions annotations
{
  "title": "Observing conditions score",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
solar — Solar activity and CMEs
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Return recent coronal mass ejections (NASA DONKI) and the current Kp index. Use it to explain an aurora alert or space weather; for 'can I see the aurora from here' use aurora, which applies the latitude threshold. Live data through the Vigi-Sky API, cached 5 minutes; degrades to an explicit 'unavailable' when NASA does not answer.

solar input schema
{
  "type": "object",
  "properties": {}
}
solar output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "cme": {
      "type": "object"
    },
    "aurora_kp": {
      "type": "object"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    }
  },
  "description": "Returns cme {...}, aurora_kp {...}, citations, provenance.",
  "additionalProperties": true
}
solar annotations
{
  "title": "Solar activity and CMEs",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
status — Vigi-Sky service status and counts
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Return the health of the Vigi-Sky API, the size of the Hatch archive and the number of public observations. Use it before quoting live counts or when another tool returned an error; for identity and method use doctrine. Live, cached 30 seconds to 2 minutes.

status input schema
{
  "type": "object",
  "properties": {}
}
status output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "mcp_version": {
      "type": "string"
    },
    "availability": {
      "type": "string"
    },
    "public_consented_dossiers": {
      "type": "integer"
    }
  },
  "description": "Returns availability, mcp_version, public_consented_dossiers, counts, citations, provenance.",
  "additionalProperties": true
}
status annotations
{
  "title": "Vigi-Sky service status and counts",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
hatch_stats — Hatch archive statistics
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Return aggregate statistics of the Hatch UFO archive (18,116 cases, 1900-2002): cases by decade and top countries. Use it for the big picture of historical reports; for cases near a place use nearby_cases. Archive data, not 2026 sightings; live read of the Vigi-Sky API.

hatch_stats input schema
{
  "type": "object",
  "properties": {}
}
hatch_stats output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "n": {
      "type": [
        "integer",
        "null"
      ]
    },
    "archive": {
      "type": "string"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "top_countries": {
      "type": "object"
    },
    "by_decade_1900_2002": {
      "type": "object"
    }
  },
  "description": "Returns archive, n, by_decade_1900_2002, top_countries, citations, provenance.",
  "additionalProperties": true
}
hatch_stats annotations
{
  "title": "Hatch archive statistics",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
nasa_apod — NASA Astronomy Picture of the Day
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Return today's NASA Astronomy Picture of the Day (today only, no past dates): title, date, image URL, explanation and credit. Use it to share today's picture; for the Sun's activity use solar, for asteroids near Earth use neo_watch. Says available=false instead of inventing a picture when NASA has not answered. Live NASA API through Vigi-Sky.

nasa_apod input schema
{
  "type": "object",
  "properties": {}
}
nasa_apod output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "apod": {
      "type": "object",
      "properties": {
        "date": {
          "type": [
            "string",
            "null"
          ]
        },
        "title": {
          "type": "string"
        },
        "available": {
          "type": "boolean"
        },
        "copyright": {
          "type": [
            "string",
            "null"
          ]
        },
        "photographer": {
          "type": [
            "string",
            "null"
          ]
        }
      }
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    }
  },
  "description": "Returns apod {title, date, url, explanation, copyright, photographer, available}.",
  "additionalProperties": true
}
nasa_apod annotations
{
  "title": "NASA Astronomy Picture of the Day",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
neo_watch — Asteroids passing Earth today
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

List today's near-Earth asteroid close approaches from NASA NeoWs (size, miss distance, speed, hazard flag). Use it for 'which asteroids pass near Earth today'; to simulate an impact use asteroid_impact. Astronomy, not UAP; live NASA data through Vigi-Sky.

neo_watch input schema
{
  "type": "object",
  "properties": {}
}
neo_watch output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "neo": {
      "type": "object"
    },
    "note": {
      "type": "string"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    }
  },
  "description": "Returns neo {...}, note, citations, provenance.",
  "additionalProperties": true
}
neo_watch annotations
{
  "title": "Asteroids passing Earth today",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
capabilities — Map of Vigi-Sky MCP servers
Advertised by the server during the last successful anonymous check.
Advertised read-only

Describe what this public server offers and what the separate local server (VigiSky Sentinel, 23 tools, runs on the user's PC) adds: photo and video analysis, night watch, star-field solving. Use it when a task needs local files or a camera, which this server cannot access; for sky questions this server answers directly, call the matching tool (what_did_i_see, iss_city_passes, aurora...). Static description, no network call.

capabilities input schema
{
  "type": "object",
  "properties": {}
}
capabilities output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "this_server": {
      "type": "object"
    },
    "local_server": {
      "type": "object"
    }
  },
  "description": "Returns this_server {n_tools, tools}, local_server {workflows, install}.",
  "additionalProperties": true
}
capabilities annotations
{
  "title": "Map of Vigi-Sky MCP servers",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
iss_city_passes — ISS passes over a city
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Give the next naked-eye passes of the ISS (and Tiangong) over one of 41 French, Belgian, Swiss, UK and Irish cities, with local times, directions and a calendar feed whose alarm rings 10 minutes before each pass. Use it when the user names a city or wants an alert; for any other coordinates use iss_passes. Passes are precomputed every few hours by Vigi-Sky; with lat/lon the nearest covered city is used.

iss_city_passes input schema
{
  "type": "object",
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Observer latitude in decimal degrees, WGS84 (north positive)."
    },
    "lng": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "city": {
      "type": "string",
      "description": "City name, e.g. Lyon, Bruxelles, Genève, London, Dublin. Omit it to use lat/lon instead."
    },
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    }
  }
}
iss_city_passes output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "city": {
      "type": "string"
    },
    "page": {
      "type": "string"
    },
    "passes": {
      "type": "array"
    },
    "available": {
      "type": "boolean"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "calendar_ics": {
      "type": "string"
    }
  },
  "description": "Returns city, passes [{when, start, end, max_el, from, highest, to, duration_min}], page, calendar_ics, available.",
  "additionalProperties": true
}
iss_city_passes annotations
{
  "title": "ISS passes over a city",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
what_did_i_see — Explain a light seen in the sky
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Explain a light someone saw, even days later: compares place and time with the ISS, Tiangong, about 160 bright satellites, planets, the Moon and bright stars, and ranks the compatible candidates. Use it for an imprecise memory; with a measured azimuth and elevation use identify, for a steady point use which_star. Window ±12 minutes, up to 10 days back and 2 days ahead; aircraft, drones, lanterns and meteors are not modelled. A match means compatible with the observation, not proven; the tool never says 'UFO detected'.

what_did_i_see input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "lon"
      ]
    },
    {
      "required": [
        "lng"
      ]
    }
  ],
  "required": [
    "lat",
    "time"
  ],
  "properties": {
    "az": {
      "type": "number",
      "maximum": 360,
      "minimum": 0,
      "description": "Optional rough direction in degrees from north (90 = east). Improves the ranking."
    },
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Observer latitude in decimal degrees, WGS84 (north positive)."
    },
    "lng": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    },
    "time": {
      "type": "string",
      "description": "When it was seen, ISO-8601 with a time zone. Up to 10 days in the past or 2 days ahead."
    },
    "moving": {
      "type": "boolean",
      "description": "Optional: true if it moved across the sky, false if it stayed still. Excludes the other family of objects."
    }
  }
}
what_did_i_see output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "best": {},
    "others": {
      "type": "array"
    },
    "verdict": {
      "enum": [
        "compatible",
        "nothing_bright_known",
        "unavailable"
      ],
      "type": "string"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    }
  },
  "description": "Returns verdict (compatible | nothing_bright_known | unavailable), best, others, asked.",
  "additionalProperties": true
}
what_did_i_see annotations
{
  "title": "Explain a light seen in the sky",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
which_star — Name a star or planet
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

Name the bright star, planet or Moon closest to a direction (azimuth, elevation) at a place and time, within 15 degrees. Use it for a steady point of light; for something that moved use what_did_i_see, for a precise satellite match use identify. Bright objects only (about magnitude 1.5 or brighter); refraction near the horizon is not modelled.

which_star input schema
{
  "type": "object",
  "anyOf": [
    {
      "required": [
        "lon"
      ]
    },
    {
      "required": [
        "lng"
      ]
    }
  ],
  "required": [
    "lat",
    "az",
    "el"
  ],
  "properties": {
    "az": {
      "type": "number",
      "maximum": 360,
      "minimum": 0,
      "description": "Direction in degrees from true north, clockwise: 0 = north, 90 = east, 180 = south, 270 = west."
    },
    "el": {
      "type": "number",
      "maximum": 90,
      "minimum": 0,
      "description": "Height above the horizon in degrees: 0 = horizon, 90 = straight overhead."
    },
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Observer latitude in decimal degrees, WGS84 (north positive)."
    },
    "lng": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    },
    "time": {
      "type": "string",
      "description": "Moment of the observation, ISO-8601 (default now)."
    }
  }
}
which_star output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "best": {},
    "others": {
      "type": "array"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    }
  },
  "description": "Returns best {name, kind, az, el, separation_deg}, others [...], asked, note.",
  "additionalProperties": true
}
which_star annotations
{
  "title": "Name a star or planet",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
sky_events — Recent and upcoming sky events
Advertised by the server during the last successful anonymous check.
Advertised read-onlyOpen-world

List Vigi-Sky's sky events: predicted bright ISS passes and Starlink trains for the next 48 hours, and clusters of witness reports with the explanation tested against them (compatible / contradicted / untestable / under review). Use it for 'what happened or will happen in the sky'; for one city's passes use iss_city_passes, for one past sighting use what_did_i_see. Public data only, no personal information.

sky_events input schema
{
  "type": "object",
  "properties": {
    "kind": {
      "enum": [
        "prevu",
        "signale"
      ],
      "type": "string",
      "description": "prevu = predicted passes only, signale = reported lights only; omit for both."
    },
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    },
    "limit": {
      "type": "integer",
      "default": 10,
      "maximum": 30,
      "minimum": 1,
      "description": "Maximum number of events (1-30, default 10)."
    }
  }
}
sky_events output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "events": {
      "type": "array"
    },
    "available": {
      "type": "boolean"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    }
  },
  "description": "Returns events [{id, kind, t_start, verdict, url, ...}], available.",
  "additionalProperties": true
}
sky_events annotations
{
  "title": "Recent and upcoming sky events",
  "readOnlyHint": true,
  "openWorldHint": true,
  "idempotentHint": true,
  "destructiveHint": false
}
moon — Moon phase
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return the Moon's phase and illuminated percentage at a time (default now), the next full and new Moon, and what it means for observing faint objects. Use it for Moon questions; for an overall observing score use observation_conditions. Computed locally (Meeus), within about 0.5 hour of JPL ephemerides; no network call.

moon input schema
{
  "type": "object",
  "properties": {
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    },
    "time": {
      "type": "string",
      "description": "Moment to compute, ISO-8601 (default now). Years 1900-2200."
    }
  }
}
moon output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "phase": {
      "type": "string"
    },
    "waxing": {
      "type": "boolean"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "illumination_pct": {
      "type": "integer",
      "maximum": 100,
      "minimum": 0
    },
    "next_full_moon_utc": {
      "type": "string"
    }
  },
  "description": "Returns time_utc, phase (phase_fr, phase_en), illumination_pct, waxing, elongation_deg, next_full_moon_utc, next_new_moon_utc, observing advice.",
  "additionalProperties": true
}
moon annotations
{
  "title": "Moon phase",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
triangulate — Height of an object seen by several witnesses
Advertised by the server during the last successful anonymous check.
Advertised read-only

Estimate the height and distance of one object seen at the same moment by 2 to 6 witnesses, from each witness's position and line of sight, with a height range covering typical compass errors. Use it only when several people measured the same object at the same time; for a single witness use identify or what_did_i_see. Local geometry, no network call; the result is a candidate, never a proof.

triangulate input schema
{
  "type": "object",
  "required": [
    "sightings"
  ],
  "properties": {
    "sightings": {
      "type": "array",
      "items": {
        "type": "object",
        "required": [
          "lat",
          "lon",
          "az",
          "el"
        ],
        "properties": {
          "az": {
            "type": "number",
            "maximum": 360,
            "minimum": 0
          },
          "el": {
            "type": "number",
            "maximum": 90,
            "minimum": 0
          },
          "lat": {
            "type": "number",
            "maximum": 90,
            "minimum": -90
          },
          "lon": {
            "type": "number",
            "maximum": 180,
            "minimum": -180
          }
        }
      },
      "maxItems": 6,
      "minItems": 2,
      "description": "2 to 6 sightings, each {lat, lon, az, el}: witness position and measured direction of the object."
    }
  }
}
triangulate output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "status": {
      "enum": [
        "candidate",
        "baseline_too_short",
        "no_intersection"
      ],
      "type": "string"
    },
    "quality": {
      "type": "string"
    },
    "height_m": {
      "type": "integer"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    }
  },
  "description": "Returns status (candidate | baseline_too_short | no_intersection), height_m, height_range_m_if_sightings_off_by_2deg, distance_from_witnesses_m, quality, interpretation.",
  "additionalProperties": true
}
triangulate annotations
{
  "title": "Height of an object seen by several witnesses",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
eclipse_2027 — 2 August 2027 total solar eclipse at a place
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compute the total solar eclipse of 2 August 2027 at a place: total or partial, magnitude, contact times in local time, duration of totality and Sun height. Use it for that eclipse only: total from Spain and Morocco to Egypt, Saudi Arabia and Yemen, partial over Europe. Give a city (830 known) or coordinates. Computed locally, no network call.

eclipse_2027 input schema
{
  "type": "object",
  "properties": {
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Observer latitude in decimal degrees, WGS84 (north positive)."
    },
    "lng": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Observer longitude in decimal degrees, WGS84 (east positive). lon and lng are aliases: give one."
    },
    "city": {
      "type": "string",
      "description": "City name, e.g. Louxor, Cadix, Tanger, Paris. Omit it to use lat/lon."
    },
    "lang": {
      "enum": [
        "fr",
        "en"
      ],
      "type": "string",
      "description": "Language of the text fields: fr (default) or en."
    }
  }
}
eclipse_2027 output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "magnitude": {
      "type": "number"
    },
    "type_here": {
      "enum": [
        "totale",
        "partielle",
        "aucune"
      ],
      "type": "string"
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "visible_verdict": {
      "type": "string"
    }
  },
  "description": "Returns place, country, type_here (totale | partielle | aucune), magnitude, obscuration_pct, first_contact, totality_start, maximum, totality_end, last_contact, totality_s, sun_at_maximum, visible_verdict, safety.",
  "additionalProperties": true
}
eclipse_2027 annotations
{
  "title": "2 August 2027 total solar eclipse at a place",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
asteroid_impact — Asteroid impact simulator
Advertised by the server during the last successful anonymous check.
Advertised read-only

Simulate an asteroid impact: energy, air burst or crater, radii of blast, heat and earthquake effects, effects felt at a chosen distance, and how often such an object hits Earth (Collins, Melosh & Marcus 2005). Use it for 'what if' questions; for real asteroids passing today use neo_watch. Local model, no network call.

asteroid_impact input schema
{
  "type": "object",
  "properties": {
    "preset": {
      "enum": [
        "tcheliabinsk",
        "toungouska",
        "apophis",
        "chicxulub"
      ],
      "type": "string",
      "description": "Known event that fills the parameters: tcheliabinsk (2013), toungouska (1908), apophis, chicxulub."
    },
    "angle_deg": {
      "type": "number",
      "default": 45,
      "maximum": 90,
      "minimum": 5,
      "description": "Entry angle from the horizontal in degrees (5-90, default 45)."
    },
    "diameter_m": {
      "type": "number",
      "maximum": 30000,
      "minimum": 1,
      "description": "Asteroid diameter in metres (1-30000). Required unless a preset is given."
    },
    "distance_km": {
      "type": "number",
      "maximum": 20000,
      "minimum": 0.1,
      "description": "Effects felt at this distance from impact"
    },
    "density_kg_m3": {
      "type": "number",
      "default": 3000,
      "maximum": 8000,
      "minimum": 1000,
      "description": "Density in kg/m³: 1500 cometary ice, 3000 stony rock (default), 8000 iron."
    },
    "velocity_km_s": {
      "type": "number",
      "default": 20,
      "maximum": 72,
      "minimum": 11,
      "description": "Entry speed in km/s (11-72, default 20)."
    }
  }
}
asteroid_impact output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "regime": {
      "type": "string"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "energy_mt_tnt": {
      "type": "number"
    },
    "zones_radius_km": {
      "type": "object"
    }
  },
  "description": "Returns regime, energy_mt_tnt, hiroshima_equivalent, burst_altitude_km or crater_diameter_km, earthquake_magnitude, zones_radius_km, at_distance, average_interval_years.",
  "additionalProperties": true
}
asteroid_impact annotations
{
  "title": "Asteroid impact simulator",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
hawking_black_hole — Black hole calculator (Hawking)
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compute a black hole of any mass: event-horizon radius, Hawking temperature, entropy and evaporation time. Use it for physics questions about black holes; give exactly one of mass_kg, mass_solar or preset. Exact formulas, computed locally, no network call.

hawking_black_hole input schema
{
  "type": "object",
  "properties": {
    "preset": {
      "enum": [
        "asteroid",
        "cygnus-x-1",
        "earth",
        "m87",
        "moon",
        "sagittarius-a",
        "sun"
      ],
      "type": "string",
      "description": "Known object: asteroid, moon, earth, sun, cygnus-x-1, sagittarius-a, m87."
    },
    "mass_kg": {
      "type": "number",
      "maximum": 1e+45,
      "minimum": 1000,
      "description": "Mass in kilograms (1e3 to 1e45)."
    },
    "mass_solar": {
      "type": "number",
      "maximum": 1000000000000,
      "minimum": 1e-25,
      "description": "Mass in solar masses (1e-25 to 1e12)."
    }
  }
}
hawking_black_hole output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "horizon_radius_m": {
      "type": "number"
    },
    "hawking_temperature_k": {
      "type": "number"
    },
    "evaporation_time_years": {
      "type": "number"
    }
  },
  "description": "Returns mass_kg, mass_solar, horizon_radius_m, hawking_temperature_k, entropy_over_kb, radiated_power_w, evaporation_time_years, evaporating_today.",
  "additionalProperties": true
}
hawking_black_hole annotations
{
  "title": "Black hole calculator (Hawking)",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
drake_equation — Drake equation and Fermi paradox
Advertised by the server during the last successful anonymous check.
Advertised read-only

Compute the Drake equation N (detectable civilisations in the Milky Way) from your factors or a preset, and the probability that we are alone once uncertainty is spread honestly (Sandberg, Drexler & Ord 2018). Use it for 'are we alone' and Fermi-paradox questions; it says nothing about UFO sightings (for a light in the sky use what_did_i_see). Unset factors take the preset or default values. Local calculation, no network call.

drake_equation input schema
{
  "type": "object",
  "properties": {
    "L": {
      "type": "number",
      "maximum": 10000000000,
      "minimum": 0,
      "description": "Years a civilisation stays detectable (0-1e10)."
    },
    "R": {
      "type": "number",
      "maximum": 1000,
      "minimum": 0,
      "description": "Star formation rate in the Milky Way, stars per year (0-1000)."
    },
    "fc": {
      "type": "number",
      "maximum": 1,
      "minimum": 0,
      "description": "Fraction of those that emit detectable signals (0-1)."
    },
    "fi": {
      "type": "number",
      "maximum": 1,
      "minimum": 0,
      "description": "Fraction of those where intelligence appears (0-1)."
    },
    "fl": {
      "type": "number",
      "maximum": 1,
      "minimum": 0,
      "description": "Fraction of those where life appears (0-1)."
    },
    "fp": {
      "type": "number",
      "maximum": 1,
      "minimum": 0,
      "description": "Fraction of stars with planets (0-1)."
    },
    "ne": {
      "type": "number",
      "maximum": 100,
      "minimum": 0,
      "description": "Habitable planets per star with planets (0-100)."
    },
    "preset": {
      "enum": [
        "pessimiste",
        "gb-bas",
        "gb-haut",
        "optimiste"
      ],
      "type": "string",
      "description": "Set of factors: pessimiste, gb-bas, gb-haut (Green Bank 1961 low/high), optimiste."
    }
  }
}
drake_equation output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "inputs": {
      "type": "object"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "N_civilisations_detectable_in_milky_way": {
      "type": "number"
    }
  },
  "description": "Returns N_civilisations_detectable_in_milky_way, inputs, presets, reading, uncertainty_matters.",
  "additionalProperties": true
}
drake_equation annotations
{
  "title": "Drake equation and Fermi paradox",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}
draft_sighting_report — Draft a sighting report (step 1 of 2)
Advertised by the server during the last successful anonymous check.

Step 1 of 2: prepare a draft report of something seen in the sky, without publishing or sending anything. Returns a summary to show the witness, a draft id and a secret token, and, when place and time are given, the immediate explanation. Then, only after the witness explicitly agrees, call submit_sighting_report; otherwise cancel_sighting_report. Drafts expire after 10 minutes; at most 5 drafts per client per hour.

draft_sighting_report input schema
{
  "type": "object",
  "required": [
    "description",
    "consent"
  ],
  "properties": {
    "az": {
      "type": "number",
      "maximum": 360,
      "minimum": 0,
      "description": "Measured direction in degrees from north, if any."
    },
    "el": {
      "type": "number",
      "maximum": 90,
      "minimum": -10,
      "description": "Measured height above the horizon in degrees, if any."
    },
    "lat": {
      "type": "number",
      "maximum": 90,
      "minimum": -90,
      "description": "Witness latitude (rounded to about 1 km before publication)."
    },
    "lon": {
      "type": "number",
      "maximum": 180,
      "minimum": -180,
      "description": "Witness longitude (rounded to about 1 km before publication)."
    },
    "email": {
      "type": "string",
      "description": "Optional contact email; never published."
    },
    "ville": {
      "type": "string",
      "maxLength": 80,
      "description": "Town or city of the observation."
    },
    "prenom": {
      "type": "string",
      "maxLength": 80,
      "description": "Optional first name shown on the public record; 'Anonyme' if omitted."
    },
    "consent": {
      "type": "boolean",
      "description": "true once the witness has said they want to report this sighting (asked before drafting). Their approval of the summary is a second, separate agreement, required before submit_sighting_report. If false, the tool asks for it."
    },
    "date_heure": {
      "type": "string",
      "description": "When it was seen, ISO-8601 with a time zone."
    },
    "description": {
      "type": "string",
      "maxLength": 2000,
      "minLength": 10,
      "description": "What was seen, in the witness's words."
    }
  }
}
draft_sighting_report output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "jeton": {
      "type": "string"
    },
    "status": {
      "enum": [
        "pending",
        "elicitation_requise",
        "limite_atteinte"
      ],
      "type": "string"
    },
    "action_id": {
      "type": "integer"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "etape_suivante": {
      "type": "string"
    },
    "explication_immediate": {},
    "resume_a_montrer_au_temoin": {
      "type": "object"
    }
  },
  "description": "Returns status (pending), action_id, jeton (secret token), expires_dans_secondes, resume_a_montrer_au_temoin, explication_immediate, publication (what becomes public); or status elicitation_requise / limite_atteinte.",
  "additionalProperties": true
}
draft_sighting_report annotations
{
  "title": "Draft a sighting report (step 1 of 2)",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": false,
  "destructiveHint": false
}
submit_sighting_report — Submit a drafted sighting report (step 2 of 2)
Advertised by the server during the last successful anonymous check.
Open-world

Step 2 of 2: send a draft prepared by draft_sighting_report to the Vigi-Sky Witness station and notify the team. Call it only after showing the summary and getting the witness's explicit agreement in the conversation. Publishes first name (or 'Anonyme'), town, date, description and position rounded to about 1 km; the email is never published. One submission per draft; at most 3 per client per day and 30 per day overall.

submit_sighting_report input schema
{
  "type": "object",
  "required": [
    "action_id",
    "jeton"
  ],
  "properties": {
    "jeton": {
      "type": "string",
      "maxLength": 64,
      "minLength": 16,
      "description": "Secret token returned by draft_sighting_report."
    },
    "action_id": {
      "type": "integer",
      "minimum": 1,
      "description": "Draft id returned by draft_sighting_report."
    }
  }
}
submit_sighting_report output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "erreur": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    },
    "observation_id": {
      "type": "integer"
    }
  },
  "description": "Returns status (executed), observation_id, suite; or erreur with statut a_verifier when the transmission is uncertain (do not resend).",
  "additionalProperties": true
}
submit_sighting_report annotations
{
  "title": "Submit a drafted sighting report (step 2 of 2)",
  "readOnlyHint": false,
  "openWorldHint": true,
  "idempotentHint": false,
  "destructiveHint": false
}
cancel_sighting_report — Cancel a drafted sighting report
Advertised by the server during the last successful anonymous check.
Advertised destructive

Cancel a draft that was not submitted and erase its personal data. Use it when the witness declines or changes their mind after draft_sighting_report; a submitted report cannot be cancelled here. Repeating the call is harmless.

cancel_sighting_report input schema
{
  "type": "object",
  "required": [
    "action_id",
    "jeton"
  ],
  "properties": {
    "jeton": {
      "type": "string",
      "maxLength": 64,
      "minLength": 16,
      "description": "Secret token returned by draft_sighting_report."
    },
    "action_id": {
      "type": "integer",
      "minimum": 1,
      "description": "Draft id returned by draft_sighting_report."
    }
  }
}
cancel_sighting_report output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "erreur": {
      "type": "string"
    },
    "status": {
      "type": "string"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    }
  },
  "description": "Returns status of the cancelled draft, or erreur when it was already processed.",
  "additionalProperties": true
}
cancel_sighting_report annotations
{
  "title": "Cancel a drafted sighting report",
  "readOnlyHint": false,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": true
}
sighting_report_limits — Sighting report counters and limits
Advertised by the server during the last successful anonymous check.
Advertised read-only

Return the number of sighting-report drafts by status and the limits that apply (per client and overall), with no personal data. Use it when draft_sighting_report or submit_sighting_report refused because of a limit.

sighting_report_limits input schema
{
  "type": "object",
  "properties": {}
}
sighting_report_limits output schema
{
  "type": "object",
  "required": [
    "citations",
    "provenance"
  ],
  "properties": {
    "plafonds": {
      "type": "object"
    },
    "citations": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "compteurs": {
      "type": "object"
    },
    "provenance": {
      "type": "object",
      "properties": {
        "never": {
          "type": "string"
        },
        "source": {
          "type": "string"
        },
        "algorithm": {
          "type": "string"
        },
        "computed_at": {
          "type": "string"
        },
        "limitations": {
          "type": "string"
        },
        "source_updated_at": {}
      }
    }
  },
  "description": "Returns compteurs (drafts by status), plafonds (limits).",
  "additionalProperties": true
}
sighting_report_limits annotations
{
  "title": "Sighting report counters and limits",
  "readOnlyHint": true,
  "openWorldHint": false,
  "idempotentHint": true,
  "destructiveHint": false
}

Prompts

6 advertised

witness_intake — Prise en charge témoin

Advertised by the server during the last successful anonymous check.

Collecte d'un témoignage ciel à la manière Vigi-Sky (mesurer, ne pas conclure).

No arguments advertised.

debunk_checklist — Liste d'hypothèses naturelles

Advertised by the server during the last successful anonymous check.

Contrôle des explications naturelles pour une lumière signalée.

No arguments advertised.

night_planning

Advertised by the server during the last successful anonymous check.

Plan a French observing night: Kp, ISS, moon, Perseids/eclipse clashes.

No arguments advertised.

geipan_form

Advertised by the server during the last successful anonymous check.

Draft a GEIPAN-quality report from a messy testimony.

No arguments advertised.

sentinel_session

Advertised by the server during the last successful anonymous check.

How an AI will drive Sentinel locally once vigisky-sentinel ships.

No arguments advertised.

cultural_sky

Advertised by the server during the last successful anonymous check.

Answer a cultural-astronomy question with named nations and sources.

No arguments advertised.

Resources

30 advertised

Doctrine

Advertised by the server during the last successful anonymous check.

Doctrine URI
vigisky://doctrine

MIME type: application/json

llms.txt

Advertised by the server during the last successful anonymous check.

llms.txt URI
vigisky://llms

MIME type: text/uri-list

Glossary

Advertised by the server during the last successful anonymous check.

Glossary URI
vigisky://glossary

MIME type: application/json

Agencies

Advertised by the server during the last successful anonymous check.

Agencies URI
vigisky://agencies

MIME type: application/json

GEIPAN PAN classes

Advertised by the server during the last successful anonymous check.

GEIPAN PAN classes URI
vigisky://pan-classes

MIME type: application/json

Sky units

Advertised by the server during the last successful anonymous check.

Sky units URI
vigisky://units

MIME type: application/json

Reference dossiers

Advertised by the server during the last successful anonymous check.

Reference dossiers URI
vigisky://cases

MIME type: application/json

Natural-confusion tests

Advertised by the server during the last successful anonymous check.

Natural-confusion tests URI
vigisky://confusion-matrix

MIME type: application/json

Venus trap

Advertised by the server during the last successful anonymous check.

Venus trap URI
vigisky://venus-trap

MIME type: application/json

Who does what

Advertised by the server during the last successful anonymous check.

Who does what URI
vigisky://compare-sources

MIME type: application/json

How to report (FR first)

Advertised by the server during the last successful anonymous check.

How to report (FR first) URI
vigisky://report-guide

MIME type: application/json

First ten minutes

Advertised by the server during the last successful anonymous check.

First ten minutes URI
vigisky://witness-checklist

MIME type: application/json

Keep a usable original

Advertised by the server during the last successful anonymous check.

Keep a usable original URI
vigisky://photo-recipe

MIME type: application/json

Video physics clues

Advertised by the server during the last successful anonymous check.

Video physics clues URI
vigisky://sky-proof

MIME type: application/json

Meteor-shower peaks

Advertised by the server during the last successful anonymous check.

Meteor-shower peaks URI
vigisky://meteor-calendar

MIME type: application/json

Witness handbook index

Advertised by the server during the last successful anonymous check.

Witness handbook index URI
vigisky://book

MIME type: application/json

12 Aug 2026 eclipse

Advertised by the server during the last successful anonymous check.

12 Aug 2026 eclipse URI
vigisky://eclipse-2026

MIME type: application/json

Sentinel desktop app

Advertised by the server during the last successful anonymous check.

Sentinel desktop app URI
vigisky://sentinel

MIME type: application/json

Local Sentinel MCP contract

Advertised by the server during the last successful anonymous check.

Local Sentinel MCP contract URI
vigisky://sentinel-contract

MIME type: application/json

First Skies — 9 named nations

Advertised by the server during the last successful anonymous check.

First Skies — 9 named nations URI
vigisky://first-skies

MIME type: application/json

Diné / Navajo sky

Advertised by the server during the last successful anonymous check.

Diné / Navajo sky URI
vigisky://first-skies/dine

MIME type: application/json

Maya sky

Advertised by the server during the last successful anonymous check.

Maya sky URI
vigisky://first-skies/maya

MIME type: application/json

Lakota sky

Advertised by the server during the last successful anonymous check.

Lakota sky URI
vigisky://first-skies/lakota

MIME type: application/json

Skidi Pawnee sky

Advertised by the server during the last successful anonymous check.

Skidi Pawnee sky URI
vigisky://first-skies/pawnee

MIME type: application/json

Ojibwe / Anishinaabe sky

Advertised by the server during the last successful anonymous check.

Ojibwe / Anishinaabe sky URI
vigisky://first-skies/ojibwe

MIME type: application/json

Mexica sky

Advertised by the server during the last successful anonymous check.

Mexica sky URI
vigisky://first-skies/mexica

MIME type: application/json

Inuit sky

Advertised by the server during the last successful anonymous check.

Inuit sky URI
vigisky://first-skies/inuit

MIME type: application/json

Andean / Inca sky

Advertised by the server during the last successful anonymous check.

Andean / Inca sky URI
vigisky://first-skies/inca

MIME type: application/json

Polynesian navigators

Advertised by the server during the last successful anonymous check.

Polynesian navigators URI
vigisky://first-skies/polynesie

MIME type: application/json

vigisky-sky-view — Carte du ciel Vigi-Sky

Advertised by the server during the last successful anonymous check.

Application intégrée : trajectoires, objets visés et phase de la Lune, dessinés dans la conversation.

vigisky-sky-view URI
ui://vigisky/sky-view-v1.html

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

90-day uptime

A lightweight connection check about every six hours, sampled on hosts with many listings. It shows the server answered, not that its tools work.

Too few checks for a percentage yet (1 of 1 answered).

  1. 2026-11-07: 1 of 1 checks answered

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
1602 ms
95th percentile latency
1602 ms

Maintenance history

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

  • · probe · passed · 1602 ms · metadata changed · 29 tool(s), 30 resource(s), 6 prompt(s); warnings: Advertises resources/templates/list but does not implement it

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 vigi-sky-mcp https://vigi-sky.fr/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 vigi-sky-mcp --url https://vigi-sky.fr/mcp

Cursor

Merge this server into .cursor/mcp.json in your project, then enable vigi-sky-mcp in your MCP settings.
Cursor configuration
{
  "mcpServers": {
    "vigi-sky-mcp": {
      "url": "https://vigi-sky.fr/mcp"
    }
  }
}

Cline

Merge this into cline_mcp_settings.json (Cline → MCP Servers → Configure).
Cline configuration
{
  "mcpServers": {
    "vigi-sky-mcp": {
      "type": "streamableHttp",
      "url": "https://vigi-sky.fr/mcp",
      "disabled": false
    }
  }
}

VS Code

Merge this server into .vscode/mcp.json. Use MCP: List Servers to start vigi-sky-mcp and inspect its tools.
VS Code configuration
{
  "servers": {
    "vigi-sky-mcp": {
      "type": "http",
      "url": "https://vigi-sky.fr/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 vigi-sky-mcp https://vigi-sky.fr/mcp

Claude Desktop

Open Claude Settings > Connectors > Add custom connector, enter this server URL and enable it for the conversation. This is a manual remote-connector handoff, not a desktop JSON configuration.
Claude Desktop configuration
https://vigi-sky.fr/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": {
    "vigi-sky-mcp": {
      "serverUrl": "https://vigi-sky.fr/mcp"
    }
  }
}

Let your agent find its tools

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

Do you run Vigi-Sky MCP?

Prove ownership with a DNS record, a well-known file, or your Official MCP Registry entry, and your edits publish immediately. Proofs are re-checked weekly; admins can still hide or remove a listing.

Claim this listing