Orbital Watch
OfficialClick on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Orbital WatchWhere is the ISS right now and how high is it?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Orbital Watch (MCP server)
Live MCP URL (Streamable HTTP): https://orbital-watch-mcp.vercel.app/mcp
Health check: https://orbital-watch-mcp.vercel.app/health
Orbital Watch is space-situational-awareness for Grok Bot (or any MCP client). It covers four areas:
Satellite and debris lookup: any tracked object, with owner, launch, status, decay, current orbit and live position.
Debris fields and constellations: how many objects from the 2007 Fengyun-1C ASAT test, the 2009 Iridium–Cosmos collision and others are still up, and at what altitudes.
Close approaches: predicted conjunctions from CelesTrak SOCRATES for the next 7 days.
Space weather: NOAA G/R/S scales, Kp, solar flares, alerts and the 3-day outlook, explained in plain English for GPS, HF radio, Starlink/LEO satellites and aurora.
All data is public and needs no keys. Every output cites its source URL and fetch time.
Tools
Tool | What it does |
| CelesTrak SATCAT and GP lookup by NORAD id, name or international designator. Live lat/lon/altitude via SGP4 (satellite.js) |
| Object count, perigee bands and regimes for a debris event ( |
| SOCRATES Plus close approaches by NORAD id, name pattern or overall, ordered by max probability, miss distance or time |
| NOAA scales, current Kp, latest and strongest flares, Kp forecast, 3-day probabilities, and plain-English impacts |
| Recent SWPC alerts, warnings and watches, with their stated impacts |
Related MCP server: spacetrack-mcp
Example prompts
"Where is the ISS right now, and how high is it?"
"How much Fengyun-1C debris is still in orbit, and at what altitude?"
"Any close approaches for the ISS this week?" / "What are the riskiest Starlink conjunctions?"
"Is there a geomagnetic storm? Will it affect my GPS, ham radio or Starlink?"
"What space weather alerts has NOAA issued in the last day?"
Notes on the data
Impacts come from NOAA's G/R/S scale levels, following NOAA SWPC's scale descriptions:
G (geomagnetic storms; Kp 5→G1 … Kp 9→G5) affects GPS at high latitudes, LEO drag (the Feb 2022 Starlink loss happened during a minor storm, to satellites still in a very low orbit) and aurora.
R (radio blackouts from flares; M1→R1, M5→R2, X1→R3, X10→R4, X20→R5) affects dayside HF radio.
S (solar radiation) affects polar HF and satellites.
SOCRATES "max probability" is CelesTrak's worst-case figure from public GP data, not operator-grade covariance. The output explains this.
Caching:
CelesTrak SATCAT/GP: 2 h, as CelesTrak asks.
SOCRATES: 30 min. It updates about every 8 h.
SWPC: 1–5 min.
On upstream failure, the cached copy is served and marked STALE.
Space-Track.org is not used. Its API returns HTTP 401 without an account, and its terms don't allow redistribution. CelesTrak republishes the same public catalogue and GP data.
Run locally
npm install && npm test && npm run build
npm start # http://localhost:3000/mcp
npm run start:stdio
npm run smoke # live calls to every toolDeploy to Vercel
Push to GitHub, import it at vercel.com/new (preset: Other), and use https://<project>.vercel.app/mcp. No environment variables are needed. Check it with node scripts/smoke.mjs <url>.
Testing instructions for marketplace reviewers
No credentials needed.
List tools. You should see 5.
satellite_infowith{"noradId": 25544}: the ISS, with orbit (~420 km), live position and source lines.track_groupwith{"debrisEvent": "fengyun-1c"}: around 2,000 objects, broken down by altitude band.conjunctionswith{"name": "STARLINK", "max": 5}: a table of close approaches with miss distances.space_weather_nowwith{}: G/R/S scales, Kp, flares, and impact lines for GPS, HF, Starlink and aurora.space_weather_alertswith{"hours": 72}.
Data sources
CelesTrak (SATCAT, GP, SOCRATES) by Dr. T.S. Kelso, and NOAA Space Weather Prediction Center. This tool is for information only and is not for operational collision avoidance.
License
MIT
Available Tools
5 toolsconjunctionsClose approaches (SOCRATES)ARead-only
Predicted close approaches over the next 7 days from CelesTrak SOCRATES, for a NORAD id, a name pattern (e.g. STARLINK, ISS), or overall; ordered by max probability, miss distance or time.
| Name | Required | Description | Default |
|---|---|---|---|
| max | No | ||
| name | No | ||
| order | No | ||
| noradId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint=true and openWorldHint=true, so the safety profile is covered. The description adds the upstream source (CelesTrak SOCRATES) and a 7-day lookahead window, which is genuinely useful context, but it says nothing about rate limits, freshness, or how an empty result is returned.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the predicted-approach scope and adds only clauses that earn their place. The semicolon-joined second clause is dense, but nothing is redundant or restated from the name or title.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 4-parameter, zero-required tool with no output schema and no per-parameter documentation anywhere, the description covers the filter and sort dimensions adequately but omits the result-limit parameter ('max', 1–50), default behavior, and any sense of the response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description carries the full burden. It decodes the cryptic ORDER enum values into human terms (max probability, miss distance, time) and clarifies that name is a pattern (e.g. STARLINK, ISS) rather than an exact match. It leaves the 'max' parameter completely unexplained, which caps it below 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Predicted close approaches'), plus the source (CelesTrak SOCRATES) and the temporal window (next 7 days). It is unambiguous on its own, though it never names a sibling (satellite_info, track_group, space_weather_*) to distinguish itself from them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description enumerates the three selectable scopes (NORAD id, name pattern, or overall), which implies how to call it, but it gives no explicit when-to-use guidance, no indication of when to prefer a sibling tool, and no statement about which filters can be combined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
satellite_infoSatellite / debris lookupARead-only
Look up any tracked object (satellite, rocket body, debris) in the CelesTrak SATCAT by NORAD id, name or international designator: owner, launch, status, decay, current orbit and live position.
| Name | Required | Description | Default |
|---|---|---|---|
| name | No | ||
| intlDes | No | e.g. 1998-067A | |
| noradId | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover the safety profile (readOnlyHint=true, openWorldHint=true), so the bar is lower, and the description still adds real value by enumerating the returned payload (owner, launch, status, decay, current orbit, live position). It does not mention rate limits, error behavior for unmatched names, or how 'live position' is sourced, but the return-content disclosure goes meaningfully beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler: verb, object classes, source catalog, accepted identifiers, and returned fields, in that order. Every clause earns its place and nothing is repeated from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 3-parameter, no-output-schema lookup tool, the description covers what it queries, the keys it accepts, and the fields it returns. The one remaining gap is disambiguation policy (e.g., ambiguous name matches, precedence among the three keys), but overall an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is only 33% (only intlDes is documented in the schema), so the description has to carry weight, and it does map the three accepted lookup keys to the three parameters. However, it never clarifies that the parameters are alternatives (0 required) or what happens if multiple are supplied and conflict, which is the main semantic ambiguity an agent faces here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (look up) and resource (any tracked object in the CelesTrak SATCAT) and enumerates the accepted lookup keys (NORAD id, name, international designator). This is clearly distinguishable from siblings like track_group or conjunctions, which operate on collections or events rather than a single catalog object. The object classes (satellite, rocket body, debris) further sharpen scope.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Usage is implied by the lookup framing rather than stated: an agent can infer this is the per-object catalog query, but the description never says when to choose it over track_group or conjunctions, nor does it give any prerequisites or exclusions. No alternatives are named. Adequate but with a clear routing gap.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
space_weather_alertsNOAA SWPC alertsCRead-only
Recent NOAA SWPC alerts, warnings and watches (geomagnetic storms, flares, proton events) with their stated impacts.
| Name | Required | Description | Default |
|---|---|---|---|
| hours | No | ||
| limit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-dependency behavior are covered. The description adds genuine content context (the alert categories and that stated impacts are included), but says nothing about the default time window, ordering, or result volume, which matters for a feed-style tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence with no filler; the alert types are parenthetically grouped rather than padded. It is well sized, though it could have spent a few extra words on the time-window parameter instead of listing event types.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema and zero parameter documentation, the description carries the burden for explaining the return shape and the meaning of hours/limit, and it does neither. An agent can identify the tool but cannot confidently scope a call.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% for the two parameters (hours, limit) and the description never mentions either. 'Recent' only loosely hints at the hours window and gives no clue about the limit parameter, so the description fails to compensate for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a concrete resource (NOAA SWPC alerts, warnings and watches) and enumerates the event types it covers (geomagnetic storms, flares, proton events), so the agent knows exactly what entity is returned. It does not, however, contrast itself with the sibling space_weather_now, so differentiation is left to inference.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no statement of when to use this tool versus space_weather_now or the other siblings, no mention of defaults, and no indication of how far back 'recent' reaches. The agent must guess whether this is a historical-feed tool or a current-conditions tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
space_weather_nowSpace weather now + impactsARead-only
Current NOAA space weather: G/R/S scales, planetary Kp, latest and strongest solar flares, 3-day outlook, with plain-English impact on GPS, HF radio, Starlink/LEO satellites and aurora.
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety and external-data scope are covered. The description usefully adds the data payload scope and a plain-English impact framing (GPS, HF radio, Starlink/LEO, aurora). It does not disclose update cadence, caching/freshness, or whether NOAA may be unreachable, which matter for a 'now' tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that identifies the source and enumerates contents with no filler. The enumeration is dense but each item is genuinely informative about what comes back, so it earns its length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no parameters, no output schema, and annotations covering the safety profile, the description's main remaining job is to say what the response contains – which it does thoroughly. It is essentially complete; cadence and format are the only untold pieces.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so per the rubric the baseline is 4. The schema is empty and nothing in the description could or should add parameter meaning.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description names a specific resource (current NOAA space weather) and enumerates the exact content: G/R/S scales, planetary Kp, flares, 3-day outlook. That is far more than a restatement of the title. It stops short of explicitly differentiating itself from the sibling space_weather_alerts, which is the one tool an agent could easily confuse it with.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The word "Current" plus "3-day outlook" implies this is the snapshot/status tool rather than an alert-subscription tool, so usage is inferable. However, there is no explicit when-to-use, when-not-to-use, or named alternative (e.g. 'for active alerts, use space_weather_alerts'), which is exactly the ambiguity a sibling named space_weather_alerts creates.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
track_groupDebris field / constellation trackerARead-only
Count and characterise objects still in orbit for a debris event (cosmos-1408, fengyun-1c, iridium-33, cosmos-2251) or any CelesTrak GP group (starlink, stations, gps-ops, oneweb, last-30-days, ...): altitude bands and orbital regimes.
| Name | Required | Description | Default |
|---|---|---|---|
| group | No | ||
| debrisEvent | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, so safety is covered. The description adds substantive behavioral content beyond that: it states the tool aggregates counts and characterises objects, and that results are expressed as altitude bands and orbital regimes — meaningful since no output schema exists. It stops short of data-freshness or external-call behavior implied by openWorldHint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single front-loaded sentence that leads with the verb and packs the input domains and the return characterisation into one pass. Slightly dense and colon-appended rather than cleanly structured, but no filler sentences.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 2-parameter, no-output-schema, read-only tool the description covers purpose, input values and result shape well. The notable gap is that both parameters are optional with no stated default: an agent cannot tell what a call with no arguments returns, nor whether group and debrisEvent are mutually exclusive. Source/freshness of CelesTrak GP data is also unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must carry the load and largely does: it names the debrisEvent enum members and gives multiple valid `group` values that the bare regex pattern (^[a-z0-9-]{2,40}$) cannot convey. It does not clarify that the two parameters are alternative selector modes or whether both may be supplied at once.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Specific verb pair plus resource: 'Count and characterise objects still in orbit' for a named debris event or CelesTrak GP group. It clearly distinguishes the tool's scope from siblings like satellite_info (single object) or conjunctions (pairwise events), though it never explicitly names an alternative. No schema opening is needed to know what it does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It supplies the concrete trigger conditions and enumerates usable input domains ('cosmos-1408, fengyun-1c...' or 'starlink, stations, gps-ops, oneweb, last-30-days'). What it omits is any exclusion or routing rule — e.g. when to prefer satellite_info or conjunctions, or whether the two parameter families can be combined.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
5 tool updates
v1.0.0- First observed
conjunctions - First observed
satellite_info - First observed
space_weather_alerts - First observed
space_weather_now - First observed
track_group
TDQS
Scored across 5 tools
Each tool targets a distinct data source and query type: single-object lookup (satellite_info), group characterisation (track_group), conjunction screening (conjunctions), and two space-weather feeds. The only mild overlap is space_weather_now vs space_weather_alerts, but descriptions clearly separate current conditions/forecast from active alerts and warnings.
The space_weather_now/space_weather_alerts pair is nicely parallel, but the set mixes patterns: noun_noun (satellite_info), verb_noun (track_group), a bare noun (conjunctions), and the prefixed space_weather_* forms. Still readable, just not a single predictable convention.
Five tools is a tight, well-scoped surface for a read-only orbital/debris/space-weather monitor, with no redundant entries. It sits at the leaner end, but each tool earns its place.
The domain is covered well: object lookup, debris/group tracking, conjunction screening, and current + alert space weather. Minor gaps exist (e.g. no explicit TLE/ephemeris retrieval or historical decay/event browsing), but agents can work around them via satellite_info.
Maintenance
Related MCP Connectors
MCP server for aerospace calculations: orbital mechanics, ephemeris, DSN operations, ...
CelesTrak MCP — satellite orbital elements (TLE / GP data) for any tracked object.
Orbital data center & space AI compute tracker MCP: projects, launches, orbits, alerts. 100 free/day
NASA MCP — wraps NASA Open APIs (api.nasa.gov)
Related MCP Servers
- AlicenseNot gradedqualityBmaintenanceProvides NASA fireball, near-Earth asteroid, and close approach data via MCP, enabling users to query space object information using natural language.31 npmMIT
- FlicenseNot gradedqualityDmaintenanceMCP server that wraps the NASA Space-Track API to provide tools for TLE lookup, conjunction query, and satellite catalog search.-
- AlicenseNot gradedqualityBmaintenanceProvides satellite orbital elements (TLE / GP data) for any tracked object via MCP.24 npmMIT
- AlicenseNot gradedqualityBmaintenanceEnables discovery, analysis, and explanation of open satellite data through MCP, with support for STAC catalogs and NASA GIBS.1MIT