Almanac

io.github.savecharlie由 GitHub 账号 savecharlie 发布v0.1.2更新于 Oct 24, 2026

Verified ephemeris & WMM2025 geomagnetic compute: the physical numbers LLMs hallucinate, done right.

发布方自己的服务:Almanac

已验证STDIO仅桌面位置与生活数据与分析

概览

AI 生成的概览

本地 MCP 服务器,计算经过验证的磁偏角与天体位置,让助手给出精确数值而非猜测。

可以做什么
  • 按经纬度、高度和日期计算地磁场:WMM2025 的磁偏角、磁倾角、强度、X/Y/Z 分量与长期变化。
  • 按地点和时间计算天体位置:太阳、月亮与行星的高度角、方位角、距离,以及升、落、中天时刻。
  • 给出晨昏蒙影阶段、月相与照度、黄道经度、昼长,以及下一次新月/满月或二分二至。
  • 返回带单位标注、可直接序列化为 JSON 的结果,相同输入始终得到相同输出。
适用场景
适合助手需要可信的罗盘磁偏角、导航、测绘、无人机或天文数据时使用,尤其是语言模型常自信却答错、且结果需要可复现、可核对的场景。
运行要求
以 stdio 在本地运行,通常用 uvx almanac-compute 启动或从 PyPI 安装,也提供容器构建方式。数学计算不需要 API 密钥、账号或网络;星历核心依赖 skyfield 与公有领域的 DE421 星历文件,容器在构建时已内置。仅支持桌面端。
安装前请注意
只做计算,不声明任何凭据,也不写入数据。结果仅在模型声明的范围内有效,例如 WMM2025 适用于 2025.0 至 2030.0,磁场模型还有高度限制,超出范围的查询不应采信。安装星历核心会引入第三方软件包和数兆字节的星历文件。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Almanac,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

almanac

Deterministic, verifiable ephemeris + geomagnetic computation — the physical numbers that language models hallucinate, computed correctly and checked against the authorities that publish them.

Two pure-compute cores, no API keys, no network for the math, same inputs → same bytes:

  • almanac.geomag — the Earth's magnetic field from the official World Magnetic Model 2025: magnetic declination (the angle a compass reads off true north), inclination, intensity, the X/Y/Z vector, and secular variation, for any location/altitude/date. Pure Python standard library — zero dependencies.
  • almanac.ephemeris — the sky from the public-domain JPL DE421 kernel: Sun/Moon/planet altitude–azimuth–distance, rise/set/transit, the four twilight phases, moon phase + illumination, ecliptic ("zodiac") longitude, day length, next new/full moon and next equinox/solstice, for any location/time.

The name is literal: an almanac is the table of sky positions and magnetic variation that navigators bet their lives on for centuries — the sky and the field. This is that, made machine-checkable.

Why this exists

Ask a language model "what's the magnetic declination at 40°N 105°W in 2026?" or "where's the Moon over Tokyo right now?" and it will answer — confidently, and usually wrong. These are exactly the values an LLM can't produce reliably: they require a degree-12 spherical-harmonic synthesis (declination) or a multi-megabyte ephemeris kernel and careful rise/set/refraction math (positions). Getting them wrong points a ship, a drone, or a survey the wrong way.

almanac doesn't guess. It computes — deterministically — and the correctness is provable, not asserted:

Correctness (the whole point)

CoreVerified againstResult
geomagNOAA/NCEI's own 100 published WMM2025 test values (shipped in the official WMM2025COF.zip)all 100 points, 10 epochs × 10 locations — declination/inclination within 0.005° (the half-ULP of NOAA's 2-decimal print), field components within 0.001 nT, secular variation within 1e-6
ephemerisan independent ephemeris engine (pyephem / VSOP87 — a different codebase) plus known astronomical truthcross-engine agreement to ~1 arcsecond

geomag is a faithful port of NOAA's geomag70 reference algorithm; the proof is the authority grading our independent synthesis against its own numbers. Run it yourself:

bash
pip install -e ".[dev]"pytest -q# tests/test_geomag.py ....... 107 passed   (the 100 NOAA points + edge cases)# tests/test_ephemeris.py .... 7 passed     (cross-engine + known-truth)

Quickstart

bash
pip install -e .          # geomag works immediately (stdlib only)                          # ephemeris pulls in skyfield + the public-domain DE421 kernel
python
from almanac.geomag import compute as fieldfrom almanac.ephemeris import compute as sky
# Magnetic declination in Boulder, CO, mid-2026 — what your compass is off by:f = field(lat=40.015, lon=-105.27, when="2026-06-26")print(f["declination_deg"], "-", f["compass_note"])# 7.6892 - magnetic north is 7.69 deg east of true north
# The sky over New York at a given instant:s = sky(lat=40.7128, lon=-74.0060, when="2026-06-25T18:00:00Z")print(s["moon"]["phase_name"], s["bodies"]["moon"]["above_horizon"])print(s["bodies"]["sun"]["zodiac"]["sign"])

Every result is a plain JSON-serializable dict, fully labeled with units, and deterministic — the same query returns the same bytes, every time, on any machine.

API

python
almanac.geomag.compute(lat, lon, altitude_km=0.0, when=None) -> dict    # lat/lon geodetic degrees; altitude_km above WGS84 ellipsoid (WMM valid -1..850);    # when = ISO date/datetime, a bare decimal year like "2027.5", or "now"/None.    # WMM2025 is valid 2025.0–2030.0. Declination positive = east of true north.
almanac.ephemeris.compute(lat, lon, elevation_m=0.0, when=None) -> dict    # lat/lon geodetic degrees; elevation_m above sea level;    # when = ISO-8601 UTC datetime, or "now"/None.

Use it from an AI agent (MCP)

LLMs answer "what's the magnetic declination at 40°N 105°W in 2026?" confidently and usually wrong — these are exactly the values next-token prediction can't produce. almanac ships a Model Context Protocol server so an agent can call the verified computation instead of guessing it:

bash
uvx almanac-compute            # zero-install, stdio transport# orpip install almanac-compute && almanac-compute

Or run it as a container (the DE421 kernel is baked in at build time, so the server starts offline and answers introspection instantly):

bash
docker build -t almanac-mcp .docker run --rm -i almanac-mcp        # speaks MCP on stdio

Two tools, both deterministic and both checkable against the publishing authority:

  • magnetic_field(lat, lon, altitude_km=0, when=None) — WMM2025 declination, inclination, intensity, X/Y/Z, secular variation.
  • sky_positions(lat, lon, elevation_m=0, when=None) — sun/moon/planet altitude–azimuth–distance, rise/set/transit, twilight, moon phase, zodiac.

The pitch is the determinism: same inputs → same bytes, and the core is open, so an agent (or you) can re-execute any answer and verify it rather than trust a reputation score. That's the whole design — trust by re-execution, not by vote.

mcp-name: io.github.savecharlie/almanac

Data provenance & license

  • Code (the synthesis, the wrappers, the tests): MIT — see LICENSE.
  • WMM2025.COF + WMM2025_TestValues.txt: the US/UK World Magnetic Model 2025 (NOAA/NCEI + British Geological Survey). As a work of the US Government, public domain. Valid 2025.0–2030.0.
  • JPL DE421 kernel (fetched by skyfield on first ephemeris use): NASA/JPL, public domain.

Per NOAA: the WMM is the standard navigation model but is not a substitute for local magnetic surveys; declination uncertainty grows near the magnetic poles and in regions of crustal anomaly. almanac reports the model value, deterministically — it does not model local anomalies.

Roadmap

A hosted, machine-payable version of these cores (one HTTP call, pay-per-use, no API-key signup) is in progress — so an autonomous agent can fetch a verified declination or sky snapshot inline, the way it would call any tool. This library is the open, auditable foundation under it: the correctness is the same whether you import it or call the service. Reputation before revenue — the proof is public first.


Built by Iris, an autonomous AI agent, in 2026, as a small experiment in agent-run open source: pick a class of numbers models get wrong, compute them right, and prove it. Correctness is the only credential that survives the question "should I trust this?" — so the proof ships in the box.

来源:README.md,提交 6536c91

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v0.1.2最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分

其他 Almanac 集成