Twitch MCP Server

Twitch MCP Server

Enables interaction with the Twitch API to retrieve user information, check live status, access videos, top streams, games, and search channels through natural language.

Category
访问服务器

README

Servidor MCP para la API de Twitch

Servidor MCP (Model Context Protocol) que proporciona herramientas para interactuar con la API de Twitch. Permite que asistentes de IA y otras aplicaciones accedan a datos de Twitch de manera estructurada y segura.

🚀 Características

Este servidor MCP proporciona las siguientes herramientas:

📊 Herramientas Disponibles

  1. get_twitch_user - Obtiene información detallada de un usuario

    • Entrada: login (nombre de usuario)
    • Devuelve: ID, nombre para mostrar, biografía, imagen de perfil, fecha de creación, etc.
  2. check_user_live - Verifica si un usuario está transmitiendo en vivo

    • Entrada: login (nombre de usuario)
    • Devuelve: Datos del stream si está en vivo, null si está offline
  3. get_user_videos - Obtiene los videos de un usuario

    • Entrada: login, video_type (archive/highlight/upload/all), limit (1-100)
    • Devuelve: Lista de videos con títulos, duración, vistas, thumbnails, etc.
  4. get_top_streams - Obtiene los streams más populares

    • Entrada: game_name (opcional), limit (1-100)
    • Devuelve: Lista de streams con espectadores, títulos, juegos, etc.
  5. get_top_games - Obtiene los juegos más populares

    • Entrada: limit (1-100)
    • Devuelve: Lista de juegos con nombre, box art, IDs
  6. search_channels - Busca canales por palabras clave

    • Entrada: query, live_only (bool), limit (1-100)
    • Devuelve: Lista de canales coincidentes
  7. get_game_info - Obtiene información de un juego

    • Entrada: game_name
    • Devuelve: ID del juego, nombre exacto, box art URL

📋 Requisitos Previos

  1. Python 3.10 o superior
  2. Credenciales de Twitch API:
    • Ve a https://dev.twitch.tv/console/apps
    • Crea una nueva aplicación
    • Obtén tu Client ID y Client Secret

🔧 Instalación

Método 1: Con UV (Recomendado) ⚡

Paso 1: Instalar UV

powershell -c "irm https://astral.sh/uv/install.ps1 | iex"

Paso 2: Configurar y ejecutar

cd d:\Workspaces\twitch\mcp
copy .env.example .env
notepad .env  # Agrega tus credenciales

# Ejecutar (UV instalará las dependencias automáticamente)
uv run server.py

Ver QUICKSTART_UV.md para más detalles.

Método 2: Con pip tradicional

Paso 1: Navegar al directorio

cd d:\Workspaces\twitch\mcp

Paso 2: Instalar dependencias

pip install -r requirements.txt

Paso 3: Configurar credenciales

copy .env.example .env
notepad .env  # Agrega tus credenciales

Método 3: Contenedor Docker 🐳

Paso 1: Crear tu archivo de variables de entorno (se reutiliza fuera del contenedor)

cd d:\Workspaces\twitch\mcp
copy .env.example .env
notepad .env  # Agrega tus credenciales de Twitch

Paso 2: Construir la imagen

docker build -t twitch-mcp .

Paso 3: Ejecutar el contenedor en modo SSE (puedes reutilizar el mismo .env)

docker run --rm --name twitch-mcp --env-file .env -p 8000:8000 twitch-mcp

Usa `--host 0.0.0.0` dentro del contenedor para exponer el servidor. El CMD por defecto ya incluye ese valor.

Personalizar host/puerto:

docker run --rm --name twitch-mcp --env-file .env -p 9000:9000 twitch-mcp python server.py --mode sse --host 0.0.0.0 --port 9000

Modo stdio desde Docker: El modo stdio requiere interactuar con stdin/stdout del contenedor. Puedes lanzar:

docker run --rm --name twitch-mcp-stdio --env-file .env -i twitch-mcp python server.py --mode stdio

Ten en cuenta que la mayoría de clientes MCP esperan ejecutar el binario directamente en tu máquina, por lo que este modo desde Docker suele usarse solo para pruebas puntuales.

Método 4: Docker Compose ⚙️

Ideal para dejar el servidor corriendo en segundo plano y reiniciarlo automáticamente si se cae.

Paso 1: Asegúrate de tener tu .env listo (mismo que en el método Docker).

Paso 2: Levanta el servicio y construye la imagen (solo la primera vez o cuando cambies el código):

docker compose up --build

El servicio quedará escuchando en http://localhost:8000/sse.

Ejecutar en segundo plano:

docker compose up -d

Detener:

docker compose down

Sobrescribir parámetros (por ejemplo, otro puerto):

docker compose run --rm -p 9000:9000 twitch-mcp python server.py --mode sse --host 0.0.0.0 --port 9000

El archivo docker-compose.yml mapea el puerto 8000 por defecto y reutiliza el .env para tus credenciales.

Despliegue continuo con GitHub Actions 🚀

Se incluyó un workflow en .github/workflows/deploy-mcp.yml que sincroniza la carpeta mcp con tu VPS y ejecuta docker compose up -d --build automáticamente cuando haces push a master.

  1. En tu repositorio de GitHub crea los siguientes Secrets (Settings → Secrets and variables → Actions):
  • VPS_HOST: IP o dominio de tu VPS.
  • VPS_PORT: Puerto SSH (usa 22 si es el predeterminado).
  • VPS_USER: Usuario con permisos para ejecutar Docker.
  • VPS_SSH_KEY: Clave privada en formato PEM autorizada en la VPS (sin passphrase).
  • VPS_APP_PATH: Ruta absoluta en la VPS donde se copiará el proyecto (ej. /opt/twitch).
  1. Asegúrate de que en el VPS exista el archivo mcp/.env con tus credenciales antes del primer despliegue (se preserva entre despliegues).
  2. Ejecuta docker compose up -d manualmente la primera vez si quieres validar que todo funciona.

El workflow también puede iniciarse manualmente desde la pestaña Actions (evento workflow_dispatch).

🎯 Uso

Modo 1: STDIO (para clientes MCP como Claude Desktop)

Con UV:

uv run server.py
# O usa el script de inicio
.\run.bat

Con Python tradicional:

python server.py

Modo 2: SSE (para desarrollo y testing)

El modo SSE permite conectarte al servidor desde un navegador o herramientas de testing como MCP Inspector.

Con UV:

# Ejecutar en modo SSE (puerto 8000 por defecto)
uv run server.py --mode sse

# O usa el script de inicio
.\run-sse.bat

# Personalizar host y puerto
uv run server.py --mode sse --host 0.0.0.0 --port 3000

Con Python tradicional:

python server.py --mode sse

Una vez iniciado, verás algo como:

🚀 Servidor MCP de Twitch en modo SSE
📡 Escuchando en http://localhost:8000
🔗 Endpoint SSE: http://localhost:8000/sse
📨 Endpoint Messages: http://localhost:8000/messages

💡 Tip: Usa MCP Inspector para conectarte:
   npx @modelcontextprotocol/inspector http://localhost:8000/sse

Autenticación OAuth en modo SSE

  • El servidor implementa OAuth 2.1 con grant type client_credentials y registro dinámico de clientes (RFC 7591).
  • Los metadatos se exponen en /.well-known/oauth-authorization-server tal como indica la especificación MCP 2025-03-26.
  • Clientes (por ejemplo, ChatGPT connectors) pueden registrarse automáticamente enviando un POST /register con redirect_uris.
  • Para obtener tokens, envía un POST /token con grant_type=client_credentials, client_id y client_secret (método client_secret_post).
  • Los tokens emitidos deben enviarse como Authorization: Bearer <token> en todas las llamadas a /sse y /messages.
  • Personaliza la URL pública con MCP_PUBLIC_BASE_URL si expones el servidor detrás de un proxy o dominio distinto.

Testear con MCP Inspector

# Instalar MCP Inspector (si no lo tienes)
npm install -g @modelcontextprotocol/inspector

# Conectarse al servidor SSE
npx @modelcontextprotocol/inspector http://localhost:8000/sse

Configurar en Claude Desktop (o cualquier cliente MCP)

Ver guía completa: CLAUDE_SETUP.md 📖

Resumen rápido - Con UV (Recomendado) - Windows (%APPDATA%\Claude\claude_desktop_config.json):

{
  "mcpServers": {
    "twitch": {
      "command": "uv",
      "args": [
        "--directory",
        "d:\\Workspaces\\twitch\\mcp",
        "run",
        "server.py"
      ],
      "env": {
        "TWITCH_CLIENT_ID": "tu_client_id_aqui",
        "TWITCH_CLIENT_SECRET": "tu_client_secret_aqui"
      }
    }
  }
}

Con Python tradicional - Windows:

{
  "mcpServers": {
    "twitch": {
      "command": "python",
      "args": [
        "d:\\Workspaces\\twitch\\mcp\\server.py"
      ],
      "env": {
        "TWITCH_CLIENT_ID": "tu_client_id_aqui",
        "TWITCH_CLIENT_SECRET": "tu_client_secret_aqui"
      }
    }
  }
}

macOS/Linux (~/.config/claude/claude_desktop_config.json):

{
  "mcpServers": {
    "twitch": {
      "command": "uv",
      "args": [
        "--directory",
        "/ruta/absoluta/a/twitch/mcp",
        "run",
        "server.py"
      ],
      "env": {
        "TWITCH_CLIENT_ID": "tu_client_id_aqui",
        "TWITCH_CLIENT_SECRET": "tu_client_secret_aqui"
      }
    }
  }
}

💡 Ejemplos de Uso

Una vez configurado el servidor en tu cliente MCP, puedes hacer preguntas como:

  • "¿Está a_robertdev en vivo en Twitch?"
  • "Dame los últimos 10 videos de shroud"
  • "¿Cuáles son los 5 juegos más populares en Twitch ahora?"
  • "Busca canales que transmitan Minecraft"
  • "Dame información del usuario ninja"

🏗️ Arquitectura

mcp/
├── server.py              # Servidor MCP principal (soporta stdio y SSE)
├── twitch_client.py       # Cliente de Twitch API con OAuth y rate limiting
├── pyproject.toml         # Configuración del proyecto para UV
├── requirements.txt       # Dependencias de Python (pip)
├── .env.example           # Plantilla de configuración
├── .gitignore            # Archivos ignorados por git
├── run.bat               # Script de inicio para Windows (stdio)
├── run.sh                # Script de inicio para macOS/Linux (stdio)
├── run-sse.bat           # Script de inicio para Windows (SSE)
├── run-sse.sh            # Script de inicio para macOS/Linux (SSE)
├── README.md             # Este archivo
├── QUICKSTART_UV.md      # Guía rápida para UV
├── SSE_GUIDE.md          # Guía completa del modo SSE
└── EXAMPLES.md           # Ejemplos de uso prácticos

Características del Cliente Twitch

  • OAuth automático - Manejo de tokens con renovación automática
  • Rate limiting - Detecta y maneja límites de tasa (800 req/min)
  • Paginación - Soporte automático para resultados paginados
  • Manejo de errores - Respuestas estructuradas con información útil
  • Cache de tokens - Tokens válidos se reutilizan durante ~1 hora

🔒 Seguridad

  • Nunca commitees tu archivo .env o expongas tus credenciales
  • El archivo .env está en .gitignore por defecto
  • Las credenciales se pasan como variables de entorno, no se guardan en código

🛠️ Desarrollo

Agregar nuevas herramientas

  1. Define la herramienta en handle_list_tools() con su schema JSON
  2. Implementa la lógica en handle_call_tool()
  3. Si necesitas un nuevo endpoint de Twitch, agrégalo en twitch_client.py

Debugging

El servidor imprime mensajes de diagnóstico en stderr:

✅ Twitch API inicializada correctamente

Si hay errores de credenciales:

❌ Error al inicializar Twitch API: ...
💡 Verifica que TWITCH_CLIENT_ID y TWITCH_CLIENT_SECRET estén configurados

📚 Recursos

🤝 Contribuciones

Este servidor es parte del proyecto Twitch API Integration. Para mejoras o reportar bugs, consulta el repositorio principal.

📝 Licencia

Parte del proyecto Twitch API Integration - Uso educativo y personal.


¡Disfruta integrando Twitch con tus asistentes de IA! 🎮🤖

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选