Skip to main content

MCP server for the SatNOGS open satellite observation network

Project description

satnogs-mcp

An MCP server that gives Claude (and other MCP clients) full access to the SatNOGS open satellite observation network — the world's largest open-source ground-station network for amateur satellites.


MCP Tools

SatNOGS DB (satellite catalogue)

Tool Description
search_satellites Search the satellite catalogue by name, NORAD ID, status, country, or operator
get_satellite Full details for one satellite
get_transmitters Transmitters filtered by satellite, status, type, or mode
get_transmitter Detail for one transmitter by UUID
get_tle Current TLE sets, filtered by NORAD ID or satellite ID
get_telemetry Decoded telemetry frames, filtered by satellite and date range
get_modes All communication modes in the DB
get_artifacts Reference artifacts, optionally filtered by observation ID

SatNOGS Network (ground stations & observations)

Tool Description
list_stations All ground stations with location, antenna, and status
get_station Full detail for one station
find_nearby_stations Find stations within a radius (km) of a lat/lon point
list_observations Observations filtered by satellite, station, date range, and vetting status
get_observation Full observation detail including waterfall, audio, and demodulated data URLs
list_jobs Scheduled observation jobs

Installation

pip install satnogs-mcp

Or run without installing via uvx:

uvx satnogs-mcp

Claude Desktop Configuration

Add the following to your claude_desktop_config.json:

{
  "mcpServers": {
    "satnogs": {
      "command": "uvx",
      "args": ["satnogs-mcp"],
      "env": {
        "SATNOGS_DB_API_KEY": "optional-key-here",
        "REDIS_URL": "redis://localhost:6379"
      }
    }
  }
}

Config file location:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json

Environment Variables

Variable Required Description
SATNOGS_DB_API_KEY No API key for SatNOGS DB (read access works without it; key may enable higher rate limits and write access)
REDIS_URL No Redis connection URL for caching (e.g. redis://localhost:6379). Falls back to in-memory cache if unset.

Copy .env.example to .env and fill in any values you need:

cp .env.example .env

Example Prompts

Try these prompts in Claude once the server is running:

  • "Search for active cubesats launched by universities."
  • "What are the current TLEs for ISS (NORAD 25544)?"
  • "Show me all FM transmitters for the FUNcube-1 satellite."
  • "Find SatNOGS ground stations within 200 km of London."
  • "List recent good observations of NORAD 39444."
  • "What ground stations are online in Europe?"
  • "Show me the waterfall image from observation 12345."
  • "What telemetry has been collected for FUNCUBE-1 this week?"

Development

git clone https://github.com/atlas/satnogs-mcp
cd satnogs-mcp
pip install -e ".[dev]"
pytest tests/ -v

Architecture

  • cache.py — Dual-tier cache: Redis primary (when REDIS_URL is set), in-memory TTL dict fallback
  • client.py — HTTP clients for DB and Network APIs with sliding-window rate limiter (20 req/min, 200 req/hour) and exponential back-off on HTTP 429
  • server.py — FastMCP server with @mcp.tool() decorated tools; module-level singleton clients share sessions and rate-limiter state

License

MIT

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

satnogs_mcp-0.1.0.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

satnogs_mcp-0.1.0-py3-none-any.whl (10.6 kB view details)

Uploaded Python 3

File details

Details for the file satnogs_mcp-0.1.0.tar.gz.

File metadata

  • Download URL: satnogs_mcp-0.1.0.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for satnogs_mcp-0.1.0.tar.gz
Algorithm Hash digest
SHA256 1538eaf1c7bc32df46ed7b95b63a374bb5189c7a36e37b4cf622164f7f10484c
MD5 b27245d8d7a33f2a9d382f1fcbc2ac85
BLAKE2b-256 8496fef9f7f74c00b27f0f7cbd4007f8fa5cc41aa5188190d7e9c672e43943d6

See more details on using hashes here.

File details

Details for the file satnogs_mcp-0.1.0-py3-none-any.whl.

File metadata

  • Download URL: satnogs_mcp-0.1.0-py3-none-any.whl
  • Upload date:
  • Size: 10.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.10 {"installer":{"name":"uv","version":"0.9.10"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for satnogs_mcp-0.1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 14c112b52683c3e4a8844a75963e993a5824469bd4f97034b680f227c439576a
MD5 62831f70d9a48e3388494e25f2a4948d
BLAKE2b-256 55afc4aacbcc4028914d2b61f0ee7448bbb3ab2a9bb2de18f17dda4c46f9485d

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page