space-defense-osint
Click 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., "@space-defense-osintFind the next ISS pass over Cape Canaveral in the next 24 hours."
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.
mcp-space-defense-osint
A stdio MCP server for public orbital context, geomagnetic conditions and structured airspace envelopes. Built on the official MCP SDK, Skyfield/SGP4 and HTTPX. MIT licensed; Python 3.11+. No API keys required.
Quickstart (30 Seconds)
git clone https://github.com/cankaan120/mcp-space-defense-osint.git
cd mcp-space-defense-osint
python -m venv .venv
.venv/bin/python -m pip install '.[dev]'
.venv/bin/space-defense-osint --checkWindows equivalents are .venv\Scripts\python.exe and
.venv\Scripts\space-defense-osint.exe. --check performs a local parser check.
Without arguments the CLI serves MCP over stdio; logs go to stderr.
Related MCP server: mcp-celestrak
Claude Desktop configuration
Add this to claude_desktop_config.json, selecting the absolute Python path of the
environment where the package is installed. Restart the host after saving.
{
"mcpServers": {
"space-defense-osint": {
"command": "/absolute/path/to/.venv/bin/python",
"args": ["-m", "space_defense_osint.server"]
}
}
}Windows command example: C:\\Users\\you\\tools\\.venv\\Scripts\\python.exe.
Configuration paths: %APPDATA%\Claude\claude_desktop_config.json on Windows and
~/Library/Application Support/Claude/claude_desktop_config.json on macOS.
Cursor accepts the same mcpServers entry in .cursor/mcp.json.
See the SDK host guide
and Cursor documentation.
Tools
Tool | Inputs | Result |
| Catalog ID, location, horizon, minimum elevation | TLE, epoch age, next pass, source and retrieval timestamp |
| None | Latest observed Kp, SWPC alerts, age and cache metadata |
| Notice with ICAO center/radius | GeoJSON bounding envelope, bbox, center and radius |
Pass defaults: Cape Canaveral 28.4158, -80.6048, ISS 25544, 24-hour horizon and
10-degree minimum elevation. The horizon is bounded to 72 hours. Results identify ongoing
passes and truncated search windows. A null pass means no qualifying pass was found.
These are geometric passes, not optical-visibility forecasts.
TLE requests are cached for one hour, NOAA for 60 seconds. Cache hits retain original retrieval timestamps. Requests have a 15-second timeout and two-megabyte body budget. Errors do not silently substitute stale results. NOAA observation age is reported separately; values older than six hours are marked stale. Current object-based and legacy table-based Kp layouts are both supported.
The NOTAM parser supports Q-line coordinates such as 2825N08036W010 with radius
in nautical miles. Dateline crossings produce a MultiPolygon. This is a bounding
envelope, not a legal TFR boundary. Arbitrary polygons and free-form descriptions are
rejected. The tool parses supplied notices; it does not fetch current airspace restrictions.
Python API
from space_defense_osint.server import fetch_celestrak_tle
from space_defense_osint.airspace import analyze_notam_tfr
geometry = analyze_notam_tfr("Q) KZMA/QWALW/IV/M/W/000/999/2825N08036W010")
pass_context = fetch_celestrak_tle(catalog_id=25544)Benchmark comparison
Local medians over 1,000 iterations on Windows x64:
Operation | Median, us | Network included |
Cached feed read | 0.30 | No |
Reparse small JSON fixture | 0.90 | No |
Q-line to GeoJSON | 2.80 | No |
Caching avoids repeated decoding and upstream requests. These operations differ in
semantics; their timings do not estimate live-feed or orbital-prediction latency.
Run python benchmarks/bench_local.py. Results record the platform.
Validation and sources
python -m pytest runs offline geometry, caching, Kp-layout, pass-ordering and real MCP
stdio handshake/tool-call tests. Live NOAA and CelesTrak checks also passed during development.
Live availability varies; consumers should inspect TLE epoch age before using predictions.
Legacy TLE catalog identifiers above 99999 require an OMM interface and are not supported.
This server cannot be deployed
Maintenance
Related MCP Connectors
N2YO MCP — wraps the N2YO Satellite Tracking REST API (n2yo.com)
MCP server for aerospace calculations: orbital mechanics, ephemeris, DSN operations, ...
CelesTrak MCP — satellite orbital elements (TLE / GP data) for any tracked object.
NASA MCP — wraps NASA Open APIs (api.nasa.gov)
Related MCP Servers
- 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.248 npmMIT
- AlicenseNot gradedqualityDmaintenanceEnables discovery, analysis, and explanation of open satellite data through MCP, with support for STAC catalogs and NASA GIBS.1MIT
- AlicenseNot gradedqualityBmaintenanceAn MCP server that equips LLM clients with authoritative astrodynamics tools including TLE/SGP4 propagation, Lambert solving, ground-station access, time-scale and coordinate-frame conversions, and more.48 PyPI2MIT