About Cassini Workshop
Cassini Workshop is an MCP server published by robconery in the Data category: read-only MCP server over the Cassini-Huygens mission plan dataset — a Cloudflare Workers + D1 workshop demo.
The repository has 1 stars and 0 forks, with the last commit 4 months ago. Recent commit activity is the strongest signal that reported issues will get attention.
Install
git clone https://github.com/robconery/cassini-workshopThis server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.
Tools (7)
aggregate_activitiesGroup-by counts (team / target / spass_type)
Parameters not published.
count_activitiesRow count matching the same filters as list
Parameters not published.
get_activitySingle row by id
Parameters not published.
list_activitiesFiltered, paginated rows (date range, team, target)
Parameters not published.
list_distinctDistinct values of team / target / spass_type
Parameters not published.
search_activitiesFTS5 full-text search over title + description
Parameters not published.
timelineBucketed counts over a date range (year or month) — zero-filled
Parameters not published.
Ask AI
Ask AI about Cassini Workshop
Powered by Claude · Grounded in docs
Security checks
Static checks derived from the repository 3 days ago. Heuristics on the source, not an audit.
- ✓README presentThe repository ships documentation.
- ✓License declaredUsable under a stated license.
- ✓Tests presentA test suite exists in the repository.
- ✓Dependencies pinnedA lockfile pins dependency versions.
- ✓No dynamic code executionSource scan found no eval, dynamic Function, or shell execution.
1 check has not been run yet.
README
Cassini Mission Plan MCP
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.redfour.workers.dev
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_plantable + 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.redfour.workers.dev npm test
Deploy (one-time setup)
-
Create the D1 database:
npx wrangler d1 create cassiniCopy the
database_idintowrangler.toml. -
Import the data (generates
data/cassini.d1.sqlfromdata/cassini.db):node scripts/import.js # or: npx ts-node scripts/import.ts npx wrangler d1 execute cassini --remote --file=data/cassini.d1.sql -
Deploy:
npm run deploy
Local dev
npm run dev # wrangler dev (uses local D1)
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 |
README fetched from the repository 3 days ago. The original is authoritative.