MCP Trakt
Accede a datos de entretenimiento en tiempo real y al historial de visualización personal desde la API de Trakt.tv.
Documentación
🎬 MCP Trakt: La puerta de tu IA a los datos de entretenimiento
Un servidor de Model Context Protocol (MCP) que crea un puente entre los modelos de lenguaje de IA y la API de Trakt.tv, permitiendo que los LLM accedan a datos de entretenimiento en tiempo real y al historial de visualización personal de Trakt. Construido con una arquitectura centrada en dominios usando FastMCP, proporciona una separación limpia de responsabilidades entre autenticación, series, temporadas, episodios, películas, personas, datos de usuario, comentarios, búsqueda y funcionalidad de check-in.
🖥️ Un experimento de IA
Aparte de este párrafo, todo aquí ha sido generado por IA, incluido el código. Tenía el objetivo de aprender más sobre MCP y he estado jugando mucho con Cursor, así que parecía el siguiente paso natural unir ambas cosas. El resultado fue este proyecto. Todos los cambios futuros también serán realizados por IA.
📚 Acerca de MCP y Trakt
Model Context Protocol (MCP) permite que los modelos de IA interactúen con sistemas externos a través de herramientas y recursos estandarizados. Trakt.tv es una plataforma integral para seguir series de TV y películas con más de 14 millones de usuarios y amplias APIs para desarrolladores.
🚀 Inicio rápido
Inicio rápido con 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
Ejecutar con uvx (sin clonar, sin instalar)
Requiere uv instalado.
uvx --from git+https://github.com/wwiens/trakt_mcpserver trakt-mcp
Fija una versión de lanzamiento para reproducibilidad:
uvx --from git+https://github.com/wwiens/trakt_mcpserver@v0.9.0 trakt-mcp
Configuración de 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"
}
}
}
}
Tu token OAuth de Trakt se guarda en ~/.trakt-mcp/auth_token.json (el directorio se crea en el primer inicio de sesión), por lo que la autorización sobrevive entre invocaciones de uvx. Para anular la ubicación — por ejemplo, para volúmenes de Docker o para mantener múltiples cuentas aisladas — establece TRAKT_AUTH_TOKEN_PATH a una ruta absoluta.
Instalación local
Requiere Python 3.12 o superior.
-
Clona este repositorio
git clone https://github.com/wwiens/trakt_mcpserver.git cd trakt_mcpserver -
Crea un entorno virtual e instala las dependencias
python3 -m venv .venv source .venv/bin/activate pip install -e . -
Configura tu entorno
cp .env.example .envLuego edita
.envpara añadir tus credenciales de la API de Trakt:TRAKT_CLIENT_ID=your_client_id TRAKT_CLIENT_SECRET=your_client_secret -
Ejecuta el servidor
python server.py
Instalación en Claude Desktop
Añade a tu archivo de configuración MCP de 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"
}
}
}
}
✨ Características
🌎 Datos públicos de Trakt
- Accede a series y películas en tendencia y populares
- Descubre el contenido más anticipado, favorito, reproducido y visto
- Consulta las películas más taquilleras de la taquilla estadounidense del fin de semana pasado
- Obtén datos en tiempo real de la comunidad global de Trakt
- Respuestas formateadas con títulos, años y métricas de popularidad
- Consulta calificaciones detalladas de series y películas, incluyendo puntuaciones promedio y distribución
- Explora temporadas de series con recuentos de episodios, episodios emitidos y calificaciones por temporada
- Sumérgete en temporadas específicas con información detallada, listas de episodios, calificaciones, reparto y equipo, videos, traducciones y estadísticas de participación
- Mira quién está viendo una temporada específica en este momento
- Encuentra listas que contengan una temporada específica
- Explora episodios individuales con resúmenes detallados, calificaciones, reparto y equipo, videos, traducciones y estadísticas de participación
- Mira quién está viendo un episodio específico en este momento
- Encuentra listas que contengan un episodio específico
- Consulta el reparto y el equipo de cualquier película o serie, con estrellas invitadas opcionales para series
- Explora personas con biografías, redes sociales y filmografías completas
- Navega por los créditos de una persona en películas y series con nombres de personajes y recuentos de episodios
- Encuentra listas que contengan una persona específica
👤 Datos personales de Trakt
- Consulta tus series vistas: Obtén una lista completa de las series que has visto personalmente
- Consulta tus fechas exactas de última visualización de cada serie
- Realiza un seguimiento de cuántas veces has visto cada serie
- Haz check-in en series que estás viendo actualmente para marcarlas como vistas
- Por ID de serie (más preciso) o título de serie (más conveniente)
- Incluye mensajes personalizados con tus check-ins
- Consulta cuándo viste el episodio en formato legible
- Busca series para encontrar sus detalles e IDs
- Gestiona tus calificaciones: Consulta, añade y elimina calificaciones personales de películas, series, temporadas y episodios con soporte de paginación
- Gestiona tu lista de seguimiento: Consulta, añade y elimina elementos de tu lista de seguimiento con soporte de paginación y ordenación
- Filtra por tipo (todos, películas, series, temporadas, episodios)
- Ordena por múltiples criterios (rango, añadido, título, estreno, duración, popularidad, porcentaje, votos)
- Añade notas opcionales a los elementos de la lista de seguimiento (función VIP, límite de 500 caracteres)
- Sigue el progreso de series: Consulta tu progreso de visualización de cualquier serie de TV
- Consulta episodios vistos vs. emitidos con porcentaje de finalización
- Consulta tu próximo episodio para ver
- Consulta el desglose por temporada con estadísticas de progreso
- Incluye temporadas ocultas y especiales opcionalmente
- Gestiona el progreso de reproducción: Consulta y borra elementos de reproducción en pausa
- Consulta películas y episodios que pausaste a mitad de visualización
- Consulta el porcentaje de progreso y cuándo pausaste
- Borra elementos de reproducción que ya no necesites
- Gestiona el historial de visualización: Añade y elimina elementos de tu historial
- Marca películas, series, temporadas o episodios como vistos
- Especifica opcionalmente cuándo los viste
- Elimina elementos de tu historial de visualización
- Autenticación segura con Trakt mediante el flujo de código de dispositivo
- Los datos personales se obtienen directamente de tu cuenta de Trakt
🎯 Recomendaciones personalizadas
- Obtén sugerencias personalizadas de películas y series basadas en tu historial de visualización y calificaciones (requiere autenticación)
- Filtra los elementos que ya has coleccionado o añadido a tu lista de seguimiento
- Oculta recomendaciones que no te interesen para que no vuelvan a aparecer
- Muestra elementos previamente ocultos para restaurarlos
💬 Comentarios y reseñas
- Consulta comentarios de series y películas: Lee lo que otros dicen sobre tu contenido favorito
- Consulta comentarios de temporadas y episodios específicos: Obtén información sobre partes concretas de una serie
- Consulta comentarios individuales y sus respuestas: Participa en las discusiones de la comunidad
- Protección contra spoilers: Los comentarios con spoilers están ocultos por defecto
- Alterna la visibilidad de spoilers: Elige si mostrar u ocultar spoilers
- Consulta reseñas: Los comentarios más largos y detallados se marcan como reseñas
- Consulta la distribución de calificaciones: Consulta cuántos usuarios dieron cada calificación del 1 al 10
🔄 Características generales
- Expone datos de la API de Trakt a través de recursos MCP
- Proporciona herramientas para obtener información de entretenimiento en tiempo real
- Permite que los modelos de IA ofrezcan recomendaciones de entretenimiento personalizadas
- Proceso simple de autenticación y cierre de sesión
- Soporte de paginación para endpoints de listas (tendencias, populares, anticipados, favoritos, reproducidos, vistos, búsqueda, comentarios, calificaciones, lista de seguimiento):
- Pasa
page: intpara resultados de una sola página con metadatos de paginación - Omite
pagepara auto-paginar y devolver hastalimitelementos totales como una lista plana - Usa
limit=0para obtener todos los resultados disponibles (limitado a 100 por seguridad)
- Pasa
🔥 Datos de tendencias en tiempo real
- Accede a series de TV en tendencia con recuentos de espectadores en vivo
- Obtén películas en tendencia actualizadas en tiempo real
- Consulta qué es popular en la comunidad global de Trakt de más de 14 millones de usuarios
- Ejemplos: The White Lotus (2021), Daredevil: Born Again (2025), Black Bag (2025)
🔌 Recursos disponibles
Los recursos MCP proporcionan endpoints de datos estáticos a los que los modelos de IA pueden acceder. Estos URI exponen datos de Trakt a través de una interfaz estandarizada.
Ver todos los recursos disponibles
Recursos de series
| Recurso | Descripción | Datos de ejemplo |
|---|---|---|
trakt://shows/trending | Series más vistas en las últimas 24 horas | Título de la serie, año, recuento de espectadores |
trakt://shows/popular | Series más populares según calificaciones | Título de la serie, año, puntuación de popularidad |
trakt://shows/anticipated | Series más anticipadas ordenadas por recuento de listas | Título de la serie, año, recuento de listas |
trakt://shows/favorited | Series más favoritas | Título de la serie, año, recuento de favoritos |
trakt://shows/played | Series más reproducidas | Título de la serie, año, recuento de reproducciones |
trakt://shows/watched | Series más vistas por usuarios únicos | Título de la serie, año, recuento de espectadores |
Recursos de películas
| Recurso | Descripción | Datos de ejemplo |
|---|---|---|
trakt://movies/trending | Películas más vistas en las últimas 24 horas | Título de la película, año, recuento de espectadores |
trakt://movies/popular | Películas más populares según calificaciones | Título de la película, año, puntuación de popularidad |
trakt://movies/anticipated | Películas más anticipadas ordenadas por recuento de listas | Título de la película, año, recuento de listas |
trakt://movies/favorited | Películas más favoritas | Título de la película, año, recuento de favoritos |
trakt://movies/played | Películas más reproducidas | Título de la película, año, recuento de reproducciones |
trakt://movies/watched | Películas más vistas por usuarios únicos | Título de la película, año, recuento de espectadores |
trakt://movies/boxoffice | Top 10 de películas más taquilleras de la taquilla estadounidense del fin de semana pasado | Título de la película, año, ingresos |
Recursos de usuario
| Recurso | Descripción | Datos de ejemplo |
|---|---|---|
trakt://user/auth/status | Estado actual de autenticación | Estado de autenticación, expiración del token |
trakt://user/watched/shows | Series vistas por el usuario autenticado | Título de la serie, año, fecha de última visualización, recuento de reproducciones |
trakt://user/watched/movies | Películas vistas por el usuario autenticado | Título de la película, año, fecha de última visualización, recuento de reproducciones |
🛠️ Herramientas disponibles
Las herramientas MCP son funciones interactivas que los modelos de IA pueden llamar con parámetros. Úsalas para obtener, buscar y gestionar datos de Trakt.
Herramientas de series
# 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)
Herramientas 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")
Herramientas de episodios
# 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")
Herramientas de películas
# 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")
Herramientas de personas
# 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")
Herramientas de autenticación y usuario
# 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"}])
Herramientas 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!"
)
Herramientas de comentarios
# 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)
Herramientas de recomendaciones
# 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")
Herramientas de progreso
# 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"}]
)
📝 Uso con Claude
Una vez instalado, Claude puede usar este servidor MCP para responder preguntas sobre datos de entretenimiento. Aquí tienes algunos ejemplos para empezar.
- "¿Qué series están en tendencia ahora mismo?"
- "Muéstrame las series que he visto" (requiere autenticación)
- "¿Cuál es la calificación de Game of Thrones?"
Ver más preguntas de ejemplo
Datos Públicos (Sin Autenticación Requerida):
- "¿Cuáles son los programas más esperados en este momento?"
- "Muéstrame las películas más esperadas próximamente"
- "¿Qué películas están en taquilla este fin de semana?"
- "Muéstrame las películas más taquilleras en este momento"
- "¿Puedes recomendarme algunas películas populares esta semana?"
- "¿Cuáles son los programas más vistos del mes?"
- "Busca programas como 'Breaking Bad'"
- "Busca películas como 'The Godfather'"
- "Muéstrame los comentarios de Breaking Bad"
- "¿Qué dice la gente sobre la película The Godfather?"
- "Muéstrame los comentarios de la Temporada 1 de Stranger Things"
- "Obtén los comentarios del Episodio 5 de la Temporada 2 de Game of Thrones"
- "Muéstrame el comentario #12345 con sus respuestas"
- "Muéstrame los comentarios de Breaking Bad pero incluye spoilers"
- "Muéstrame los comentarios más gustados de Breaking Bad"
- "Obtén los comentarios más gustados de la película The Godfather"
- "Muéstrame los comentarios con más respuestas de la Temporada 1 de Stranger Things"
- "Muéstrame la distribución de calificaciones de The Godfather"
- "¿Qué tan bien calificada está Breaking Bad?"
- "Muéstrame los avances de TRON: Legacy"
- "Obtén videos de Game of Thrones"
- "¿Qué avances están disponibles para The Godfather?"
- "Obtén un resumen detallado de Breaking Bad"
- "Muéstrame los detalles de la película The Godfather"
- "Dame información básica de Game of Thrones"
- "Muéstrame programas similares a Breaking Bad"
- "¿Qué películas están relacionadas con TRON: Legacy?"
- "Encuentra programas como Game of Thrones"
- "Cuéntame sobre la Temporada 1 de Breaking Bad"
- "¿Qué episodios hay en la Temporada 2 de Game of Thrones?"
- "¿Cómo está calificada la Temporada 5 de Breaking Bad?"
- "¿Quién protagonizó la Temporada 1 de Game of Thrones?"
- "¿Qué tan popular es la Temporada 1 de Breaking Bad?"
- "¿Hay avances para la Temporada 2 de Stranger Things?"
- "¿Quién está viendo la Temporada 1 de Breaking Bad ahora mismo?"
- "Obtén traducciones al español de la Temporada 1 de Breaking Bad"
- "¿Qué listas contienen la Temporada 1 de Breaking Bad?"
- "Cuéntame sobre el episodio piloto de Breaking Bad"
- "¿Cómo está calificado el Episodio 1 de la Temporada 1 de Game of Thrones?"
- "¿Quién protagonizó el primer episodio de Breaking Bad?"
- "¿Qué tan popular es el Episodio 16 de la Temporada 5 de Breaking Bad?"
- "¿Hay avances para el Episodio 1 de la Temporada 1 de Stranger Things?"
- "¿Quién está viendo el Episodio 1 de la Temporada 1 de Breaking Bad ahora mismo?"
- "Obtén traducciones al español del Episodio 1 de la Temporada 1 de Breaking Bad"
- "¿Qué listas contienen el Episodio 1 de la Temporada 1 de Breaking Bad?"
- "¿Quién protagoniza The Dark Knight?"
- "Muéstrame el elenco y el equipo de Breaking Bad"
- "Muéstrame las estrellas invitadas de Breaking Bad"
- "Cuéntame sobre Bryan Cranston"
- "¿En qué películas ha aparecido Bryan Cranston?"
- "¿En qué programas de TV ha aparecido Bryan Cranston?"
- "¿Qué listas incluyen a Bryan Cranston?"
Datos Personales (Requiere Autenticación):
- "¿Cuál fue el último programa que vi?"
- "Muéstrame las películas que he visto"
- "¿Cuál fue la última película que vi?"
- "¿He visto The Dark Knight?"
- "¿He visto Inception?"
- "¿Cuándo vi The Matrix?"
- "Muéstrame mis películas calificadas con 10/10"
- "Añade una calificación de 9/10 para Breaking Bad"
- "Muéstrame mi lista de seguimiento"
- "¿Qué películas hay en mi lista de seguimiento?"
- "Añade The Godfather a mi lista de seguimiento"
- "Añade Breaking Bad a mi lista de seguimiento con una nota" (VIP)
- "Elimina The Dark Knight de mi lista de seguimiento"
- "Muéstrame mi lista de seguimiento ordenada por fecha de adición"
- "Regístrame en el Episodio 5 de la Temporada 2 de Breaking Bad"
- "Regístrame en el Episodio 3 de la Temporada 1 del show ID 1388"
- "¿Cuál es mi progreso en Breaking Bad?"
- "¿Cuánto he avanzado en Game of Thrones?"
- "¿Cuál es mi próximo episodio de Stranger Things?"
- "Muéstrame las películas o episodios en pausa"
- "Elimina mi reproducción en pausa de esa película"
- "Marca The Dark Knight como vista"
- "Añade la Temporada 1 de Breaking Bad a mi historial de visualización"
- "Elimina Inception de mi historial de visualización"
👤 Acceso a Datos Personales
Con autenticación, puedes acceder a:
- Tu historial completo de programas y películas vistos
- Fechas de última visualización de cada programa y película
- Número de veces que has visto cada programa y película
- Regístrate en los programas que estás viendo actualmente y sigue tu progreso
- Estadísticas personales de visualización
- Tu lista de seguimiento completa con opciones de filtrado y ordenamiento
- Añade y elimina elementos de tu lista de seguimiento
- Añade notas personales a los elementos de la lista de seguimiento (función VIP)
- Seguimiento de progreso de programas: Ve cuánto has avanzado en cualquier programa de TV, con recomendaciones del próximo episodio
- Progreso de reproducción: Ve y elimina cualquier película o episodio que hayas pausado a mitad de visualización
- Gestión del historial de visualización: Añade o elimina elementos de tu historial de visualización con marcas de tiempo opcionales
Todos los datos se obtienen directamente de tu cuenta de Trakt en tiempo real.
🔐 Autenticación
El servidor utiliza el flujo de autenticación de dispositivos de Trakt:
- Cuando solicites datos específicos de usuario, el servidor iniciará automáticamente la autenticación si es necesario
- Recibirás un código y una URL para visitar en tu navegador
- Después de ingresar el código en el sitio web de Trakt y autorizar la aplicación, informa a Claude que has completado la autorización
- Claude verificará el estado de la autenticación y luego obtendrá tus datos personales
- Tu token de autenticación se almacena de forma segura en
~/.trakt-mcp/auth_token.jsonpara futuras solicitudes, con permisos de0o600. Anula la ubicación con la variable de entornoTRAKT_AUTH_TOKEN_PATH; las imágenes de Docker lo configuran en/data/auth_token.json— monta un volumen en/data(por ejemplo,-v trakt_auth:/data) para conservar la autenticación entre recreaciones de contenedores.
Puedes cerrar sesión en cualquier momento usando la herramienta clear_auth.
🐳 Despliegue con Docker
Hay dos imágenes de Docker disponibles con diferentes mecanismos de transporte. Cada versión también publica una etiqueta versionada (por ejemplo, :0.9.0, :0.9.0-stdio) para fijar versiones.
| Etiqueta de Imagen | Transporte | Caso de Uso |
|---|---|---|
:latest | SSE (HTTP) | Acceso remoto, clientes web, docker-compose |
:latest-stdio | stdio | MCPhub, Claude Desktop, clientes MCP locales |
:stdio | stdio | Alias obsoleto de :latest-stdio — se eliminará en v1.0.0 |
Transporte stdio (MCPhub, Claude Desktop)
Usa la imagen :latest-stdio (o fija una versión como :0.9.0-stdio) para clientes MCP que se comunican mediante 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
Configuración de 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)
Usa la imagen :latest para acceso basado en 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
Esto ejecuta el servidor en http://localhost:8080 y envía las solicitudes MCP a través de SSE (transporte HTTP).
🧪 Desarrollo y Pruebas
Para desarrolladores que trabajan con o extienden este servidor MCP, aquí están las herramientas de prueba y los flujos de trabajo de desarrollo.
🚀 Experiencia de Desarrollo Impulsada por IA
Este proyecto se construyó utilizando herramientas de desarrollo asistidas por IA:
- Cursor - Editor de código impulsado por IA para desarrollo rápido
- Aider - Herramienta de programación en pareja con IA para colaboración de código
- Claude Code - La interfaz de codificación dedicada de Claude
Pruebas con MCP Inspector
Valida tu implementación del servidor MCP y explora las herramientas, recursos y avisos disponibles.
Ver comandos de 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
Ejecutando Pruebas
Asegura la calidad del código con pytest, verificación de tipos y linting antes de hacer cambios.
Ver comandos de prueba
# 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
📄 Licencia
Construido con 🧠 IA y colaboración humana
Impulsado por Claude