Trakt
🎬 MCP Trakt: ваш шлюз ИИ к данным о развлечениях
Сервер протокола контекста модели (MCP), создающий мост между языковыми моделями ИИ и API Trakt.tv, позволяя LLM получать доступ к развлекательным данным в реальном времени и личной истории просмотров Trakt. Построен с использованием архитектуры, ориентированной на предметную область, с помощью FastMCP, обеспечивая четкое разделение ответственности между аутентификацией, сериалами, сезонами, эпизодами, фильмами, людьми, пользовательскими данными, комментариями, поиском и функциональностью регистрации (check-in).
🖥️ Эксперимент с ИИ
За исключением этого абзаца, все здесь было создано ИИ, включая код. У меня была цель узнать больше об MCP, и я много экспериментировал с Cursor, поэтому казалось естественным шагом объединить их. Результатом стал этот проект. Все изменения в будущем также будут вноситься ИИ.
Related MCP server: FastAPI MCP Server
📚 О MCP и Trakt
Model Context Protocol (MCP) позволяет моделям ИИ взаимодействовать с внешними системами через стандартизированные инструменты и ресурсы. Trakt.tv — это комплексная платформа для отслеживания сериалов и фильмов с более чем 14 миллионами пользователей и обширными API для разработчиков.
🚀 Быстрый старт
Быстрый старт с Docker
docker run -d --rm --name trakt_mcpserver \
-e TRAKT_CLIENT_ID=your_client_id \
-e TRAKT_CLIENT_SECRET=your_client_secret \
-p 8080:8080 \
ghcr.io/wwiens/trakt_mcpserver:latestЛокальная установка
Клонируйте этот репозиторий
git clone https://github.com/yourusername/mcp-trakt.git cd mcp-traktУстановите зависимости
pip install -r requirements.txtНастройте окружение
cp .env.example .envЗатем отредактируйте
.env, чтобы добавить свои учетные данные API Trakt:TRAKT_CLIENT_ID=your_client_id TRAKT_CLIENT_SECRET=your_client_secretЗапустите сервер
python server.py
Установка в Claude Desktop
Добавьте в файл конфигурации MCP Claude Desktop:
{
"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
Просмотр ваших просмотренных сериалов: Получите полный список сериалов, которые вы лично смотрели
Просмотр точных дат последнего просмотра для каждого сериала
Отслеживание того, сколько раз вы смотрели каждый сериал
Регистрация (check-in) сериалов, которые вы сейчас смотрите, чтобы отметить их как просмотренные
По ID сериала (точнее) или названию сериала (удобнее)
Включение пользовательских сообщений при регистрации
Просмотр того, когда вы смотрели эпизод в удобном для чтения формате
Поиск сериалов для получения их деталей и ID
Управление вашими рейтингами: Просмотр, добавление и удаление личных рейтингов для фильмов, сериалов, сезонов и эпизодов с поддержкой пагинации
Управление вашим списком просмотра (watchlist): Просмотр, добавление и удаление элементов из вашего списка просмотра с поддержкой пагинации и сортировки
Фильтрация по типу (все, фильмы, сериалы, сезоны, эпизоды)
Сортировка по нескольким критериям (ранг, дата добавления, название, дата выхода, длительность, популярность, процент, голоса)
Добавление опциональных заметок к элементам списка просмотра (VIP-функция, ограничение 500 символов)
Отслеживание прогресса сериалов: Просмотр вашего прогресса просмотра любого сериала
Просмотр просмотренных эпизодов против вышедших с процентом завершения
Просмотр следующего эпизода для просмотра
Просмотр разбивки по сезонам со статистикой прогресса
Включение скрытых сезонов и спецвыпусков по желанию
Управление прогрессом воспроизведения: Просмотр и очистка приостановленных элементов воспроизведения
Просмотр фильмов и эпизодов, которые вы приостановили во время просмотра
Просмотр процента прогресса и времени приостановки
Очистка элементов воспроизведения, которые вам больше не нужны
Управление историей просмотров: Добавление и удаление элементов из вашей истории
Отметка фильмов, сериалов, сезонов или эпизодов как просмотренных
Опциональное указание времени просмотра
Удаление элементов из истории просмотров
Безопасная аутентификация с Trakt через поток кода устройства
Личные данные извлекаются напрямую из вашей учетной записи Trakt
💬 Комментарии и отзывы
Просмотр комментариев к сериалам и фильмам: Читайте, что другие говорят о вашем любимом контенте
Просмотр комментариев к конкретным сезонам и эпизодам: Получите информацию о конкретных частях сериала
Просмотр отдельных комментариев и ответов на них: Участвуйте в дискуссиях сообщества
Защита от спойлеров: Комментарии со спойлерами скрыты по умолчанию
Переключение видимости спойлеров: Выбирайте, показывать или скрывать спойлеры
Просмотр отзывов: Более длинные и подробные комментарии помечаются как отзывы
Просмотр распределения рейтингов: Посмотрите, сколько пользователей поставили каждую оценку от 1 до 10
🔄 Общие функции
Предоставляет данные API Trakt через ресурсы MCP
Предоставляет инструменты для получения развлекательной информации в реальном времени
Позволяет моделям ИИ предлагать персонализированные рекомендации по развлечениям
Простой процесс аутентификации и выхода из системы
Поддержка пагинации для конечных точек списков (тренды, популярное, ожидаемое, избранное, проигрываемое, просмотренное, поиск, комментарии, рейтинги, список просмотра):
Передайте
page: intдля результатов на одной странице с метаданными пагинацииПропустите
pageдля автоматической пагинации и возврата доlimitобщего количества элементов в виде плоского спискаИспользуйте
limit=0для получения всех доступных результатов (ограничено 100 для безопасности)
🔥 Трендовые данные в реальном времени
Доступ к текущим трендовым сериалам с количеством зрителей в реальном времени
Получение трендовых фильмов, обновляемых в реальном времени
Просмотр того, что популярно среди 14+ миллионов пользователей сообщества Trakt
Примеры: The White Lotus (2021), Daredevil: Born Again (2025), Black Bag (2025)
🔌 Доступные ресурсы
Ресурсы MCP предоставляют конечные точки статических данных, к которым могут обращаться модели ИИ. Эти URI предоставляют данные Trakt через стандартизированный интерфейс.
Ресурсы сериалов
Ресурс | Описание | Пример данных |
| Самые просматриваемые сериалы за последние 24 часа | Название сериала, год, количество зрителей |
| Самые популярные сериалы на основе рейтингов | Название сериала, год, балл популярности |
| Самые ожидаемые сериалы, отсортированные по количеству списков | Название сериала, год, количество списков |
| Самые избранные сериалы | Название сериала, год, количество избранного |
| Самые проигрываемые сериалы | Название сериала, год, количество воспроизведений |
| Самые просматриваемые сериалы уникальными пользователями | Название сериала, год, количество зрителей |
Ресурсы фильмов
Ресурс | Описание | Пример данных |
| Самые просматриваемые фильмы за последние 24 часа | Название фильма, год, количество зрителей |
| Самые популярные фильмы на основе рейтингов | Название фильма, год, балл популярности |
| Самые ожидаемые фильмы, отсортированные по количеству списков | Название фильма, год, количество списков |
| Самые избранные фильмы | Название фильма, год, количество избранного |
| Самые проигрываемые фильмы | Название фильма, год, количество воспроизведений |
| Самые просматриваемые фильмы уникальными пользователями | Название фильма, год, количество зрителей |
| Топ-10 кассовых фильмов в США за прошлые выходные | Название фильма, год, выручка |
Ресурсы пользователя
Ресурс | Описание | Пример данных |
| Текущий статус аутентификации | Статус аутентификации, срок действия токена |
| Сериалы, просмотренные аутентифицированным пользователем | Название сериала, год, дата последнего просмотра, количество воспроизведений |
| Фильмы, просмотренные аутентифицированным пользователем | Название фильма, год, дата последнего просмотра, количество воспроизведений |
🛠️ Доступные инструменты
MCP-инструменты — это интерактивные функции, которые модели ИИ могут вызывать с параметрами. Используйте их для получения, поиска и управления данными Trakt.
# Get trending shows: auto-paginate up to 10 results
fetch_trending_shows(limit=10)
# Get trending shows: fetch ALL results (no limit)
fetch_trending_shows(limit=0)
# Get trending shows: single page with pagination metadata
fetch_trending_shows(limit=10, page=1)
# Get popular shows with optional limit parameter
fetch_popular_shows(limit=10)
# Get anticipated shows with optional limit parameter
fetch_anticipated_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: auto-paginate all results (omit page parameter)
search_shows(query="Breaking Bad", limit=5)
# Search for shows: single page with pagination metadata
search_shows(query="Breaking Bad", limit=5, page=1)
# Get ratings for a show
fetch_show_ratings(show_id="game-of-thrones")
# Get comprehensive show summary (includes air times, production status, ratings, metadata)
fetch_show_summary(show_id="game-of-thrones", extended=True) # Default: comprehensive
# Get basic show summary (title, year, ID only)
fetch_show_summary(show_id="game-of-thrones", extended=False)
# Get videos for a show (with embedded markdown - default)
fetch_show_videos(show_id="game-of-thrones")
# Get videos for a show (simple text links)
fetch_show_videos(show_id="game-of-thrones", embed_markdown=False)
# Get related shows (similar shows based on genres, themes, and viewer patterns)
fetch_related_shows(show_id="game-of-thrones", limit=10)
# Get related shows with pagination metadata
fetch_related_shows(show_id="game-of-thrones", limit=10, page=1)
# Get all seasons for a show (includes episode counts, aired episodes, ratings)
fetch_show_seasons(show_id="game-of-thrones")
# Get cast and crew for a show
fetch_show_people(show_id="breaking-bad")
# Get cast, crew, and guest stars for a show
fetch_show_people(show_id="breaking-bad", include_guest_stars=True)
# Search for movies: auto-paginate all results (omit page parameter)
search_movies(query="The Godfather", limit=5)
# Search for movies: single page with pagination metadata
search_movies(query="The Godfather", limit=5, page=1)# Get detailed info about a specific season
fetch_season_info(show_id="breaking-bad", season=1)
# Get all episodes for a season with ratings and runtime
fetch_season_episodes(show_id="breaking-bad", season=1)
# Get ratings and voting distribution for a season
fetch_season_ratings(show_id="breaking-bad", season=1)
# Get engagement stats (watchers, plays, collectors)
fetch_season_stats(show_id="breaking-bad", season=1)
# Get cast and crew for a season
fetch_season_people(show_id="breaking-bad", season=1)
# Get videos/trailers for a season (with embedded markdown - default)
fetch_season_videos(show_id="breaking-bad", season=1)
# Get videos for a season (simple text links)
fetch_season_videos(show_id="breaking-bad", season=1, embed_markdown=False)
# See who's watching a season right now
fetch_season_watching(show_id="breaking-bad", season=1)
# Get translations for a season (all languages)
fetch_season_translations(show_id="breaking-bad", season=1)
# Get translations for a specific language
fetch_season_translations(show_id="breaking-bad", season=1, language="es")
# Get lists containing a season
fetch_season_lists(show_id="breaking-bad", season=1)
# Get lists with type and sort filters
fetch_season_lists(show_id="breaking-bad", season=1, list_type="personal", sort="popular")# Get detailed info about a specific episode
fetch_episode_summary(show_id="breaking-bad", season=1, episode=1)
# Get ratings and voting distribution for an episode
fetch_episode_ratings(show_id="breaking-bad", season=1, episode=1)
# Get engagement stats (watchers, plays, collectors)
fetch_episode_stats(show_id="breaking-bad", season=1, episode=1)
# Get cast and crew for an episode
fetch_episode_people(show_id="breaking-bad", season=1, episode=1)
# Get videos/trailers for an episode (with embedded markdown - default)
fetch_episode_videos(show_id="breaking-bad", season=1, episode=1)
# Get videos for an episode (simple text links)
fetch_episode_videos(show_id="breaking-bad", season=1, episode=1, embed_markdown=False)
# See who's watching an episode right now
fetch_episode_watching(show_id="breaking-bad", season=1, episode=1)
# Get translations for an episode (all languages)
fetch_episode_translations(show_id="breaking-bad", season=1, episode=1)
# Get translations for a specific language
fetch_episode_translations(show_id="breaking-bad", season=1, episode=1, language="es")
# Get lists containing an episode
fetch_episode_lists(show_id="breaking-bad", season=1, episode=1)
# Get lists with type and sort filters
fetch_episode_lists(show_id="breaking-bad", season=1, episode=1, list_type="personal", sort="popular")# Get trending movies: auto-paginate all results (omit page parameter)
fetch_trending_movies(limit=10)
# Get trending movies: single page with pagination metadata
fetch_trending_movies(limit=10, page=1)
# Get popular movies with optional limit parameter
fetch_popular_movies(limit=10)
# Get anticipated movies with optional limit parameter
fetch_anticipated_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")
# Get the top 10 U.S. box office movies from last weekend
fetch_boxoffice_movies()
# Get ratings for a movie
fetch_movie_ratings(movie_id="tron-legacy-2010")
# Get comprehensive movie summary (includes production status, ratings, genres, runtime, certification, metadata)
fetch_movie_summary(movie_id="tron-legacy-2010", extended=True) # Default: comprehensive
# Get basic movie summary (title, year, ID only)
fetch_movie_summary(movie_id="tron-legacy-2010", extended=False)
# Get videos for a movie (with embedded markdown - default)
fetch_movie_videos(movie_id="tron-legacy-2010")
# Get videos for a movie (simple text links)
fetch_movie_videos(movie_id="tron-legacy-2010", embed_markdown=False)
# Get related movies (similar movies based on genres, themes, and viewer patterns)
fetch_related_movies(movie_id="tron-legacy-2010", limit=10)
# Get related movies with pagination metadata
fetch_related_movies(movie_id="tron-legacy-2010", limit=10, page=1)
# Get cast and crew for a movie
fetch_movie_people(movie_id="the-dark-knight-2008")# Get extended person details (biography, social media, birthday)
fetch_person_summary(person_id="bryan-cranston")
# Get basic person details (name and IDs only)
fetch_person_summary(person_id="bryan-cranston", extended=False)
# Look up by IMDB ID
fetch_person_summary(person_id="nm0186505")
# Get all movie credits for a person (cast roles and crew positions)
fetch_person_movies(person_id="bryan-cranston")
# Get all show credits for a person (with episode counts and series regular flags)
fetch_person_shows(person_id="bryan-cranston")
# Get lists containing a person (all types, sorted by popularity)
fetch_person_lists(person_id="bryan-cranston")
# Get lists with type and sort filters
fetch_person_lists(person_id="bryan-cranston", list_type="personal", sort="likes")# 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
# Fetch user's personal ratings with pagination support
fetch_user_ratings(rating_type="movies", rating=10, page=1)
# Add new ratings for movies, shows, seasons, or episodes
add_user_ratings(rating_type="movies", items=[{"trakt_id": "314", "rating": 9}])
# Remove existing ratings by ID
remove_user_ratings(rating_type="movies", items=[{"trakt_id": "314"}])
# Fetch user's watchlist with pagination and sorting
fetch_user_watchlist(watchlist_type="all", sort_by="rank", sort_how="asc", page=1)
# Add items to watchlist with optional notes (VIP)
add_user_watchlist(watchlist_type="movies", items=[{"trakt_id": "314", "notes": "Must watch!"}])
# Remove items from watchlist
remove_user_watchlist(watchlist_type="movies", items=[{"trakt_id": "314"}])# 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!"
)# Get comments for a movie: auto-paginate all results (omit page parameter)
fetch_movie_comments(movie_id="123", limit=10, show_spoilers=False)
# Get comments for a movie: single page with pagination metadata
fetch_movie_comments(movie_id="123", limit=10, show_spoilers=False, page=1)
# Get comments for a show: auto-paginate all results (omit page parameter)
fetch_show_comments(show_id="456", limit=10, show_spoilers=False, sort="likes")
# Get comments for a show: single page with pagination metadata
fetch_show_comments(show_id="456", limit=10, show_spoilers=False, sort="likes", page=1)
# Get comments for a specific season sorted by highest rating
fetch_season_comments(show_id="456", season=1, limit=10, show_spoilers=False, sort="highest")
# Get comments for a specific episode sorted by most replies
fetch_episode_comments(show_id="456", season=1, episode=3, limit=10, show_spoilers=False, sort="replies")
# Get a specific comment
fetch_comment(comment_id="789", show_spoilers=False)
# Get a comment with its replies sorted by oldest first
fetch_comment_replies(comment_id="789", limit=10, show_spoilers=False, sort="oldest")# Get watched progress for a TV show
fetch_show_progress(show_id="breaking-bad")
# Get show progress with specials and hidden seasons included
fetch_show_progress(
show_id="game-of-thrones",
hidden=True, # Include hidden seasons
specials=True, # Include season 0 (specials)
count_specials=True, # Count specials in overall stats
last_activity="watched" # Calculate next episode based on watched order
)
# Get detailed episode-by-episode progress with watch dates
fetch_show_progress(show_id="breaking-bad", verbose=True)
# Get paused playback progress (all types)
fetch_playback_progress()
# Get paused playback progress (movies only)
fetch_playback_progress(playback_type="movies")
# Get paused playback progress (episodes only)
fetch_playback_progress(playback_type="episodes")
# Remove a paused playback item (get ID from fetch_playback_progress)
remove_playback_item(playback_id=12345)
# Check if a movie has been watched (returns watch dates and count)
fetch_history(history_type="movies", item_id="314") # The Dark Knight
# Check watch history for a show
fetch_history(history_type="shows", item_id="1388") # Breaking Bad
# Browse all movie watch history
fetch_history(history_type="movies")
# Browse all watch history (all types)
fetch_history()
# Filter history by date range
fetch_history(
history_type="movies",
start_at="2024-01-01T00:00:00.000Z",
end_at="2024-12-31T23:59:59.000Z"
)
# Add movies to watch history
add_to_history(
history_type="movies",
items=[{"trakt_id": "314"}] # The Dark Knight
)
# Add movies with custom watched date
add_to_history(
history_type="movies",
items=[{"trakt_id": "314", "watched_at": "2024-01-15T20:30:00.000Z"}]
)
# Add episodes to watch history
add_to_history(
history_type="episodes",
items=[{"trakt_id": "62085"}] # Breaking Bad S01E01
)
# Remove movies from watch history
remove_from_history(
history_type="movies",
items=[{"trakt_id": "314"}]
)
# Remove episodes from watch history
remove_from_history(
history_type="episodes",
items=[{"trakt_id": "62085"}]
)📝 Использование с Claude
После установки Claude может использовать этот сервер MCP для ответов на вопросы о развлекательных данных. Вот несколько примеров для начала.
"Какие сериалы сейчас в тренде?"
"Покажи мне сериалы, которые я смотрел" (требуется аутентификация)
"Какой рейтинг у Игры престолов?"
Публичные данные (аутентификация не требуется):
"Какие сериалы сейчас самые ожидаемые?"
"Покажи мне самые ожидаемые предстоящие фильмы"
"Какие фильмы идут в кинотеатрах в эти выходные?"
"Покажи мне самые кассовые фильмы прямо сейчас"
"Можешь порекомендовать популярные фильмы на этой неделе?"
"Какие сериалы были самыми просматриваемыми в этом месяце?"
"Поиск сериалов, похожих на 'Во все тяжкие'"
"Поиск фильмов, похожих на 'Крестный отец'"
"Покажи мне комментарии к 'Во все тяжкие'"
"Что люди говорят о фильме 'Крестный отец'?"
"Покажи мне комментарии к 1 сезону 'Очень странных дел'"
"Получить комментарии к 2 сезону 5 эпизоду 'Игры престолов'"
"Покажи мне комментарий #12345 с ответами на него"
"Покажи мне комментарии к 'Во все тяжкие', но включи спойлеры"
"Покажи мне самые популярные комментарии к 'Во все тяжкие'"
"Получить самые высокооцененные комментарии к фильму 'Крестный отец'"
"Покажи мне комментарии с наибольшим количеством ответов к 1 сезону 'Очень странных дел'"
"Покажи мне распределение рейтингов для 'Крестного отца'"
"Насколько высоко оценен 'Во все тяжкие'?"
"Покажи мне трейлеры к 'Трон: Наследие'"
"Получить видео для 'Игры престолов'"
"Какие трейлеры доступны для 'Крестного отца'?"
"Получить подробное резюме 'Во все тяжкие'"
"Покажи мне детали о фильме 'Крестный отец'"
"Дай мне базовую информацию об 'Игре престолов'"
"Покажи мне сериалы, похожие на 'Во все тяжкие'"
"Какие фильмы связаны с 'Трон: Наследие'?"
"Найти сериалы, похожие на 'Игру престолов'"
"Расскажи мне о 1 сезоне 'Во все тяжкие'"
"Какие эпизоды есть во 2 сезоне 'Игры престолов'?"
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/wwiens/trakt_mcpserver'
If you have feedback or need assistance with the MCP directory API, please join our Discord server