Multi-tenant meeting recording platform: CLI + MCP server + Cloud Functions.
- Record meetings via Recall.ai bots (Zoom, Meet, Teams)
- Transcribe recordings with Google Speech-to-Text v2 (speaker diarization)
- Generate AI meeting notes using Gemini with hybrid RAG context from previous meetings
- Query meetings via natural language through MCP tools or CLI — adaptive depth, multi-turn conversations
shrod CLI ──────────────┐
MCP server (18 tools) ──┤──▶ GCS (multi-tenant storage)
Cloud Functions ────────┘ │
│ ├── recordings/YYYY/MM/DD/
│ ├── embeddings index
│ ├── knowledge base
▼ └── conversations
Recall.ai ◀──▶ Webhook pipeline
- CLI (
shrod) — 9 commands for bot management, transcription, notes, import - MCP server — 18 tools, stdio (dev) and HTTP/Cloud Run (production) transports
- Cloud Functions — webhook-driven automation pipeline
- Storage — GCS with per-tenant isolation
- AI — Gemini for transcription formatting, notes generation, RAG, and Q&A
| Command | Description |
|---|---|
shrod send <url> |
Send a recording bot to a meeting |
shrod download |
Download all Recall.ai recordings to GCS |
shrod transcribe |
Trigger STT v2 transcription for recordings |
shrod format |
Format transcript JSON to readable text with Gemini |
shrod notes [path] |
Generate AI meeting notes (single or --backfill all) |
shrod delete <path...> |
Delete recordings from GCS and embeddings index |
shrod reindex |
Rebuild embeddings index, backfill topics into frontmatter |
shrod bot-config <file> |
Update bot configuration in GCS |
shrod import-fireflies |
Batch import meetings from Fireflies.ai |
All commands support --tenant <id>, --dry-run, --verbose, and --json where applicable. Default tenant is myco.
18 tools accessible from Claude Desktop, Claude Code, Cursor, or any MCP client.
Tools: list_recordings, get_transcript, get_metadata, get_download_url, create_upload_url, process_upload, generate_notes, list_knowledge_base, get_knowledge_base_doc, add_knowledge_base_doc, remove_knowledge_base_doc, ingest_knowledge_base, import_recording, list_protocols, ask, list_conversations, get_conversation, update_bot_image
Local dev (stdio):
npm run mcpDeploy to Cloud Run:
bash scripts/deploy-mcp.shClient config (HTTP mode):
{
"mcpServers": {
"schrodinger": {
"type": "streamable-http",
"url": "https://schrodinger-mcp-xxxxx.run.app/mcp",
"headers": { "Authorization": "Bearer sk_tenant_..." }
}
}
}In stdio mode, pass tenant as a tool parameter. In HTTP mode, tenant is derived from the API key.
| Function | Trigger | Purpose |
|---|---|---|
handleRecallWebhook |
HTTP | Recall.ai webhook — triggers download + transcription pipeline |
handleCalendarOAuth |
HTTP | Google OAuth callback for Calendar V2 integration |
processNewRecordings |
Cloud Scheduler (4h) | Catch missed recordings |
generateNotesOnTranscript |
Eventarc (GCS finalize) | Auto-generate notes when transcript.txt lands |
npm install
npm link| Variable | Required | Purpose |
|---|---|---|
RECALL_API_KEY |
CLI/Functions | Recall.ai API key |
GCS_BUCKET_NAME |
All | GCS bucket name |
GCP_PROJECT |
STT/Functions | GCP project ID |
GEMINI_API_KEY |
Formatting/Notes | Gemini API key |
GCS_CREDENTIALS_FILE |
No | Path to service account JSON |
MCP_TRANSPORT |
No | http for Cloud Run (default: stdio) |
See docs/ for detailed setup guides.
src/
index.js CLI entrypoint (CJS)
core/
bot-config.mjs Bot config CRUD (GCS-first, filesystem fallback)
chat.mjs Meeting Q&A with adaptive depth + multi-turn
notes.mjs Notes generation pipeline (shared by MCP + CLI)
protocols.mjs Protocol loader + template renderer (GCS-backed)
rag.mjs RAG: indexing, retrieval, knowledge base
reindex.mjs Rebuild embeddings index + backfill topics
stt.mjs Google STT v2 BatchRecognize
import.mjs Import recordings from external sources
mcp/
server.mjs MCP server (18 tools, dual stdio/HTTP transport)
transcript/
recall-downloader.js Download recordings from Recall.ai to GCS
transcript-formatter.js Format transcript JSON with Gemini
utils/
config.js Environment config, tenant registry
gcs.js GCS client factory
embeddings.js Embedding generation, similarity scoring
commands/ CLI command implementations
assets/
protocols/ Meeting notes protocol templates
tenants.example.json Tenant registry seed template
functions/
index.js Cloud Functions (webhook, OAuth, scheduler, notes trigger)
scripts/ Deploy, infra, migration scripts
docs/ Documentation
- Meeting Notes System — protocols, RAG, knowledge base
- Transcript Processing — CLI commands, output format
- Multi-Tenancy — tenant routing, bot config, calendar integration
- Automation Setup — webhook pipeline, Cloud Functions
- Deployment Upgrade — multi-tenancy migration
- Deploy Notes (Cloud Run) — MCP server deployment