内容
# 播客 MCP
用于可搜索播客转录的说话者感知 MCP 服务器。
该项目从 RSS 源索引播客集, 转录它们, 确定说话者, 在 Postgres/pgvector 中存储语义嵌入, 并通过 MCP 提供只读搜索和检索工具。

## 演示
此仓库为 [AI Report](https://www.aireport.nl/) 提供了一个具体的生产部署。 超过 170 小时的播客集已被索引, 新的集将在发布时自动索引。
公开 MCP 端点:
```text
https://ai-report.bramdehart.nl/mcp
```
演示令牌:
```text
Bearer 9b55e1de7f3e0e8972377d3d9a77330929f6446bccf0927ccc648bb0d512018c
```
示例问题:
- 哪些集可用?
- 查找关于 Satya Nadella 的内容。
- Alexander 说了什么关于 Anthropic 的话?
- 在时间戳 12:34 附近提供转录上下文。
演示端点是只读的并且有速率限制。
## MCP 工具
- `list_episodes` — 列出已索引的播客集。
- `get_episode` — 获取集的元数据和说话者映射。
- `search_podcast_transcripts` — 对转录块进行语义搜索。
- `get_transcript_around_timestamp` — 在时间戳周围获取原始转录上下文。
- `search_by_speaker` — 按说话者搜索或列出块。
## 技术栈
- Python
- MCP Python SDK
- Postgres
- pgvector
- Docker Compose
- Hetzner VPS
- RunPod 无服务器 GPU 工作程序
- Faster Whisper
- pyannote 说话者识别
- OpenAI 嵌入,目前 `text-embedding-3-small`
- OpenAI 说话者名称映射,目前 `gpt-5.4-mini`
- Caddy 公共 HTTPS 反向代理
## 仓库布局
```text
src/podcast_mcp/
ingest/ RSS 同步、调度器、转录摄入、说话者名称修复
mcp/ MCP 服务器和工具实现
runpod/ RunPod 客户端和工作程序处理程序
transcribe/ 音频转录和说话者识别管道
db/migrations/ Postgres 模式
docs/ 部署和操作说明
```
## 本地使用
安装依赖项:
```bash
.venv/bin/pip install -r requirements.txt
```
列出已索引的集:
```bash
PYTHONPATH=src .venv/bin/python -m podcast_mcp.mcp.tools list-episodes
```
在本地运行 MCP 服务器:
```bash
PYTHONPATH=src .venv/bin/python -m podcast_mcp.mcp.server
```
有关完整的设置,请参见下面的文档。
## 文档
- [MCP 工具](docs/MCP.md)
- [RunPod 工作程序](docs/RUNPOD.md)
- [Hetzner 部署](docs/HETZNER.md)
- [项目上下文](docs/PROJECT_CONTEXT.md)
## 说话者属性
说话者名称通过识别和转录上下文推断出来。 工具使用者应考虑 `speaker_confidence`:
- `>= 0.85`: 将说话者名称视为确定。
- `0.60-0.85`: 将属性表述为可能或 probable。
- `< 0.60`: 说明说话者身份不确定。
## 状态
代码旨在保持足够的通用性,以适用于任何播客 RSS 源, 而演示部署是针对一个索引播客的具体实现。