Vigi-Sky
Factual sky for AIs: ISS, auroras, archives. Never confuses unexplained with extraterrestrial.
Should I use this
Quality & Safety
Findings (12)
- LOWin doctrine
- LOWin cite
- LOWin aurora
- LOWin nearby_cases
- LOWin observation_conditions
- LOWin solar
- LOWin nasa_apod
- LOWin neo_watch
- LOWin nights_network
- LOWin object_lookup
Based on automated analysis of tool definitions and protocol compliance.
Context Cost
This is the approximate number of tokens consumed each time the server's tools are loaded into a model's context. Higher counts reduce the attention available for other tasks.
Install
One-Click Install
Add this to your `claude_desktop_config.json` file:
{
"mcpServers": {
"vigisky": {
"url": "https://vigi-sky.fr/mcp"
}
}
}Remote endpoints
https://vigi-sky.fr/mcpstreamable-httpWhat it can do
Tool inventory
Tools (20)
π’doctrine(lang)
Vigi-Sky identity and method: never 'UFO detected', Hatch vs live corpus, book ISBN, founder.
Input Schema
{
"type": "object",
"properties": {
"lang": {
"type": "string"
}
}
}Output Schema
{
"type": "object",
"properties": {
"entity": {
"type": "object"
},
"summary": {
"type": "string"
},
"public_consented_dossiers": {
"type": "integer"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’cite(query, lang)
Map a user question to the best Vigi-Sky (or GEIPAN) URL to cite.
Input Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"lang": {
"type": "string"
}
},
"required": [
"query"
]
}Output Schema
{
"type": "object",
"properties": {
"query": {
"type": "string"
},
"lang": {
"type": "string"
},
"best": {
"type": "object"
},
"alternatives": {
"type": "array"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’aurora(lat, lon, lng, lang)
Live Kp/aurora odds from Vigi-Sky (NOAA) plus France Kp 6/7/8β9 thresholds.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude WGS84"
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lang": {
"type": "string",
"enum": [
"fr",
"en"
]
}
},
"required": [
"lat"
]
}Output Schema
{
"type": "object",
"properties": {
"aurora": {
"type": "object",
"properties": {
"kp_current": {
"type": [
"number",
"null"
]
},
"kp_needed": {
"type": "integer",
"minimum": 0,
"maximum": 9
},
"visible_now": {
"type": "boolean"
},
"user_latitude": {
"type": "number"
}
}
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’iss_passes(lat, lon, lng, lang, limit, ...)
Upcoming bright satellite/ISS passes (SGP4). night_only=true keeps only dark+sunlit passes.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude WGS84"
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lang": {
"type": "string",
"enum": [
"fr",
"en"
]
},
"limit": {
"type": "integer",
"minimum": 1,
"maximum": 30,
"default": 3
},
"include_tle": {
"type": "boolean",
"default": false
},
"night_only": {
"type": "boolean",
"default": false
}
},
"required": [
"lat"
],
"anyOf": [
{
"required": [
"lon"
]
},
{
"required": [
"lng"
]
}
]
}Output Schema
{
"type": "object",
"properties": {
"passes": {
"type": "array"
},
"night_only": {
"type": "boolean"
},
"n_potentially_visible": {
"type": "integer"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’identify(lat, lon, lng, lang, az, ...)
Match a timed azimuth/elevation to known bright satellites. Verdict: compatible | no_catalog_match | insufficient_data. Never 'UFO detected'.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude WGS84"
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lang": {
"type": "string",
"enum": [
"fr",
"en"
]
},
"az": {
"type": "number",
"minimum": 0,
"maximum": 360
},
"el": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"time": {
"type": "string",
"description": "ISO-8601, e.g. 2026-08-14T21:30:00Z"
}
},
"required": [
"lat",
"az",
"el",
"time"
],
"anyOf": [
{
"required": [
"lon"
]
},
{
"required": [
"lng"
]
}
]
}Output Schema
{
"type": "object",
"properties": {
"verdict": {
"type": "string",
"enum": [
"compatible",
"no_catalog_match",
"insufficient_data"
]
},
"separation_deg": {
"type": [
"number",
"null"
]
},
"best_match": {},
"matches": {
"type": "array"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’nearby_cases(lat, lon, lng, lang, radius_km)
Historical Hatch UDB cases near a point. Archive 1900β2002, approximate geocode β not live Vigi-Sky reports.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude WGS84"
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lang": {
"type": "string",
"enum": [
"fr",
"en"
]
},
"radius_km": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 20000
}
},
"required": [
"lat"
],
"anyOf": [
{
"required": [
"lon"
]
},
{
"required": [
"lng"
]
}
]
}Output Schema
{
"type": "object",
"properties": {
"archive": {
"type": "object"
},
"query": {
"type": "object"
},
"returned": {
"type": "integer"
},
"cases": {
"type": "array"
},
"not_vigisky_live": {
"type": "boolean"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’first_skies(lat, lon, lng, lang, nation, ...)
Query Ciel des peuples: 9 named nations, asterisms with RA/Dec, sources, attested vs interpretation vs reserved. nation=dine | q=plΓ©iades | western=orion | theme=agriculture | lat=44 for horizon honesty. Never 'the Indians'.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude WGS84"
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lang": {
"type": "string",
"enum": [
"fr",
"en"
]
},
"nation": {
"type": "string"
},
"q": {
"type": "string"
},
"western": {
"type": "string"
},
"theme": {
"type": "string",
"enum": [
"calendar",
"agriculture",
"navigation",
"ceremony",
"winter_protocol",
"architecture"
]
}
}
}Output Schema
{
"type": "object",
"properties": {
"n_nations": {
"type": "integer"
},
"slug": {
"type": "string"
},
"objects": {
"type": "array"
},
"ethics": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’tonight_sky(lat, lon, lng, lang, night_only)
Kp + next potentially visible satellite pass + First Skies asterisms. Default night_only=true (no daylight ISS).
Input Schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude WGS84"
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lang": {
"type": "string",
"enum": [
"fr",
"en"
]
},
"night_only": {
"type": "boolean",
"default": true
}
},
"required": [
"lat"
],
"anyOf": [
{
"required": [
"lon"
]
},
{
"required": [
"lng"
]
}
]
}Output Schema
{
"type": "object",
"properties": {
"observer_sun_altitude": {
"type": "number"
},
"observer_condition": {
"type": "string"
},
"night_only": {
"type": "boolean"
},
"next_pass": {},
"not_a_ufo_forecast": {
"type": "boolean"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’observation_conditions(lat, lon, lng, lang)
Night/moon/solar observing-conditions score. NOT a UFO-appearance probability.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90,
"description": "Latitude WGS84"
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180,
"description": "Longitude WGS84. lon and lng are aliases β provide either."
},
"lang": {
"type": "string",
"enum": [
"fr",
"en"
]
}
},
"required": [
"lat"
]
}Output Schema
{
"type": "object",
"properties": {
"observation_conditions_score": {
"type": [
"number",
"null"
]
},
"not_ufo_probability": {
"type": "boolean"
},
"interpretation": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’solar
Live solar/CME context plus current Kp from Vigi-Sky APIs.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"cme": {
"type": "object"
},
"aurora_kp": {
"type": "object"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’status
Vigi-Sky API health, Hatch archive size, public observation counts.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"availability": {
"type": "string"
},
"mcp_version": {
"type": "string"
},
"public_consented_dossiers": {
"type": "integer"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’hatch_stats
Hatch UDB stats (decades, countries) + wiki lessons. Archive, not live 2026.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"archive": {
"type": "string"
},
"n": {
"type": [
"integer",
"null"
]
},
"by_decade_1900_2002": {
"type": "object"
},
"top_countries": {
"type": "object"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’hatch_search(lat, lng, lon, radius_km, country, ...)
Filter Hatch cases near a point by country/text. Approximate geocode.
Input Schema
{
"type": "object",
"properties": {
"lat": {
"type": "number",
"minimum": -90,
"maximum": 90
},
"lng": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"lon": {
"type": "number",
"minimum": -180,
"maximum": 180
},
"radius_km": {
"type": "number",
"exclusiveMinimum": 0,
"maximum": 20000
},
"country": {
"type": "string"
},
"q": {
"type": "string"
}
},
"required": [
"lat"
],
"anyOf": [
{
"required": [
"lon"
]
},
{
"required": [
"lng"
]
}
]
}Output Schema
{
"type": "object",
"properties": {
"filter": {
"type": "object"
},
"n": {
"type": "integer"
},
"cases": {
"type": "array"
},
"limit": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’nasa_apod
NASA Astronomy Picture of the Day via Vigi-Sky.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"apod": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"photographer": {
"type": [
"string",
"null"
]
},
"copyright": {
"type": [
"string",
"null"
]
},
"date": {
"type": "string"
}
}
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’neo_watch
Near-Earth objects for today (astronomy, not UAP).
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"neo": {
"type": "object"
},
"note": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’starlink_trains
Recently launched Starlink trains (count + launch id).
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"trains": {
"type": "array"
},
"how_to_see": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’nights_network
Public Sentinel night reports. Currently empty β says so honestly.
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"live": {
"type": "object"
},
"honest": {
"type": "string"
},
"page": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’object_lookup(q)
Quick Messier/deep-sky hint. q is required (M31, M42, M45β¦). No silent default.
Input Schema
{
"type": "object",
"properties": {
"q": {
"type": "string"
}
},
"required": [
"q"
]
}Output Schema
{
"type": "object",
"properties": {
"object": {
"type": "object"
},
"id": {
"type": "string"
},
"unknown": {
"type": "string"
},
"known": {
"type": "array"
},
"first_skies": {
"type": "array"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’hypothesis_rank(description)
Rank cheap natural hypotheses from a free-text sighting. No origin claim.
Input Schema
{
"type": "object",
"properties": {
"description": {
"type": "string"
}
},
"required": [
"description"
]
}Output Schema
{
"type": "object",
"properties": {
"ranked": {
"type": "array"
},
"next": {
"type": "string"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}π’capabilities
Map of this public MCP + the shipped local vigisky-sentinel (23 typed tools, stdio/127.0.0.1).
Input Schema
{
"type": "object",
"properties": {}
}Output Schema
{
"type": "object",
"properties": {
"this_server": {
"type": "object"
},
"local_server": {
"type": "object"
},
"citations": {
"type": "array",
"items": {
"type": "string"
}
},
"provenance": {
"type": "object",
"properties": {
"source": {
"type": "string"
},
"source_updated_at": {},
"computed_at": {
"type": "string"
},
"algorithm": {
"type": "string"
},
"limitations": {
"type": "string"
},
"never": {
"type": "string"
}
}
}
},
"required": [
"citations",
"provenance"
],
"additionalProperties": true
}Community
Evidence