pepys-mcp
Pepys turns audio/video into speaker-labeled, timestamped transcripts and lets an agent search, cite, and export them — over local stdio with a Pepys API key (or hosted OAuth connector).
Transcribe media from a public
url(YouTube, podcast episode/RSS, Drive/Dropbox share) or afile_ref, optionally with diarization, AI summary, chapters, translation, andfast/accuratequality.Upload local media (
pathor base64 bytes) to get afile_refwhen there's no public URL.Fetch results by
job_id— full text, per-speaker timestamped segments, summary, duration, billed minutes, language — withwait_mslong-polling (up to 25s) to finish short clips in one call.Manage jobs: list recent transcriptions, filter by status, resume or re-export instead of re-transcribing.
Work with podcasts: list episodes of an RSS/Apple feed with
episode_guids, or batch-transcribe a whole feed / latest N episodes (paid).Export finished transcripts as SRT, VTT, TXT, Markdown, or JSON with correct caption timings (word-level export is a paid unlock; DOCX/PDF in the web app).
Search inside long transcripts for a phrase and get only matching timestamped segments (with optional context), avoiding full-context loads.
Check credit balance (minutes left) and entitlement state before large batches.
Handle limits gracefully:
402yields an insufficient-balance result, unavailable capabilities return a clear entitlement result plus a supported fallback, and no purchases are initiated. Retries are safe viaidempotency_key; audio is never used for training.Note: the schema exposes these 10 tools; the README additionally mentions an
ask_transcriptionQ&A tool, apepys://transcription/{id}resource, and atranscribe_and_summarizeprompt that aren't present in this schema.
Allows transcribing podcast episodes from Apple Podcasts using episode GUIDs and feeds.
Allows transcribing audio/video files hosted on Dropbox via shareable links.
Allows transcribing podcast episodes from RSS feeds, including batch transcription of entire feeds.
Allows transcribing podcast episodes from Spotify using episode GUIDs and feeds.
Allows transcribing audio/video from YouTube URLs, including captions and timestamps.
Click on "Deploy 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., "@pepys-mcp Transcribe the YouTube video at https://youtu.be/dQw4w9WgXcQ"
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.
pepys-mcp
Transcription for AI agents, by Pepys.
The Pepys transcription MCP server – give any MCP-speaking agent (Claude, ChatGPT, Cursor, Gemini, open-source agents) speaker-labeled, timestamped transcription of audio and video: diarization, SRT/VTT captions, paste-a-link ingestion (YouTube, podcasts, Drive/Dropbox), batch, and word-level export. Pepys never trains on your audio.
The package runs locally over stdio with a Pepys API key. Pepys also hosts a production OAuth connector at https://pepys.co/api/mcp for compatible remote-MCP clients.
Install & configure
Requires Node ≥ 18 and a Pepys API key (pk_live_…) from https://pepys.co/developers. Some capabilities require an account entitlement.
Run it with npx (no global install):
Claude Desktop / Claude Code – claude_desktop_config.json (or claude mcp add):
{
"mcpServers": {
"pepys": {
"command": "npx",
"args": ["-y", "pepys-mcp"],
"env": { "PEPYS_API_KEY": "pk_live_your_key_here" }
}
}
}Cursor – ~/.cursor/mcp.json, same shape. Windsurf / other dev agents – point them at npx -y pepys-mcp with PEPYS_API_KEY in the env.
Optional env: PEPYS_API_BASE (defaults to https://pepys.co/api/v1).
Claude Code plugin
This repo also bundles a Claude Code plugin that points at the hosted OAuth connector (no API key needed):
/plugin marketplace add ankurmans/pepys-mcp
/plugin install pepysThe first tool call opens an OAuth sign-in to your Pepys account. See skills/pepys/SKILL.md for what it can do and example prompts.
Related MCP server: @scriptivox/mcp-server
Tools
Tool | What it does |
| Start a transcription from a |
| Fetch a job by |
| Upload local media (a |
| Recent jobs (id, status, title, minutes). |
| Episodes of an RSS/Apple/Spotify feed, with |
| Batch a whole feed (or latest N). Account entitlement required. |
| Export SRT / VTT / TXT / MD / JSON. Word-level timing requires an account entitlement. (DOCX/PDF: use the web app.) |
| Find a phrase in a long transcript → only the matching timestamped segments (no full-transcript context load). |
| Answer a question about a transcript with server-verified, citation-backed claims only. |
| Remaining transcription balance and entitlement state. |
Also exposes finished transcripts as the resource pepys://transcription/{id} and a transcribe_and_summarize prompt.
Account limits over MCP: 402 returns an insufficient-balance result, while unavailable capabilities return a clear entitlement result and a supported fallback where one exists. The MCP server does not initiate purchases or link to checkout.
Develop
npm install
npm run build # tsc → dist/ (+ chmod the bin)
npm run smoke # PEPYS_API_KEY=pk_live_… npm run smoke – hits the live API to verify your keyPublish
npm run build && npm publish (publishes pepys-mcp). Registry listings (MCP registry, mcp.so, Smithery, PulseMCP, Glama, awesome-mcp-servers) are submitted separately.
About
Built by Pepys. Learn more at pepys.co · MCP server · Developer docs.
License
MIT
Available Tools
9 toolsexport_transcriptExport a transcriptARead-onlyIdempotent
Export a finished transcript as SRT, VTT, TXT, Markdown, or JSON, with correct caption timings. Segment-level export is free; word-level-timed export (word_level:true) is a paid unlock. (DOCX/PDF are available in the Pepys web app.)
Inputs: format (required), job_id (required), word_level.
get_credit_balanceCheck credit balanceARead-onlyIdempotent
Return the account's remaining transcription credits (in minutes) so you can check headroom before starting a large batch and avoid running out mid-run.
Inputs: no named parameters.
get_transcriptionGet transcription resultARead-onlyIdempotent
Fetch a transcription by job_id: full text, per-speaker timestamped segments, summary, duration_seconds, billed_minutes, and language. Set wait_ms (up to 25000) to long-poll so short clips come back in one call; otherwise poll until status is 'done'.
Inputs: job_id (required), wait_ms.
list_podcast_episodesList podcast episodesARead-onlyIdempotent
Given a podcast RSS feed or Apple Podcasts show URL, list its episodes (title, publish date, episode_guid, audio_url) so you can pick exactly which one to transcribe.
Inputs: feed_url (required), limit.
list_transcriptionsList recent transcriptionsARead-onlyIdempotent
List this account's recent transcription jobs with their job_id, status, title, and duration, so you can resume, fetch, or export an earlier result instead of re-transcribing.
Inputs: limit, status.
search_transcriptSearch within a transcriptARead-onlyIdempotent
Search inside a long transcript for a phrase and get back only the matching timestamped segments – locate a quote or topic in an hours-long recording without loading the whole transcript into context.
Inputs: query (required), job_id (required), whole_word, max_results, +2 more.
transcribeTranscribe audio/videoAIdempotent
Transcribe hours-long audio or video into an accurate, speaker-labeled (diarized), timestamped transcript with correctly-timed SRT/VTT captions – work a general model can't do on a raw file. Accepts a file_ref from upload_file or a url (YouTube, podcast episode, RSS feed, Google Drive/Dropbox share). Audio is never used to train models. Returns { job_id, status }; fetch the result with get_transcription.
Inputs: url, diarize, quality, summary, +7 more.
transcribe_podcast_feedBatch-transcribe a podcast feedAIdempotent
Batch-transcribe a whole podcast feed in one call – fan out every episode, or the latest N, to individual jobs. Returns a set of job_ids. Paid capability (throughput/abuse gate).
Inputs: feed_url (required), latest, diarize, idempotency_key.
upload_fileUpload local mediaA
Upload local audio/video the agent is holding (as base64 bytes or a file path) and get back a file_ref to pass to transcribe. Use this when the media has no public URL. Requires the Pepys R2 storage backend.
Inputs: path, filename, mime_type, bytes_base64.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 9 tools
Each tool targets a distinct operation: uploading, transcribing (single/batch), fetching results, exporting, searching, listing, and credit checking. No functional overlap exists, allowing clear selection.
All tool names follow a consistent verb_noun pattern in snake_case (e.g., get_transcription, list_transcriptions, upload_file). The verb transcribe is used alone for the primary action, but its derived tools (transcribe_podcast_feed) remain consistent.
With 9 tools, the set is well-scoped for a transcription server. Each tool serves a distinct and necessary purpose without redundancy, fitting the typical optimal range of 3-15 tools.
The tool set covers the full transcription workflow: upload, transcribe (single and batch), fetch, export, search, and credit management. The only minor gap is the absence of a delete/reset tool, but this is not essential for the core use case.
Maintenance
Related MCP Connectors
Transcribe audio & video to text for AI agents: 100+ languages, speaker labels, webhooks.
Transcribe audio and video into speaker-labelled transcripts, subtitles, clips, and cited Q&A.
Transcribe audio and video and work with your transcript library from any AI app. 119 languages.
AI transcription API: turn voice memos, meetings and audio URLs into text and SRT subtitles.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceThis service provides fast and reliable transcriptions for audio/video files and voice memos. It allows LLMs to interact with the text content of audio/video file.8MIT
- AlicenseAqualityBmaintenanceEnables AI assistants to transcribe audio and video from URLs or local files with high accuracy, speaker diarization, 119 languages, and word-level timestamps, while also supporting transcription management and caption export in SRT, WebVTT, or plain text.14298 npm9MIT
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to submit and manage durable long-form audio transcription jobs, and read or export structured transcripts via MCP tools.1MIT
- AlicenseAqualityCmaintenanceEnables an assistant to transcribe video or podcast recordings, then read, search, summarize, and manage the resulting transcripts through MCP tools.10MIT