MCP One / Blog / Claude Desktop + SAP B1

Claude Desktop conectado a SAP B1 en 15 minutos

Guía paso a paso: desde cero hasta dictar tu primer pedido de venta por voz, con SAP procesándolo en tiempo real.

Si tienes SAP Business One y quieres probar cómo se siente hablar con tu ERP, esta guía te lleva de la instalación al primer pedido de venta en menos de 15 minutos. No hace falta programar nada. Solo necesitas acceso a tu SAP B1, Node.js y Claude Desktop.

Requisitos previos

  • SAP Business One 10.0 FP 2208 o posterior (HANA o SQL Server)
  • SAP Service Layer habilitado — puerto 50000 accesible desde la máquina donde instales MCP One
  • .NET 8 Runtime instalado en el servidor MCP (Linux o Windows)
  • Claude Desktop instalado en tu equipo (macOS o Windows)
  • Un usuario SAP B1 con permisos para crear pedidos de venta

Paso 1: Instala MCP One

MCP One se distribuye como paquete npm para facilitar el bootstrapping. En producción se recomienda Docker, pero para un piloto rápido, npx es suficiente.

En la máquina donde corre SAP Service Layer (o en cualquier servidor con acceso a él), abre un terminal y verifica que tienes Node.js 18+:

terminal
# Verifica versión de Node.js
node --version
# v18.x.x o superior

# Instala MCP One globalmente (opcional, para uso continuado)
npm install -g @aretaslab/mcp-one

# O úsalo directamente con npx sin instalación previa
npx @aretaslab/mcp-one --help

Si prefieres Docker, la imagen oficial está disponible en el registry de AretasLab:

terminal — Docker
docker pull aretaslab/mcp-one:0.4.1

docker run -d \
  --name mcp-one \
  -e SBO_COMPANY=SBOCOMP \
  -e SBO_AUTH=oauth \
  -e SERVICE_LAYER_URL=https://b1.tuempresa.local:50000/b1s/v1 \
  -p 3000:3000 \
  aretaslab/mcp-one:0.4.1
Nota sobre red MCP One necesita conectividad TCP al puerto 50000 de SAP Service Layer. Si tu B1 está en HANA, asegúrate de que el Service Layer está activo en SAP B1 System Landscape Directory (SLD).

Paso 2: Configura OAuth con tu usuario SAP

MCP One usa OAuth 2.1 con PKCE para autenticar al usuario final contra SAP B1. Esto es fundamental: el servidor MCP nunca almacena contraseñas SAP en texto plano y cada petición lleva el token del usuario que la origina.

2.1 — Habilitar el usuario en SAP

Entra en SAP B1 como administrador y ve a Administración → Gestión de usuarios. Verifica que el usuario tiene:

2.2 — Inicializar el flujo PKCE

Con MCP One corriendo, lanza el flujo de autorización por primera vez:

terminal
# Inicia el servidor con configuración mínima
npx @aretaslab/mcp-one \
  --service-layer https://b1.tuempresa.local:50000/b1s/v1 \
  --company SBOCOMP \
  --auth oauth \
  --port 3000

# Primera ejecución: abrirá el flujo PKCE en tu navegador
# Introduce usuario y contraseña SAP → el token se guarda cifrado en ~/.mcp-one/tokens/

El token de acceso dura 1 hora; el refresh token, 30 días. MCP One renueva automáticamente sin interrumpir la sesión de Claude.

Paso 3: Configura Claude Desktop

Claude Desktop lee su configuración de servidores MCP desde ~/claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/claude_desktop_config.json, Windows: %APPDATA%\Claude\claude_desktop_config.json).

Abre el archivo con cualquier editor y añade la configuración de MCP One:

~/claude_desktop_config.json
{
  "mcpServers": {
    "mcpone": {
      "command": "npx",
      "args": [
        "-y",
        "@aretaslab/mcp-one",
        "--service-layer",
        "https://b1.tuempresa.local:50000/b1s/v1",
        "--company",
        "SBOCOMP",
        "--auth",
        "oauth"
      ],
      "env": {
        "SBO_AUTH": "oauth",
        "MCP_ONE_LOG_LEVEL": "info"
      }
    }
  }
}

Sustituye b1.tuempresa.local por el hostname o IP de tu servidor SAP y SBOCOMP por el nombre de tu empresa en B1 (el que aparece en el selector de empresa al hacer login).

Multi-empresa Si tienes varias sociedades en B1, puedes declarar múltiples entradas en mcpServers con nombres distintos (mcpone_es, mcpone_fr, etc.) apuntando a la misma URL de Service Layer pero con diferente --company.

Paso 4: Verifica la conexión

Cierra y vuelve a abrir Claude Desktop. En la barra inferior de la ventana de chat verás el icono de conector (🔌). Si aparece con MCP One listado, la conexión es correcta.

Para confirmar que las herramientas están disponibles, prueba estas consultas en Claude:

prompts de verificación
# 1. Consulta de stock básica
"¿Cuántas unidades del artículo SKU-1001 hay en el almacén principal?"

# 2. Búsqueda de cliente
"Busca el cliente con nombre que contenga 'Mora' y dime su límite de crédito."

# 3. Listado de pedidos recientes
"¿Qué pedidos de venta se han creado esta semana? Dame los últimos 5."

Si recibes respuestas con datos reales de tu SAP, todo está funcionando. Si hay error de conexión, verifica que Service Layer es accesible desde la máquina de Claude con:

terminal — test de conectividad
curl -k https://b1.tuempresa.local:50000/b1s/v1/\$metadata
# Debe devolver XML de metadata OData si Service Layer está activo

Paso 5: Tu primer pedido de venta por voz

Ahora la parte interesante. Con Claude Desktop conectado a MCP One, puedes crear un pedido real en SAP B1 con una instrucción en lenguaje natural.

Escribe (o dicta con el micrófono de Claude Desktop) lo siguiente:

prompt — pedido de venta
"Crea un pedido de venta para el cliente Industrias Mora SL,
12 unidades del artículo SKU-4421, precio de lista,
condiciones de pago a 60 días. Dime el número de documento
cuando esté creado."

Lo que ocurre internamente en esos segundos:

  1. Claude analiza el prompt e identifica que necesita find_business_partner para resolver el nombre del cliente al CardCode de SAP.
  2. Con el CardCode, llama a check_credit_limit para verificar que el cliente tiene crédito disponible.
  3. Llama a get_item_price para confirmar el precio de lista del SKU-4421.
  4. Finalmente llama a create_sales_order con todos los campos validados. Service Layer valida la transacción y Transaction Notifications ejecutan las reglas de negocio configuradas en tu B1.
  5. Claude recibe el DocEntry y el DocNum del pedido creado y te responde en lenguaje natural.

La respuesta típica de Claude será algo así:

respuesta de Claude
He creado el pedido de venta correctamente:

· Documento nº: PV-2026-04721
· Cliente: Industrias Mora SL (CardCode: C10042)
· Artículo: SKU-4421 — Válvula reguladora DN25 (12 uds.)
· Precio unitario: 48,50 € · Total: 582,00 € + IVA
· Condiciones de pago: 60 días fecha factura
· Estado: Abierto · En revisión por almacén

El límite de crédito disponible tras este pedido es de 12.340 €.
¿Quieres que envíe la confirmación de pedido al cliente?
<3s p95 latencia total
4 herramientas encadenadas
0 líneas de código escritas

Rendimiento y observabilidad

En producción, el ciclo completo prompt → respuesta se sitúa por debajo de 3 segundos en el percentil 95, medido sobre 4 clientes B1 HANA activos (datos de mayo 2026). El cuello de botella habitual es SAP Service Layer, no MCP One.

Cada invocación queda registrada en el log de MCP One con:

Los logs siguen el formato OpenTelemetry y son exportables a cualquier stack de observabilidad: Grafana/Loki, Datadog, Azure Monitor o simplemente fichero plano para entornos sin observabilidad centralizada.

Para ver los logs en tiempo real durante las primeras pruebas:

terminal — logs en tiempo real
npx @aretaslab/mcp-one \
  --service-layer https://b1.tuempresa.local:50000/b1s/v1 \
  --company SBOCOMP \
  --auth oauth \
  --log-level debug \
  --log-format json | jq '.'

Próximos pasos

Con la conexión básica funcionando, los siguientes pasos habituales en un piloto son:

La documentación completa de cada módulo y el catálogo de herramientas disponibles están disponibles para clientes con plan Production.

¿Tu B1 listo para un piloto?

2 semanas, 3 herramientas (lectura), 5 usuarios. Sin coste para los primeros 5 clientes del trimestre. Respuesta en menos de 48 horas.

Reservar mi piloto gratis