Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Cassini Mission Plan

БесплатноНе проверен

Enables querying of the Cassini-Huygens mission dataset with tools for listing, searching, counting, aggregating, and browsing activities.

GitHubEmbed

Описание

Enables querying of the Cassini-Huygens mission dataset with tools for listing, searching, counting, aggregating, and browsing activities.

README

A read-only Model Context Protocol server over the Cassini-Huygens mission dataset (~62k activity rows). Built as an AI workshop demo: clean, readable TypeScript that runs live in Claude Desktop.

Live endpoint: https://cassini-mission-plan.paganio.workers.dev

🩺 A plain GET / returns a JSON health/info page. The MCP protocol itself is POST-only JSON-RPC, so any other request gets a 405.

# Health check
curl https://cassini-mission-plan.paganio.workers.dev

# List the tools (JSON-RPC over POST)
curl -X POST https://cassini-mission-plan.paganio.workers.dev \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list"}'

What it does

Exposes 7 MCP tools so an LLM client can query the Cassini master_plan table:

Tool What it answers
list_activities Filtered, paginated rows (date range, team, target)
get_activity Single row by id
search_activities FTS5 full-text search over title + description
count_activities Row count matching the same filters as list
aggregate_activities Group-by counts (team / target / spass_type)
timeline Bucketed counts over a date range (year or month) — zero-filled
list_distinct Distinct values of team / target / spass_type

Architecture

  • Runtime: Cloudflare Workers (TypeScript)
  • Data: Cloudflare D1 (SQLite) — master_plan table + FTS5 virtual table
  • Transport: hand-rolled MCP-over-HTTP (JSON-RPC 2.0 over plain HTTP POST)
  • Validation: zod schemas per tool; errors surface as JSON-RPC error objects

See docs/ARCHITECTURE.md for the full design.

Project setup

npm install

Run tests

npm test                  # Jest — all specs against in-memory SQLite

The deploy spec (spec/deploy-and-initialize.spec.ts) needs a live URL:

DEPLOY_URL=https://cassini-mission-plan.paganio.workers.dev npm test

Deploy (one-time setup)

  1. Create the D1 database:

    npx wrangler d1 create cassini
    

    Copy the database_id into wrangler.toml.

  2. Import the data (generates data/cassini.d1.sql from data/cassini.db):

    npm run import      # tsx scripts/import.ts → writes data/cassini.d1.sql
    npx wrangler d1 execute cassini --remote --file=data/cassini.d1.sql
    
  3. Deploy:

    npm run deploy
    

Local dev

npm run dev   # wrangler dev (uses local D1)

🔎 Query the data directly

The local D1 starts empty — seed it once from the generated SQL:

npx wrangler d1 execute cassini --local --file=data/cassini.d1.sql

Then run SQL against the master_plan table (drop --local for --remote to hit the deployed DB):

# Top science teams by activity count
npx wrangler d1 execute cassini --local \
  --command="SELECT team, COUNT(*) AS activities FROM master_plan GROUP BY team ORDER BY activities DESC LIMIT 5;"

# Full-text search via the FTS5 table
npx wrangler d1 execute cassini --local \
  --command="SELECT id, title FROM master_plan_fts JOIN master_plan USING(rowid) WHERE master_plan_fts MATCH 'titan flyby' LIMIT 5;"

# Activities targeting Enceladus, earliest first
npx wrangler d1 execute cassini --local \
  --command="SELECT start_iso, title FROM master_plan WHERE target='Enceladus' ORDER BY start_iso LIMIT 5;"

Docs

File What's in it
docs/PROJECT.md Problem, audience, goals, scope
docs/ARCHITECTURE.md Components, data model, key decisions
docs/SPEC.md Tool API reference + functional/non-functional requirements
docs/STORIES.md User stories (source for the spec suite)
docs/PLAN.md Build task checklist (all complete)
docs/MEMORY.md Decision log maintained with Claude Code

from github.com/opagani/cassini-workshop

Установка Cassini Mission Plan

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/opagani/cassini-workshop

FAQ

Cassini Mission Plan MCP бесплатный?

Да, Cassini Mission Plan MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Cassini Mission Plan?

Нет, Cassini Mission Plan работает без API-ключей и переменных окружения.

Cassini Mission Plan — hosted или self-hosted?

Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.

Как установить Cassini Mission Plan в Claude Desktop, Claude Code или Cursor?

Открой Cassini Mission Plan на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Cassini Mission Plan with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории development