播客数据服务

一个解析Podcasting 2.0 RSS订阅并提供通过MCP工具访问播客数据的FastMCP服务器。

  • by Red5d
  • Python
  • 本地部署
  • 5 星标
  • 更新于
在 GitHub 查看 Red5d/jupiterbroadcasting_mcp

使用说明

播客2.0 RSS数据MCP服务器

FastMCP服务器解析播客2.0 RSS提要,并通过MCP工具提供对剧集数据的访问。

特性

此MCP服务器提供四个主要工具:

  1. 列表显示 -返回可用播客节目列表
  2. 搜索剧集 -按节目、日期范围、主持人或文本内容搜索剧集
  3. 获取剧集 -检索特定剧集的详细信息
  4. 获取成绩单 -获取可用的剧集记录

安装

该项目使用 uv Python依赖管理的包管理器。

先决条件

  • Python 3.10或更高版本
  • 紫外线 包管理器

安装uv(如果尚未安装)

curl -LsSf https://astral.sh/uv/install.sh | sh

克隆和设置

git clone <repository-url>
cd podcast_mcp
uv sync

用法

运行服务器

要启动MCP服务器,请执行以下操作:

uv run podcast_mcp

或者:

uv run python -m podcast_mcp.server

MCP工具

1.列表显示

返回可用播客节目名称的数组。

{
  "tool": "list_shows",
  "arguments": {}
}

退货: 节目名称数组(例如。, ["Linux Unplugged", "This Week in Bitcoin", ...])

2.搜索剧集

使用各种条件搜索剧集。必须至少提供一个参数。

{
  "tool": "search_episodes",
  "arguments": {
    "show_name": "Linux Unplugged",
    "since_date": "2024-01-01",
    "before_date": "2024-12-31",
    "hosts": ["Chris Fisher", "Wes Payne"],
    "text_search": "kubernetes"
  }
}

参数:

  • show_name (可选):按特定节目筛选
  • since_date (可选):在此日期或之后发布的剧集(YYYY-MM-DD或ISO格式)
  • before_date (可选):在此日期之前发布的剧集(YYYY-MM-DD或ISO格式)
  • hosts (可选):要筛选的主机名数组
  • text_search (可选):在剧集标题和描述中搜索文本

退货: 包含元数据的剧集对象数组

3.获取剧集

检索特定剧集的详细信息。

{
  "tool": "get_episode",
  "arguments": {
    "show_name": "Linux Unplugged",
    "episode_number": "635"
  }
}

参数:

  • show_name (必填):演出名称
  • episode_number (必填):剧集编号

退货: 包含完整元数据的剧集对象,包括:

  • 标题和说明
  • 出版日期
  • 主机信息
  • 音频文件URL
  • 成绩单URL(如果可用)
  • 持续时间
  • 主机

4.获取成绩单

获取一集的文字记录内容。

{
  "tool": "get_transcript",
  "arguments": {
    "show_name": "Linux Unplugged",
    "episode_number": "635"
  }
}

参数:

  • show_name (必填):演出名称
  • episode_number (必填):剧集编号

退货: 包含转录文本或错误消息的对象

配置

添加新订阅源

要添加或修改RSS源,请编辑 FEEDS 字典在 podcast_mcp/server.py:

FEEDS = {
    "Show Name": "https://example.com/feed.rss",
    "Another Show": "https://example.com/another-feed.rss",
}

播客2.0命名空间支持

此服务器支持播客2.0命名空间元素,包括:

  • <podcast:person> 获取主机信息
  • <podcast:transcript> 用于转录URL
  • 标题、描述和附件的标准RSS元素

发展

建立开发环境

# Install with development dependencies
uv sync --group dev

# Run tests
uv run pytest

# Format code
uv run black .
uv run isort .

# Type checking
uv run mypy .

项目结构

podcast_mcp/
├── podcast_mcp/
│   ├── __init__.py
│   ├── server.py          # Main MCP server
│   └── rss_parser.py      # RSS feed parsing logic
├── tests/                 # Test files
├── pyproject.toml         # Project configuration
└── README.md

错误处理

服务器包括全面的错误处理:

  • 无效的搜索参数返回错误消息
  • 记录获取提要时的网络故障
  • 缺失的剧集或成绩单会返回相应的错误响应
  • 格式错误的RSS源得到妥善处理

依赖项

  • fastmcp:用于构建MCP服务器的FastMCP框架
  • lxml 文件:具有完整Podcast 2.0命名空间支持的高性能XML解析
  • 请求::用于获取提要和转录的HTTP客户端

许可证

MIT许可证-有关详细信息,请参阅许可证文件。

贡献

  1. 分叉存储库
  2. 创建要素分支
  3. 进行更改
  4. 添加新功能的测试
  5. 运行测试套件和linting
  6. 提交拉取请求

支持

有关问题和疑问,请在GitHub存储库上打开问题。