返回市场
轨迹_mcp服务器

轨迹_mcp服务器

作者:wwiens11 星标更新:2025-11-21

项目介绍

🎬 MCP Trakt:您的AI娱乐数据网关

MCP Trakt 由AI+人类构建 由Claude驱动

一个模型上下文协议(MCP)服务器,它在AI语言模型与Trakt.tv API之间建立桥梁,允许大型语言模型访问实时娱乐数据和个人Trakt观看历史。使用FastMCP构建了一个领域聚焦架构,实现了身份验证、节目、电影、用户数据、评论、搜索和签到功能之间的清晰分离。

🖥️ 一个AI实验

除了这一段落外,所有内容都是由AI生成的,包括代码。我的目标是更多地了解MCP,并且一直在玩Cursor,所以将这些结合起来似乎是自然而然的下一步。结果就是这个项目。未来的所有更改也将由AI完成。

📚 关于MCP & Trakt

模型上下文协议(MCP)使AI模型能够通过标准化工具和资源与外部系统交互。Trakt.tv是一个拥有超过1400万用户的全面平台,用于跟踪电视节目和电影,并为开发者提供了广泛的API。

🚀 快速开始

Docker快速启动

docker run -d --rm --name trakt_server \
  -e TRAKT_CLIENT_ID=your_client_id \
  -e TRAKT_CLIENT_SECRET=your_client_secret \
  -p 8080:8080 \
  ghcr.io/wwiens/trakt_mcpserver:latest

本地安装

  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
    

在Claude Desktop中安装

在您的Claude Desktop MCP配置文件中添加以下内容:

{
  "mcpServers": {
    "trakt": {
      "command": "python",
      "args": ["/path/to/your/server.py"],
      "env": {
        "TRAKT_CLIENT_ID": "your_client_id",
        "TRAKT_CLIENT_SECRET": "your_client_secret"
      }
    }
  }
}

✨ 功能

🌎 公共Trakt数据

  • 访问热门和受欢迎的节目和电影
  • 发现最受欢迎、播放次数最多和观看次数最多的内容
  • 获取来自Trakt全球社区的实时数据
  • 格式化的响应包含标题、年份和流行度指标
  • 查看详细评分:包括平均分数和分布情况

👤 个人Trakt数据

  • 查看您观看过的节目:获取您亲自观看过的节目的完整列表
  • 查看您每个系列的最后观看日期
  • 跟踪您观看每个节目的次数
  • 签到正在观看的节目:将其标记为已观看
    • 通过节目ID(更精确)或节目标题(更方便)
    • 包含自定义消息的签到
    • 查看您以人类可读格式观看的剧集时间
  • 搜索节目:查找其详细信息和ID
  • 管理您的评分:查看、添加和删除对电影、节目、季和剧集的个人评分,支持分页
  • 管理您的观看清单:查看、添加和删除观看清单中的项目,支持分页和排序
    • 按类型过滤(全部、电影、节目、季、剧集)
    • 按多个标准排序(排名、添加日期、标题、发布日期、时长、流行度、百分比、投票数)
    • 向观看清单项目添加可选注释(VIP功能,500字符限制)
  • 通过设备码流进行安全的身份验证
  • 直接从您的Trakt账户获取个人数据

💬 评论与评价

  • 查看节目和电影的评论:阅读其他人对您喜欢的内容的看法
  • 查看特定季和剧集的评论:获得关于节目特定部分的见解
  • 查看单条评论及其回复:参与社区讨论
  • 隐藏剧透:默认情况下隐藏带有剧透的评论
  • 切换剧透可见性:选择显示或隐藏剧透
  • 查看评价:更长、更详细的评论被标记为评价
  • 查看评分分布:查看有多少用户给出了1-10的评分

🔄 通用功能

  • 通过MCP资源提供Trakt API数据
  • 提供获取实时娱乐信息的工具
  • 使AI模型能够提供个性化的娱乐推荐
  • 简单的身份验证和注销过程
  • 分页支持:对于列表端点(趋势、热门、收藏、播放、观看、搜索、评论、评分、观看清单),传递page: int以获取单页结果及元数据(分页响应),或省略page以自动获取所有结果作为扁平列表

🔥 实时趋势数据

  • 访问当前最热门的电视剧,附带实时观众数量
  • 获取实时更新的趋势电影
  • 查看跨越Trakt全球1400多万用户社区的热门内容
  • 示例:《白莲花》(2021)、《捍卫者:重生》(2025)、《黑袋》(2025)

🔌 可用资源

MCP资源提供AI模型可以访问的静态数据端点。这些URI通过标准化接口暴露Trakt数据。

<details> <summary><strong>查看所有可用资源</strong></summary>

节目资源

资源描述示例数据
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播放次数最多的电影电影标题、年份、播放次数
tr/akts://movies/watched独立用户观看次数最多的电影电影标题、年份、观看者数量

用户资源

资源描述示例数据
trakt://user/auth/status当前认证状态认证状态、令牌过期时间
trakt://user/watched/shows已认证用户观看过的节目节目标题、年份、最后观看日期、播放次数
trakt://user/watched/movies已认证用户观看过的电影电影标题、年份、最后观看日期、播放次数
</details>

🛠️ 可用工具

MCP工具是AI模型可以调用的交互函数,参数化使用这些工具来获取、搜索和管理Trakt数据。

<details> <summary><strong>节目工具</strong></summary>
# 获取热门节目:自动分页所有结果(省略page参数)
fetch_trending_shows(limit=10)

# 获取热门节目:单页结果及分页元数据
fetch_trending_shows(limit=10, page=1)

# 获取受欢迎的节目,可选limit参数
fetch_popular_shows(limit=10)

# 获取收藏次数最多的节目,可选limit和period参数
fetch_favorited_shows(limit=10, period="weekly")

# 获取播放次数最多的节目,可选limit和period参数
fetch_played_shows(limit=10, period="weekly")

# 获取观看次数最多的节目,可选limit和period参数
fetch_watched_shows(limit=10, period="weekly")

# 搜索节目:自动分页所有结果(省略page参数)
search_shows(query="Breaking Bad", limit=5)

# 搜索节目:单页结果及分页元数据
search_shows(query="Breaking Bad", limit=5, page=1)

# 获取节目的评分
fetch_show_ratings(show_id="game-of-thrones")

# 获取综合节目概要(包括播出时间、制作状态、评分、元数据)
fetch_show_summary(show_id="game-of-thrones", extended=True)  # 默认:综合

# 获取基本节目概要(仅标题、年份、ID)
fetch_show_summary(show_id="game-of-thrones", extended=False)

# 获取节目的视频(默认嵌入Markdown)
fetch_show_videos(show_id="game-of-thrones")

# 获取节目的视频(简单文本链接)
fetch_show_videos(show_id="game-of-thrones", embed_markdown=False)

# 搜索电影:自动分页所有结果(省略page参数)
search_movies(query="The Godfather", limit=5)

# 搜索电影:单页结果及分页元数据
search_movies(query="The Godfather", limit=5, page=1)
</details> <details> <summary><strong>电影工具</strong></summary>
# 获取热门电影:自动分页所有结果(省略page参数)
fetch_trending_movies(limit=10)

# 获取热门电影:单页结果及分页元数据
fetch_trending_movies(limit=10, page=1)

# 获取受欢迎的电影,可选limit参数
fetch_popular_movies(limit=10)

# 获取收藏次数最多的电影,可选limit和period参数
fetch_favorited_movies(limit=10, period="weekly")

# 获取播放次数最多的电影,可选limit和period参数
fetch_played_movies(limit=10, period="weekly")

# 获取观看次数最多的电影,可选limit和period参数
fetch_watched_movies(limit=10, period="weekly")

# 获取电影的评分
fetch_movie_ratings(movie_id="tron-legacy-2010")

# 获取综合电影概要(包括制作状态、评分、类型、时长、分级、元数据)
fetch_movie_summary(movie_id="tron-legacy-2010", extended=True)  # 默认:综合

# 获取基本电影概要(仅标题、年份、ID)
fetch_movie_summary(movie_id="tron-legacy-2010", extended=False)

# 获取电影的视频(默认嵌入Markdown)
fetch_movie_videos(movie_id="tron-legacy-2010")

# 获取电影的视频(简单文本链接)
fetch_movie_videos(movie_id="tron-legacy-2010", embed_markdown=False)
</details> <details> <summary><strong>认证&用户工具</strong></summary>
# 开始与Trakt的设备授权流程
start_device_auth()

# 检查正在进行的认证状态
check_auth_status()

# 清除认证(注销)
clear_auth()

# 获取已认证用户观看过的节目
fetch_user_watched_shows(limit=0)  # 0表示所有节目

# 获取已认证用户观看过的电影
fetch_user_watched_movies(limit=0)  # 0表示所有电影

# 获取用户个人评分,支持分页
fetch_user_ratings(rating_type="movies", rating=10, page=1)

# 添加新的评分给电影、节目、季或剧集
add_user_ratings(rating_type="movies", items=[{"trakt_id": "314", "rating": 9}])

# 通过ID移除现有评分
remove_user_ratings(rating_type="movies", items=[{"trakt_id": "314"}])

# 获取用户的观看清单,支持分页和排序
fetch_user_watchlist(watchlist_type="all", sort_by="rank", sort_how="asc", page=1)

# 将项目添加到观看清单,可选注释(VIP)
add_user_watchlist(watchlist_type="movies", items=[{"trakt_id": "314", "notes": "必须观看!"}])

# 从观看清单中移除项目
remove_user_watchlist(watchlist_type="movies", items=[{"trakt_id": "314"}])
</details> <details> <summary><strong>签到工具</strong></summary>
# 方法1:使用节目ID签到(当精度重要时推荐)
# 首先使用search_shows找到正确的节目ID
search_shows(query="Breaking Bad", limit=5)
# 然后使用ID进行签到
checkin_to_show(
    season=1,
    episode=3,
    show_id="1388",
    message="我爱这部剧!"
)

# 方法2:使用节目标题签到(更方便)
checkin_to_show(
    season=1,
    episode=1,
    show_title="Breaking Bad",
    show_year=2008,  # 可选但有助于准确性
    message="我是那个敲门的人!"
)
</details> <details> <summary><strong>评论工具</strong></summary>
# 获取电影的评论:自动分页所有结果(省略page参数)
fetch_movie_comments(movie_id="123", limit=10, show_spoilers=False)

# 获取电影的评论:单页结果及分页元数据
fetch_movie_comments(movie_id="123", limit=10, show_spoilers=False, page=1)

# 获取节目的评论:自动分页所有结果(省略page参数)
fetch_show_comments(show_id="456", limit=10, show_spoilers=False, sort="likes")

# 获取节目的评论:单页结果及分页元数据
fetch_show_comments(show_id="456", limit=10, show_spoilers=False, sort="likes", page=1)

# 获取特定季的评论,按最高评分排序
fetch_season_comments(show_id="456", season=1, limit=10, show_spoilers=False, sort="highest")

# 获取特定剧集的评论,按回复数排序
fetch_episode_comments(show_id="456", season=1, episode=3, limit=10, show_spoilers=False, sort="replies")

# 获取特定评论
fetch_comment(comment_id="789", show_spoilers=False)

# 获取评论及其回复,按最早时间排序
fetch_comment_replies(comment_id="789", limit=10, show_spoilers=False, sort="oldest")
</details>

📝 使用Claude

安装完成后,Claude可以使用此MCP服务器回答有关娱乐数据的问题。这里有一些示例问题帮助您入门。

  • "现在哪些节目很火?"
  • "展示我看过的节目"(需要认证)
  • "《权力的游戏》的评分是多少?"
<details> <summary><strong>查看更多示例问题</strong></summary>

公共数据(无需认证):

  • "你能推荐一些本周热门的电影吗?"
  • "本月最受欢迎的节目有哪些?"
  • "搜索像《绝命毒师》这样的节目"
  • "搜索像《教父》这样的电影"
  • "展示《绝命毒师》的评论"
  • "人们在说些什么关于《教父》这部电影?"
  • "展示《怪奇物语》第一季的评论"
  • "获取《权力的游戏》第二季第五集的评论"
  • "展示评论#12345及其回复"
  • "展示《绝命毒师》的评论并包含剧透"
  • "展示《绝命毒师》最受欢迎的评论"
  • "获取《教父》电影的最高评分评论"
  • "展示《怪奇物语》第一季评论回复最多的情况"
  • "展示《教父》的评分分布"
  • "《绝命毒师》的评分有多高?"
  • "展示《创:战纪》的预告片"
  • "获取《权力的游戏》的视频"
  • "《教父》有哪些预告片?"
  • "给我《绝命毒师》的详细信息"
  • "展示《教父》电影的详细信息"
  • "给我《权力的游戏》的基本信息"

个人数据(需要认证):

  • "我最近看的最后一部节目是什么?"
  • "展示我看过的电影"
  • "我最近看的最后一部电影是什么?"
  • "展示我10/10评分的电影"
  • "为《绝命毒师》添加9/10评分"
  • "展示我的观看清单"
  • "我的观看清单里有哪些电影?"
  • "将《教父》添加到我的观看清单"
  • "将《绝命毒师》添加到我的观看清单并附上注释"(VIP)
  • "从我的观看清单中移除《黑暗骑士》"
  • "按添加顺序展示我的观看清单"
  • "签到我正在观看的《绝命毒师》第二季第五集"
  • "签到我正在观看的节目ID 1388的第一季第三集"
</details>

👤 个人数据访问

通过认证,您可以访问:

  • 您完整的观看节目和电影历史
  • 每个节目和电影的最后观看日期
  • 您观看每个