GeezerVisonThe World Wide Web, restored to 800 pixels of glory. | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Home|About|Gaming cabinet|Archives|How it works|Starter sites | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
GeezerVison is showing pythonbytes.fm — MCP Server and AI Integrations - Python Bytes Podcast
Brought to you by
Talk Python Courses
and Six Feet Up consulting
Python Bytes MCP ServerModel Context Protocol access to 10 years of Python news What this isPython Bytes runs a public, read-only MCP server. Point Claude, Claude Code, Cursor, or any other MCP-capable assistant at it and it can search the archive, pull up a specific episode's show notes and links, read full transcripts, and check when the next live stream is. There is no account, no API key, and no rate limit. Everything served here is the same public podcast data already on the website. The server is read-only: nothing an assistant does through it can change anything. Add it to your assistantMost clients read a JSON config file. Add the Python Bytes entry to yours and restart the client:
On macOS, Claude Desktop keeps that file at
No MCP support in your tool? Every episode is also available as plain Markdown by
adding Server details
Available toolsThe server exposes 12 tools. Your assistant discovers them automatically, so this list is here for humans deciding whether it is worth adding.
|
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string |
Yes | Search query (keywords to find in episode titles and show notes) |
limit |
integer |
No | Maximum number of results to return |
search_transcriptsSearch the spoken content of Python Bytes episodes by keyword. Use this when you want what the hosts actually said rather than what the show notes list. Returns the matching episodes with links to the episode page and its WebVTT transcript.
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string |
Yes | Search query (keywords to find in episode transcripts) |
limit |
integer |
No | Maximum number of results to return |
get_episodeGet full details for a specific Python Bytes episode by its show number. Returns the title, published date, duration, audio and video links, the topics covered, and the complete show notes.
| Parameter | Type | Required | Description |
|---|---|---|---|
show_id |
integer |
Yes | The episode show number (e.g., 400 for episode #400) |
get_episodesGet a list of every published Python Bytes episode with its show number and title. Useful for browsing the archive before looking up a specific episode. This is a large response; prefer search_episodes or get_recent_episodes when you can.
No parameters.
get_recent_episodesGet the most recently published Python Bytes episodes, newest first. Use this to answer questions about what is new in Python.
| Parameter | Type | Required | Description |
|---|---|---|---|
limit |
integer |
No | Number of recent episodes to return |
get_episode_topicsGet the individual news items covered in a Python Bytes episode. Each episode covers several numbered topics, one per host, and each topic links out to the package, article, or project being discussed. Returns each topic with its presenter, position in the show, and outbound links.
| Parameter | Type | Required | Description |
|---|---|---|---|
show_id |
integer |
Yes | The episode show number |
get_transcript_for_episodeGet the full plain-text transcript for a Python Bytes episode. Transcripts are long, so expect a substantial number of tokens.
| Parameter | Type | Required | Description |
|---|---|---|---|
show_id |
integer |
Yes | The episode show number |
get_transcript_vttGet the transcript for a Python Bytes episode in WebVTT format. WebVTT includes a timestamp for each segment, useful for subtitles or for linking to a specific moment in the audio. Transcripts are long, so expect a substantial number of tokens.
| Parameter | Type | Required | Description |
|---|---|---|---|
show_id |
integer |
Yes | The episode show number |
get_next_livestreamGet the next scheduled Python Bytes live stream, or the one currently in progress. Python Bytes records live on YouTube most Tuesdays. Returns the title, start time, and watch URL.
No parameters.
search_coursesSearch Talk Python Training courses, chapters, and lectures by keyword. Talk Python Training is the course platform run by Python Bytes co-host Michael Kennedy. Optionally search within a specific course by providing a course_id.
| Parameter | Type | Required | Description |
|---|---|---|---|
query |
string |
Yes | Search query (keywords to find in course, chapter, and lecture titles) |
course_id |
integer |
No | Optional: search within a specific course only (provide the course ID) |
get_coursesGet a list of all available Talk Python Training courses. Returns course titles, descriptions, URLs, tags, prices, and publication dates. Use this to browse the catalog before searching for specific content.
No parameters.
get_course_detailsGet full details for a Talk Python Training course by ID, including its chapter and lecture structure with durations.
| Parameter | Type | Required | Description |
|---|---|---|---|
course_id |
integer |
Yes | The course ID (get one from get_courses or search_courses) |
The endpoint is plain JSON-RPC 2.0 over HTTP POST, so you do not need an MCP client to use it. Start with the handshake:
curl -X POST https://pythonbytes.fm/api/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize",
"params":{"clientInfo":{"name":"my-client","version":"1.0"}}}'
List what is available:
curl -X POST https://pythonbytes.fm/api/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":2,"method":"tools/list","params":{}}'
Then call a tool:
curl -X POST https://pythonbytes.fm/api/mcp \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":3,"method":"tools/call",
"params":{"name":"search_episodes","arguments":{"query":"uv","limit":5}}}'
Tools return human-readable Markdown by default, which is what you want when a
language model is going to read the result. Add ?format=json to the
endpoint URL and every tool returns structured data instead:
curl -X POST "https://pythonbytes.fm/api/mcp?format=json" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","id":4,"method":"tools/call",
"params":{"name":"get_episode_topics","arguments":{"show_id":400}}}'
Either way the payload arrives in the MCP content block, so with
?format=json the text field holds a JSON-encoded string
you parse yourself. List tools return an array and single-item lookups return an object.
get_transcript_for_episode and get_transcript_vtt return the
entire transcript in one block. A single Python Bytes transcript runs to roughly
15,000 tokens, so pull one deliberately rather than in a loop. If you are looking for
a specific moment, search_transcripts will narrow it down first.
Something broken, or a tool you wish existed? Email [email protected]. Talk Python runs its own MCP server too, with the podcast archive and the full course catalog.