Aljazeera 360
Servidor MCP para Al Jazeera 360 — Conecta asistentes de IA al catálogo de streaming de Al Jazeera. Busca, navega y recupera contenido de video en árabe con enlaces directos de visualización.
Documentación
Servidor MCP de Al Jazeera 360
Conecta cualquier asistente de IA al catálogo de streaming de Al Jazeera 360: busca, explora y recupera contenido de video en árabe con enlaces de visualización directos.
Un servidor MCP (Protocolo de Contexto de Modelos) que brinda a herramientas de IA como Claude, ChatGPT, Gemini y Cursor acceso en tiempo real a la biblioteca completa de contenido de Al Jazeera 360: documentales, programas de investigación, talk shows, podcasts y producciones originales.
⚠️ Proyecto comunitario no oficial. No está afiliado, respaldado ni patrocinado por Al Jazeera Media Network. Utiliza la API de acceso público de la plataforma y enlaza de vuelta a
aljazeera360.compara todo el contenido.
⚡ Conexión rápida — Sin necesidad de instalación
Una instancia alojada está activa en Cloudflare. Añade esto a la configuración de tu cliente MCP y listo:
{
"mcpServers": {
"aljazeera360": {
"type": "http",
"url": "https://aljazeera360-mcp.ahmed-26d.workers.dev/mcp"
}
}
}
La primera solicitud después de estar inactivo tarda unos segundos (arranque en frío del contenedor) — las solicitudes posteriores son rápidas.
Luego pregúntale a tu asistente: "¿Qué está en tendencia en Al Jazeera 360?" — o en árabe: "ايه أحدث حلقات الدحيح؟"
Qué Hace
Haz preguntas a tu asistente de IA como:
- "¿Qué está en tendencia en Al Jazeera 360?"
- "Encuentra documentales sobre Palestina"
- "Muéstrame los últimos episodios de Al Daheeh"
- "Busca videos sobre Gaza"
La IA se conecta a este servidor, obtiene datos reales de Al Jazeera 360 y devuelve títulos de video reales, descripciones, duraciones y enlaces de visualización directos a aljazeera360.com.
Herramientas Disponibles
El servidor incluye dos perfiles de herramientas:
| Perfil | Herramientas | Para quién | Cómo |
|---|---|---|---|
| Core (predeterminado) | 8 herramientas de descubrimiento | Usuarios finales que preguntan a asistentes de IA sobre contenido | Funciona de inmediato |
| Completo | Las 24 herramientas (+ SEO y analítica) | Equipos de contenido, analistas de SEO | Establecer AJ360_ENABLE_SEO_TOOLS=1 |
Un conjunto de herramientas predeterminado pequeño mantiene la selección de herramientas de IA rápida y precisa. Activa el perfil completo solo si necesitas las herramientas de SEO/analítica.
Herramientas de Descubrimiento Core (siempre activas)
| Herramienta | Qué Hace |
|---|---|
list_sections | Lista las 15 secciones/canales disponibles en la plataforma |
get_trending_content | Devuelve contenido destacado y más visto de la página principal |
browse_section | Explora todo el contenido dentro de una sección específica (p. ej., Documentales, Podcasts) |
get_video_details | Devuelve metadatos completos de un video: título, descripción, duración, calidad (hasta 4K), URL de visualización |
get_series_details | Devuelve información de la serie con todas las temporadas disponibles |
get_season_episodes | Lista todos los episodios dentro de una temporada específica |
search_videos | Búsqueda de texto completo en todo el contenido (árabe e inglés), con filtro opcional por tipo de contenido |
get_latest_episodes | Devuelve los episodios publicados más recientemente de cualquier sección |
Herramientas de SEO y Metadatos (requiere AJ360_ENABLE_SEO_TOOLS=1)
| Herramienta | Qué Hace |
|---|---|
generate_seo_content | Genera títulos, descripciones y palabras clave optimizadas en árabe para un video |
generate_sitemap | Genera un Sitemap XML de Video listo para Google Search Console (paginado) |
audit_metadata_quality | Audita la salud del catálogo: descripciones, miniaturas y categorías faltantes (paginado) |
get_trending_topics | Extrae las palabras clave y temas más populares del catálogo |
compare_sections | Compara la frescura y actividad del contenido en todas las secciones |
get_series_seo_map | Genera un mapa SEO completo para una serie con todos los episodios |
Herramientas Avanzadas de IA y Analítica (requiere AJ360_ENABLE_SEO_TOOLS=1)
| Herramienta | Qué Hace |
|---|---|
build_knowledge_graph | Construye un grafo de conocimiento de entidades a partir de los metadatos del catálogo |
generate_faq_schema | Genera el Esquema JSON-LD de FAQ para un video |
get_ai_discoverability_score | Puntúa cuán descubrible es el contenido por asistentes de IA |
build_topic_clusters | Agrupa contenido en clústeres de temas SEO con páginas pilares y de soporte |
find_evergreen_content | Identifica contenido que sigue siendo relevante con el tiempo |
get_host_profile | Genera un Esquema de Persona y perfil para el presentador de un programa |
get_genre_report | Informa sobre la distribución de géneros y oportunidades de SEO |
get_searchable_tags_map | Mapea las palabras clave más buscadas en el catálogo (paginado) |
get_country_content_map | Mapea contenido por país para SEO geodirigido (paginado) |
generate_series_schema | Genera el Esquema JSON-LD de TVSeries + TVEpisode para una serie |
Secciones
| ID | Canal |
|---|---|
AJ360-Originals | Originales de Al Jazeera 360 |
AJA | Al Jazeera Árabe |
AJD | Al Jazeera Documental |
Atheer | Atheer |
AJ-Plus | AJ+ Árabe |
Talk Show | Talk Shows |
Investigative Show | Programas de Investigación |
Podcast | Podcasts |
Documentaries | Documentales |
Field Show | Reportajes de Campo |
Policy Series | Series Políticas |
Social Series | Series Sociales |
Historical Series | Series Históricas |
Biographical Series | Series Biográficas |
Culture and Arts Series | Cultura y Artes |
Inicio Rápido
Instalación
git clone https://github.com/ahmedaminsa/aljazeera360-mcp-server.git
cd aljazeera360-mcp-server
pip install -r requirements.txt
Configurar Autenticación
El servidor admite múltiples métodos de autenticación (en orden de prioridad):
-
Token de Refresco (Recomendado) — Se renueva automáticamente cada 10 minutos, válido por ~1 año:
export AJ360_REFRESH_TOKEN="eyJ..." -
Token de Autenticación — Token directo, expira en ~10 minutos:
export AJ360_AUTH_TOKEN="eyJ..." -
Modo Invitado — Sin configuración necesaria. El servidor crea automáticamente una sesión de invitado.
Cómo obtener tu token de refresco:
- Abre https://www.aljazeera360.com en tu navegador
- Inicia sesión con tu cuenta
- Abre DevTools → Consola → Ejecuta:
localStorage.getItem('dice:refreshToken') - Copia el valor del token
Prueba
python test_server.py
Las herramientas Core se prueban contra la API en vivo.
Ejecutar
python server.py
Uso con Claude Desktop
Añade a tu archivo de configuración:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"aljazeera360": {
"command": "python",
"args": ["/full/path/to/aljazeera360-mcp-server/server.py"],
"env": {
"AJ360_REFRESH_TOKEN": "your-refresh-token-here"
}
}
}
}
Reinicia Claude Desktop. Las herramientas de Al Jazeera 360 aparecerán automáticamente.
Uso con Cualquier Cliente MCP
Este servidor habla el protocolo MCP estándar sobre stdio (local) y HTTP Transmisible (alojado). Funciona con cualquier cliente compatible con MCP:
- Claude Desktop
- Cursor
- Continue
- Windsurf
- MCP Inspector (para pruebas)
- Cualquier cliente MCP personalizado
Configuración
| Variable | Requerida | Predeterminado | Descripción |
|---|---|---|---|
AJ360_REFRESH_TOKEN | No | — | Token de refresco de larga duración (~1 año). Mejor para producción. |
AJ360_AUTH_TOKEN | No | Modo invitado | Token de autenticación de corta duración (~10 min). Bueno para pruebas rápidas. |
AJ360_API_KEY | Sí | — | Clave de API de la plataforma (pública, de las solicitudes de red del navegador). No se incluye ninguna predeterminada — debes proporcionarla. |
MCP_TRANSPORT | No | streamable-http | Modo de transporte: stdio (local), streamable-http (nube, recomendado) o sse (nube heredado). |
MCP_PORT | No | 8080 | Puerto para el transporte HTTP (implementación en la nube). |
AJ360_ALLOWED_HOST | Solo nube | — | Nombre de host público de tu implementación (sin esquema). Requerido al autoalojar en un dominio personalizado — la protección contra reenlace de DNS rechaza hosts desconocidos con 421. |
AJ360_ENABLE_SEO_TOOLS | No | off | Establecer a 1 para registrar las 16 herramientas de SEO/analítica (perfil completo). |
AJ360_ENABLE_DASHBOARD | No | true | Activar/desactivar el panel de analítica. |
AJ360_DASHBOARD_PORT | No | 9090 | Puerto para el panel de analítica. |
AJ360_DASHBOARD_TOKEN | No | — | Secreto compartido para los endpoints de datos de analítica (/api/stats, /api/recent). Cuando se establece, los llamadores deben enviar Authorization: Bearer <token> o ?token=<token>. Muy recomendado para cualquier implementación pública/en la nube. |
AJ360_ANALYTICS_DB | No | analytics.db | Ruta a la base de datos SQLite de analítica. |
El servidor solo necesita AJ360_API_KEY para ejecutarse — la autenticación recurre automáticamente a una sesión de invitado. Para acceso completo al contenido, proporciona también un token de refresco.
Implementación
La instancia de producción se ejecuta en Contenedores de Cloudflare — tutorial completo en
deploy/cloudflare/README.md (envuelve el Dockerfile en un
Contenedor de Cloudflare detrás de un pequeño Worker; requiere el plan Workers de Pago y Docker
local para implementaciones). Cualquier plataforma de contenedores funciona — alternativas abajo.
Docker
docker build -t aljazeera360-mcp .
docker run -p 8080:8080 -e MCP_TRANSPORT=streamable-http -e AJ360_REFRESH_TOKEN=your-token aljazeera360-mcp
Google Cloud Run
gcloud builds submit --tag gcr.io/YOUR_PROJECT/aljazeera360-mcp
gcloud run deploy aljazeera360-mcp \
--image gcr.io/YOUR_PROJECT/aljazeera360-mcp \
--platform managed \
--allow-unauthenticated \
--set-env-vars="MCP_TRANSPORT=streamable-http,AJ360_REFRESH_TOKEN=your-token"
Render / Railway / Fly.io
Conecta este repositorio — se implementa automáticamente desde el Dockerfile incluido. Establece las variables de entorno en el panel (incluyendo AJ360_ALLOWED_HOST=<your-domain> para que la protección contra reenlace de DNS acepte tu host).
Cómo Funciona
Your AI Assistant
│
│ MCP Protocol (stdio / Streamable HTTP)
▼
┌──────────────────────────┐
│ This MCP Server │
│ ┌────────────────────┐ │
│ │ Token Manager │ │
│ │ (auto-refresh) │ │
│ ├────────────────────┤ │
│ │ 24 Tools + Prompts │ │
│ │ + Retry + Cache │ │
│ └────────────────────┘ │
└──────────┬───────────────┘
│
│ HTTPS (authenticated)
▼
┌──────────────────────────┐
│ Al Jazeera 360 API │
│ (Vesper/Dice Platform) │
└──────────┬───────────────┘
│
▼
┌──────────────────────────┐
│ aljazeera360.com │
│ (Direct watch links) │
└──────────────────────────┘
Prompts Integrados
El servidor incluye prompts preconstruidos para escenarios comunes de IA:
| Prompt | Descripción |
|---|---|
recommend_documentary | Encuentra y recomienda documentales sobre un tema específico |
summarize_latest | Resume los últimos episodios de una sección |
explore_series | Explora una serie — encuentra todas las temporadas y episodios |
Ejemplo de Salida
Llamar a search_videos("غزة") devuelve:
{
"query": "غزة",
"total_results": 20,
"results": [
{
"title": "المسعفون أهداف إسرائيل المتنقلة!",
"type": "VOD",
"duration": "24:53",
"id": "965741",
"watch_url": "https://www.aljazeera360.com/video/965741"
},
{
"title": "قيادة السنوار لجهاز حماس الأمني",
"type": "VOD",
"duration": "54:57",
"id": "953659",
"watch_url": "https://www.aljazeera360.com/video/953659"
}
]
}
Panel de Analítica
El servidor incluye un panel de analítica integrado que rastrea cada solicitud realizada por herramientas de IA.
Qué Rastrea
- Qué herramienta de IA hizo la solicitud (Claude, ChatGPT, Cursor, etc.)
- Qué herramienta MCP fue llamada (
search_videos,get_trending_content, etc.) - Cuándo ocurrió cada solicitud (marca de tiempo)
- Cuánto tardó cada solicitud (tiempo de respuesta en ms)
- Si tuvo éxito o falló
- Términos de búsqueda principales (sobre qué preguntan los usuarios)
- Patrones de actividad diarios/por hora
Acceder al Panel
El panel se inicia automáticamente en el puerto 9090 cuando ejecutas el servidor:
http://localhost:9090
Para implementaciones en la nube, expón el puerto 9090 junto al puerto MCP (8080).
Endpoints de API
| Endpoint | Devuelve |
|---|---|
GET / | Panel HTML interactivo (se actualiza automáticamente cada 10 s) |
GET /api/stats | Resumen JSON: solicitudes totales, uso de herramientas, búsquedas principales, desglose diario |
GET /api/recent | Lista JSON de las 50 solicitudes más recientes con detalles completos |
GET /api/health | Verificación de salud con versión, transporte y enlaces a /privacy y /docs |
GET /privacy | Página de Política de Privacidad |
GET /docs | Página de documentación del servidor |
Configuración
| Variable | Predeterminado | Descripción |
|---|---|---|
AJ360_ENABLE_DASHBOARD | true | Establecer a false para desactivar el panel |
AJ360_DASHBOARD_PORT | 9090 | Puerto para el servidor HTTP de analítica |
AJ360_DASHBOARD_TOKEN | — | Secreto compartido requerido para leer /api/stats y /api/recent. Establece esto en cualquier implementación pública. |
AJ360_ANALYTICS_DB | analytics.db | Ruta del archivo de base de datos SQLite |
Ejemplo de Salida de Estadísticas
{
"total_requests": 1247,
"success_rate": "99.2%",
"tools_usage": [
{"tool": "search_videos", "calls": 523, "avg_response_ms": 340},
{"tool": "get_trending_content", "calls": 312, "avg_response_ms": 180}
],
"clients": [
{"client": "claude-desktop", "requests": 890},
{"client": "cursor", "requests": 357}
],
"top_searches": [
{"term": "\u063a\u0632\u0629", "count": 89},
{"term": "\u0641\u0644\u0633\u0637\u064a\u0646", "count": 67}
]
}
Pila Tecnológica
| Componente | Tecnología |
|---|---|
| Lenguaje | Python 3.10+ |
| SDK MCP | mcp (oficial de Anthropic) |
| HTTP | httpx (asíncrono) |
| Reintentos | tenacity (retroceso exponencial) |
| Autenticación | Firebase JWT (gestionado automáticamente con refresco) |
| Analítica | SQLite + panel HTTP integrado |
| Calidad de Video | Hasta 4K (2160p) |
| Transporte | stdio (local) / HTTP Transmisible (nube, recomendado) / SSE (heredado) |
Licencia
MIT
Operaciones de SEO y Base de Conocimiento Vesper (asistida por IA)
Este repositorio funciona también como un espacio de trabajo de operaciones de SEO asistido por IA para la plataforma. Ábrelo en Claude Code y obtienes:
| Pieza | Qué hace |
|---|---|
.claude/agents/onvesper-expert.md | Agente experto en la plataforma Vesper/Deltatre que impulsa aljazeera360.com: pregúntale cualquier cosa sobre Back Office, DVE, licencias, publicidad, etc. |
onvesper-kb/ | Espejo offline completo de la documentación oficial de Vesper (317 páginas, reconstruible en cualquier momento con bash onvesper-kb/refresh.sh) |
/seo-report skill | Análisis SEO profundo bajo demanda: ejecuta las herramientas SEO, lee tendencias y convierte los hallazgos en pasos exactos de corrección en Back Office |
scripts/seo_snapshot.py | Colector de métricas detrás de la skill (puntuaciones de descubribilidad, auditorías de metadatos, mapas de etiquetas). Los informes se generan localmente bajo demanda; nunca se confirman. |
export AJ360_API_KEY=…
python scripts/seo_snapshot.py # → reports/seo/<date>.md (local only)
Contribuciones
Se aceptan pull requests. Consulta CONTRIBUTING.md para las pautas.
Ejecuta las pruebas antes de enviar:
python test_server.py