MCP Trakt
Acesse dados de entretenimento em tempo real e seu histórico de visualização pessoal da API do Trakt.tv.
Documentação
🎬 MCP Trakt: Seu Portal de IA para Dados de Entretenimento
Um servidor Model Context Protocol (MCP) que cria uma ponte entre modelos de linguagem de IA e a API do Trakt.tv, permitindo que LLMs acessem dados de entretenimento em tempo real e o histórico pessoal de visualização do Trakt. Construído com uma arquitetura focada em domínio usando FastMCP, proporcionando uma separação clara de responsabilidades entre autenticação, séries, temporadas, episódios, filmes, pessoas, dados do usuário, comentários, busca e funcionalidade de check-in.
🖥️ Um Experimento de IA
Exceto por este parágrafo, tudo aqui foi gerado por IA, incluindo o código. Eu tinha o objetivo de aprender mais sobre MCP e tenho brincado bastante com o Cursor, então pareceu um próximo passo natural unir essas coisas. O resultado foi este projeto. Todas as mudanças futuras também serão feitas por IA.
📚 Sobre MCP e Trakt
Model Context Protocol (MCP) permite que modelos de IA interajam com sistemas externos por meio de ferramentas e recursos padronizados. Trakt.tv é uma plataforma abrangente para acompanhar séries de TV e filmes, com mais de 14 milhões de usuários e APIs extensas para desenvolvedores.
🚀 Início Rápido
Início Rápido com Docker
docker run -d --rm --name trakt_mcpserver \
-e TRAKT_CLIENT_ID=your_client_id \
-e TRAKT_CLIENT_SECRET=your_client_secret \
-v trakt_auth:/data \
-p 8080:8080 \
ghcr.io/wwiens/trakt_mcpserver:latest
Executar com uvx (sem clonar, sem instalar)
Requer uv instalado.
uvx --from git+https://github.com/wwiens/trakt_mcpserver trakt-mcp
Fixar uma versão de release para reprodutibilidade:
uvx --from git+https://github.com/wwiens/trakt_mcpserver@v0.9.0 trakt-mcp
Configuração do Claude Desktop / MCPhub:
{
"mcpServers": {
"trakt": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/wwiens/trakt_mcpserver",
"trakt-mcp"
],
"env": {
"TRAKT_CLIENT_ID": "your_client_id",
"TRAKT_CLIENT_SECRET": "your_client_secret"
}
}
}
}
Seu token OAuth do Trakt é persistido em ~/.trakt-mcp/auth_token.json (o diretório é criado no primeiro login), então a autorização sobrevive entre invocações do uvx. Para sobrescrever o local — por exemplo, para volumes Docker ou para manter múltiplas contas isoladas — defina TRAKT_AUTH_TOKEN_PATH para um caminho absoluto.
Instalação Local
Requer Python 3.12 ou mais recente.
-
Clone este repositório
git clone https://github.com/wwiens/trakt_mcpserver.git cd trakt_mcpserver -
Crie um ambiente virtual e instale as dependências
python3 -m venv .venv source .venv/bin/activate pip install -e . -
Configure seu ambiente
cp .env.example .envEm seguida, edite
.envpara adicionar suas credenciais da API do Trakt:TRAKT_CLIENT_ID=your_client_id TRAKT_CLIENT_SECRET=your_client_secret -
Execute o servidor
python server.py
Instalação no Claude Desktop
Adicione ao seu arquivo de configuração MCP do 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"
}
}
}
}
✨ Recursos
🌎 Dados Públicos do Trakt
- Acesse séries e filmes em alta e populares
- Descubra o conteúdo mais aguardado, favoritado, reproduzido e assistido
- Veja os filmes de maior bilheteria nos EUA do último fim de semana
- Obtenha dados em tempo real da comunidade global do Trakt
- Respostas formatadas com títulos, anos e métricas de popularidade
- Veja classificações detalhadas de séries e filmes, incluindo pontuações médias e distribuição
- Navegue pelas temporadas de séries com contagem de episódios, episódios exibidos e classificações por temporada
- Mergulhe em temporadas específicas com informações detalhadas, listas de episódios, classificações, elenco e equipe, vídeos, traduções e estatísticas de engajamento
- Veja quem está assistindo uma temporada específica agora
- Encontre listas que contenham uma temporada específica
- Explore episódios individuais com resumos detalhados, classificações, elenco e equipe, vídeos, traduções e estatísticas de engajamento
- Veja quem está assistindo um episódico específico agora
- Encontre listas que contenham um episódio específico
- Consulte elenco e equipe de qualquer filme ou série, com participações especiais opcionais para séries
- Explore pessoas com biografias, redes sociais e filmografias completas
- Navegue pelos créditos de uma pessoa em filmes e séries, com nomes de personagens e contagem de episódios
- Encontre listas que contenham uma pessoa específica
👤 Dados Pessoais do Trakt
- Veja suas séries assistidas: Obtenha uma lista completa das séries que você assistiu pessoalmente
- Veja suas datas exatas de última visualização para cada série
- Acompanhe quantas vezes você assistiu a cada série
- Faça check-in em séries que você está assistindo para marcá-las como assistidas
- Por ID da série (mais preciso) ou título da série (mais conveniente)
- Inclua mensagens personalizadas com seus check-ins
- Veja quando você assistiu ao episódio em formato legível
- Pesquise séries para encontrar detalhes e IDs
- Gerencie suas classificações: Veja, adicione e remova classificações pessoais para filmes, séries, temporadas e episódios com suporte a paginação
- Gerencie sua lista de desejos: Veja, adicione e remova itens da sua lista de desejos com suporte a paginação e ordenação
- Filtre por tipo (todos, filmes, séries, temporadas, episódios)
- Ordene por múltiplos critérios (classificação, adicionado, título, lançamento, duração, popularidade, porcentagem, votos)
- Adicione notas opcionais aos itens da lista de desejos (recurso VIP, limite de 500 caracteres)
- Acompanhe o progresso de séries: Veja seu progresso de visualização para qualquer série de TV
- Veja episódios assistidos vs. exibidos com porcentagem de conclusão
- Veja seu próximo episódio para assistir
- Veja o detalhamento por temporada com estatísticas de progresso
- Inclua temporadas ocultas e especiais opcionalmente
- Gerencie o progresso de reprodução: Veja e limpe itens de reprodução pausados
- Veja filmes e episódios que você pausou no meio
- Veja a porcentagem de progresso e quando você pausou
- Limpe itens de reprodução que você não precisa mais
- Gerencie o histórico de visualização: Adicione e remova itens do seu histórico
- Marque filmes, séries, temporadas ou episódios como assistidos
- Opcionalmente, especifique quando você os assistiu
- Remova itens do seu histórico de visualização
- Autenticação segura com o Trakt por meio do fluxo de código de dispositivo
- Dados pessoais são buscados diretamente da sua conta Trakt
🎯 Recomendações Personalizadas
- Obtenha sugestões personalizadas de filmes e séries com base no seu histórico de visualização e classificações (requer autenticação)
- Filtre itens que você já coletou ou adicionou à lista de desejos
- Oculte recomendações que não lhe interessam para que não voltem
- Reexiba itens ocultos anteriormente para restaurá-los
💬 Comentários e Avaliações
- Veja comentários de séries e filmes: Leia o que outras pessoas estão dizendo sobre seu conteúdo favorito
- Veja comentários de temporadas e episódios específicos: Obtenha insights sobre partes específicas de uma série
- Veja comentários individuais e suas respostas: Interaja com as discussões da comunidade
- Proteção contra spoilers: Comentários com spoilers ficam ocultos por padrão
- Alterne a visibilidade de spoilers: Escolha mostrar ou ocultar spoilers
- Veja avaliações: Comentários mais longos e detalhados são marcados como avaliações
- Veja a distribuição de classificações: Veja quantos usuários deram cada classificação de 1 a 10
🔄 Recursos Gerais
- Expõe dados da API do Trakt por meio de recursos MCP
- Fornece ferramentas para buscar informações de entretenimento em tempo real
- Permite que modelos de IA ofereçam recomendações personalizadas de entretenimento
- Processo simples de autenticação e logout
- Suporte a paginação para endpoints de listas (em alta, populares, aguardados, favoritados, reproduzidos, assistidos, busca, comentários, classificações, lista de desejos):
- Passe
page: intpara resultados de página única com metadados de paginação - Omita
pagepara paginação automática e retorne atélimititens totais como uma lista plana - Use
limit=0para buscar todos os resultados disponíveis (limitado a 100 por segurança)
- Passe
🔥 Dados em Alta em Tempo Real
- Acesse séries de TV em alta no momento com contagens de espectadores ao vivo
- Obtenha filmes em alta atualizados em tempo real
- Veja o que é popular na comunidade global do Trakt, com mais de 14 milhões de usuários
- Exemplos: The White Lotus (2021), Daredevil: Born Again (2025), Black Bag (2025)
🔌 Recursos Disponíveis
Os recursos MCP fornecem endpoints de dados estáticos que os modelos de IA podem acessar. Esses URIs expõem dados do Trakt por meio de uma interface padronizada.
Ver todos os recursos disponíveis
Recursos de Séries
| Recurso | Descrição | Exemplo de Dados |
|---|---|---|
trakt://shows/trending | Séries mais assistidas nas últimas 24 horas | Título da série, ano, contagem de espectadores |
trakt://shows/popular | Séries mais populares com base em classificações | Título da série, ano, pontuação de popularidade |
trakt://shows/anticipated | Séries mais aguardadas ordenadas por contagem de listas | Título da série, ano, contagem de listas |
trakt://shows/favorited | Séries mais favoritadas | Título da série, ano, contagem de favoritos |
trakt://shows/played | Séries mais reproduzidas | Título da série, ano, contagem de reproduções |
trakt://shows/watched | Séries mais assistidas por usuários únicos | Título da série, ano, contagem de espectadores |
Recursos de Filmes
| Recurso | Descrição | Exemplo de Dados |
|---|---|---|
trakt://movies/trending | Filmes mais assistidos nas últimas 24 horas | Título do filme, ano, contagem de espectadores |
trakt://movies/popular | Filmes mais populares com base em classificações | Título do filme, ano, pontuação de popularidade |
trakt://movies/anticipated | Filmes mais aguardados ordenados por contagem de listas | Título do filme, ano, contagem de listas |
trakt://movies/favorited | Filmes mais favoritados | Título do filme, ano, contagem de favoritos |
trakt://movies/played | Filmes mais reproduzidos | Título do filme, ano, contagem de reproduções |
trakt://movies/watched | Filmes mais assistidos por usuários únicos | Título do filme, ano, contagem de espectadores |
trakt://movies/boxoffice | Top 10 filmes de maior bilheteria nos EUA no último fim de semana | Título do filme, ano, receita |
Recursos do Usuário
| Recurso | Descrição | Exemplo de Dados |
|---|---|---|
trakt://user/auth/status | Status atual de autenticação | Status de autenticação, expiração do token |
trakt://user/watched/shows | Séries assistidas pelo usuário autenticado | Título da série, ano, data da última visualização, contagem de reproduções |
trakt://user/watched/movies | Filmes assistidos pelo usuário autenticado | Título do filme, ano, data da última visualização, contagem de reproduções |
🛠️ Ferramentas Disponíveis
As ferramentas MCP são funções interativas que os modelos de IA podem chamar com parâmetros. Use-as para buscar, pesquisar e gerenciar dados do Trakt.
Ferramentas de Séries
# 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)
Ferramentas de Temporadas
# 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")
Ferramentas de Episódios
# 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")
Ferramentas de Filmes
# 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")
Ferramentas de Pessoas
# 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")
Ferramentas de Autenticação e Usuário
# 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"}])
Ferramentas de Check-in
# 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!"
)
Ferramentas de Comentários
# 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 most liked
fetch_season_comments(show_id="456", season=1, limit=10, show_spoilers=False, sort="likes")
# 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
fetch_comment_replies(comment_id="789", limit=10, show_spoilers=False)
Ferramentas de Recomendação
# Get personalized movie recommendations (requires authentication)
fetch_movie_recommendations(limit=10)
# Include movies you've already collected or watchlisted
fetch_movie_recommendations(limit=10, ignore_collected=False, ignore_watchlisted=False)
# Get personalized show recommendations
fetch_show_recommendations(limit=10)
# Hide a movie from future recommendations
hide_movie_recommendation(movie_id="tron-legacy-2010")
# Hide a show from future recommendations
hide_show_recommendation(show_id="breaking-bad")
# Unhide a previously-hidden movie
unhide_movie_recommendation(movie_id="tron-legacy-2010")
# Unhide a previously-hidden show
unhide_show_recommendation(show_id="breaking-bad")
Ferramentas de Progresso
# 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"}]
)
📝 Usando com o Claude
Após a instalação, o Claude pode usar este servidor MCP para responder perguntas sobre dados de entretenimento. Aqui estão alguns exemplos para você começar.
- "Quais séries estão em alta agora?"
- "Mostre as séries que eu assisti" (requer autenticação)
- "Qual é a classificação de Game of Thrones?"
Ver mais exemplos de perguntas
Dados Públicos (Sem Autenticação Necessária):
- "Quais são as séries mais aguardadas no momento?"
- "Mostre-me os filmes mais aguardados que estão por vir"
- "Quais filmes estão em cartaz neste fim de semana?"
- "Mostre-me os filmes de maior bilheteria no momento"
- "Você pode recomendar alguns filmes populares esta semana?"
- "Quais são as séries mais assistidas do mês?"
- "Procure por séries como 'Breaking Bad'"
- "Procure por filmes como 'O Poderoso Chefão'"
- "Mostre-me comentários para Breaking Bad"
- "O que as pessoas estão dizendo sobre o filme O Poderoso Chefão?"
- "Mostre-me comentários para a 1ª temporada de Stranger Things"
- "Obtenha comentários para o 2º episódio da 2ª temporada de Game of Thrones"
- "Mostre-me o comentário #12345 com suas respostas"
- "Mostre-me comentários para Breaking Bad, mas inclua spoilers"
- "Mostre-me os comentários mais curtidos para Breaking Bad"
- "Obtenha os comentários mais curtidos para o filme O Poderoso Chefão"
- "Mostre-me os comentários com mais respostas para a 1ª temporada de Stranger Things"
- "Mostre-me a distribuição de avaliações para O Poderoso Chefão"
- "Qual é a avaliação de Breaking Bad?"
- "Mostre-me trailers para TRON: Legacy"
- "Obtenha vídeos para Game of Thrones"
- "Quais trailers estão disponíveis para O Poderoso Chefão?"
- "Obtenha um resumo detalhado de Breaking Bad"
- "Mostre-me detalhes sobre o filme O Poderoso Chefão"
- "Dê-me informações básicas sobre Game of Thrones"
- "Mostre-me séries semelhantes a Breaking Bad"
- "Quais filmes estão relacionados a TRON: Legacy?"
- "Encontre séries como Game of Thrones"
- "Fale-me sobre a 1ª temporada de Breaking Bad"
- "Quais episódios estão na 2ª temporada de Game of Thrones?"
- "Como a 5ª temporada de Breaking Bad é avaliada?"
- "Quem estrelou na 1ª temporada de Game of Thrones?"
- "Quão popular é a 1ª temporada de Breaking Bad?"
- "Há algum trailer para a 2ª temporada de Stranger Things?"
- "Quem está assistindo a 1ª temporada de Breaking Bad agora?"
- "Obtenha traduções em espanhol para a 1ª temporada de Breaking Bad"
- "Quais listas contêm a 1ª temporada de Breaking Bad?"
- "Fale-me sobre o episódio piloto de Breaking Bad"
- "Como o 1º episódio da 1ª temporada de Game of Thrones é avaliado?"
- "Quem estrelou no primeiro episódio de Breaking Bad?"
- "Quão popular é o 16º episódio da 5ª temporada de Breaking Bad?"
- "Há algum trailer para o 1º episódio da 1ª temporada de Stranger Things?"
- "Quem está assistindo o 1º episódio da 1ª temporada de Breaking Bad agora?"
- "Obtenha traduções em espanhol para o 1º episódio da 1ª temporada de Breaking Bad"
- "Quais listas contêm o 1º episódio da 1ª temporada de Breaking Bad?"
- "Quem estrela em O Cavaleiro das Trevas?"
- "Mostre-me o elenco e a equipe de Breaking Bad"
- "Mostre-me as participações especiais em Breaking Bad"
- "Fale-me sobre Bryan Cranston"
- "Em quais filmes Bryan Cranston atuou?"
- "Em quais séries de TV Bryan Cranston apareceu?"
- "Quais listas apresentam Bryan Cranston?"
Dados Pessoais (Requer Autenticação):
- "Qual foi a última série que assisti?"
- "Mostre-me os filmes que assisti"
- "Qual foi o último filme que assisti?"
- "Eu já vi O Cavaleiro das Trevas?"
- "Eu já assisti A Origem?"
- "Quando assisti Matrix?"
- "Mostre-me meus filmes avaliados com 10/10"
- "Adicione uma avaliação 9/10 para Breaking Bad"
- "Mostre-me minha lista de desejos"
- "Quais filmes estão na minha lista de desejos?"
- "Adicione O Poderoso Chefão à minha lista de desejos"
- "Adicione Breaking Bad à minha lista de desejos com uma nota" (VIP)
- "Remova O Cavaleiro das Trevas da minha lista de desejos"
- "Mostre-me minha lista de desejos ordenada por quando adicionei"
- "Faça check-in no 2º episódio da 2ª temporada de Breaking Bad"
- "Faça check-in no 3º episódio da 1ª temporada da série ID 1388"
- "Qual é meu progresso em Breaking Bad?"
- "Até onde estou em Game of Thrones?"
- "Qual é o próximo episódio de Stranger Things?"
- "Mostre-me filmes ou episódios pausados"
- "Limpe minha reprodução pausada para aquele filme"
- "Marque O Cavaleiro das Trevas como assistido"
- "Adicione a 1ª temporada de Breaking Bad ao meu histórico de exibição"
- "Remova A Origem do meu histórico de exibição"
👤 Acesso a Dados Pessoais
Com autenticação, você pode acessar:
- Seu histórico completo de séries e filmes assistidos
- Datas da última exibição para cada série e filme
- Número de vezes que você assistiu cada série e filme
- Faça check-in em séries que está assistindo atualmente e acompanhe seu progresso
- Estatísticas pessoais de visualização
- Sua lista de desejos completa com opções de filtro e ordenação
- Adicione e remova itens da sua lista de desejos
- Adicione notas pessoais a itens da lista de desejos (recurso VIP)
- Acompanhamento de progresso de séries: Veja até onde você está em qualquer série de TV, com recomendações de próximos episódios
- Progresso de reprodução: Visualize e limpe quaisquer filmes ou episódios que você pausou no meio
- Gerenciamento de histórico de exibição: Adicione ou remova itens do seu histórico de exibição com carimbos de data/hora opcionais
Todos os dados são obtidos diretamente da sua conta Trakt em tempo real.
🔐 Autenticação
O servidor usa o fluxo de autenticação de dispositivo do Trakt:
- Quando você solicita dados específicos do usuário, o servidor iniciará automaticamente a autenticação, se necessário
- Você receberá um código e uma URL para visitar no seu navegador
- Após inserir o código no site do Trakt e autorizar o aplicativo, informe ao Claude que você concluiu a autorização
- O Claude verificará o status da autenticação e então buscará seus dados pessoais
- Seu token de autenticação é armazenado com segurança em
~/.trakt-mcp/auth_token.jsonpara solicitações futuras, com permissões0o600. Substitua o local com a variável de ambienteTRAKT_AUTH_TOKEN_PATH; imagens Docker a definem como/data/auth_token.json— monte um volume em/data(por exemplo,-v trakt_auth:/data) para persistir a autenticação entre recriações de contêineres.
Você pode fazer logout a qualquer momento usando a ferramenta clear_auth.
🐳 Implantação com Docker
Duas imagens Docker estão disponíveis com diferentes mecanismos de transporte. Cada versão também publica uma tag versionada (por exemplo, :0.9.0, :0.9.0-stdio) para fixação.
| Tag da Imagem | Transporte | Caso de Uso |
|---|---|---|
:latest | SSE (HTTP) | Acesso remoto, clientes web, docker-compose |
:latest-stdio | stdio | MCPhub, Claude Desktop, clientes MCP locais |
:stdio | stdio | Alias obsoleto para :latest-stdio — será removido na v1.0.0 |
Transporte stdio (MCPhub, Claude Desktop)
Use a imagem :latest-stdio (ou fixe uma versão como :0.9.0-stdio) para clientes MCP que se comunicam via stdin/stdout:
# Pull and run the stdio image
docker run -i --rm --name trakt_mcpserver_stdio \
-e TRAKT_CLIENT_ID=your_client_id \
-e TRAKT_CLIENT_SECRET=your_client_secret \
-v trakt_auth:/data \
ghcr.io/wwiens/trakt_mcpserver:latest-stdio
Configuração do Claude Desktop:
{
"mcpServers": {
"trakt": {
"command": "docker",
"args": [
"run", "-i", "--rm", "--name", "trakt_mcpserver_stdio",
"-e", "TRAKT_CLIENT_ID=your_client_id",
"-e", "TRAKT_CLIENT_SECRET=your_client_secret",
"-v", "trakt_auth:/data",
"ghcr.io/wwiens/trakt_mcpserver:latest-stdio"
]
}
}
}
Transporte SSE (HTTP/Remoto)
Use a imagem :latest para acesso baseado em HTTP:
# Option 1: Pull and run from GHCR (recommended)
docker run -d --rm --name trakt_mcpserver \
-e TRAKT_CLIENT_ID=your_client_id \
-e TRAKT_CLIENT_SECRET=your_client_secret \
-v trakt_auth:/data \
-p 8080:8080 \
ghcr.io/wwiens/trakt_mcpserver:latest
# Option 2: Build locally and run
docker build -t trakt_mcpserver .
docker run -d --rm --name trakt_mcpserver \
-e TRAKT_CLIENT_ID=your_client_id \
-e TRAKT_CLIENT_SECRET=your_client_secret \
-v trakt_auth:/data \
-p 8080:8080 \
trakt_mcpserver
Usando docker compose
# Builds the docker image using the default Dockerfile (SSE variant) and starts the service
docker compose up
Isso executa o servidor em http://localhost:8080 e faz proxy de solicitações MCP via SSE (transporte HTTP).
🧪 Desenvolvimento e Testes
Para desenvolvedores que trabalham com ou estendem este servidor MCP, aqui estão ferramentas de teste e fluxos de trabalho de desenvolvimento.
🚀 Experiência de Desenvolvimento Impulsionada por IA
Este projeto foi construído usando ferramentas de desenvolvimento assistidas por IA:
- Cursor - Editor de código com IA para desenvolvimento rápido
- Aider - Ferramenta de programação em par com IA para colaboração em código
- Claude Code - Interface de codificação dedicada do Claude
Testes com o MCP Inspector
Valide sua implementação do servidor MCP e explore ferramentas, recursos e prompts disponíveis.
Ver comandos do MCP Inspector
# List available tools
npx @modelcontextprotocol/inspector --cli python server.py --method tools/list
# List available resources
npx @modelcontextprotocol/inspector --cli python server.py --method resources/list
# List available prompts
npx @modelcontextprotocol/inspector --cli python server.py --method prompts/list
Executando Testes
Garanta a qualidade do código com pytest, verificação de tipos e linting antes de fazer alterações.
Ver comandos de teste
# Create a virtual environment, then install the project (editable) and test dependencies
python3 -m venv .venv
source .venv/bin/activate
pip install -e .
pip install -r requirements-dev.txt
# Run all tests
pytest
# Run with verbose output
pytest -v -s
# Type checking
pyright
# Code linting and formatting with ruff
ruff check --fix # Auto-fix issues
ruff format # Format code
📄 Licença
Construído com 🧠 IA e colaboração humana
Desenvolvido por Claude