AdLens
Tus números de AdMob, sin la consola de AdMob. Un servidor MCP rápido para que tu asistente de IA pueda consultar los mismos datos en vivo.
Servidor MCP alojado
npx add-mcp 'https://adlens.moreproductive.in/mcp'Se instala en Claude Code, Codex, Cursor y más
Documentación
AdLens
Tus números de AdMob, sin la consola de AdMob.
Un panel de análisis rápido de AdMob, más un servidor MCP para que tu asistente de IA pueda consultar los mismos datos en vivo.
App en vivo · Configuración MCP · Autoalojamiento · Problemas
Haz una pregunta. Claude llama a AdLens. Respuestas en vivo de AdMob.
¿Qué es AdLens?
La consola de AdMob te muestra totales. AdLens te muestra las causas.
Conecta tu cuenta de AdMob una vez (solo lectura) y obtienes:
- Un panel web rápido para ingresos, impresiones, eCPM, mediación y desgloses por país.
- Un servidor MCP para que Claude, Cursor, Codex y otros clientes de IA puedan responder preguntas a partir de los mismos datos en vivo, como "¿Qué formato de anuncio tiene el mejor eCPM este mes?"
Es gratuito, de solo lectura y no almacena ninguno de tus datos de informes. Puedes usar la versión alojada o ejecutar la tuya propia.
Características
Panel
- En vivo, no sincronizado: se obtiene de la API de AdMob cuando abres una página.
- Hoy de un vistazo: hoy, ayer, últimos 7 días y este mes, con impresiones y eCPM.
- Comparaciones de períodos: cada KPI muestra su cambio frente al período anterior.
- Desgloses ordenables: por día, app, unidad de anuncio, formato, fuente de mediación o país.
- Análisis profundos por app con la misma profundidad, más temas oscuro y claro.
El panel de AdLens (datos de muestra).
Servidor MCP
Cinco herramientas de solo lectura que cualquier cliente MCP puede llamar:
| Herramienta | Qué hace |
|---|---|
account_overview | Lista tus conexiones y apps (id, nombre, plataforma, nombre del paquete) |
revenue_summary | Totales más series diarias o semanales, usando ajustes predefinidos o fechas explícitas |
breakdown | Ingresos por app, unidad de anuncio, formato, país, fuente de anuncios (mediación) o fecha |
top_movers | Movimientos período a período, con el período anterior elegido automáticamente para ajustes predefinidos |
list_ad_units | Tu inventario de unidades de anuncio |
Ejemplos de indicaciones para probar:
- "Resumen de ingresos de los últimos 30 días"
- "Principales movimientos por país, esta semana vs la anterior"
- "Desglosa los ingresos de mediación de mi app principal"
- "¿Qué formato de anuncio tiene el mejor eCPM este mes?"
Primeros pasos (alojado)
La configuración toma alrededor de un minuto.
- Inicia sesión en adlens.moreproductive.in con un código de un solo uso por correo o con Google. Una contraseña es opcional.
- Conecta AdMob. Apruebas una pantalla de consentimiento de OAuth de Google con el alcance
admob.readonly. - Úsalo a tu manera. Abre el panel o genera una clave de API y conecta tu cliente de IA (abajo).
Conecta tu asistente de IA (MCP)
Genera una clave de API en la página de Claves de API del panel. Las claves se ven como ak_live_... y se muestran una sola vez, así que copia la tuya de inmediato. Luego agrega AdLens a tu cliente.
El endpoint de MCP es:
https://adlens.moreproductive.in/mcp
Si autoalojas, reemplaza el dominio con el tuyo. AdLens es un servidor MCP estándar de HTTP transmisible autenticado con un token Bearer, por lo que cualquier cliente que admita una URL remota con encabezados personalizados funcionará.
Claude Code
claude mcp add --transport http adlens https://adlens.moreproductive.in/mcp \
--header "Authorization: Bearer ak_live_..."
O agrégalo a .mcp.json:
{
"mcpServers": {
"adlens": {
"type": "http",
"url": "https://adlens.moreproductive.in/mcp",
"headers": { "Authorization": "Bearer ak_live_..." }
}
}
}
Claude Desktop
El archivo de configuración de Claude Desktop no tiene soporte nativo para URL + encabezado, así que conéctalo con mcp-remote.
Edita claude_desktop_config.json:
- macOS:
~/Library/Application Support/Claude/ - Windows:
%APPDATA%\Claude\ - Linux:
~/.config/Claude/
{
"mcpServers": {
"adlens": {
"command": "npx",
"args": [
"-y", "mcp-remote",
"https://adlens.moreproductive.in/mcp",
"--header", "Authorization: Bearer ak_live_..."
]
}
}
}
En Windows, usa npx.cmd en lugar de npx como comando:
{
"mcpServers": {
"adlens": {
"command": "npx.cmd",
"args": [
"-y", "mcp-remote",
"https://adlens.moreproductive.in/mcp",
"--header", "Authorization: Bearer ak_live_..."
]
}
}
}
Codex
En ~/.codex/config.toml (Windows: %USERPROFILE%\.codex\config.toml):
[mcp_servers.adlens]
url = "https://adlens.moreproductive.in/mcp"
http_headers = { "Authorization" = "Bearer ak_live_..." }
Cursor, VS Code, Windsurf y otros clientes
Para Cursor, edita ~/.cursor/mcp.json (Windows: %USERPROFILE%\.cursor\mcp.json):
{
"mcpServers": {
"adlens": {
"url": "https://adlens.moreproductive.in/mcp",
"headers": { "Authorization": "Bearer ak_live_..." }
}
}
}
Para clientes solo stdio, usa el puente mcp-remote que se muestra en la sección de Claude Desktop.
Antigravity
En ~/.gemini/antigravity/mcp_config.json (Windows: %USERPROFILE%\.gemini\antigravity\mcp_config.json), o a través del panel de MCP Store → Administrar servidores MCP → Ver configuración sin procesar:
{
"mcpServers": {
"adlens": {
"serverUrl": "https://adlens.moreproductive.in/mcp",
"headers": { "Authorization": "Bearer ak_live_..." }
}
}
}
OpenCode
En opencode.json (proyecto) o ~/.config/opencode/opencode.json. Esta ruta es la misma en Windows (%USERPROFILE%\.config\opencode\opencode.json), no %APPDATA%. Configurar oauth: false hace que OpenCode use tu clave Bearer en lugar de intentar el inicio de sesión OAuth primero.
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"adlens": {
"type": "remote",
"url": "https://adlens.moreproductive.in/mcp",
"enabled": true,
"oauth": false,
"headers": { "Authorization": "Bearer ak_live_..." },
"timeout": 30000
}
}
}
Consejo: para probar el endpoint sin un cliente de IA, ejecuta el Inspector MCP:
npx @modelcontextprotocol/inspector
Autoalojamiento
AdLens es multiinquilino por diseño y fácil de ejecutar tú mismo. Necesitas:
- Node.js (LTS) y pnpm, o solo Docker
- Una base de datos Postgres (el archivo Docker Compose incluido inicia una)
- Un proyecto MojAuth para el inicio de sesión (OTP por correo + Google). Necesitarás su clave de API.
- Un cliente OAuth de Google Cloud con la API de AdMob habilitada y el alcance
admob.readonly
1. Clona y configura
git clone https://github.com/ys-pro-duction/AdLens.git
cd AdLens
cp .env.example .env # then fill in the values below
Genera los secretos aleatorios con:
openssl rand -hex 32
| Variable | Requerida | Descripción |
|---|---|---|
APP_URL | sí | URL pública de tu instancia (usa tu dominio https en producción) |
DATABASE_URL | sí | Cadena de conexión de Postgres |
MOJOAUTH_API_KEY | sí | Clave del proyecto MojAuth (OTP por correo + inicio de sesión con Google) |
SESSION_SECRET | sí | Secreto aleatorio usado para firmar cookies de sesión |
GOOGLE_CLIENT_ID / GOOGLE_CLIENT_SECRET | sí | Cliente OAuth de Google para conectar AdMob |
ENCRYPTION_KEY | sí | Clave hexadecimal de 32 bytes usada para cifrar tokens de actualización en reposo |
OAUTH_STATE_SECRET | no | Secreto separado para firmar el estado de OAuth |
TRUST_PROXY | no | Configúralo en 1 cuando se ejecute detrás de nginx para que los límites de velocidad vean las IP reales de los clientes |
HOST | no | Dirección de enlace. Usa 127.0.0.1 detrás de un proxy inverso |
MOJOAUTH_AUDIENCE | no | Verificación opcional de audiencia para tokens de MojAuth |
MOJOAUTH_ISSUERS | no | Anula los emisores de tokens de MojAuth permitidos |
.env.example se mantiene actualizado y tiene la lista completa anotada.
En tu cliente OAuth de Google Cloud, registra <APP_URL>/api/admob/callback como URI de redirección autorizado. En tu panel de MojAuth, registra la URL de devolución de llamada que te muestra.
2a. Ejecuta con Docker (todo)
docker compose up --build
2b. Ejecuta localmente para desarrollo
pnpm install
docker compose up -d db # Postgres only
pnpm db:migrate
pnpm dev # API on :3000, web on :5173
3. Producción
Compila desde la raíz del repositorio (compilar un solo paquete puede dejar un packages/db/dist obsoleto):
git pull && pnpm install && pnpm db:migrate && pnpm build
En producción, la API sirve la aplicación web compilada (apps/web/dist), por lo que hay un solo proceso para ejecutar. Ejecútalo bajo un administrador de procesos de tu elección (la instancia alojada usa pm2, con Postgres en Docker).
Detrás de nginx (o cualquier proxy inverso):
- Configura
APP_URLa tu dominiohttps - Configura
TRUST_PROXY=1 - Vincula la app a localhost con
HOST=127.0.0.1
Nota: los límites de velocidad se mantienen en memoria por proceso, por lo que AdLens está diseñado para ejecutarse como un solo proceso. Si se expone directamente (sin proxy), deja
TRUST_PROXYsin configurar, porqueX-Forwarded-Forpuede ser falsificado.
Límites de uso justo
AdLens es gratuito, sin planes ni facturación. Los límites de velocidad por IP protegen el servicio:
| Endpoint | Límite |
|---|---|
API del panel (/api) | 300 solicitudes / minuto |
Servidor MCP (/mcp) | 15 solicitudes / minuto |
Si autoalojas, estos límites son tuyos para ajustarlos en el código fuente.
Arquitectura
flowchart LR
A[Vue dashboard] --> B[Express API]
C[MCP clients] --> B
B --> D[Live AdMob layer<br/>60-min cache · single-flight]
D --> E[(Google AdMob API)]
B --> F[(Postgres<br/>identity · encrypted keys )]
No hay trabajador, ni almacén de datos, ni métricas almacenadas. Los informes se obtienen de Google bajo demanda y se agregan en JS.
Pila tecnológica y estructura
Monorepo de TypeScript (espacios de trabajo pnpm):
apps/web Vue 3 + Vite SPA (ECharts): dashboard, reports, mediation, API keys, settings
apps/api Express API + stateless MCP server; serves web/dist in production
(live AdMob serving layer: apps/api/src/live)
packages/db Drizzle schema + migrations (multi-tenant: tenant_id everywhere)
packages/admob AdMob OAuth + reporting API client
packages/crypto AES-256-GCM secrets, API key generation/hashing, scrypt
packages/shared Shared TypeScript types and AdMob constants
Aviso legal
AdLens es un proyecto independiente y no está afiliado, respaldado ni patrocinado por Google. AdMob y Google son marcas comerciales de Google LLC.