Eme Mcp

io.github.qso-graphPublished by GitHub account qso-graphv0.4.0Updated Nov 3, 2026

EME prediction for amateur radio: moon windows, path loss and degradation, computed locally

VerifiedSTDIODesktop onlyLocation & LifestyleData & Analytics

Overview

AI-generated overview

Local MCP server for amateur-radio EME (moonbounce) planning: moon windows from a grid square, path loss and degradation, computed offline.

What you can do
  • Compute moon azimuth, elevation and range from a grid square over time, and the mutual window when both ends of a schedule can see the moon
  • Estimate one-way, round-trip and echo path loss on 2m, 70cm, 23cm or any frequency
  • Report how much worse than perigee the current or a given moment is, with the moon's declination
  • List the least degraded days ahead
  • Report the server version and the ephemeris series it computes from
When to use it
For radio amateurs planning moonbounce contacts: checking whether the moon is up from one or both stations, budgeting a station with echo path loss, and picking the least degraded days for a schedule.
Requirements
Runs as a local stdio process, launched for example with uvx from the PyPI package eme-mcp. No network access, authentication, API keys or environment variables are needed; positions are computed locally from an ephemeris series.
Before you install
Degradation and calendar results cover only the distance term; sky noise from the galactic background is not included and the server says so in every answer. Elevations are geometric, without atmospheric refraction, so objects near the horizon are off by about half a degree. Echo and round-trip path loss are different figures and are often confused.

Installation

In SourceWeft

  1. Open Eme Mcp in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Desktop only via STDIO. STDIO servers start a local process, so they need the SourceWeft desktop host.

Other MCP clients

Follow the launch instructions in the repository.

README

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
Azimuthwithin 0.01°
Elevationwithin 0.003°
Rangewithin 9 km of ~392,000 (0.002%)

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

Install

bash
uvx eme-mcp            # run it; nothing to install

Tools

ToolDescription
eme_moon_windowMoon 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_lossOne-way, round-trip and echo path loss on 2m / 70cm / 23cm, or any frequency
eme_degradationHow much worse than perigee this moment is, with the moon's declination
eme_calendarThe least degraded days ahead
get_version_infoService 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.

Source: README.md at commit 443089d

Tools

5

get_version_info

Get Version Info

Get eme-mcp's version and the ephemeris series it computes from.

Takes no parameters.

eme_moon_window

Eme Moon Window

Where the moon is from a grid square, and when both ends of a schedule can see it.

Parametershourslocatorrequiredstep_minutesother_locator

eme_path_loss

Eme Path Loss

What the path to the moon and back costs, now or at a given time.

Parametersbandwhenlocatorfrequency_mhz

eme_degradation

Eme Degradation

How much worse than the best case the moon is, now or at a given time.

Parameterswhenlocator

eme_calendar

Eme Calendar

The least degraded days ahead — when the moon is nearest.

Parametersdays

Version history

6
  1. v0.4.0LatestOct 29, 2026
  2. v0.3.0Oct 26, 2026
  3. v0.2.3Oct 26, 2026
  4. v0.2.1Oct 26, 2026
  5. v0.2.0Oct 25, 2026
  6. v0.1.1Oct 11, 2026

Score

90% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 days25 pts
  • Auth declared10 pts

    Declare the credential headers in the registry entry, or keep the endpoint answering the probe so its auth can be classified.

  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts