podcast-recommendations
Click on "Install 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., "@podcast-recommendationsfind me a podcast about Byzantine history I haven't heard of"
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.
Podcast Recommendations β Podcast Discovery MCP π°ποΈ
Podcast recommendations beyond the charts: long-tail podcast discovery, recommendations, and random spins β randomized probe queries surface shows the charts recycle forever, and every pick carries its feed URL, cadence, and typical episode length.
Ask any agent: "find me a podcast about Byzantine history I haven't heard of"
or "surprise me with a podcast" β podcast-recommendations is the tool that answers.
Zero API keys, zero configuration. Built on Apple's keyless iTunes podcast
endpoints (verified) and direct RSS feed reads: a 300KB feed becomes ~200
tokens of show intelligence, all arithmetic done server-side.
Why this exists
Search APIs return the same chart toppers for every query; LLMs recommend the
same famous podcasts everyone already knows. podcast-recommendations fixes discovery:
Randomized probe queries ("lesser known true crime", "history dispatches") fish the long tail instead of recycling the top 10.
Hard filters remove dead shows, one-episode experiments, explicit content (opt-in), and anything on your exclude list β with publisher-level dedupe so multi-picks stay diverse.
Feed peeks compute cadence (daily/weekly/β¦) and typical episode length server-side β commute-fit facts the model never has to calculate.
Honest attribution: every pick says which probe surfaced it. Discovery you can trust.
Related MCP server: PodcastIndex MCP Server
Tools
Tool | What it does |
| The discovery spin: long-tail picks by topic (or fully random), 1β5 distinct shows |
| Apple's charts overall or by genre, enriched with feed URLs + episode counts |
| Read any podcast RSS feed β cadence, typical length, latest episodes |
| Genre names accepted by |
| Updatable usage playbooks (fetched from this repo at runtime) |
Plus prompts: surprise-me, commute-pick.
Quickstart
# 1-Line Universal Installer (auto-configures Claude Desktop, Cursor, Claude Code, VS Code, ...)
curl -fsSL "https://podcast-recommendations.builditwithai.xyz/install" | bash
# Or run directly via your preferred runtime:
uvx podcast-recommendations
npx -y podcast-recommendationsExample
User: find me a podcast about true crime I haven't heard of
roulette(topic="true crime", exclude=["Serial", "Casefile"])
β picks: [{
title: "Milk and Murder", episode_count: 23,
cadence: "biweekly", typical_episode: "24m",
why_picked: "surfaced by the probe query βtrue crime chroniclesββ¦",
feed_url: "https://www.spreaker.com/show/4529395/episodes/feed",
recent_episodes: ["24. Lindsey Baum - Part Two (2022-05-11, 10m)", ...] }]Telemetry & privacy
Anonymous usage telemetry (no PII, no queries, no paths) via the fleet
standard (schema v2, dual-endpoint fallback). Opt out any time:
PODCAST_RECOMMENDATIONS_TELEMETRY=false or DO_NOT_TRACK=1.
Development
uv venv && uv pip install -e ".[dev]"
DO_NOT_TRACK=1 .venv/bin/python -m pytest tests/ -q # unit + live + e2eLive tests hit the real iTunes endpoints and real podcast feeds; they skip themselves when offline.
License
MIT
Available Tools
6 toolslist_genresList podcast genresARead-onlyIdempotent
The genre names accepted by roulette/trending
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds the relationship to roulette/trending, which is useful context, but does not add details about the return format, ordering, or any side effects. With annotations handling the core behavioral guarantees, a mid score is appropriate.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that is front-loaded and contains no filler. Every word contributes to the meaning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has no parameters, no output schema, and annotations cover its safe/read-only nature, the description adequately indicates what it returns (genre names) and its relationship to sibling tools. It could be slightly more explicit about the output format (e.g., a list of strings), but the current wording is sufficient for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters, so per the rubric the baseline is 4. No additional semantic explanation is needed since the tool takes no arguments.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool lists genre names and specifies they are the ones accepted by roulette/trending, distinguishing it from sibling tools. The verb 'list' and resource 'genres' are specific and unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'accepted by roulette/trending' implies this tool is used when you need genre names for those specific tools. It provides clear context for when to call it, though it does not explicitly mention when not to use it or name alternatives beyond the implicit sibling relation.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
peekPeek at a podcast feedARead-only
Fetch any podcast's RSS feed and return the show's cadence, typical episode length, and latest episodes
| Name | Required | Description | Default |
|---|---|---|---|
| episodes | No | ||
| feed_url | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and openWorldHint=true, covering safety and external data. The description adds value by specifying the exact output focus (cadence, episode length, latest episodes) and the 'any feed' scope, which matches the openWorldHint. No contradictions, and no adverse behavior is omitted that would be expected for a read-only fetch.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, efficient sentence that front-loads the action and scope, then states the output. No wasted words; every phrase contributes to understanding the tool's purpose and result.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With two parameters and no output schema, the description leaves the 'episodes' parameter unmentioned and does not specify how many episodes are included in 'latest episodes' or the exact return structure. The openWorldHint suggests external content but no error handling or edge cases are addressed. An agent would not know how to correctly set 'episodes' without further inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%. The description indirectly clarifies feed_url via 'any podcast's RSS feed', but it does not explain the 'episodes' parameter at all. The agent has to infer that 'episodes' likely controls how many latest episodes to return, and the default of 5 is not mentioned. With zero schema coverage, the description must compensate and fails to do so for the optional parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Fetch') and resource ('any podcast's RSS feed'), clearly stating what is returned (cadence, typical episode length, latest episodes). It distinguishes itself from sibling tools like roulette, trending, and listing tools, all of which imply different actions or targets.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides clear context: use this tool to fetch a podcast feed and get summary stats. It does not explicitly name alternatives or exclusions, but the purpose is distinct enough from the siblings that an agent would not confuse it. There is no explicit 'when not to use' guidance, so it falls short of a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
rouletteSpin the podcast rouletteBRead-only
Discover long-tail podcasts by topic β randomized probes surface shows the charts recycle forever
| Name | Required | Description | Default |
|---|---|---|---|
| seed | No | ||
| count | No | ||
| genre | No | ||
| topic | No | ||
| intent | No | ||
| country | No | us | |
| exclude | No | ||
| min_episodes | No | ||
| allow_explicit | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=false. The description adds 'randomized' β which aligns with non-idempotence β but does not disclose what the tool returns, how randomization works, or any side effects. It offers some extra but limited behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence β compact and front-loaded with the core action. However, the wording is somewhat poetic ('charts recycle forever') which, while memorable, adds little operational clarity.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With 9 parameters, no output schema, and 0% parameter documentation, the description is severely incomplete. An agent cannot reliably know what inputs are meaningful or what result format to expect, making successful invocation unlikely.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate. It only mentions 'topic' as a filter, leaving 8 other parameters (seed, count, genre, intent, country, exclude, min_episodes, allow_explicit) entirely unexplained. This is far from adequate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Discover') and resource ('podcasts'), and clarifies the niche ('long-tail', 'randomized probes'). It distinguishes itself from siblings like 'trending' by emphasizing non-chart discovery, though it doesn't name any sibling explicitly.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'Discover long-tail podcasts by topic' implies a use case for obscure discovery, but there is no explicit when-to-use vs. alternatives, no exclusions, and no pointer to sibling tools like 'trending' or 'peek'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skill_readRead a skillARead-onlyIdempotent
Fetch the full content of one skill by name (from skills_list) β guidance on error recovery and effective use
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, openWorldHint, and idempotentHint, covering safety and repeatability. The description adds the source dependency (skills_list) but does not disclose other behavioral traits like output length or error handling specifics. The mention of 'guidance on error recovery and effective use' is vague and does not add concrete behavioral context beyond annotations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, tightly written sentence that front-loads the action and source. The dash adds a note about guidance without bloat. Every word earns its place, with no redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple read-only tool with one parameter, no output schema, and strong annotations, the description suffices. It tells the agent what it does and where the input comes from. It does not detail error cases or return format, but these are minor given the tool's simplicity and the mention of 'guidance on error recovery' embedded in the description.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description carries the entire burden. It explicitly states that the 'name' parameter is the skill name and that it should come from skills_list. This adds meaningful meaning beyond the schema's bare 'name' field, though it leaves format specifics (e.g., case sensitivity) unclear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action (Fetch the full content), the resource (one skill), and the source (skills_list). It distinguishes itself from sibling tools like skills_list (which lists) and roulette/trending (which are unrelated). The title reinforces the purpose.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'by name (from skills_list)' provides clear context that the name should come from the skills_list tool, implying a workflow of listing first then reading. However, it does not explicitly state when not to use this tool or name alternatives; it only implies the dependency on skills_list.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
skills_listList skillsARead-onlyIdempotent
List available skills (guidance playbooks) for using this server well β read one with skill_read
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true and idempotentHint=true, covering the safety profile. The description adds meaningful context by defining what skills are (guidance playbooks) and their purpose (using the server well). It does not contradict annotations and provides useful domain context beyond the structured fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single sentence that front-loads the core action ('List available skills'), immediately defines the resource, and ends with an actionable pointer to the sibling tool. Every word earns its place; there is no fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple, parameterless, read-only listing tool, the description is complete. It tells the agent what the tool returns (a list of skills), what those skills are, and how to proceed (skill_read). No output schema exists, but the simplicity makes that acceptable. The annotations cover safety, so nothing is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has zero parameters, so there is nothing to document. Per the rubric, a baseline of 4 applies for 0 params. The description adds no parameter information because none exists, and the schema correctly shows an empty properties object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('List') and a resource ('available skills'), clarifies they are 'guidance playbooks', and directly distinguishes from the sibling tool skill_read by pointing to it as the next step. This is a precise, unambiguous purpose statement.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly tells the agent when to use this tool (to see the list of skills) and when to use the alternative skill_read ('read one with skill_read'), providing clear routing between the two related tools. This matches the standard of the get_calls example.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
trendingTrending podcastsARead-onlyIdempotent
Apple's top podcasts overall or by genre, enriched with feed URLs and episode counts
| Name | Required | Description | Default |
|---|---|---|---|
| genre | No | ||
| limit | No | ||
| country | No | us |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint=true, openWorldHint=true, and idempotentHint=true, covering safety and idempotency. The description adds valuable behavioral context by specifying the output is enriched with feed URLs and episode counts, and that the result can be filtered by genre. This goes beyond the annotations and informs the agent of the expected content.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence that conveys the core purpose, the two modes, and the enriched output. There is no wasted text; every phrase adds meaning and the structure is optimal for quick scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is relatively simple (3 optional params, no required fields) and the annotations cover safety. However, since there is no output schema and the parameter semantics are not fully explained, the description leaves an agent uncertain about how to set limit and country meaningfully. The enrichment detail is helpful, but the return structure and parameter usage are only partially covered, making it minimally adequate.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 3 optional parameters with no description coverage (0%). The description names the 'genre' concept ('overall or by genre') but does not explain what values genre accepts, what limit and country mean, or how they affect results. Given the low schema coverage, the description fails to compensate adequately for the callers' understanding of the parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb (list/trending), the resource (Apple's top podcasts), and the scope (overall or by genre). It also mentions the enrichment with feed URLs and episode counts, distinguishing its output from a simple ranking. There is no ambiguity about what the tool does.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the usage context: it lists top podcasts, which is distinct from the sibling tools like roulette (random selection) or peek (inspection). It explicitly tells the agent there are two modes (overall or by genre), but does not explicitly say when not to use it or mention alternatives. Still, the context is clear enough for an agent to route appropriately.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
6 tool updates
v0.1.0- First observed
list_genres - First observed
peek - First observed
roulette - First observed
skill_read - First observed
skills_list - First observed
trending
TDQS
Each tool has a clearly distinct purpose: roulette for random long-tail discovery, trending for top charts, peek for inspecting a specific feed, list_genres as a helper for the first two, and skills tools for meta-guidance. No two tools overlap in function, so an agent can reliably pick the right one.
Naming conventions are inconsistent. list_genres follows verb_noun, but skills_list and skill_read invert to noun_verb, while roulette, trending, and peek are single nouns or verbs without a pattern. This mixed style makes it harder to predict tool names.
Six tools is well-scoped for a podcast recommendation server: four core data-access tools plus two meta-tools for guidance. Each earns its place, and the count is neither sparse nor overwhelming.
The tool surface covers the primary workflows: discovering podcasts (roulette, trending), inspecting them (peek), and enumerating valid genres (list_genres). A minor gap is the lack of a direct search by podcast name (peek requires a feed URL), but this is not a fundamental hole for the server's purpose.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Podcast search, metadata, chapters, and transcripts for AI agents β from $15/mo
Podcast intelligence for agents: transcripts, clips, speaker diarization, mention tracking.
Spotify top podcast trends and listening signals. Free key at trendsapi.ai
- PodlexOAuthcom.aloudable
Ask your AI anything about any podcast. 4.8M shows: who makes them, why, and how much is AI.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceWraps the Podcast Index API (podcastindex.org) to enable AI agents to search and retrieve podcast episodes and metadata.16MIT
- FlicenseNot gradedqualityCmaintenanceEnables users to search for podcasts, discover trending shows, find episodes, and explore Value4Value monetization using the PodcastIndex API.3-

Rephonicofficial
AlicenseAqualityBmaintenanceGive AI agents and LLMs access to podcast data from Rephonic β covering 3+ million podcasts with listener estimates, demographics, contact details, chart rankings, episodes, and more.262MIT- AlicenseNot gradedqualityCmaintenanceEnables searching podcasts, episodes, curated content, and people, as well as retrieving top podcasts via the Listen Notes API.4MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/surendranb/podcast-recommendations'
If you have feedback or need assistance with the MCP directory API, please join our Discord server