This release is a pre-release and may not be stable for production use.
MARS (MCP Astronomy Research Suite) is an agentic, tool-enabled system for
automated astronomy: a registry of purpose-built tools — SIMBAD, NED, VizieR,
ATNF, MAST, MPC, CASDA and ADS queries, plus local pulsar, variable-star,
optical photometry, plate-solving, HR-diagram and radio-source pipelines —
that an LLM agent plans and executes research tasks with. Serve them over MCP
to your own coding agent, or drive them from the mars console.
The algorithms behind the tools come from two production systems built around the Skynet Robotic Telescope Network at the University of North Carolina at Chapel Hill: Skynet itself, extracted directly into Python, and Astromancer, its light-curve, periodogram and star-cluster web application, ported from TypeScript. They are extractions, not rewrites — algorithms, constants, comments and known bugs are preserved, and the test suite checks bit-for-bit parity with recorded Skynet output rather than "fixing" it in transit.
Quick Start
From an MCP host (Claude Code, Claude Desktop, Codex, Cursor, …), with no
checkout — install skynet-mars on
Python 3.13 and register its server:
uv tool install --python 3.13 "skynet-mars[mcp]"
mars-mcp self-test # runs a pulsar detection end to end
claude mcp add --scope user mars -- /full/path/to/mars-mcp
Other hosts, the optional data bundles (mars-mcp fetch-data), credentials
and where files go are in docs/installing.md.
From a checkout, run the console. It needs a model backend — Anthropic by
default (ANTHROPIC_API_KEY), or OpenAI-compatible, Gemini, or a local Ollama
daemon, switchable in the session with /backend:
uv sync
uv run mars
The console's commands, keys and flags are in
docs/tool-architecture.md §10.2;
backend settings are in §10.
Every tool is also a plain Python function (from tools.simbad import search_simbad), listed in
§2.
Three optional optical frames are Git LFS objects (git lfs pull); see
data/README.md.
What's Here
| Path | What it holds |
|---|---|
tools/ |
The public tool surface: plain Python wrappers, the tool registry, the agent loop (agent/), the model port (llm/), the mars console (tui/), the MCP server (mcp/), and the benchmark harness (bench/). |
algorithms/ |
The extracted Skynet packages (wcs/, photometry/, fieldcal/, catalogs/, query/, shared skylib_lite/), the Astromancer ports (pulsar/, variable_star/, hrdiagram_py/), and the new radio/. |
skills/mars-tools/ |
The agent skill for using the tools, generated from tools/skill/source/. |
tests/ |
Algorithm-preservation and tool-smoke tests; no network by default. |
data/ |
Fixture frames, pulsar scans and recorded reference solves. |
benchmarks/, docs/ |
The model benchmark corpus; the documentation. |
Documentation
docs/README.md— the documentation map.docs/installing.md— installing with no checkout, registeringmars-mcp, data bundles.docs/tool-architecture.md— the architecture: public tools, algorithm ownership, the agent loop, console, benchmark and MCP server.docs/repository-folders.md— every folder, its important files, and its configuration (WCS solver and ATLAS catalog setup, VizieR settings).docs/extraction.md— upstream provenance, severed dependencies and preserved parity quirks, per package.docs/pulsar-tool-pipeline.md— the four-stage pulsar chain.docs/benchmarking/README.md— the model benchmark and its results.docs/releasing.md— how releases and data bundles are cut.tests/README.md— what the test suite proves and what it does not cover.
Contributing
Target dev, keep changes narrow, and run the checks CI enforces
(uv run pytest, python3 -m compileall tools algorithms tests,
git diff --check). See
CONTRIBUTING.md,
and AGENTS.md for
agentic contributors.
License
Copyright (C) 2026 Skynet Robotic Telescope Network.
MARS is licensed under the GNU General Public License v3.0 only
(GPL-3.0-only); the full text is LICENSE. It is the licence of
the Skynet projects it grew from: Astromancer and Skycat carry the same text.
The code under algorithms/ comes from three places (provenance per file in
docs/extraction.md):
- Skynet, by the same group as MARS:
skyliband the optical processing inskynet-db, extracted intoalgorithms/skylib_lite/,wcs/,photometry/,fieldcal/andcatalogs/. - Astromancer, by the same
group, GPL-3.0: ported to Python in
algorithms/pulsar/,algorithms/variable_star/andalgorithms/hrdiagram_py/. - Afterglow Core, Apache-2.0: parts of the query layer in
algorithms/query/. Apache-2.0 code may be combined into a GPL-3.0 work.
Files that carry their own third-party notice — for example the BSD-3-Clause
header in algorithms/skylib_lite/util/overlap.py — keep it, and those terms
apply to those files as well.
Metadata
Release files for skynet-mars 0.1.0rc6
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| skynet_mars-0.1.0rc6.tar.gz | 2.3 MB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| skynet_mars-0.1.0rc6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 4.6 MB
Release files / skynet_mars-0.1.0rc6.tar.gz
| Download URL | skynet_mars-0.1.0rc6.tar.gz |
|---|---|
| Size | 2.3 MB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
defc888619915a326932073ad3ce13e2df9227f40be1403a33f685b7cc44fa2c
|
|
BLAKE2b-256 checksum How to use checksums |
ee3da8d9f0d157b4df640730474aa476a36a6adca8c0e93bbe7c7c11ab733a1e
|
| 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 3, 2026.
Transparency logRelease files / skynet_mars-0.1.0rc6-py3-none-any.whl
| Download URL | skynet_mars-0.1.0rc6-py3-none-any.whl |
|---|---|
| Size | 2.2 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
30465db94cfd1f9057cc969c3bc1d95a5287a61b144804aca0fd3663da5ec247
|
|
BLAKE2b-256 checksum How to use checksums |
0ac53b3b418e27a021ed3dd5f8ef7b3df4f8ec597453515eeefcae3e6ad4dcec
|
| 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 3, 2026.
Transparency log