ankurmans/pepys-mcp
๐ โ๏ธ ๐ - Pay-once transcription for audio, video, and whole podcast feeds via Pepys. Transcribe a file or a pasted YouTube/podcast link, get speaker diarization, export SRT/VTT, search a transcript, and check credit balance. Hosted connector (OAuth, no API key) or npx pepys-mcp. 99+ languages.
Quick Install
{
"mcpServers": {
"ankurmans-pepys-mcp": {
"command": "uvx",
"args": [
"ankurmans-pepys-mcp"
]
}
}
}Using an AI coding agent (Claude Code, Cursor, etc.)? Copy a ready-made prompt that tells it to fetch the setup instructions and install this server for you.
Documentation Overview
pepys-mcp
Transcription for AI agents, by Pepys โ pay-once audio & video transcription at pepys.co.
The Pepys transcription MCP server โ give any MCP-speaking agent (Claude, ChatGPT, Cursor, Gemini, open-source agents) accurate, speaker-labeled, timestamped transcription of hours-long audio and video: diarization, correctly-timed SRT/VTT captions, paste-a-link ingestion (YouTube, podcasts, Drive/Dropbox), batch, and word-level export โ work a general model can't do on a raw file. Pepys never trains on your audio.
Thin stdio wrapper over the Pepys v1 REST API. Phase-1 (BYO-key). OAuth/remote is on the roadmap.
Install & configure
Requires Node โฅ 18 and a Pepys API key (pk_live_โฆ) from https://pepys.co/developers. You get 60 free minutes on signup โ no card. Buy any pack once to unlock diarization, batch, and word-level export.
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).
Tools
| Tool | What it does |
|---|---|
transcribe | Start a transcription from a url (file / YouTube / podcast / Drive) or a file_ref. Options: diarize (paid), summary, chapters, translate_to, quality, podcast episode_guid/episode_index. Returns { job_id, status }. |
get_transcription | Fetch a job by job_id; set wait_ms:25000 to long-poll short clips to completion in one call. |
upload_file | Upload local media (a path or bytes_base64) โ a file_ref for transcribe. |
list_transcriptions | Recent jobs (id, status, title, minutes). |
list_podcast_episodes | Episodes of an RSS/Apple/Spotify feed, with episode_guids. |
transcribe_podcast_feed | Batch a whole feed (or latest N). Paid. |
export_transcript | Export SRT / VTT / TXT / MD / JSON. Segment-level is free; word_level:true is a paid unlock. (DOCX/PDF: use the web app.) |
search_transcript | Find a phrase in a long transcript โ only the matching timestamped segments (no full-transcript context load). |
get_credit_balance | Remaining credit minutes + whether Pro is unlocked. |
Also exposes finished transcripts as the resource pepys://transcription/{id} and a transcribe_and_summarize prompt.
Billing over MCP: two graceful prompts โ 402 (out of minutes โ top up at pepys.co/billing) and a Pro-feature upgrade message (diarization / batch / word-level โ unlock with any one-time purchase). Segment exports, single transcription, links, and uploads are free on your minutes.
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 key
Publish
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 โ pay-once, usage-based transcription for audio and video (no subscription, credits never expire). Learn more at pepys.co ยท MCP server ยท Developer docs ยท Pricing.
License
MIT