- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
Hacker Public Radio Knowledge Base MCP Server
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
Installation
Prerequisites
- Node.js 18 or higher
- The HPR data files:
hpr_metadata/directory containing JSON fileshpr_transcripts/directory containing transcript files
Setup
- Install dependencies:
npm install
- Make the server executable:
chmod +x index.js
Usage
Running Locally
You can test the server directly:
npm start
Using with Claude Desktop
Add this to your Claude Desktop configuration file:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%/Claude/claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"hpr-knowledge-base": {
"command": "node",
"args": ["/absolute/path/to/knowledge_base/index.js"]
}
}
}
Replace /absolute/path/to/knowledge_base/ with the actual path to this directory.
Using with Other MCP Clients
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 querylimit(number, optional): Maximum results (default: 20)hostId(number, optional): Filter by specific hostseriesId(number, optional): Filter by specific seriestag(string, optional): Filter by tagfromDate(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 IDincludeTranscript(boolean, optional): Include transcript (default: true)includeComments(boolean, optional): Include comments (default: true)
Example:
Get details for episode 16 including transcript and comments
3. search_transcripts
Search through episode transcripts for specific keywords.
Parameters:
query(string, required): Search querylimit(number, optional): Maximum episodes to return (default: 20)contextLines(number, optional): Lines of context around matches (default: 3)
Example:
Search transcripts for mentions of "virtual machine"
4. get_host_info
Get information about a host and their episodes.
Parameters:
hostId(number, optional): Host IDhostName(string, optional): Host name to search forincludeEpisodes(boolean, optional): Include episode list (default: true)
Example:
Get information about host "klaatu" including all their episodes
5. get_series_info
Get information about a series and all its episodes.
Parameters:
seriesId(number, required): Series ID
Example:
Get information about series 4 (Databases series)
Available Resources
hpr://stats
Overall statistics about the HPR knowledge base
hpr://episodes/recent
List of 50 most recent episodes
hpr://hosts/all
List of all HPR hosts with episode counts
hpr://series/all
List of all HPR series with descriptions
Data Structure
The server expects the following directory structure:
knowledge_base/
├── index.js
├── data-loader.js
├── package.json
├── hpr_metadata/
│ ├── episodes.json
│ ├── hosts.json
│ ├── comments.json
│ └── series.json
└── hpr_transcripts/
├── hpr0001.txt
├── hpr0002.txt
└── ...
Development
Project Structure
index.js- Main MCP server implementationdata-loader.js- Data loading and searching functionalitypackage.json- Node.js package configuration
Extending the Server
You can add new tools or resources by:
- Adding new methods to
HPRDataLoaderindata-loader.js - Registering new tools in the
ListToolsRequestSchemahandler - Implementing tool logic in the
CallToolRequestSchemahandler
License
This MCP server code is released under CC-BY-SA to match the HPR content license.
The Hacker Public Radio content itself is released under various Creative Commons licenses as specified in each episode's metadata.
Credits
- Hacker Public Radio: https://hackerpublicradio.org
- MCP SDK: https://modelcontextprotocol.io
Contributing
Contributions are welcome! This server can be extended with:
- Advanced search features (fuzzy matching, relevance ranking)
- Tag cloud generation
- Episode recommendations
- Audio file access
- Web interface for browsing
Support
For issues related to:
- This MCP server: Open an issue in this repository
- HPR content: Visit https://hackerpublicradio.org
- MCP protocol: Visit https://modelcontextprotocol.io
Example Queries
Here are some example queries you can try with an MCP client:
- "Find episodes about Python programming from 2023"
- "Show me all episodes by Ken Fallon"
- "Search transcripts for discussions about encryption"
- "What is the Database 101 series about?"
- "Show me recent episodes about Linux"
- "Find episodes tagged with 'security'"
Enjoy exploring the Hacker Public Radio knowledge base!