This is the fastest way to add hosted multimodal RAG to Claude Desktop or Cursor without running your own vector stack. One npx command connects you to Gemini File Search for native retrieval across PDFs, screenshots, charts, and diagrams. You get dedicated upload tools for single files and batch knowledge ingestion, multi-turn conversations with context reset via /new, and verifiable citations with source metadata. The server exposes /v1/responses for grounded answers, /v1/knowledge APIs for uploads, and auto-discovery of your team's RAG variants. Reach for this when you want production document grounding without managing embeddings, chunking strategies, or OCR pipelines yourself.
CALYPSO_API_KEY*secretCalypso API key used to access the Calypso Responses API.
CALYPSO_API_BASE_URLOptional Calypso-compatible API base URL. Defaults to https://api.calypso.so/v1.
The easiest hosted multimodal RAG MCP server for Claude Desktop, Cursor, and agent workflows.
One npx command. Gemini File Search-powered. Handles PDFs, screenshots, charts, diagrams, and images natively with verifiable citations.
The easiest way to add hosted multimodal RAG to Claude, Cursor, Windsurf, and custom agents.
npx -y @calypsohq/multimodal-rag-mcp-server --api-key sk-your-key-here/new resetGitHub | Docs | Smithery | Official MCP Registry
Tags: multimodal-rag, easiest-mcp-rag, gemini-rag, hosted-rag-mcp, mcp-server
Instead of wiring each agent or workflow to a one-off document search stack, use this MCP as the agent-facing entry point to one reusable answer layer: upload source material once, retrieve across text and visual content, and return answers with evidence users can verify.
# One-liner with npx
npx -y @calypsohq/multimodal-rag-mcp-server --api-key "sk-your-key-here"
Or with environment variables:
CALYPSO_API_KEY="sk-..." npx -y @calypsohq/multimodal-rag-mcp-server
Then add the same command to Claude Desktop, Cursor, or Smithery using the configuration examples below.
Calypso is built for teams that want the easiest hosted multimodal RAG MCP server: no local vector stack, no Docker compose, and no custom OCR or image-processing pipeline before agents can ask grounded questions.
| Feature | Calypso | rag-anything-mcp | Pixeltable |
|---|---|---|---|
| Setup | 1 npx command (zero infra) | Clone + Python | Docker Compose |
| Multimodal | Native Gemini File Search (text + images, charts, diagrams, PDFs) with no extra vision pipeline | Strong OpenAI vision-based document RAG | Excellent for video, audio, images, and tables |
| Hosting | Fully hosted (self-host option) | Local-first | Local-first |
| Operations | Zero-ops cloud | Requires Python setup | Requires Docker |
| Upload tools | Built-in upload-session single file and batch knowledge tools | Yes | Yes |
| Citations / grounding | Strong evidence trail with retrieval metadata | Yes | Yes |
| Best for | Teams wanting zero-ops hosted multimodal RAG for MCP clients | Local document RAG experiments | Heavy local video/audio/data workflows |
Start here if you want the easiest hosted multimodal RAG MCP server.
Most company knowledge is not only text. The answer often lives across a setup screenshot, a PDF table, a product diagram, a help-center page, or a chart inside a report. Calypso packages that full knowledge surface into a single retrieval layer so agents can ask grounded questions without guessing from generic model memory.
In practice, this means your agent can answer questions like:
With calypso-rag-agent you can:
model argument/v1/responses conversation model/newcalypso-rag-agentfetch, Headers, Request, Response, FormData, Blob, and File) for API calls and SDK compatibility. The package bootstraps missing globals at startup for MCP runtimes that expose only part of the Node 18+ Web API surface.POST /v1/responsesGET /v1/rag-agent/modelsGET /v1/knowledge/bucketsPOST /v1/knowledge/files/upload-sessionPOST /v1/knowledge/files/upload-session/{session_id}/finalizePOST /v1/knowledge/files:batch/upload-sessionPOST /v1/knowledge/files:batch/upload-session/{batch_id}/finalizeGET /v1/knowledge/batches/{batch_id}sk-...)Environment variables:
CALYPSO_API_KEY (required)CALYPSO_API_BASE_URL (optional, default https://api.calypso.so/v1)CLI flags:
--api-key--api-base-urlConfiguration precedence:
https://api.calypso.so/v1)npx -y @calypsohq/multimodal-rag-mcp-server --api-key "sk-..."
env CALYPSO_API_KEY="sk-..." CALYPSO_API_BASE_URL="https://api.calypso.so/v1" npx -y @calypsohq/multimodal-rag-mcp-server
Add a new MCP server (command type) like:
npx -y @calypsohq/multimodal-rag-mcp-server --api-key sk-... --api-base-url https://api.calypso.so/v1
In Claude Desktop:
Claude -> Settings -> Developer -> Edit Config
On macOS, the file is usually:
~/Library/Application Support/Claude/claude_desktop_config.json
Claude Desktop uses claude_desktop_config.json for desktop MCP servers. Claude Code uses separate config locations such as ~/.claude.json or project-level .mcp.json.
Paste this into claude_desktop_config.json:
{
"mcpServers": {
"Calypso Multimodal RAG": {
"command": "npx",
"args": [
"-y",
"@calypsohq/multimodal-rag-mcp-server"
],
"env": {
"CALYPSO_API_KEY": "sk-your-calypso-api-key",
"CALYPSO_API_BASE_URL": "https://api.calypso.so/v1"
}
}
}
}
Replace:
sk-your-calypso-api-keywith your real Calypso API key.
Fully quit Claude Desktop, then reopen it.
Do not only close the window. On macOS:
Cmd + Q
After restart, the MCP should appear in Claude with these tools available:
calypso-rag-agentcalypso-list-knowledge-bucketscalypso-upload-knowledge-filecalypso-upload-knowledge-files-batchCalypso provides hosted multimodal RAG tools. It does not write generated reports, summaries, CSVs, JSON files, or web-search artifacts directly to your local computer.
To let Claude Desktop save generated files locally, add the standard filesystem MCP server alongside Calypso and restrict it to a dedicated safe folder.
Create the folder first:
mkdir -p ~/Claude
Then add both servers to claude_desktop_config.json:
{
"mcpServers": {
"Calypso Multimodal RAG": {
"command": "npx",
"args": [
"-y",
"@calypsohq/multimodal-rag-mcp-server"
],
"env": {
"CALYPSO_API_KEY": "sk-your-calypso-api-key",
"CALYPSO_API_BASE_URL": "https://api.calypso.so/v1"
}
},
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"/Users/yourname/Claude"
]
}
}
}
Fully quit and reopen Claude Desktop after changing the config.
Example prompt:
Use Calypso for the grounded RAG answer, then save the final report as /Users/yourname/Claude/report.md using the filesystem tool.
For safety, only grant filesystem access to a dedicated folder such as ~/Claude, not your whole home directory.
| Concern | Best Owner |
|---|---|
| Source-backed RAG answers | Calypso MCP |
| Uploading files into Calypso | Calypso MCP |
Writing .md, .pdf, .json, .csv, etc. to your Mac | filesystem MCP |
| Web search artifacts from Claude | Claude plus filesystem MCP prompt |
The server is available on Smithery and launches through the same npx package path used by desktop clients.
Smithery user config:
calypsoApiKey (required)calypsoApiBaseUrl (optional, defaults to https://api.calypso.so/v1)The Smithery launch path is equivalent to:
npx -y @calypsohq/multimodal-rag-mcp-server --api-key sk-... --api-base-url https://api.calypso.so/v1
Use calypsoApiBaseUrl only when targeting a self-hosted Calypso-compatible deployment. The cloud default does not need an override.
--api-key or CALYPSO_API_KEY--api-base-url / CALYPSO_API_BASE_URL ends in /v1https://api.calypso.so/v1npx -y @calypsohq/multimodal-rag-mcp-server path instead of running node dist/index.js from a fresh cloneFormData is not defined or Headers is not defined: upgrade to the latest package. The MCP server bootstraps missing Web Fetch API globals before upload tools run./mnt/user-data/uploads/...: that path belongs to a hosted agent or attachment sandbox, not necessarily to the MCP server. Retry with contentBase64 instead of filePath.filePath vs contentBase64Use filePath for local MCP installs, including Claude Desktop and Cursor configs that launch this package with a local command such as:
npx -y @calypsohq/multimodal-rag-mcp-server
In that setup, the MCP server process runs on your machine and can read paths available to the same user account. Pass the local path directly; the server reads raw bytes and uploads them through the Calypso upload-session URL. You do not need to base64-encode local files.
Use contentBase64 for hosted or remote MCP clients, including Smithery-hosted servers, browser/cloud runtimes, generated in-memory content, and agent containers. In those environments, a path on your Mac or workstation is not readable by the MCP server process.
If a path starts with /mnt/user-data/uploads, /mnt/data, /mnt/attachments, or another hosted sandbox prefix, do not send it as filePath unless this MCP server is running in that same sandbox. Use contentBase64 or another inline byte source instead.
calypso-rag-agentDirect Calypso RAG agent access.
Notes:
calypso-rag-agent variants at startup.model argument to choose a named variant such as calypso-rag-agent:pricing.POST /v1/responses instead of POST /v1/chat/completions.previous_response_id.fileIds are supported for retrieval-scoped questions. New uploads should use the durable knowledge upload tools and wait for indexing before asking./new as the prompt to reset the MCP conversation.calypso-list-knowledge-bucketsLists knowledge buckets for the team tied to the configured Calypso API key.
Notes:
GET /v1/knowledge/buckets.team_id; Calypso derives team scope from the API key.includeArchived: true when you need archived buckets for audits or cleanup.calypso-upload-knowledge-file or calypso-upload-knowledge-files-batch when you need to choose a destination bucket.calypso://rag-agent-models answers which buckets are bound to each RAG variant. calypso-list-knowledge-buckets answers which buckets exist for the API key's team.Example:
{
"includeArchived": false
}
calypso-upload-knowledge-fileUploads a file into the durable bucket-backed knowledge store and indexing pipeline.
Notes:
POST /v1/knowledge/files/upload-session, uploads bytes directly to storage, then finalizes with POST /v1/knowledge/files/upload-session/{session_id}/finalize.PUTs, not multipart form uploads.file_id.bucketIds, bucketSlugs, or bucket.filePath for local Claude Desktop/Cursor MCP installs where the server can read the path. Use contentBase64 for hosted or remote MCP clients that cannot read local paths./mnt/user-data/uploads/file.pdf, it should not send that as filePath; it should send the file bytes as contentBase64.title, tags, metadata, and idempotencyKey.bucketIds or bucketSlugs, or use bucket as a single-slug shortcut.createMissingBuckets: true with bucket slugs when you want Calypso to create missing destinations during upload.Example:
{
"filename": "handbook.pdf",
"mimeType": "application/pdf",
"filePath": "/Users/me/Documents/handbook.pdf",
"bucket": "support-handbook",
"createMissingBuckets": true,
"waitForIndexing": true
}
calypso-upload-knowledge-files-batchUploads 1 to 100 files into the durable knowledge store in one request.
Notes:
POST /v1/knowledge/files:batch/upload-session, uploads each accepted item directly to storage, then finalizes with POST /v1/knowledge/files:batch/upload-session/{batch_id}/finalize.PUTs, not multipart form uploads.batchIdempotencyKey; Calypso uses it to derive the durable batch id for retries.bucketIds, bucketSlugs, or bucket, unless every item provides its own bucket destination.bucketIds, bucketSlugs, bucket, and createMissingBuckets defaults, plus per-item overrides.filePath for local Claude Desktop/Cursor MCP installs where the server can read each path. Use per-item contentBase64 for hosted or remote MCP clients that cannot read local paths.client_file_id values when clientFileId is omitted.accepted or queued means the upload is durable, not necessarily query-ready. Use waitForBatchReady: true to poll GET /v1/knowledge/batches/{batch_id}?include_items=true.bucketSyncStatus, and bucketSync to distinguish indexed content from bucket-ready retrieval.Example:
{
"batchIdempotencyKey": "kb-seed-2026-06-04",
"bucket": "support-handbook",
"createMissingBuckets": true,
"items": [
{
"filename": "faq.txt",
"mimeType": "text/plain",
"filePath": "/Users/me/Documents/faq.txt"
}
],
"waitForBatchReady": true
}
calypso://server-infoRead-only server metadata, including package version, API base URL, transport, authentication model, and exposed capabilities.
calypso://rag-agent-modelsRead-only runtime catalog of team-scoped calypso-rag-agent model variants discovered from the configured API key, including each variant's active buckets, bucket_ids, and missing_bucket_ids. If discovery is unavailable, this resource falls back to the base calypso-rag-agent.
calypso://knowledge-bucketsRead-only runtime list of knowledge buckets for the team tied to the configured API key. Use it to inspect bucket ids/slugs and bucket-store readiness before uploads.
calypso://workflowsA compact guide to the supported RAG and knowledge-file workflows.
calypso://securityOperational security notes for API keys, local file reads, uploads, and logging.
calypso-knowledge-question: draft a grounded knowledge-base question for calypso-rag-agentcalypso-knowledge-ingestion: prepare a durable knowledge-store upload and follow-up querycalypso-reset-conversation: start a clean RAG thread with /newSummarize the knowledge base guidance for campaign approvalsWhat does our documentation say about indexing retries?Compare file indexing with retrieval execution in the current architecture/newFocus only on the ingestion path and ignore retrievalExplain which documented components are involved and whycalypso-list-knowledge-buckets or read calypso://knowledge-buckets before choosing a destinationcalypso-upload-knowledge-file with the file payload and optional title, tags, or metadatafilePath for local Claude Desktop/Cursor MCP installs; use contentBase64 for hosted or remote MCP clients that cannot read local pathsbucket: "support-handbook" for one destination, bucketSlugs for multiple slug-based destinations, or bucketIds when you already have stable bucket idscreateMissingBuckets: true when using slug-based bucket assignment and the destination may not exist yetwaitForIndexing: true if you want the tool to block until the knowledge file is indexedcalypso-upload-knowledge-files-batch with items, batchIdempotencyKey, and filePath per item for local MCP installs; use contentBase64 per item for hosted or remote MCP clientsbucket, bucketSlugs, bucketIds, or createMissingBuckets on the tool call, then override per item only when neededwaitForBatchReady: true and inspect returned item status plus bucket sync fields before querying fresh content/new to reset the MCP conversation (new conversation_id + cleared response chain).io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage
io.github.mikerawsonnz/llm-orchestration-agent
io.github.mikerawsonnz/authenticated-llm-agent
labforgedev/copilot-memory-mcp
csoai-org/agent-prompt-injection-firewall-mcp
io.github.mikerawsonnz/authenticated-multi-llm-agent