skool-mcp-kit
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@skool-mcp-kitwhat events are scheduled this week?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
skool-mcp-kit
Servidor MCP + skill de Claude Code para operar y analizar tu comunidad de Skool con tu propia sesión: ver el calendario de reuniones/eventos, leer el feed y los posts, consultar la comunidad, el classroom y los miembros, buscar, y publicar/comentar en tu nombre (con confirmación). Espejo del patrón del kit de LinkedIn del autor. Cero dependencias npm (Node ≥ 18, fetch global).
⚠️ Skool no tiene API pública: esto usa su API interna vía tu sesión autenticada. Va contra el ToS de Skool; úsalo solo con tu cuenta, a ritmo humano, asumiendo el riesgo. No afiliado a Skool.
Arquitectura
Lectura (primaria): rutas SSR de Next.js
www.skool.com/_next/data/{buildId}/…jsoncon las cookies de sesión (selfpoblado = autenticado). ElbuildIdse scrapea en vivo.api2.skool.com: búsqueda de miembros, comentarios de un post, metadata pública y las escrituras (
POST /posts,POST /comments).Auth: cookies de Skool en
~/.skool-mcp/session.json(chmod 600), nunca en el repo. La que autentica esauth_token, un JWT que dura un año (su claimexp; medido el 2026-09-04, exactamente 365 días desde el login).client_idyaws-waf-tokenacompañan. Medido el 2026-09-04: las lecturas SSR funcionan conauth_tokena secas — sinaws-waf-tokeny sinclient_id. O sea que la sesión es tan estable como la de un token de API: se siembra una vez y aguanta el año. Elaws-waf-tokensolo importa si el WAF llega a plantar un challenge, y entonces hace falta un navegador para acuñar uno nuevo.
Related MCP server: LinkedIn MCP Server
Instalación
git clone https://github.com/elchamoluso/skool-mcp-kit.git && cd skool-mcp-kit
bash install.sh # copia la skill + registra el MCP (scope user)
# Sesión (una vez por máquina):
node bin/skool-session.js seed --from <storageState.json> # desde un state de agent-browser/Playwright
# o: node bin/skool-session.js login # login interactivo en navegador
node bin/skool-session.js status # verifica token_valid
# Reinicia Claude Code para cargar el server MCP.Registro manual (si no usas el installer): copia configs/claude-code.mcp.json a tu .mcp.json, o:
claude mcp add skool --scope user --transport stdio --env SKOOL_COMMUNITY=ailinkvip -- node "$PWD/skool-mcp-server.js"Herramientas (mcp__skool__*)
Tool | Qué hace |
| Valida la sesión y devuelve tu identidad + comunidad. |
| Nombre, descripción, dueño, totales, pestañas, enlaces. |
| Calendario de eventos/reuniones (por defecto próximas). |
| Detalle de un evento por |
| Feed de posts ( |
| Un post por |
| Directorio paginado (email omitido salvo |
| Busca miembros por nombre. |
| Cursos; con |
| Publica un post ( |
| Comenta un post ( |
Las escrituras exigen confirm:true (gate en el server) además de los guardrails de la skill (confirmación por acción, sin bulk, topes diarios, ritmo humano, stop-on-checkpoint).
CLI de sesión (bin/skool-session.js)
seed --from <state> · status · login (navegador headed → re-siembra y refresca el aws-waf-token) ·
login --auto (desatendido, ver abajo) · refresh (re-siembra desde el perfil ya logueado, sin
abrir navegador) · logout.
La captura de cookies prueba
cookies get --jsony, si no traeauth_token, cae astate save. Hace falta: con el navegador cerrado,agent-browser 0.33.2devuelvesuccess:truecon cero cookies, y sin--jsonimprime texto plano sin dominio.refreshsirve cuando solo caducó elaws-waf-tokeny el perfil sigue logueado; si tampoco eso basta,login.
Login desatendido (login --auto)
Para que la sesión se renueve sin que nadie teclee nada, ni siquiera una vez al año:
# La contraseña, una vez y en un terminal aparte (no pasa por argv ni por el historial):
read -rs -p "Contraseña de Skool: " P && printf '%s' "$P" > ~/secrets/skool.password \
&& chmod 600 ~/secrets/skool.password && unset P
node bin/skool-session.js login --auto --email tu@correo.comVariable | Para qué |
| El correo de la cuenta (alternativa a |
| Dónde está la contraseña (def |
| Comando cuyo stdout es el código de verificación, por si Skool lo pide. Se reintenta durante ~1 min mientras llega el correo |
Cómo funciona, y por qué así. Medido el 2026-09-04 contra la API real: POST /auth/login y
/auth/login-with-code-init devuelven 403 del WAF desde fuera del navegador —y también desde un
fetch inyectado en la página—, mientras que los GET de la misma API sí pasan. El WAF guarda los POST
de auth y solo los acepta del formulario real. Así que --auto abre el navegador headless, rellena
#email y #password por CDP y pulsa el botón, que es exactamente lo que hace una persona.
La contraseña se lee de fichero y viaja dentro del mensaje CDP: no aparece en ps, ni en el
historial, ni en el entorno. Nunca se acepta por flag. Requiere WebSocket global (Node ≥ 22; en
la 21 va detrás de --experimental-websocket); el resto del kit sigue en Node ≥ 18.
--auto borra solo la cookie auth_token antes de entrar, nunca el tarro entero: un perfil con
sesión viva redirige /login al feed y no habría formulario que rellenar, y el sentido de --auto es
justo renovar mientras la sesión vieja aún vale. Se borra solo esa porque tirar todas las cookies se
lleva por delante el aws-waf-token, el client_id y la telemetría de visitas anteriores: cada
renovación se presentaría como un dispositivo recién nacido conducido por CDP, que es lo que dispara
el código de verificación y lo que sube la puntuación del antifraude. session.json no se toca hasta
que el login funciona: si falla, se conserva la sesión anterior.
Un login nuevo no invalida el anterior (comprobado el 2026-09-04: el token viejo seguía autenticando después). Por eso se puede ensayar el flujo contra un perfil temporal sin tocar la sesión que esté en uso — útil para enterarse de que el formulario cambió antes de necesitarlo.
Ante un rechazo de Skool (contraseña incorrecta, cuenta bloqueada, demasiados intentos) para y lo dice: no reintenta, porque insistir en un login es lo que bloquea una cuenta.
Sesión caducada / bloqueo del WAF
status y la tool skool_status dicen hasta qué día vale la sesión (sesionCaduca,
diasRestantes), leyendo el exp del JWT sin salir a la red, y avisan solos por debajo de 30 días.
No hay que adivinar cuándo toca renovar.
Síntoma | Qué es | Qué hacer |
| El JWT llegó a su año |
|
Una lectura devuelve 403 | El WAF plantó un challenge |
|
Redirect a | La sesión no vale para esa comunidad |
|
Qué hace y qué NO hace refresh: recopia al session.json las cookies que ya están en el perfil
de ~/.skool-mcp/browser-profile. No navega, así que no puede acuñar un aws-waf-token fresco:
sirve cuando el session.json se quedó desincronizado del perfil, no para levantar un bloqueo del
WAF. Para eso hay que entrar: login o login --auto.
Créditos
Código propio (molde de plumbing MCP: nt-mcp-server). Conocimiento de la API interna de Skool documentado a partir de louiewoof2026/skool-mcp (API-DISCOVERY.md), reimplementado sin copiar código. Licencia MIT. Ver README.en.md para la versión en inglés.
This server cannot be deployed
Maintenance
Related MCP Connectors
- MysocialOAuthio.mysocial
Social media MCP server: your Instagram, TikTok, YouTube, LinkedIn and Threads history for your AI.
Managed LinkedIn MCP server for AI agents: search, connect, message and enrich on accounts you own.
Remote MCP server for The Colony — a social network for AI agents (posts, DMs, search, marketplace).
MCP server for Sendbird — chat users, channels, members, and messages from your AI client.
Related MCP Servers
- AlicenseAqualityBmaintenanceMCP server for Instagram Graph API, Threads API & Meta platform — posting, insights, comments, messaging5730724MIT
- AlicenseAqualityDmaintenanceFully featured MCP server that provides automation tools for LinkedIn, supporting browser-based scraping and API-based operations for content management, media uploads, and reactions.63MIT
- FlicenseAqualityDmaintenanceMCP server for interacting with Skool.com communities, enabling community management, post operations, member management, and course access through natural language.1439-
- FlicenseAqualityDmaintenanceMCP server for Skool.com communities. Enables listing/approving members, posting, commenting, and managing courses.14-