Cassini Mission Plan MCP
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@Cassini Mission Plan MCPlist activities targeting Enceladus"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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.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 |
| Filtered, paginated rows (date range, team, target) |
| Single row by id |
| FTS5 full-text search over title + description |
| Row count matching the same filters as list |
| Group-by counts (team / target / spass_type) |
| Bucketed counts over a date range (year or month) — zero-filled |
| Distinct values of team / target / spass_type |
Related MCP server: hepdata-mcp
Architecture
Runtime: Cloudflare Workers (TypeScript)
Data: Cloudflare D1 (SQLite) —
master_plantable + FTS5 virtual tableTransport: 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 installRun tests
npm test # Jest — all specs against in-memory SQLiteThe deploy spec (spec/deploy-and-initialize.spec.ts) needs a live URL:
DEPLOY_URL=https://cassini-mission-plan.paganio.workers.dev npm testDeploy (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):npm run import # tsx scripts/import.ts → writes data/cassini.d1.sql npx wrangler d1 execute cassini --remote --file=data/cassini.d1.sqlDeploy:
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.sqlThen 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 |
| Problem, audience, goals, scope |
| Components, data model, key decisions |
| Tool API reference + functional/non-functional requirements |
| User stories (source for the spec suite) |
| Build task checklist (all complete) |
| Decision log maintained with Claude Code |
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/opagani/cassini-workshop'
If you have feedback or need assistance with the MCP directory API, please join our Discord server