Installation

MANNA is a Python package. The distribution on PyPI is manna-mcp; the import package and the command-line entry point are both manna (bare manna is reserved on PyPI). Python 3.12 or later is required.

The first launch downloads astropy and pyvo, which is large. Run the server once in a terminal before wiring it into a client whose startup timeout is short.

From PyPI

uvx manna-mcp --stdio        # MCP over stdio, for Claude Code / Claude Desktop
uvx manna-mcp                # HTTP server on http://localhost:8000
uv tool install manna-mcp
manna --stdio
python -m venv .venv && source .venv/bin/activate
pip install manna-mcp
manna                        # HTTP server on http://localhost:8000

manna-mcp and manna are both installed as commands; they are the same program. uvx needs a command named after the package, which is why the manna-mcp alias exists.

Tool names changed in 0.9.0 (they lost the vo_ prefix; see Tool names before 0.9.0 below). These pages describe 0.9.0 or later; check what you have with pip show manna-mcp or the /health endpoint, which reports the version.

From GitHub

Install the current main branch without cloning:

pip install "manna-mcp @ git+https://github.com/NSF-Simons-CosmicAI-Institute/manna@main"
# or, without installing:
uvx --from "git+https://github.com/NSF-Simons-CosmicAI-Institute/manna@main" manna --stdio

Replace @main with a tag (@v0.9.0) or a branch (@dev) as needed.

To work on the code, clone it and use uv:

git clone https://github.com/NSF-Simons-CosmicAI-Institute/manna
cd manna
uv sync
uv run python -m manna       # server on http://localhost:8000

See Development for tests, linting, and the branch flow.

Docker

Every release publishes a container image to the GitHub Container Registry:

Tag

Meaning

ghcr.io/nsf-simons-cosmicai-institute/manna:vX.Y.Z

a release

ghcr.io/nsf-simons-cosmicai-institute/manna:latest

the newest release

ghcr.io/nsf-simons-cosmicai-institute/manna:<sha7>

a build of one commit on main

docker run --rm -p 8000:8000 ghcr.io/nsf-simons-cosmicai-institute/manna:latest
curl http://localhost:8000/health

The image serves MCP over HTTP at http://localhost:8000/mcp/ and takes the same MANNA_* environment variables as the CLI (Configuration):

docker run --rm -p 8000:8000 -e MANNA_ARCHIVES=datalab,alma ghcr.io/nsf-simons-cosmicai-institute/manna:latest

Note

The package is currently private on ghcr.io; pulling it needs a GitHub account with read access to the NSF-Simons-CosmicAI-Institute organization (docker login ghcr.io). Until it is made public, build the image locally:

git clone https://github.com/NSF-Simons-CosmicAI-Institute/manna
cd manna && docker build -t manna:dev . && docker run --rm -p 8000:8000 manna:dev

From the MCP Registry

MANNA is listed in the official MCP Registry as io.github.NSF-Simons-CosmicAI-Institute/manna. Look it up with:

curl -s "https://registry.modelcontextprotocol.io/v0.1/servers?search=manna"

The record points at the PyPI package and resolves to the launch command uvx manna-mcp --stdio. A registry-aware client can install MANNA from that record directly; the pages that follow show the same configuration by hand for Claude Code, Claude Desktop, and Jupyter AI.

Verify

manna &                      # HTTP mode
curl -s http://localhost:8000/health
# {"status":"ok","version":"0.11.0"}  # your installed version
npx -y @modelcontextprotocol/inspector --cli http://localhost:8000/mcp --method tools/list

The Inspector call lists every tool, beginning with list_archives; the Tool reference page is generated from the same list. The endpoint answers at both /mcp/ and /mcp.

Tool names before 0.9.0

0.9.0 dropped the vo_ prefix for verb-first, descriptive names. A client pinned to the old names must update.

Before 0.9.0

Now

vo_archive_list

list_archives

vo_schema_describe

describe_table

vo_inspect_table

preview_table

vo_target_resolve

resolve_target_name

vo_tap_query

run_adql_query

vo_tap_status

get_async_job_status

vo_tap_results

get_async_job_results

vo_tap_abort

abort_async_job

vo_registry_search

search_ivoa_registry

vo_registry_describe

describe_ivoa_service

vo_cone_search

search_catalog_by_position

vo_sia_search

search_images_by_position

vo_find_observations

find_observations_of_target

vo_count_observations

count_observations_near_target

vo_survey_target

survey_archives_for_target