Transcribes YouTube videos, extracting video title, full transcript, thumbnail URL, and video ID from any YouTube video.
pocket-joe-mcp-toys
MCP servers built with pocket-joe - YouTube transcription and more.
What's Inside
YouTube Transcriber
MCP server that transcribes YouTube videos, extracting:
Video title
Full transcript
Thumbnail URL
Video ID
Built using pocket-joe policies and deployed to Railway.
Deploy to Railway
Prerequisites
Railway account (Hobby plan recommended)
GitHub account
Steps
Push this repo to GitHub
Deploy to Railway
Go to Railway Dashboard
Click "New Project" → "Deploy from GitHub repo"
Select
pocket-joe-mcp-toysRailway auto-detects Python and deploys
Wait for deployment (takes ~2-3 minutes)
Get your endpoint
Click on your deployment
Copy the public URL:
https://your-app.railway.app
Use in Claude Desktop
Add to your Claude Desktop config at ~/Library/Application Support/Claude/claude_desktop_config.json:
Restart Claude Desktop and you'll see the YouTube transcription tool available.
Local Development
Setup with uv
Server runs at http://localhost:8000/mcp
Test locally with Claude Desktop
Use http://localhost:8000/mcp in your config during development.
Architecture
This uses pocket-joe's policy system:
Policy:
TranscribeYouTubePolicy- handles video transcriptionAppContext: Manages policy instances and bindings
FastMCP: Wraps policies as MCP tools with
@mcp.tool()decoratorTransport: Streamable HTTP for Railway
Deployment: Stateless (scales horizontally)
Railway Configuration
Runtime: Python 3.12
Package Manager: uv (auto-detected via
pyproject.toml)Entry Point:
python main.pyPort: Auto-assigned via
$PORTenv var
Cost
Railway Hobby plan:
$5/month credit
Enough for ~500k requests/month
Auto-sleep after inactivity
Custom domains included
Adding More Tools
To add more pocket-joe policies as MCP tools:
Create your policy class in
main.pyAdd to
AppContextwithself._bind(YourPolicy)Create a FastMCP tool with
@mcp.tool()that calls your policyPush to GitHub (Railway auto-deploys)
License
MIT