Plex

Proporciona a los asistentes de IA acceso completo a un Plex Media Server.

Documentación

Servidor MCP de Plex

Un servidor Model Context Protocol (MCP) que brinda a los asistentes de IA acceso integral a tu Plex Media Server, Sonarr, Radarr y Trakt.tv, todo desde un único servidor unificado.

Plex Server MCP server

TypeScript Node.js MCP License: MIT

¿Qué es esto?

Este servidor MCP transforma tu Plex Media Server en una base de datos consultable por IA. Haz preguntas a tu asistente de IA como:

  • "¿Qué películas he visto recientemente?"
  • "Muéstrame mis estadísticas de visualización del último mes"
  • "¿Cuál es el contenido más popular en mi servidor?"
  • "Encuentra películas de acción en mi biblioteca"
  • "¿Qué hay en mi lista de continuar viendo?"
  • "Agrega esa nueva serie a Sonarr"
  • "¿Qué hay en mi cola de descargas?"
  • "Sincroniza mi historial de visualización con Trakt"
  • "Recomiéndame algunas películas que no haya visto"

Características

46 herramientas listas para usar (58 con operaciones de escritura habilitadas):

  • Gestión de biblioteca de Plex — Explora bibliotecas, busca medios, obtén metadatos detallados, lista listas de reproducción y lista de seguimiento
  • Analíticas estilo Tautulli — Estadísticas de visualización, actividad de usuarios, contenido popular, historial de visualización
  • Recomendaciones personalizadas — Sugerencias de películas impulsadas por IA basadas en tu historial de visualización, géneros, directores y actores. Admite perfiles por usuario para servidores Plex multiusuario.
  • Integración con Sonarr/Radarr — Explora, busca, agrega series/películas, consulta colas, activa descargas
  • Sincronización con Trakt.tv — Autenticación OAuth, sincronización de historial de visualización, estadísticas mejoradas, scrobbling. Cuando está configurado, los datos de Trakt enriquecen las recomendaciones al detectar películas vistas fuera de Plex.
  • Operaciones de escritura (opt-in) — Crea/edita listas de reproducción, actualiza metadatos, gestiona la lista de seguimiento, califica medios y marca medios como vistos o no vistos

Un servidor, todas las herramientas. Las credenciales de Trakt y Sonarr/Radarr son opcionales: las herramientas que las necesitan devuelven un mensaje de configuración útil si falta la clave. No necesitas configurar todo de antemano.

Inicio rápido

Requisitos previos

  • Node.js 20+
  • Plex Media Server (cualquier versión reciente)
  • Token de Plex (Cómo obtener tu token)
  • Cliente compatible con MCP (Claude Desktop, etc.)

Instalación

# Clone the repository
git clone https://github.com/niavasha/plex-mcp-server.git
cd plex-mcp-server

# Install dependencies
npm install

# Build the project
npm run build

O instala directamente desde npm:

npx plex-mcp-server

Configuración

  1. Obtén tu token de Plex (consulta las instrucciones a continuación)

  2. Configura tu cliente MCP (por ejemplo, Claude Desktop):

{
  "mcpServers": {
    "plex": {
      "command": "node",
      "args": ["/path/to/plex-mcp-server/build/plex-mcp-server.js"],
      "env": {
        "PLEX_URL": "http://localhost:32400",
        "PLEX_TOKEN": "your_plex_token_here",

        "SONARR_URL": "http://localhost:8989",
        "SONARR_API_KEY": "optional_sonarr_api_key",

        "RADARR_URL": "http://localhost:7878",
        "RADARR_API_KEY": "optional_radarr_api_key",

        "TRAKT_CLIENT_ID": "optional_trakt_client_id",
        "TRAKT_CLIENT_SECRET": "optional_trakt_client_secret"
      }
    }
  }
}

Solo se requiere PLEX_TOKEN. Todas las demás credenciales son opcionales: las herramientas para servicios no configurados devuelven un mensaje de error claro que explica cómo configurarlos, en lugar de bloquear el servidor.

Claves API de Sonarr/Radarr se pueden encontrar en Configuración > General > Clave API en la interfaz web de cada aplicación.

Configuración de Trakt.tv requiere una aplicación OAuth de Trakt. Crea una con la URI de redirección urn:ietf:wg:oauth:2.0:oob, luego agrega el ID de cliente y el secreto a tu configuración. Una vez que el servidor esté en ejecución, pide a tu asistente de IA que "autentique con Trakt": te guiará a través del flujo OAuth. Consulta la guía de configuración de Trakt para obtener instrucciones detalladas.

Respuestas compactas (opcional)

Las herramientas responden con JSON de forma predeterminada. Configurar PLEX_OUTPUT_FORMAT=toon las cambia a TOON, que escribe una matriz de registros una vez como encabezado y luego como filas en lugar de repetir cada nombre de campo en cada registro:

results[3]{ratingKey,title,year}:
  1001,Arrival,2016
  1002,Sicario,2015
  1003,Dune,2021

Eso son los mismos datos que tu asistente habría recibido, en menos tokens: aproximadamente un tercio menos en una variedad de respuestas de herramientas, y entre un 40 y un 60 % menos en las de tipo lista como search_media, get_library_items y radarr_get_movies. El ahorro solo vale la pena en listas largas, por lo que cada respuesta se emite en TOON solo cuando TOON es realmente más corto, y como JSON en caso contrario; habilitar esto no puede hacer que una respuesta sea más grande de lo que es hoy.

"env": {
  "PLEX_TOKEN": "your_plex_token_here",
  "PLEX_OUTPUT_FORMAT": "toon"
}

Deja la variable sin configurar (el valor predeterminado) y las respuestas serán, byte por byte, el JSON que siempre han sido.

¿Migrando desde v1.0.x?

En v1.0.x había tres binarios de servidor separados (build/index.js, build/plex-trakt-server.js, build/plex-arr-server.js). En v1.1.0+ estos se reemplazan por un único binario unificado: build/plex-mcp-server.js.

Los binarios antiguos siguen funcionando pero emiten una advertencia de obsolescencia. Actualiza tu configuración de MCP para apuntar a build/plex-mcp-server.js y elimina cualquier entrada de servidor duplicada.

Consulta la guía de migración para obtener todos los detalles.

Uso

Una vez configurado, puedes preguntar a tu asistente de IA:

"What movies did I watch last week?"
"Show me my most popular TV shows this month"
"Give me viewing statistics for the past 30 days"
"Search for Night of the Living Dead in my library"
"What's on my continue watching list?"
"List all my Plex libraries"
"Add that new show to Sonarr"
"What's in my Radarr download queue?"
"Sync my Plex history to Trakt"

Flujos de trabajo recomendados

Sincronizar el historial de visualización de Plex con Trakt:

  1. Configura las credenciales de Trakt (consulta arriba)
  2. Pregunta: "Autentícate con Trakt" — sigue el flujo OAuth
  3. Pregunta: "Haz una sincronización de prueba de mi historial de Plex a Trakt" — previsualiza lo que se sincronizaría
  4. Pregunta: "Sincroniza mi historial de visualización de Plex con Trakt" — ejecuta la sincronización real

Encontrar y agregar contenido nuevo:

  1. Pregunta: "Busca en Sonarr The Beverly Hillbillies" — encuentra el ID de TVDB
  2. Pregunta: "Agrega The Beverly Hillbillies a Sonarr" — detecta automáticamente los perfiles de calidad y las carpetas raíz
  3. Pregunta: "¿Qué hay en mi cola de descargas de Sonarr?" — supervisa el progreso

Obtener recomendaciones personalizadas:

  1. Pregunta: "Recomiéndame algunas películas de mi biblioteca"
  2. El motor analiza tu historial de visualización: géneros, directores, actores, calificaciones
  3. Puntúa cada película no vista y devuelve las mejores coincidencias con razones
  4. Para servidores multiusuario, especifica el usuario: "Recomienda películas para Titus"
  5. Si Trakt está configurado, también usa automáticamente tu historial de Trakt, detectando películas que viste fuera de Plex (otras plataformas, antes de que se configurara el seguimiento)

Analíticas de visualización multiplataforma:

  1. Pregunta: "Muéstrame mis estadísticas de visualización de Plex de los últimos 30 días"
  2. Pregunta: "¿Cuáles son mis estadísticas de Trakt?" — consulta estadísticas de por vida (películas vistas, horas, hitos)
  3. Pregunta: "¿Cuáles son mis películas más populares este mes?"

Funciones disponibles

46 herramientas listas para usar (58 con operaciones de escritura habilitadas).

Herramientas de Plex (20 herramientas)

FunciónDescripción
get_librariesLista todas las bibliotecas de Plex
get_library_itemsLista elementos en una biblioteca con paginación
export_libraryExporta una biblioteca completa a JSON (bajo ./exports)
search_mediaBusca medios globalmente o dentro de una biblioteca
get_recently_addedContenido agregado recientemente
get_on_deckLista de continuar viendo
get_media_detailsInformación detallada de medios
get_editable_fieldsMuestra campos editables y etiquetas disponibles para un elemento
get_playlistsLista todas las listas de reproducción de Plex
get_playlist_itemsLista elementos en una lista de reproducción
get_watchlistObtiene la lista de seguimiento de la cuenta actual desde Plex Discover
get_recently_watchedContenido visto recientemente
get_watch_historySesiones de visualización detalladas
get_fully_watchedPelículas/programas completamente vistos
get_watch_statsEstadísticas de visualización integrales
get_user_statsEstadísticas de actividad de usuarios
get_library_statsMétricas de uso de la biblioteca
get_popular_contentAnálisis de contenido más popular
get_recommendationsRecomendaciones personalizadas de películas basadas en tu historial de visualización
get_active_sessionsTransmisiones de Plex actualmente activas: quién está viendo qué, estado del reproductor, transcodificación

Operaciones de escritura (12 herramientas, opt-in)

Configura PLEX_ENABLE_MUTATIVE_OPS=true para habilitar estas herramientas. Permiten que tu asistente de IA realice cambios en tu servidor Plex. Úsalas con cuidado: aunque probamos estas herramientas, no hay garantías. Revisa los cambios que proponga tu asistente antes de confirmarlos.

FunciónDescripción
update_metadataActualiza campos de metadatos y etiquetas editables para un elemento de medios
update_metadata_from_jsonAplica un payload JSON de metadatos usando mapeo de campos de mejor esfuerzo
create_playlistCrea una nueva lista de reproducción inteligente o estática
add_to_playlistAgrega un elemento de medios a una lista de reproducción
remove_from_playlistElimina un elemento de una lista de reproducción
clear_playlistPrevisualiza y opcionalmente vacía todos los elementos de una lista de reproducción (confirm=true)
delete_playlistElimina una lista de reproducción sin eliminar los medios subyacentes
add_to_watchlistAgrega una película o programa local coincidente a la lista de seguimiento de la cuenta
remove_from_watchlistElimina un elemento de la lista de seguimiento de la cuenta por su GUID global de Plex o clave de calificación local
rate_mediaEstablece la calificación del usuario para un elemento de medios de 0 a 10
mark_watchedMarca un elemento de medios como visto
mark_unwatchedMarca un elemento de medios como no visto

Herramientas de Sonarr (8 herramientas)

FunciónDescripción
sonarr_get_seriesLista series con filtro de título opcional
sonarr_searchBusca en TheTVDB nuevas series
sonarr_add_seriesAgrega series por ID de TVDB
sonarr_get_missingEpisodios faltantes/deseados
sonarr_get_queueCola de descargas
sonarr_get_calendarPróximos episodios
sonarr_get_profilesPerfiles de calidad y carpetas raíz
sonarr_trigger_searchActiva la búsqueda de episodios faltantes

Herramientas de Radarr (8 herramientas)

FunciónDescripción
radarr_get_moviesLista películas con filtro de título opcional
radarr_searchBusca en TMDB nuevas películas
radarr_add_movieAgrega películas por ID de TMDB
radarr_get_missingPelículas faltantes/deseadas
radarr_get_queueCola de descargas
radarr_get_calendarPróximas películas
radarr_get_profilesPerfiles de calidad y carpetas raíz
radarr_trigger_searchActiva la búsqueda de películas faltantes

Herramientas entre servicios (1 herramienta)

FunciónDescripción
arr_get_statusVerifica el estado de conexión de Sonarr/Radarr

Herramientas de Trakt (9 herramientas)

FunciónDescripción
trakt_authenticateInicia el flujo OAuth de Trakt.tv
trakt_complete_authCompleta la autenticación
trakt_get_auth_statusVerifica el estado de autenticación
trakt_sync_to_traktSincroniza el historial de Plex con Trakt
trakt_sync_from_traktObtiene datos de Trakt para comparación
trakt_get_user_statsEstadísticas mejoradas de Trakt
trakt_searchBusca en la base de datos de Trakt
trakt_start_scrobblingScrobbling en tiempo real
trakt_get_sync_statusVerifica el estado de la operación de sincronización

Cómo obtener tu token de Plex

  1. Abre la aplicación web de Plex en tu navegador
  2. Navega a Configuración > Cuenta > Privacidad
  3. Haz clic en "Mostrar avanzado" en la parte inferior
  4. Copia tu token de Plex

Método alternativo:

  • Visita: http://YOUR_PLEX_IP:32400/web/index.html#!/settings/account
  • Busca el campo "Token de Plex"

Estructura del proyecto

plex-mcp-server/
├── src/
│   ├── plex-mcp-server.ts    # Unified server entry point (44+ tools)
│   ├── index.ts               # Deprecated shim → plex-mcp-server
│   ├── plex-arr-server.ts     # Deprecated shim → plex-mcp-server
│   ├── plex-trakt-server.ts   # Deprecated shim → plex-mcp-server
│   ├── plex/                  # Shared Plex module
│   │   ├── client.ts          #   Plex API client
│   │   ├── tools.ts           #   Plex tool implementations
│   │   ├── tool-registry.ts   #   Map-based tool dispatch
│   │   ├── tool-schemas.ts    #   MCP tool schema definitions
│   │   ├── constants.ts       #   Configuration defaults
│   │   └── types.ts           #   TypeScript type definitions
│   ├── arr/                   # Sonarr/Radarr module
│   │   ├── client.ts          #   Base ArrClient + Sonarr/Radarr subclasses
│   │   ├── mcp-functions.ts   #   Tool implementations (17 tools)
│   │   ├── tool-registry.ts   #   Map-based tool dispatch
│   │   ├── tool-schemas.ts    #   MCP tool schema definitions
│   │   ├── constants.ts       #   Configuration defaults
│   │   └── types.ts           #   TypeScript type definitions
│   ├── trakt/                 # Trakt.tv module
│   │   ├── client.ts          #   Trakt API client + OAuth
│   │   ├── sync.ts            #   Plex-to-Trakt sync engine
│   │   ├── mapper.ts          #   Plex-to-Trakt data mapping
│   │   ├── mcp-functions.ts   #   Tool implementations (9 tools)
│   │   ├── tool-registry.ts   #   Map-based tool dispatch
│   │   └── tool-schemas.ts    #   MCP tool schema definitions
│   ├── shared/                # Shared utilities
│   │   └── utils.ts           #   truncate, sleep, chunkArray
│   └── __tests__/             # Test suite (94 tests)
├── build/                     # Compiled JavaScript output
├── docs/                      # Documentation
├── package.json
├── tsconfig.json
├── vitest.config.ts
├── .env.example               # Environment variables template
└── README.md

Desarrollo

Scripts

# Development mode with auto-reload
npm run dev

# Build for production
npm run build

# Start production server
npm start

# Run tests
npm test
npm run test:watch

Compilar desde el código fuente

git clone https://github.com/niavasha/plex-mcp-server.git
cd plex-mcp-server
npm install
npm run dev

Contribuciones

¡Las contribuciones son bienvenidas! No dudes en enviar una solicitud de extracción (Pull Request). Para cambios importantes, abre primero un issue para discutir lo que te gustaría cambiar.

Los contribuyentes fusionados reciben crédito en CONTRIBUTORS.md. Usa Conventional Commits: las versiones y el registro de cambios se generan a partir de ellos; consulta docs/RELEASING.md.

Pautas de desarrollo

  1. Haz un fork del repositorio
  2. Crea una rama de características (git checkout -b feature/amazing-feature)
  3. Confirma tus cambios (git commit -m 'Add amazing feature')
  4. Haz push a la rama (git push origin feature/amazing-feature)
  5. Abre una solicitud de extracción

Solución de problemas

Problemas comunes

Conexión rechazada:

  • Verifica que tu servidor Plex esté en ejecución
  • Revisa el PLEX_URL en tu configuración de entorno
  • Asegúrate de que el puerto (generalmente 32400) sea correcto Host inalcanzable (EHOSTUNREACH / errores de conexión) en macOS:
  • En macOS Sequoia, Sonoma o versiones posteriores, las conexiones a direcciones IP locales (como 10.0.0.10 o 192.168.1.50) pueden estar bloqueadas por la configuración de Privacidad de red local.
  • Solución 1: Intente conectarse usando el nombre de host local (por ejemplo, plex.local o el nombre de su servidor Plex) en lugar de la dirección IP directa. Alternativamente, use un dominio *.plex.direct de Plex.
  • Solución 2: Vaya a Configuración del sistema -> Privacidad y seguridad -> Red local en su Mac y asegúrese de que el cliente MCP (por ejemplo, Claude Desktop, Terminal o VS Code) esté habilitado y tenga permiso para acceder a la red local.

Errores de autenticación:

  • Verifique que su token de Plex sea correcto
  • Compruebe los permisos del token en la configuración de Plex
  • Asegúrese de que el token no haya caducado

Respuestas vacías:

  • Algunas funciones requieren Plex Pass
  • Compruebe si sus bibliotecas son accesibles
  • Verifique que los medios hayan sido escaneados y estén disponibles

Problemas de conexión con Sonarr/Radarr:

  • Verifique que Sonarr/Radarr esté ejecutándose y sea accesible desde el host del servidor MCP
  • Compruebe que la clave API sea correcta (Configuración > General > Clave API)
  • Sonarr usa API v3 en /api/v3/ — asegúrese de que su URL no incluya una ruta final
  • Para bibliotecas grandes de Radarr (más de 20,000 películas), la llamada inicial a radarr_get_movies puede tardar hasta 30 segundos

Problemas de autenticación con Trakt:

  • Asegúrese de que TRAKT_CLIENT_ID y TRAKT_CLIENT_SECRET estén configurados
  • Use la herramienta trakt_authenticate para iniciar el flujo OAuth
  • Complete la autenticación con trakt_complete_auth usando el código de Trakt

Problemas con el cliente MCP:

  • Asegúrese de que la ruta esté configurada en build/plex-mcp-server.js (el servidor unificado)
  • Compruebe que Node.js esté en el PATH de su sistema
  • Verifique que las variables de entorno estén configuradas en la configuración del cliente

Obtener Ayuda

Requisitos

  • Node.js 20.0.0 o superior
  • Plex Media Server (cualquier versión reciente)
  • Acceso de red entre el servidor MCP y el servidor Plex
  • Token de Plex válido con los permisos adecuados

Notas de Seguridad

  • Mantenga su token de Plex seguro — nunca lo envíe al control de versiones
  • Use variables de entorno para la configuración sensible
  • Ejecute en redes confiables — el servidor se comunica directamente con Plex
  • Rotación regular de tokens — considere actualizar los tokens periódicamente
  • Las operaciones de escritura están deshabilitadas por defecto — actívelas solo si confía en el criterio de su asistente de IA

Licencia

Este proyecto está licenciado bajo la Licencia MIT — consulte el archivo LICENCIA para más detalles.

Agradecimientos

Proyectos Relacionados


Hecho con amor para la comunidad de Plex y IA