DeveuWeb
Developers

Servidor MCP de DeveuWeb

Conecta Claude, Cursor o cualquier cliente compatible con MCP a tu organización y opera tu facturación con lenguaje natural: consulta clientes, crea facturas, registra gastos con su recibo y mucho más.

Endpoint

https://app.deveuweb.com/mcp

Introducción

El servidor MCP (Model Context Protocol) de DeveuWeb expone los datos de tu organización a asistentes de IA de forma segura y controlada. Cada token actúa en nombre de su creador, con sus permisos reales y limitado a los recursos y scopes que tú elijas.

El transporte es Streamable HTTP (JSON-RPC 2.0 sobre POST). No hay estado de sesión: cada petición se autentica de forma independiente.

Requisitos

  • Un plan con el servidor MCP incluido.
  • Autenticación en dos pasos (2FA) activada en tu cuenta — se verifica en cada petición.
  • Rol de administrador o propietario en la organización para generar tokens.

Cómo conectar

Hay tres formas de conectar un cliente MCP. La recomendada es el conector OAuth: no copias ningún token y el acceso se renueva solo.

Conector OAuth (recomendado)

La forma más sencilla y segura: añade deveuweb como conector en Claude (Desktop o web) o cualquier cliente MCP compatible con OAuth. No necesitas copiar ningún token.

  1. Añade un conector / servidor MCP personalizado usando la URL de arriba.
  2. Se abrirá el navegador: inicia sesión, elige la organización, revisa los permisos y confirma con tu código 2FA.
  3. Listo: el cliente queda conectado y renueva el acceso automáticamente.

Cursor / clientes con HTTP directo

Pega esto en el mcp.json de tu cliente.

{
  "mcpServers": {
    "deveuweb": {
      "url": "https://app.deveuweb.com/mcp",
      "headers": {
        "Authorization": "Bearer dvw_mcp_..."
      }
    }
  }
}

Claude Desktop (con token)

Alternativa con token: Claude Desktop usa un puente (mcp-remote). Pega esto en claude_desktop_config.json y reinicia la app.

{
  "mcpServers": {
    "deveuweb": {
      "command": "npx",
      "args": [
        "-y", "mcp-remote",
        "https://app.deveuweb.com/mcp",
        "--header", "Authorization: Bearer dvw_mcp_..."
      ]
    }
  }
}

Gestiona tus tokens y conexiones desde el panel de tu organización.

Autenticación y scopes

Tokens

Los tokens tienen el formato dvw_mcp_… y se muestran una sola vez al crearlos — en la base de datos solo se guarda su hash SHA-256, así que no se pueden recuperar después. Se revocan al instante desde el panel y caducan según tu plan.

Cada token actúa como su creador con su rol vigente: si pierde el rol de administrador o desactiva el 2FA, todos sus tokens dejan de funcionar inmediatamente.

Scopes

Cada token lleva una lista de scopes con el formato read:invoices · write:expenses. La lectura desbloquea las tools .list y .get; la escritura, .create y .update. Una llamada a una tool fuera de los scopes del token devuelve el error -32003.

OAuth 2.1

Para el conector OAuth, el servidor publica su metadata en /.well-known/oauth-authorization-server y soporta registro dinámico de clientes (DCR). Los access tokens duran 60 minutos y se renuevan automáticamente con el refresh token.

Límites

  • Rate limit: 60 peticiones por minuto por token (configurable por plan o token). Por encima, HTTP 429.
  • Llamadas al mes: según tu plan; el contador se muestra en el panel MCP de tu organización.
  • Las tools .list devuelven 25 resultados por defecto y 100 como máximo (parámetro limit).
  • Adjuntos (p. ej. recibos de gastos): PDF, JPG o PNG en base64, máximo 5 MB.

Recursos y tools

Esta referencia se genera automáticamente del registro del servidor: siempre refleja exactamente lo que el MCP expone. Los nombres y descripciones técnicas se muestran en inglés.

Directorio

Clientes

read:clients write:clients
clients.list List clients for the authenticated organization.
Campo Tipo Requerido Descripción
limit integer No
search string No Optional free-text filter.
clients.get Retrieve a single clients record by id.
Campo Tipo Requerido Descripción
id integer The record's numeric id.
clients.create Create a clients record in the authenticated organization.
Campo Tipo Requerido Descripción
name string
cif string No
billing_company_name string No
email string No
phone string No
address string No
city string No
postal_code string No
country string
notes string No
clients.update Partially update a clients record. Only the fields provided are modified.
Campo Tipo Requerido Descripción
id integer Id of the record to update.
name string No
cif string No
billing_company_name string No
email string No
phone string No
address string No
city string No
postal_code string No
country string No
notes string No

Empresas

read:companies write:companies
companies.list List companies for the authenticated organization.
Campo Tipo Requerido Descripción
limit integer No
search string No Optional free-text filter.
companies.get Retrieve a single companies record by id.
Campo Tipo Requerido Descripción
id integer The record's numeric id.
companies.create Create a companies record in the authenticated organization.
Campo Tipo Requerido Descripción
name string
cif string
address string
city string
postal_code string
country string
email string No
phone string No
iva_percentage number No
irpf_percentage number No
companies.update Partially update a companies record. Only the fields provided are modified.
Campo Tipo Requerido Descripción
id integer Id of the record to update.
name string No
cif string No
address string No
city string No
postal_code string No
country string No
email string No
phone string No
iva_percentage number No
irpf_percentage number No

Proveedores

read:suppliers write:suppliers
suppliers.list List suppliers for the authenticated organization.
Campo Tipo Requerido Descripción
limit integer No
search string No Optional free-text filter.
suppliers.get Retrieve a single suppliers record by id.
Campo Tipo Requerido Descripción
id integer The record's numeric id.
suppliers.create Create a suppliers record in the authenticated organization.
Campo Tipo Requerido Descripción
name string
cif string No
email string No
phone string No
address string No
web string No
notes string No
suppliers.update Partially update a suppliers record. Only the fields provided are modified.
Campo Tipo Requerido Descripción
id integer Id of the record to update.
name string No
cif string No
email string No
phone string No
address string No
web string No
notes string No
Catálogo

Productos

read:products write:products
products.list List products for the authenticated organization.
Campo Tipo Requerido Descripción
limit integer No
search string No Optional free-text filter.
products.get Retrieve a single products record by id.
Campo Tipo Requerido Descripción
id integer The record's numeric id.
products.create Create a products record in the authenticated organization.
Campo Tipo Requerido Descripción
name string
sku string No Optional; autogenerated if omitted.
description string No
base_price number
default_iva_percentage number No
default_irpf_percentage number No
products.update Partially update a products record. Only the fields provided are modified.
Campo Tipo Requerido Descripción
id integer Id of the record to update.
name string No
sku string No Optional; autogenerated if omitted.
description string No
base_price number No
default_iva_percentage number No
default_irpf_percentage number No

Planes

read:plans
plans.list List plans for the authenticated organization.
Campo Tipo Requerido Descripción
limit integer No
search string No Optional free-text filter.
plans.get Retrieve a single plans record by id.
Campo Tipo Requerido Descripción
id integer The record's numeric id.
Ventas

Presupuestos

read:budgets write:budgets
budgets.list List budgets for the authenticated organization.
Campo Tipo Requerido Descripción
limit integer No
search string No Optional free-text filter.
budgets.get Retrieve a single budgets record by id.
Campo Tipo Requerido Descripción
id integer The record's numeric id.
budgets.create Create a budgets (header + line items) in the authenticated organization. Totals and code are computed server-side.
Campo Tipo Requerido Descripción
client_id integer
company_id integer
title string
description string No
notes string No
discount_type string (enum) No
discount_value number No
lines array

Facturas

read:invoices write:invoices
invoices.list List invoices for the authenticated organization.
Campo Tipo Requerido Descripción
limit integer No
search string No Optional free-text filter.
invoices.get Retrieve a single invoices record by id.
Campo Tipo Requerido Descripción
id integer The record's numeric id.
invoices.create Create a invoices (header + line items) in the authenticated organization. Totals and code are computed server-side.
Campo Tipo Requerido Descripción
client_id integer
company_id integer No
title string No
description string No
notes string No
discount_type string (enum) No
discount_value number No
lines array

Facturas recurrentes

read:recurring_invoices
recurring_invoices.list List recurring_invoices for the authenticated organization.
Campo Tipo Requerido Descripción
limit integer No
search string No Optional free-text filter.
recurring_invoices.get Retrieve a single recurring_invoices record by id.
Campo Tipo Requerido Descripción
id integer The record's numeric id.
Contabilidad

Gastos

read:expenses write:expenses
expenses.list List expenses for the authenticated organization.
Campo Tipo Requerido Descripción
limit integer No
search string No Optional free-text filter.
expenses.get Retrieve a single expenses record by id.
Campo Tipo Requerido Descripción
id integer The record's numeric id.
expenses.create Create a expenses record in the authenticated organization.
Campo Tipo Requerido Descripción
date string YYYY-MM-DD
concept string
category string supplies|office|software|formation|insurance|transport|meals|professional_services|advertising|autonomo_quota|other
subtotal number
iva_percentage number
irpf_percentage number
provider string No
provider_cif string No
invoice_number string No
supplier_id integer No
notes string No
attachment_base64 string No Base64-encoded file content (PDF, JPG or PNG, max 5 MB).
attachment_filename string No Original filename including extension.
expenses.update Partially update a expenses record. Only the fields provided are modified.
Campo Tipo Requerido Descripción
id integer Id of the record to update.
date string No YYYY-MM-DD
concept string No
category string No supplies|office|software|formation|insurance|transport|meals|professional_services|advertising|autonomo_quota|other
subtotal number No
iva_percentage number No
irpf_percentage number No
provider string No
provider_cif string No
invoice_number string No
supplier_id integer No
notes string No
attachment_base64 string No Base64-encoded file content (PDF, JPG or PNG, max 5 MB).
attachment_filename string No Original filename including extension.

Ejemplos

Peticiones reales con curl. Sustituye $TOKEN por tu token.

Listar las tools disponibles para tu token

curl -X POST https://app.deveuweb.com/mcp \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}'

Buscar facturas

curl -X POST https://app.deveuweb.com/mcp \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "invoices.list",
      "arguments": { "search": "202606", "limit": 10 }
    }
  }'

Respuesta

{
  "jsonrpc": "2.0",
  "result": {
    "content": [
      { "type": "text", "text": "[ { \"id\": 12, \"code\": \"2026060001\", \"status\": \"paid\", \"total\": \"1590.31\", ... } ]" }
    ]
  },
  "id": 1
}

Crear un gasto con recibo adjunto

curl -X POST https://app.deveuweb.com/mcp \
  -H "Authorization: Bearer $TOKEN" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "expenses.create",
      "arguments": {
        "date": "2026-06-08",
        "concept": "Spotify Premium",
        "category": "software",
        "subtotal": 4.96,
        "iva_percentage": 21,
        "irpf_percentage": 0,
        "provider": "Spotify AB",
        "attachment_base64": "JVBERi0xLjcK...",
        "attachment_filename": "receipt.pdf"
      }
    }
  }'

Errores

Código Significado Qué hacer
HTTP 401 · -32001 Token ausente, inválido, caducado o revocado. Genera un token nuevo en el panel MCP y revisa el header Authorization.
HTTP 403 · -32003 El token no tiene el scope necesario, el creador perdió permisos o el 2FA está desactivado. Regenera el token con los scopes necesarios y verifica rol y 2FA del creador.
HTTP 405 · -32000 El endpoint solo acepta POST. Envía las peticiones JSON-RPC por POST.
HTTP 429 Superaste el rate limit por minuto. Espera y reintenta; considera un plan con límites mayores.
-32602 Los argumentos de la tool no pasan la validación. Revisa la tabla de campos del recurso: tipos, requeridos y formatos.

Utilizamos cookies

Este sitio usa cookies propias necesarias para su funcionamiento. También podemos utilizar cookies de terceros (Stripe) durante el proceso de pago. Puedes aceptarlas todas, rechazar las no esenciales o personalizar tu elección.

Política de cookies