JMAX Centro de ayudaEnglish
Centro de ayuda › Guías paso a paso

Estándar para añadir un conector a JMAX

Un conector es un servidor MCP: un programa que publica un catálogo de herramientas. JMAX lo arranca, le pregunta qué sabe hacer y registra cada herramienta como si fuera suya. El modelo no distingue una herramienta nativa de una que llegó por un conector.

Añadir un conector no es programar. Es una entrada de JSON, y desde la versión 0.2.5 ni siquiera eso: se hace desde Conectores → ➕ Añadir conector. Este documento describe el estándar que hay detrás, para quien quiera entenderlo, revisarlo o escribirlo a mano.


1. Dónde vive

config/mcp.json, dentro de mcpServers, una entrada por conector:

{
  "mcpServers": {
    "mi-conector": {
      "enabled": true,
      "transport": "stdio",
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "D:/documentos"]
    }
  }
}

El nombre (mi-conector) no es decorativo: prefija todas sus herramientas. Ese servidor publica read_file y JMAX la registra como mi_conector_read_file (los guiones pasan a guion bajo, y el total se corta a 64 caracteres). Dos conectores distintos pueden publicar search sin chocar.


2. Las tres formas de conectarse

transport Qué es Campo obligatorio
stdio Un programa que corre en este equipo command (+ args, env, cwd)
http Un servidor remoto por HTTP url (+ headers)
sse Igual, con el protocolo antiguo de eventos url (+ headers)

Si no se escribe transport, se deduce: hay url → remoto; hay command → programa local.

En Windows, npx, npm, uvx y uv se resuelven solos a su .cmd: no hay que escribirlo.


3. Los secretos NO van en mcp.json

Esta es la regla que no se negocia. Un token escrito dentro de mcp.json se queda ahí en claro, viaja en cada copia de seguridad y sale en cualquier captura de pantalla.

En el JSON va solo el hueco; el valor vive en config/secrets.env:

"headers": { "Authorization": "Bearer ${MI_TOKEN}" }
MI_TOKEN=el-valor-de-verdad

Cualquier ${VARIABLE} de la ficha se sustituye al arrancar el conector. La pantalla de alta lo hace sola: si pegas una configuración con un token dentro, lo aparta a secrets.env, deja el hueco y te dice dónde lo guardó.


4. Que no nazca invisible: pistas

Este es el error que ya costó caro dos veces (con la búsqueda web y con Paint). JMAX tiene cientos de herramientas y no se las manda todas al modelo en cada turno: un selector elige las que parecen venir a cuento. Un conector del que nadie dijo con qué palabras se pide no sale nunca, y el usuario jura que JMAX «no tiene» la herramienta que acaba de instalar.

Por eso cada conector declara las suyas:

"pistas": ["incidencia", "ticket", "jira", "bug"]

Cuando el usuario escriba «créame una incidencia», las herramientas de ese conector viajan en el turno, sí o sí. Las pistas viven en la ficha del conector, no en una tabla del código: el conector se lleva las suyas puestas.


5. Campos opcionales que cambian la experiencia

titulo y description — cómo se presenta

"titulo": { "es": "Bases de datos · Postgres", "en": "Databases · Postgres" }

Aceptan texto suelto o un objeto con los seis idiomas (es, en, pt, de, it, fr). Sin titulo, la pantalla enseña el nombre técnico.

ajustes — el formulario que ve el cliente

Sin esto, configurar un conector es editar args a mano. Con esto, la pantalla pinta un formulario en cristiano:

"ajustes": [
  {
    "clave": "CARPETA_RAIZ",
    "arg": 2,
    "etiqueta": { "es": "Carpeta de trabajo" },
    "ayuda":    { "es": "La carpeta (y sus subcarpetas) que podrá leer." }
  }
]

Dónde se guarda el valor, según lo que declares:

Una clave que se llame TOKEN, PASSWORD, API_KEY, SECRET o CLAVE se trata como secreto automáticamente: el campo sale en blanco y vacío significa «no lo cambies».

acciones — botones para lo que no es un ajuste

Vincular una cuenta, emparejar un teléfono, pedir un código:

"acciones": [
  {
    "id": "vincular",
    "etiqueta": { "es": "Vincular cuenta de Microsoft" },
    "herramienta": "outlook_login",
    "abrir": "https://login.microsoft.com/device",
    "ayuda": { "es": "Te doy un código y abro la página: escríbelo allí." }
  }
]

herramienta es la que se ejecuta al pulsar; abrir es la página que se abre al mismo tiempo.


6. Permisos: qué puede hacer sin preguntar

Un conector nuevo hereda las reglas del guardián. Lo que toca dinero, manda mensajes fuera o borra cosas debe pedir confirmación. Se declara en config/jmax.toml:

Regla de oro: leer no pregunta, escribir hacia fuera sí.


7. El alta desde la pantalla

Conectores → ➕ Añadir conector. Dos caminos:

Importar. Pegas lo que publica el catálogo. Se entienden las cuatro formas que se ven por ahí, sin recortar nada:

{"mcpServers": {"x": {...}}}     el archivo entero de Claude Desktop
{"x": {...}}                     el mapa suelto
{"command": "npx", ...}          la ficha de un solo servidor
{"name": "x", "command": ...}    la ficha con su nombre dentro

Construir. Un formulario: nombre, cómo se conecta, programa o dirección, variables, título y las palabras con las que se lo pedirás.

En ambos casos, «Revisar» no escribe nada: dice cómo se va a llamar, qué secretos va a apartar y qué falta, antes de tocar el disco. Al añadir, el conector arranca en el acto y la pantalla dice cuántas herramientas trajo o por qué no pudo.


8. Comprobaciones antes de darlo por bueno

  1. Arranca: el botón Probar dice cuántas herramientas publica y en cuánto tiempo.
  2. Se ve: sus capacidades aparecen en la tarjeta, en verde.
  3. Se encuentra: pídeselo a JMAX con tus palabras. Si no lo usa, le faltan pistas.
  4. No expone secretos: abre mcp.json y comprueba que solo hay ${VAR}.
  5. Se apaga: desactivarlo retira sus herramientas y mata su proceso; quitarlo lo borra de mcp.json sin tocar los secretos.

9. Dónde buscar conectores hechos


10. Resumen para quien tenga prisa

Quiero… Hago…
Añadir uno de un catálogo Conectores → ➕ → Importar → pegar → Revisar → Añadir
Añadir uno propio Conectores → ➕ → Construir
Que JMAX se acuerde de usarlo Rellenar palabras con las que se lo pedirás
Guardar un token No lo escribas en el JSON: la pantalla lo aparta sola
Apagarlo un rato Quitar la casilla «activo»
Quitarlo del todo Botón Quitar
Que el cliente pueda configurarlo Añadir un bloque ajustes a su ficha

¿No encuentras la respuesta?

Cuéntanos qué pasa: el ticket queda unido a tu licencia y te respondemos por correo.

Abrir un ticket de soporte