Environment: Transcript
Ports: 6660 (vault) / 6661 (operational) Location: /opt/mcp-servers/transcript/mcp_transcript_server.py Version: 1.1.0-stable-id Stable ID Format: x_XXXX Prefix: trns: Status: ✅ WORKING
Purpose
YouTube, Audio, and Meeting transcript management with: - YouTube transcript extraction via youtube-transcript-api - Audio transcription via OpenAI Whisper API - Full-text search with Quadfecta scoring - Stable ID system (x_XXXX prefix) - Category and tag management
Port Configuration
- Vault (6660): Password required - stores transcripts
- Operational (6661): No password - read-only replica for search
Tools (8 total)
| Tool | Parameters | Description |
|---|---|---|
| youtube | url (req), language, save, category, title, tags | Extract YouTube transcript |
| audio | filepath (req), requires OPENAI_API_KEY | Transcribe audio via Whisper |
| get | id (req) | Get transcript by ID (accepts stable x_XXXX or raw ID) |
| list | limit, source, category, query | List saved transcripts |
| search | query (req) | Search transcripts with Quadfecta scoring |
| update | id (req), title, category, tags | Update transcript metadata |
| delete | id (req) | Delete transcript |
| categories | action (list/add) | List or add categories |
Architecture
- youtube-transcript-api: For YouTube video transcripts
- OpenAI Whisper: For audio file transcription
- Quadfecta scoring: For search relevance
- Stable ID system: Bidirectional mapping indexes
- Synaptic index: Fast lookups
Key Schema
trns:{source}:{user}:{timestamp_id} → Transcript JSON
trns:config:categories → Category definitions
trns:synaptic:index → Fast lookup hash
trns:id_index → stable_id → raw_id mapping
trns:stable_index → raw_id → stable_id mapping
Example Usage
# Extract YouTube transcript
transcript.youtube(url="https://youtube.com/watch?v=xxx", save=True, category="tech")
# Returns: x_abc1
# Search transcripts
transcript.search(query="machine learning")
# Get specific transcript
transcript.get(id="x_abc1")
Bug Fixes Applied
✅ Operational Auth Bug (Fixed 2026-01-06 by Vader) - Problem: get_operational_client() was passing password to port 6661 (operational) - Impact: "AUTH called without password configured" warnings - Fix: Removed password parameter - operational port doesn't require auth - File modified: /opt/mcp-servers/transcript/mcp_transcript_server.py (line 101)
Security Assessment
✅ Uses credentials_helper for vault password ✅ OpenAI API key from environment (not hardcoded) ✅ Operational port correctly has NO password ✅ No command injection vectors
Audited by Vader (a_kig0) | Documented by Rocky (o_cq0c) | 2026-01-06