Dare MCP Server

Servidor MCP que permite a Claude generar video e imágenes con IA a través de Dare (Seedance 2.5, Veo 3.1, Kling, Hailuo), facturado a tus propios créditos de Dare.

Documentación

dare-mcp-server

npm node licence dare-mcp-server MCP server

Genera video e imágenes desde Claude, facturado a tus propios créditos de Dare.

Pídele a Claude una toma y él la crea — Seedance 2.5, Seedance 2.0, Veo 3.1, Kling 3.0 Pro, Hailuo 2.3 para video, Nano Banana 2, GPT Image 2 y Seedream 5 Pro para imágenes fijas. Sin nueva suscripción, sin clave API que comprar: gasta los créditos de Dare que ya tienes.

> make me a 10 second 720p cinematic shot of rain on a neon Tokyo street, 16:9

  Estimated 110 credits (you have 4,280). Generating…
  Done: https://storage.trydare.com/…/rain-tokyo.mp4

Funciona con Claude Code, la aplicación de escritorio de Claude y Cowork.

[!IMPORTANT] Dare no publica una API para desarrolladores. Este servidor habla con el mismo endpoint privado que usa la aplicación web de Dare, con tu sesión iniciada mediante tu propia sesión de navegador. Funciona hoy — cada herramienta aquí ha sido probada contra los servidores en vivo de Dare, incluyendo una generación completa hasta el final — pero Dare puede cambiar ese contrato sin previo aviso, y su uso puede estar fuera de los términos de servicio de Dare. Tu cuenta, tus créditos, tu decisión.


Instalación

Necesitas Node.js 20 o más reciente. Verifica con node --version; si eso da error, instala la versión LTS desde nodejs.org (en una Mac, brew install node también funciona).

Luego ejecuta un comando en tu terminal:

npx dare-mcp-server setup

Eso es toda la instalación. El asistente:

  1. te muestra dónde encontrar tu token de Dare (cuatro clics en tu navegador),
  2. lo verifica contra Dare e imprime tu saldo de créditos,
  3. lo guarda en ~/.dare-mcp/config.json con permisos solo para el propietario,
  4. añade Dare a Claude Code y/o a la aplicación de escritorio de Claude por ti.

Reinicia Claude cuando termine. En Claude Code, /mcp debería listar ahora dare.

npx dare-mcp setup también funciona — dare-mcp es un alias corto que reenvía al mismo paquete.

Aplicación de escritorio de Claude, sin terminal: descarga dare-mcp-server-0.2.0.mcpb desde la versión mcpb-0.2.0, ábrela y pega tu token de Dare cuando se te pida. También está listado en el Registro oficial de MCP como io.github.avi-aggarwal14/dare-mcp-server.

Paso 2 en detalle: encontrar tu token de Dare

El servidor inicia sesión como tú, usando la cookie de larga duración __client de Clerk desde tu navegador. Genera un token de sesión nuevo de 60 segundos para cada llamada, exactamente como hace la aplicación web de Dare.

  1. Inicia sesión en https://trydare.com en Chrome, Edge, Arc o Brave.
  2. Abre DevTools — Cmd+Option+I en macOS, F12 en Windows y Linux.
  3. Ve a la pestaña Application → Storage → Cookies → https://clerk.trydare.com. (En Firefox y Safari la pestaña se llama Storage en su lugar.)
  4. Encuentra la fila llamada __client y copia su Valor — una cadena larga que comienza con eyJ. Copia el valor, no el nombre.
  5. Pégalo en el asistente. Tu terminal no lo mostrará de vuelta.

La cookie es válida durante aproximadamente un año, así que este es un paso único a menos que cierres sesión en Dare.

Trátala como una contraseña. Otorga acceso completo a tu cuenta de Dare y puede gastar tus créditos. El asistente la guarda en un solo archivo con permisos 0600 y deliberadamente no la escribe en tu configuración de Claude, para que tus ajustes de Claude sean seguros de sincronizar o compartir.

¿Prefieres hacerlo a mano?

Claude Code

claude mcp add dare --scope user -- npx -y dare-mcp-server

Aplicación de escritorio de Claude — edita el archivo de configuración:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • Windows: %APPDATA%\Claude\claude_desktop_config.json
{
  "mcpServers": {
    "dare": {
      "command": "npx",
      "args": ["-y", "dare-mcp-server"]
    }
  }
}

Luego cierra y vuelve a abrir la aplicación.

Ambos leen tu token desde ~/.dare-mcp/config.json. Si prefieres pasarlo como una variable de entorno (CI, contenedores, una máquina compartida), configura DARE_CLIENT_TOKEN en su lugar — tiene prioridad sobre el archivo almacenado. Consulta Configuración.

Ejecutar desde el código fuente
git clone https://github.com/avi-aggarwal14/dare-mcp-server.git
cd dare-mcp-server
npm install          # builds automatically
npm run setup        # same wizard

Apunta Claude a node /absolute/path/to/dare-mcp-server/dist/cli.js en lugar de npx.

Verifica que funciona

npx dare-mcp-server check

Genera un token, lee tu saldo, lista algunos elementos de la biblioteca. Ejecútalo cada vez que las herramientas empiecen a fallar — es la forma más rápida de distinguir una cookie caducada de una interrupción de Dare.

Primeras cosas para probar

Una vez que Claude se haya reiniciado, solo pregunta en lenguaje natural:

> how many Dare credits do I have?
> what video models can I use, and what do they cost?
> make a 5 second clip of a paper boat going down a rain gutter, cinematic, 16:9
> use ~/shots/hero.png as a reference and animate the character walking toward camera
> what's in my Dare library from this week?

Claude te dará una estimación de créditos antes de gastar nada, y siempre puedes pedirle que haga una prueba en seco primero.

Herramientas

HerramientaGasta créditosQué hace
dare_list_modelsnoModelos con duraciones, calidades, relaciones de aspecto, límites de referencias
dare_estimate_costnoEstimación local de créditos antes de comprometerte
dare_get_credit_balancenoSaldo actual
dare_generate_videosíTexto a video, Seedance 2.5 por defecto; medios de referencia opcionales. dry_run: true previsualiza la especificación y el precio de forma gratuita
dare_generate_imagesíImágenes fijas mediante Nano Banana 2, GPT Image 2, Seedream 5 Pro. Admite dry_run
dare_get_generationnoConsulta el estado, obtiene la URL de salida
dare_list_generationsnoListado paginado de la biblioteca
dare_cancel_generationnoDetiene un trabajo en curso
dare_delete_generationnoElimina de la biblioteca (destructivo)
dare_upload_medianoSube una imagen/clip/audio de referencia, devuelve un storage_key
dare_list_uploadsnoReferencias subidas anteriormente
dare_delete_uploadnoElimina una referencia subida (destructivo)
dare_list_projectsnoTus proyectos de Dare

CLI

ComandoQué hace
npx dare-mcp-server setupAsistente interactivo de primera ejecución
npx dare-mcp-server checkVerifica las credenciales, imprime el saldo de créditos
npx dare-mcp-serverInicia el servidor MCP en stdio (Claude lo ejecuta por ti)
npx dare-mcp-server httpTransporte HTTP opcional para autoalojamiento
npx dare-mcp-server --helpTodo lo anterior

Configuración

Las credenciales se leen en este orden, gana la primera coincidencia:

  1. DARE_CLIENT_TOKEN en el entorno
  2. ~/.dare-mcp/config.json (escrito por setup)

El archivo almacenado es JSON plano, así que puedes editarlo directamente:

{
  "clientToken": "eyJ...",
  "maxCreditsPerCall": 500,
  "uploadRoots": ["/Users/you/Movies", "/Users/you/Pictures"]
}

Todo lo demás son variables de entorno:

VariablePredeterminadoPropósito
DARE_CLIENT_TOKENde la configuración almacenadaLa cookie __client de clerk.trydare.com. Requerida de una forma u otra.
DARE_CONFIG_DIR~/.dare-mcpDónde vive la configuración almacenada.
DARE_MAX_CREDITS_PER_CALL500Rechaza cualquier generación individual estimada por encima de esta cantidad de créditos. 0 lo desactiva.
DARE_UPLOAD_ROOTS— (bloqueado)Directorios separados por comas desde los que dare_upload_media puede leer archivos locales. Vacío significa que las lecturas de archivos locales se rechazan.
DARE_ALLOW_URL_UPLOADStruePermite subir desde una URL pública. Las direcciones privadas y de enlace local siempre se rechazan.
DARE_MAX_UPLOAD_BYTES536870912Mayor carga aceptada.
DARE_SESSION_TOKEN—Un JWT de sesión de 60s ya preparado. Solo para pruebas.
DARE_SESSION_IDautoFija un id de sess_... específico en lugar de autodetectarlo.
DARE_REQUEST_TIMEOUT_MS120000Tiempo de espera por solicitud.
DARE_SERVER_URLhttps://api.trydare.comBase RPC de Dare.
DARE_CLERK_FAPI_URLhttps://clerk.trydare.comBase de la API Frontend de Clerk.

DARE_MAX_CREDITS_PER_CALL es un interruptor de circuito del lado del cliente contra un modelo que se convence a sí mismo de un lote de 10 variaciones de 30 segundos (3,200 créditos). El valor predeterminado de 500 permite cualquier clip individual de Seedance 2.5 mientras bloquea lotes descontrolados; súbelo deliberadamente cuando quieras un lote. La estimación es conservadora en el único lugar donde no puede ser exacta: un video de referencia cuya duración Dare no puede informar se cotiza a 30 segundos, que es la propia suposición de Dare. La protección falla de forma segura: si la duración de un clip de referencia no se puede leer, la generación se rechaza en lugar de enviarse con una estimación adivinada.

DARE_UPLOAD_ROOTS es una lista de permitidos, no una conveniencia. Sin ella, dare_upload_media rechaza rutas locales por completo — de lo contrario, un modelo con inyección de prompt podría pedirle al servidor que subiera tu entorno de shell o la configuración de Claude, ambos contienen DARE_CLIENT_TOKEN. Apunta a las carpetas que realmente contienen tu metraje fuente.

Costos de créditos

Dare cotiza cada trabajo como costo del proveedor en dólares, multiplicado por 1.5, convertido a 750 créditos por $49.99, redondeado hacia arriba al 1, 5 o 10 créditos más cercano. El servidor reproduce esa fórmula exactamente; fue verificada contra cargos reales (un clip de Seedance 2.5 de 4s a 480p facturado a 20 créditos, como se predijo). Cifras típicas:

TrabajoCréditos
Seedance 2.5, 4s, 480p20
Seedance 2.5, 8s, 720p90
Seedance 2.5, 10s, 720p110
Seedance 2.5, 30s, 480p150
Seedance 2.5, 30s, 720p320
Seedance 2.0 Fast, 5s, 480p15
Seedance 2.0, 15s, 4K530
Veo 3.1, 8s, 1080p80
Kling 3.0 Pro, 5s20
Hailuo 2.3 Pro (fijo 6s)15
Imagen Nano Banana 2, 2K4
GPT Image 2, 1:15

Adjuntar una referencia de video aplica un multiplicador de 0.6x en los modelos Seedance, y en Seedance 2.5 los segundos propios del clip de referencia se facturan además. Las referencias de imagen y audio no cambian el precio.

Siempre verifica con dare_estimate_cost antes de un lote.

Generación basada en referencias

1. dare_upload_media  { file_path: "/Users/you/shots/hero.png" }
     -> storage_key: "uploads/abc123..."
2. dare_generate_video {
     prompt: "the character from the reference walks toward camera through fog",
     reference_storage_keys: ["uploads/abc123..."],
     duration_seconds: 8
   }

Seedance 2.5 acepta hasta 50 referencias (30 imágenes, 10 videos, 10 audios), cada clip de 2–30s, 30 segundos combinados por tipo. Con una referencia de video adjunta, deriva la duración y la relación de aspecto automáticamente. Los modelos Seedance 2.0 aceptan 12 (9/3/3), 15s combinados, y necesitan una referencia visual junto con cualquier referencia de audio. Veo 3.1 acepta hasta 3 imágenes y se fija entonces en 8 segundos. Kling y Hailuo no aceptan referencias en absoluto.

HTTP remoto (opcional)

Se incluye un punto de entrada HTTP transmisible sin estado para alojar el servidor detrás de una URL:

DARE_CLIENT_TOKEN='eyJ...' \
DARE_MCP_BEARER_TOKEN="$(openssl rand -hex 32)" \
  PORT=3000 npx dare-mcp-server http

POST /mcp, verificación de salud en /health. El servidor se niega a iniciar sin un token de portador de al menos 24 caracteres, ya que estas herramientas gastan dinero real. La protección contra rebinding de DNS está activada por defecto y limitada a localhost; amplíala con DARE_ALLOWED_HOSTS / DARE_ALLOWED_ORIGINS cuando implementes detrás de un dominio. Las cargas de archivos locales y las cargas por URL están ambas deshabilitadas en este transporte independientemente de la configuración.

Solución de problemas

DARE_UNAUTHORIZED — la cookie __client falta, está caducada, o cerraste sesión en Dare en ese navegador. Ejecuta npx dare-mcp-server setup de nuevo con un valor fresco.

DARE_UNKNOWN_PROCEDURE — Dare cambió su RPC interno. Los nombres de los procedimientos viven en src/dare.ts; compáralos con una captura fresca de la pestaña de red de la aplicación web.

DARE_INSUFFICIENT_CREDITS — el error informa de los créditos requeridos frente a los disponibles.

DARE_COST_GUARD — tu propio límite de DARE_MAX_CREDITS_PER_CALL se activó. Funciona como se esperaba.

DARE_REFERENCE_UNKNOWN — una clave de almacenamiento de referencia no se pudo resolver, por lo que el costo no se pudo estimar. Verifica que la clave provenga de dare_upload_media o dare_list_uploads.

DARE_UPLOAD_FORBIDDEN — el archivo está fuera de DARE_UPLOAD_ROOTS, o estás en el transporte HTTP donde las lecturas locales están deshabilitadas.

Notas de seguridad

  • El token __client es acceso a nivel de cuenta. Cualquier cosa que pueda leerlo puede gastar tus créditos. setup por lo tanto lo almacena en ~/.dare-mcp/config.json en 0600 en lugar de en tu configuración de Claude, que a menudo se sincroniza, respalda o se confirma.
  • Las llamadas a dare_generate_* nunca se reintentan automáticamente después de un fallo de autenticación. El endpoint de creación de Dare no tiene clave de idempotencia, por lo que un reintento ciego podría cobrarte dos veces.
  • Subir desde una URL resuelve el host primero, rechaza loopback, privado, enlace local, CGNAT, multicast y formas IPv4-mapeadas/6to4/NAT64 de esos, fija la conexión a la dirección verificada para que el rebinding de DNS no pueda competir con la verificación, y vuelve a verificar cada salto de redirección.

Cómo funciona

Claude Code / desktop / Cowork
        │  MCP (stdio)
        ▼
  dare-mcp-server
        │  1. POST clerk.trydare.com/v1/client/sessions/{id}/tokens   (__client cookie)
        │     -> 60s session JWT, cached 45s
        │  2. POST api.trydare.com/rpc/{procedure}                    (Bearer JWT)
        │     oRPC envelope: { json, meta }
        ▼
    Dare backend

Las cargas son tres pasos: storage.generateUploadUrl -> PUT al almacenamiento firmado -> uploads.create.

Procedimientos utilizados

ProcedimientoEntrada
generations.create{ spec, count, projectId?, metaEventId, timezone }
generations.get / cancel / delete{ id }
generations.getMediaInfo{ storageKey }
libraryItems.list, uploads.list{ cursor, limit }
storage.generateUploadUrl{ contentType, fileExtension }
uploads.create{ storageKey, name, prompt, projectId, timezone }
uploads.delete{ id }
credits.getBalance, projects.listsin entrada

spec lleva solo las claves que declara el modelo elegido, exactamente como lo construye el compositor de Dare: Los modelos Seedance envían { tool, prompt, model, audioEnabled, aspectRatio, duration, quality, context? }, Kling omite quality, Hailuo envía { tool, prompt, model } y nada más, GPT Image 2 no tiene quality. duration es una cadena como "8s", context es { mediaStorageKeys, webLinkIds }, y cada archivo adjunto también se referencia en el prompt como @<storageKey>. Usa dry_run: true en cualquiera de las herramientas de generación para ver la especificación de cualquier combinación sin enviarla.

Los errores se mapean para que un agente pueda actuar sobre ellos: un registro faltante es DARE_NOT_FOUND, un procedimiento renombrado DARE_UNKNOWN_PROCEDURE, un desajuste de esquema DARE_BAD_REQUEST con los problemas a nivel de campo incluidos.

Estados de generación observados en la práctica: queued y processing mientras se ejecuta, succeeded o failed al final. El archivo terminado está en generation.outputAsset.storageUrl. Cualquier cosa no reconocida se trata como aún en ejecución, por lo que un estado renombrado en progreso nunca se confunde con uno terminado.

Desinstalación

claude mcp remove dare --scope user     # Claude Code
rm -rf ~/.dare-mcp                      # your stored token

Para la aplicación de escritorio, elimina la entrada "dare" de claude_desktop_config.json. Nada más está instalado — npx no deja el paquete atrás.

Contribuciones

Las incidencias y las solicitudes de extracción son bienvenidas, especialmente si:

  • Dare cambió un nombre de procedimiento o la forma de la especificación y algo se rompió
  • los precios se desviaron de la tabla anterior
  • se añadió o eliminó un modelo del compositor de Dare
git clone https://github.com/avi-aggarwal14/dare-mcp-server.git
cd dare-mcp-server
npm install
npm run build
npm run check        # needs a real token
npm run inspect      # MCP Inspector against a local build

Consulta CONTRIBUTING.md. Por favor, nunca pegues un token __client en una incidencia, un registro o un fixture de prueba — es una credencial activa.

Autor

Creado por Avi Aggarwal en Londres. También dirijo hypjam, una agencia de UGC para startups.

Licencia

MIT. No afiliado, respaldado ni apoyado por Dare. "Dare", "Seedance", "Veo", "Kling" y "Hailuo" pertenecen a sus respectivos propietarios.