An MCP (Model Context Protocol) server providing access to the Hacker Public Radio (HPR) knowledge base, including episodes, transcripts, hosts, series, and community comments.
## About HPR
Hacker Public Radio is a community-driven podcast where hosts contribute content on topics of interest to hackers. All content is released under Creative Commons licenses, making it freely available for learning and sharing.
## Features
This MCP server provides:
- **Episode Search**: Search through thousands of HPR episodes by title, summary, tags, or host notes
- **Transcript Search**: Full-text search across all episode transcripts
- **Episode Details**: Get complete information about any episode including transcript and comments
- **Host Information**: Look up hosts and see all their contributions
- **Series Browsing**: Explore mini-series of related episodes
- **Statistics**: View overall HPR statistics and recent episodes
Any MCP-compatible client can connect to this server via stdio. The server will load all HPR data on startup and make it available through tools and resources.
## Available Tools
### 1. `search_episodes`
Search for episodes by keywords in title, summary, tags, or notes.
**Parameters:**
-`query` (string): Search query
-`limit` (number, optional): Maximum results (default: 20)
-`hostId` (number, optional): Filter by specific host
-`seriesId` (number, optional): Filter by specific series
-`tag` (string, optional): Filter by tag
-`fromDate` (string, optional): Filter from date (YYYY-MM-DD)
-`toDate` (string, optional): Filter to date (YYYY-MM-DD)
**Example:**
```
Search for episodes about "linux kernel" from 2020 onwards
```
### 2. `get_episode`
Get detailed information about a specific episode.
**Parameters:**
-`episodeId` (number, required): Episode ID
-`includeTranscript` (boolean, optional): Include transcript (default: true)
-`includeComments` (boolean, optional): Include comments (default: true)
**Example:**
```
Get details for episode 16 including transcript and comments
-`query` (string, optional): Phrase to search for. Useful for exact-phrase lookups.
-`terms` (string[], optional): Explicit list of terms to search for; combine with `matchMode` for logical AND/OR searches.
-`matchMode` (`'phrase' | 'any' | 'all'`, optional): How to combine `query`/`terms`. Defaults to `'phrase'`. Use `'any'` to match if any term is present, `'all'` to require every term somewhere in the transcript.
-`limit` (number, optional): Maximum episodes to return (default: 20).
-`contextLines` (number, optional): Lines of context to include around each match (default: 3).
-`hostId` (number, optional): Only return matches for this host ID.
-`hostName` (string, optional): Only return matches for hosts whose name includes this value.
-`caseSensitive` (boolean, optional): Treat terms as case-sensitive (default: false).
-`wholeWord` (boolean, optional): Match whole words only (default: false).
-`maxMatchesPerEpisode` (number, optional): Maximum number of excerpts per episode (default: 5).
**Example queries:**
```
Find transcripts mentioning "virtual machine"
```
```
Find transcripts where klaatu talks about bash or python