Trakt

🎬 MCP Trakt:人工智能通往娱乐数据的大门

模型上下文协议 (MCP) 服务器在 AI 语言模型和 Trakt.tv API 之间架起了一座桥梁,允许 LLM 访问实时娱乐数据和个人 Trakt 观看历史记录。

🖥️ 一项人工智能实验

除了这一段,这里的所有内容,包括代码,都是由AI生成的。我的目标是了解更多关于MCP的知识,而且我一直在使用Cursor,所以把这些结合起来似乎是理所当然的。最终成果就是这个项目。以后所有的修改也将由AI完成。

🤖 什么是 MCP?

模型上下文协议 (MCP) 是一种开放规范,它使 Claude 等大型语言模型 (LLM) 能够与外部系统和数据源进行交互。

MCP 为 AI 模型创建了一种标准化方法:

  • 获取培训截止日期之后的实时数据
  • 通过专用服务器连接到外部 API 和 Web 服务
  • 安全地执行专门的工具和功能
  • 读取和写入外部资源
  • 处理纯文本格式难以处理的复杂数据

MCP 的核心工作原理如下:

  1. 资源:AI 可以读取或写入的结构化数据源(例如trakt://shows/trending
  2. 工具:AI 可以调用来执行特定操作的函数(例如fetch_trending_shows
  3. 会话:AI 和 MCP 服务器之间的安全连接

像这样的 MCP 服务器充当 AI 模型和外部世界之间的桥梁,允许它们扩展新功能而无需重新训练。

📺 什么是 Trakt?

Trakt.tv是一个自动追踪用户观看的电视节目和电影的平台。该服务提供:

  • 全面跟踪多个流媒体服务的观看习惯
  • 社交功能可与朋友分享和讨论您正在观看的内容
  • 根据您的观看历史进行个性化推荐
  • 开发人员可以使用广泛的 API 来构建应用程序

Trakt 已成为娱乐追踪的标准,其特点如下:

  • 超过 1400 万用户追踪他们的观看习惯
  • 数百万部电影和电视节目的数据,包括详细的元数据
  • 与流行的媒体播放器和流媒体服务集成

该 MCP 服务器利用 Trakt 丰富的 API 生态系统,将实时娱乐数据直接带入您与 Claude 等 AI 助手的对话中。

🚀 游标开发体验

整个项目使用Cursor (一款为人工智能时代打造的代码编辑器)开发,所有代码均由 Claude 3.7 Sonnet 生成。这种方法演示了:

  • AI辅助开发如何显著加速构建专用MCP服务器
  • 现代人工智能编写功能性、结构良好的代码的能力
  • 人类意图与人工智能实现之间的协作工作流程

✨ 特点

🌎 公共轨迹数据

  • 观看热门和热门的节目和电影
  • 发现最受欢迎、播放次数最多和观看次数最多的内容
  • 从 Trakt 的全球社区获取实时数据
  • 带有标题、年份和受欢迎程度指标的格式化回复

👤 个人数据

  • 查看您观看过的节目:获取您亲自观看过的节目的完整列表
  • 查看您上次观看每部剧集的确切日期
  • 追踪你观看每个节目的次数
  • 签到您正在观看的节目并将其标记为已观看
    • 按节目 ID(更精确)或节目标题(更方便)
    • 将签到分享到 Twitter、Mastodon 或 Tumblr
    • 在您的签到中添加自定义消息
    • 以人类可读的格式查看您观看该剧集的时间
  • 搜索节目以查找其详细信息和 ID
  • 通过设备代码流使用 Trakt 进行安全身份验证
  • 个人数据直接从您的 Trakt 帐户获取

🔄 一般功能

  • 通过 MCP 资源公开 Trakt API 数据
  • 提供获取实时娱乐信息的工具
  • 使人工智能模型能够提供个性化的娱乐推荐
  • 简单的身份验证和注销过程

📺 当前热门节目

自 2025 年 4 月起,您可以访问以下热门节目:

  • 《白莲花》(2021)——7,870 名观众
  • 《夜魔侠:重生》(2025)——6738名观众
  • 《遣散》(2022)——4507名观众

🎥 当前热门电影

目前最热门的电影:

  • 《黑包》(2025)——1,491 名观众
  • 《一个工作的人》(2025)——1226名观众
  • 《米奇17号》(2025年)——764名观众

🔌可用资源

显示资源

资源描述示例数据
trakt://shows/trending过去 24 小时内观看次数最多的节目节目名称、年份、观看人数
trakt://shows/popular根据收视率最受欢迎的节目节目名称、年份、热门分数
trakt://shows/favorited最受喜爱的节目显示标题、年份、收藏数
trakt://shows/played播放次数最多的节目节目名称、年份、播放次数
trakt://shows/watched独立用户观看次数最多的节目节目名称、年份、观看人数

电影资源

资源描述示例数据
trakt://movies/trending过去 24 小时内观看次数最多的电影电影名称、年份、观看人数
trakt://movies/popular根据评分最受欢迎的电影电影名称、年份、评分
trakt://movies/favorited最喜爱的电影电影名称、年份、收藏数
trakt://movies/played播放次数最多的电影电影名称、年份、播放次数
trakt://movies/watched独立用户观看次数最多的电影电影名称、年份、观看人数

用户资源

资源描述示例数据
trakt://user/auth/status当前身份验证状态身份验证状态、令牌到期
trakt://user/watched/shows经过身份验证的用户观看的节目节目名称、年份、上次观看日期、播放次数
trakt://user/watched/movies经过身份验证的用户观看的电影电影名称、年份、上次观看日期、播放次数

🛠️ 可用工具

显示工具

# Get trending shows with optional limit parameter fetch_trending_shows(limit=10) # Get popular shows with optional limit parameter fetch_popular_shows(limit=10) # Get favorited shows with optional limit and period parameters fetch_favorited_shows(limit=10, period="weekly") # Get most played shows with optional limit and period parameters fetch_played_shows(limit=10, period="weekly") # Get most watched shows with optional limit and period parameters fetch_watched_shows(limit=10, period="weekly") # Search for shows by title to get show IDs and details search_shows(query="Breaking Bad", limit=5)

电影工具

# Get trending movies with optional limit parameter fetch_trending_movies(limit=10) # Get popular movies with optional limit parameter fetch_popular_movies(limit=10) # Get favorited movies with optional limit and period parameters fetch_favorited_movies(limit=10, period="weekly") # Get most played movies with optional limit and period parameters fetch_played_movies(limit=10, period="weekly") # Get most watched movies with optional limit and period parameters fetch_watched_movies(limit=10, period="weekly")

身份验证和用户工具

# Start the device authorization flow with Trakt start_device_auth() # Check the status of an ongoing authentication check_auth_status() # Clear authentication (logout) clear_auth() # Fetch shows watched by the authenticated user fetch_user_watched_shows(limit=0) # 0 for all shows # Fetch movies watched by the authenticated user fetch_user_watched_movies(limit=0) # 0 for all movies

签到工具

# Method 1: Check in using show ID (recommended when precision is important) # First use search_shows to find the correct show ID search_shows(query="Breaking Bad", limit=5) # Then use the ID for check-in checkin_to_show( season=1, episode=3, show_id="1388", message="Loving this show!" ) # Method 2: Check in using show title (more convenient) checkin_to_show( season=1, episode=1, show_title="Breaking Bad", show_year=2008, # Optional but helps with accuracy message="I'm the one who knocks!", share_twitter=True, share_mastodon=False, share_tumblr=False )

🔐 身份验证

服务器使用 Trakt 的设备认证流程:

  1. 当你请求用户特定数据时,服务器将根据需要自动启动身份验证
  2. 您将收到一个代码和一个可以在浏览器上访问的 URL
  3. 在 Trakt 网站上输入代码并授权应用程序后,通知 Claude 您已完成授权
  4. Claude 将检查身份验证状态,然后获取您的个人数据
  5. 您的身份验证令牌将被安全存储,以供将来的请求使用

您可以随时使用clear_auth工具注销。

🚀 设置

  1. 克隆此存储库
    git clone https://github.com/yourusername/mcp-trakt.git cd mcp-trakt
  2. 安装依赖项
    pip install -r requirements.txt
  3. 设置您的环境
    cp .env.example .env
    然后编辑.env以添加您的 Trakt API 凭证:
    TRAKT_CLIENT_ID=your_client_id TRAKT_CLIENT_SECRET=your_client_secret
  4. 运行服务器
    python server.py

🧪 开发与测试

使用 MCP Inspector 进行测试

mcp dev server.py

在 Claude Desktop 中安装

mcp install server.py

📝 与 Claude 一起使用

安装完成后,您可以向 Claude 询问以下问题:

  • “现在什么节目最流行?”
  • “你能推荐一些本周热门的电影吗?”
  • “本月收视率最高的节目是什么?”
  • “显示我看过的节目”(需要身份验证)
  • “我看的最后一部电视剧是什么?”(需要身份验证)
  • “显示我看过的电影”(需要身份验证)
  • “我看的最后一部电影是什么?”(需要身份验证)
  • “搜索类似《绝命毒师》的电视剧”
  • “帮我看看《绝命毒师》第二季第五集” (使用标题)
  • “请关注节目 ID 1388 第 1 季第 3 集并在 Twitter 上分享”(使用 ID)

Claude 将使用此 MCP 服务器为您提供来自 Trakt 的实时数据。

👤 个人数据访问

通过身份验证,您可以访问:

  • 您观看过的节目和电影的完整历史记录
  • 每部节目和电影的最后观看日期
  • 您观看每个节目和电影的次数
  • 签到您正在观看的节目并跟踪您的进度
  • 个人收视统计
  • 在社交媒体平台上分享您的观看活动

所有数据均直接从您的 Trakt 帐户实时获取。

🔮 未来发展

  • 扩展用户身份验证以访问更多个人数据
  • 为即将播出的剧集添加日历事件
  • 支持 scrobbling(跟踪您正在观看的内容)
  • 根据观看历史实施推荐
  • 扩展搜索范围,除节目外还包含电影
  • 增加对更多社交媒体平台的支持以供分享

📄 许可证

MIT 许可证


ID: i7vhmgvc4t