Skip to main content
Yanked

This release has been yanked by its maintainers, and will be ignored by installers, except when explicitly specified.
Consider using release 0.1.1 instead.
Reason given by maintainers: never published to the MCP Registry; use 0.1.1

eme-mcp

PyPI MCP Registry

MCP server for EME — Earth-Moon-Earth, moonbounce. When the moon is up from your grid, when it is up from both ends of a schedule at once, what the path costs on 2m, 70cm and 23cm, and which days ahead are least degraded.

Part of the qso-graph project. No network, no authentication.

Why it needs nothing from the network

The moon's position is computed here, from the abridged ELP-2000/82 series as Meeus tabulates it (Astronomical Algorithms, chapter 47). That is around 250 lines of standard library and a coefficient table. It is also what WSJT-X does, and the norm for EME software.

That matters for more than tidiness. Moonrise and moonset are different for every grid square, so a service-backed answer means a request per location per query — and a planning tool that stalls, rate-limits, or goes dark when a remote service does.

JPL Horizons is still here — as the test oracle. Recorded Horizons responses are fixtures, so every CI run checks these numbers against NASA's rather than against themselves. Measured against Horizons for a Boise grid:

agreement
Azimuth within 0.01°
Elevation within 0.003°
Range within 9 km of ~392,000 (0.002%)

Thirty arcseconds, against a 432 MHz array that is degrees wide.

Install

uvx eme-mcp            # run it; nothing to install

Tools

Tool Description
eme_moon_window Moon azimuth, elevation and range from a grid square over time — and, given a second locator, the mutual window when both stations can see it
eme_path_loss One-way, round-trip and echo path loss on 2m / 70cm / 23cm, or any frequency
eme_degradation How much worse than perigee this moment is, with the moon's declination
eme_calendar The least degraded days ahead
get_version_info Service version and the ephemeris series used

What this does not yet do

Sky noise is not included. The full degradation figure an EME operator plans with combines the distance term with the galactic background behind the moon, from the Haslam 408 MHz all-sky map. That map is not yet carried and pinned, so eme_degradation and eme_calendar report the distance term and say so in every answer rather than returning a number that looks complete and is not. Tracked in qso-graph-devel#52.

Elevations are geometric: no atmospheric refraction, which lifts an object near the horizon by about half a degree.

The two path-loss figures

They answer different questions and are often confused, so both are returned:

  • echo_db is the one to budget a station with — the radar equation, accounting for the moon reflecting about 6.5% of what reaches it. Near 252 dB on 2m, 262 on 70cm and 271 on 23cm at mean distance, which are the numbers EME operators know.
  • round_trip_db is twice the free-space loss. It ignores the moon entirely.

Licence

GPL-3.0-or-later. See LICENSE.

The algorithms are from Jean Meeus, Astronomical Algorithms (2nd edition, Willmann-Bell, 1998), chapters 7, 11, 12, 22, 40 and 47 — cited in the source where each is used. The implementation is ours; the mathematics is his and is not claimed.

Metadata

Release files for eme-mcp 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for eme-mcp 0.1.0
File Size Uploaded
eme_mcp-0.1.0.tar.gz 185.3 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for eme-mcp 0.1.0
File Interpreter ABI Platform
eme_mcp-0.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 214.2 kB

Release files / eme_mcp-0.1.0.tar.gz

Download URL eme_mcp-0.1.0.tar.gz
Size 185.3 kB
Tags Source
SHA-256 checksum
How to use checksums
7905b71030114cba72964105d8371665376065e4c519085099aebc1e1c47c0af
BLAKE2b-256 checksum
How to use checksums
8e4d7f1036e9a0f986ff3d972991027c2d0f1c700414c1eca974fff51056d819
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release files / eme_mcp-0.1.0-py3-none-any.whl

Download URL eme_mcp-0.1.0-py3-none-any.whl
Size 28.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e6c0315ceef9c26928b04911e105ea412040402f34e2899815ce7b74687b1d93
BLAKE2b-256 checksum
How to use checksums
07aacfab21d95c5308457232e14b0139c650edf696ec6cea470db02e98912570
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/7.0.0 CPython/3.13.14

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Oct 11, 2026.

Transparency log

Release history Release notifications | RSS feed

0.1.1

2 release files

This release

0.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page