Saltar al contenido principal
Firma se conecta a Cursor mediante dos servidores MCP: uno que te permite gestionar Solicitudes de Firma, Plantillas y Espacios de Trabajo directamente desde el editor, y otro que le da a la IA de Cursor acceso a la documentación de Firma para que pueda generar código de integración preciso. Esta guía cubre ambos.

Requisitos previos

  • Una cuenta de Firma con una Clave API
  • Cursor instalado con soporte para MCP
  • Al menos una Plantilla de Firma con Campos de firma configurados
Firma usa la Clave API en bruto como valor del encabezado Authorization; no la antepongas con Bearer. Esto difiere de muchas otras API.

Conecta el servidor MCP de datos de Firma

El servidor MCP de datos le da a Cursor acceso directo a la API de Firma. Una vez conectado, puedes gestionar Solicitudes de Firma, Plantillas, webhooks y Espacios de Trabajo mediante lenguaje natural en Composer o Chat.

Instalación con un clic

Usa el botón de instalación con un clic en la página de integración MCP de Firma para añadir el servidor a Cursor automáticamente.

Configuración manual

Añade lo siguiente a tu configuración a nivel de proyecto en .cursor/mcp.json, o a tu configuración a nivel de usuario en ~/.cursor/mcp.json:
{
  "mcpServers": {
    "firma-api": {
      "url": "https://mcp.firma.dev/mcp"
    }
  }
}
Reinicia Cursor después de guardar. La primera vez que uses una herramienta de Firma, Cursor te guiará para iniciar sesión con tu cuenta de Firma mediante OAuth. Una vez conectado, puedes pedirle a Cursor cosas como:
  • “Muéstrame todas las Solicitudes de Firma pendientes en mi Espacio de Trabajo”
  • “Crea una Solicitud de Firma a partir de la plantilla NDA y envíala a jane@example.com
  • “Configura un webhook para eventos signing_request.completed”
El servidor MCP de datos expone 84 herramientas relacionadas con Solicitudes de Firma, Plantillas, Espacios de Trabajo, webhooks, configuración de correo electrónico y más. Consulta la referencia completa de herramientas para ver la lista completa.

Conecta el servidor MCP de documentación de Firma

El servidor MCP de documentación le da a la IA de Cursor acceso a la documentación de Firma. Esto es lo que permite que Composer y Chat generen código de integración de Firma preciso, porque puede consultar endpoints, formatos de solicitud y detalles de autenticación en tiempo real en lugar de adivinar. Añádelo junto al servidor de datos en tu .cursor/mcp.json. Las dos entradas son servidores MCP distintos: firma-api para acciones en tiempo de ejecución contra la API de Firma, y firma-docs para consultas de documentación:
{
  "mcpServers": {
    "firma-api": {
      "url": "https://mcp.firma.dev/mcp"
    },
    "firma-docs": {
      "url": "https://docs.firma.dev/mcp"
    }
  }
}
Reinicia Cursor después de guardar.
Cuándo usar cada servidor: el servidor MCP de datos (firma-api) sirve para hacer cosas (enviar Solicitudes de Firma, gestionar Plantillas). El servidor MCP de documentación (firma-docs) sirve para construir cosas (generar código de integración con detalles precisos de la API). La mayoría de los desarrolladores querrán tener ambos conectados.

Genera una integración de Firma con Composer

Con ambos servidores MCP conectados, Composer de Cursor puede generar código de integración de Firma funcional para tu proyecto. Aquí tienes ejemplos de prompts que funcionan bien:

Endpoint de backend para enviar Solicitudes de Firma

Using the Firma API docs, create a Next.js API route that:
1. Accepts a template_id, signer email, and signer name
2. Uses the create-and-send endpoint to send a signing request
3. Returns the signing request ID and status
Store the API key in an environment variable called FIRMA_API_KEY.
Composer buscará en la documentación de Firma, encontrará el endpoint correcto (POST /signing-requests/create-and-send) y generará una ruta de API completa usando la URL base, los encabezados y el formato del cuerpo de la solicitud correctos.

Firma incrustada en una aplicación React

Using the Firma docs, add an embedded signing view to this React app.
After a signing request is created, show the signing experience
in an iframe. Use the signing_request_user_id from the API response.

Manejador de webhook para firmas completadas

Using the Firma docs, create a webhook handler that listens for
signing_request.completed events and updates the contract status
in our database.

Integración completa desde cero

I need to add e-signatures to this app. Users should be able to:
1. Pick a contract template
2. Enter the signer's name and email
3. Send the contract for signing
4. See when the contract has been signed

Use the Firma API for all of this. Check the Firma docs for
the correct endpoints and request formats.

Ejemplo: ruta de API de Next.js

Esto es lo que Composer suele generar para un endpoint de Solicitud de Firma en Next.js. Puedes usarlo como referencia o punto de partida:
// app/api/sign/route.ts
import { NextRequest, NextResponse } from "next/server";

const FIRMA_API = "https://api.firma.dev/functions/v1/signing-request-api";

export async function POST(req: NextRequest) {
  const { template_id, signer_email, signer_first_name, signer_last_name } =
    await req.json();

  const response = await fetch(
    `${FIRMA_API}/signing-requests/create-and-send`,
    {
      method: "POST",
      headers: {
        Authorization: process.env.FIRMA_API_KEY!,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({
        template_id,
        recipients: [
          {
            first_name: signer_first_name,
            last_name: signer_last_name,
            email: signer_email,
            designation: "Signer",
            order: 1,
          },
        ],
      }),
    }
  );

  const data = await response.json();

  if (!response.ok) {
    return NextResponse.json({ error: data }, { status: response.status });
  }

  return NextResponse.json({
    signing_request_id: data.id,
    status: "sent",
  });
}
El endpoint create-and-send crea la Solicitud de Firma y la envía a los destinatarios en una sola llamada. Si necesitas revisar o modificar la solicitud antes de enviarla, usa POST /signing-requests para crear un borrador y, después, POST /signing-requests/{id}/send por separado.
Guarda tu Clave API en .env.local (o el equivalente de tu proyecto):
FIRMA_API_KEY=your_api_key_here
Nunca expongas tu Clave API en código de frontend. Llama siempre a la API de Firma desde rutas del lado del servidor o funciones de backend.

Firma incrustada

Para aplicaciones donde los Firmantes completan los Documentos directamente en tu interfaz, Firma ofrece una experiencia de firma incrustable. La respuesta de create-and-send incluye un first_signer.id (el signing_request_user_id) y un first_signer.signing_link ya listo. Carga la URL del Firmante en un iframe:
<iframe
  src="https://app.firma.dev/signing/{signing_request_user_id}"
  style="width:100%;height:900px;border:0;"
  allow="camera;microphone;clipboard-write"
  title="Document Signing"
></iframe>
Consulta la guía de firma incrustada para las instrucciones completas de configuración, incluidas las mejores prácticas de seguridad.

Consejos para trabajar con Cursor + Firma

  • Sé específico en los prompts. “Usa el endpoint create-and-send de Firma” da mejores resultados que “añade firmas electrónicas”. El servidor MCP de documentación ayuda, pero los prompts específicos siguen produciendo código más preciso.
  • Haz referencia a la documentación explícitamente. Empezar un prompt con “Usando la documentación de Firma” o “Consulta la documentación de la API de Firma” le indica a Composer que consulte el servidor MCP de documentación antes de generar código.
  • Usa el modo Agent para cambios en varios archivos. Si estás añadiendo firmas a una aplicación existente, el modo Agent de Composer puede crear la ruta de API, actualizar el frontend y añadir variables de entorno en varios archivos en una sola pasada.
  • Prueba con el servidor MCP de datos. Después de generar tu código de integración, puedes usar el servidor MCP de datos para enviar Solicitudes de Firma de prueba directamente desde el chat de Cursor, sin salir del editor.

Próximos pasos