Skip to main content
Glama
README.md
# fansly-mcp — Servidor MCP de analítica para Fansly

Consulta la API real de Fansly con tu propia sesión (token, Chrome CDP o perfil persistente) y persiste métricas en SQLite local. 100% local, transporte STDIO.

**Requiere:** Node.js ≥ 20 · sesión de Fansly

## Features
**49 herramientas MCP**, agrupadas por dominio:

| Dominio | Herramientas |
|---|---|
| Perfil y sesión | `verificar_sesion`, `obtener_metricas_perfil`, `listar_cuentas`, `seleccionar_cuenta` |
| Métricas e ingresos | `obtener_suscriptores`, `obtener_reporte_crecimiento`, `pronostico_crecimiento`, `reporte_ingresos`, `tasa_conversion_audiencia`, `alertas_recesion`, `auditar_promociones_tiers`, `analizar_churn`, `obtener_top_fans` |
| Posts y contenido | `analizar_rendimiento_posts`, `analizar_post`, `curva_vida_post`, `top_bottom_posts`, `ranking_posts`, `analizar_hashtags`, `obtener_tendencias_hashtag`, `generar_mapa_calor_horario`, `horarios_publicacion`, `interaccion_contenido`, `tracker_fyp`, `optimizador_fyp` |
| Mensajería y PPV | `obtener_flujo_mensajes`, `ranking_fans_gasteros`, `metricas_mensajeria`, `correlacion_mensajes_posts`, `calcular_elasticidad_ppv`, `sugerencia_ppv_tipo` |
| Tracking y vault | `registrar_link_tracking`, `registrar_click_link`, `analizar_atribucion_links`, `auditar_caja_fuerte`, `contenido_rezagado` |
| Competencia | `descubrir_competidores`, `registrar_competidor`, `eliminar_competidor`, `snapshot_competidores`, `clasificar_competidores`, `benchmark_competencia`, `analizar_crecimiento_competencia`, `alertas_competencia`, `scoreboard_general`, `benchmark_hashtags`, `copy_competidores`, `monitor_fyp_competitivo` |
| Orquestación | `snapshot_diario` (pipeline completo + scheduler opcional con `SNAPSHOT_INTERVAL_MS`) |

**Recursos:** `fansly://resumen`, `fansly://metricas/{fecha}`, `fansly://post/{postId}`, `fansly://competidores`, `fansly://hashtags`
**Prompts:** `auditar-perfil`, `analizar-contenido-rezagado`, `dashboard-semanal`, `plan-contenido-semanal`, `auditoria-competencia`, `analisis-post-profundo`

## Setup
```bash
npm install && npm run build
cp .env.example .env
# Env: FANSLY_TOKEN=<token|vacío>  FANSLY_CDP_URL=http://127.0.0.1:9222
#      FANSLY_ACCOUNTS='{"luna":{"cdpUrl":"...","userDataDir":"..."}}'  FANSLY_ACTIVE_ACCOUNT=luna
```
Sesión (fansly.com → DevTools → Console): `JSON.parse(localStorage.getItem("session_active_session")).token`

**Flujo CDP (sin pegar tokens):** con `FANSLY_TOKEN` vacío, el MCP relanza tu Chrome con debug port, reutiliza tu sesión de fansly y se re-autentica solo. Por modelo: `npm run chrome-cdp -- <cuenta>`.

**Activación por cliente:** configs `opencode.json` · `.mcp.json` · `claude_desktop_config.json` → guía completa en [docs/09](./docs/09-activacion-mcp-fansly.md)

## Estructura
```
src/
  config.ts          → env (dotenv + zod)
  index.ts           → entrada MCP (STDIO + shutdown)
  engine/fansly.ts   → motor API resiliente (retries/backoff, refresh en 401)
  engine/chrome-launcher.ts → Chrome CDP multi-perfil (compartido con scripts/)
  engine/session.ts  → token/sesión (readTokenFromStorage, CLEAN_SESSION_SCRIPT)
  db/repository.ts   → SQLite (WAL, migraciones, upserts)
  tools/             → 49 herramientas MCP (+ helpers.ts, types.ts)
  resources/ prompts/ → recursos y prompts
scripts/login.ts     → auth manual en Chromium persistente
docs/                → documentación técnica (índice: docs/README.md)
```

## Seguridad
- 100% local; solo HTTPS a la API propia de Fansly. `.env`, `browser_data/`, `*.db*` en `.gitignore`.
- Selfbot sobre API interna: revisa los ToS de Fansly. Uso personal/educativo.

**Licencia:** MIT

TDQS

A3.9/5.0

Scored across 13 tools

Disambiguation4/5

Most tools have clearly distinct purposes, but a few overlap: analizar_rendimiento_posts, obtener_tendencias_hashtag, and analizar_atribucion_links all analyze post performance from slightly different angles. Descriptions help, but some tools could be confused without careful reading.

Naming Consistency5/5

All 13 tools use a consistent verb_noun pattern (verificar_sesion, obtener_metricas_perfil, analizar_rendimiento_posts, etc.). The verbs vary (obtener, analizar, generar, auditar, calcular) but follow a predictable structure, making the set easy to navigate.

Tool Count5/5

With 13 tools, the server is well-scoped for a Fansly analytics suite. Each tool covers a distinct aspect of analytics (profile, posts, fans, churn, PPV, content), and the count falls comfortably within the ideal 3-15 range without feeling excessive.

Completeness4/5

The server provides broad coverage of analytics: session check, profile metrics, growth, post performance, hashtag trends, time heatmap, top fans, churn, tier audit, message flow, PPV pricing, attribution, and content audit. Minor gaps exist, such as no tool to refresh all data at once or to directly set PPV prices, but these are workable around.

Maintenance

ActivitySlowing
ResponsivenessNo issues