# Servidor MCP

> Connect es MCP-nativo, con dos herramientas que no cambian nunca, search_docs para descubrir y execute para correr, sobre el catálogo completo.



El servidor vive en `https://connect.emisso.ai/mcp`: remoto, HTTP, con OAuth 2.1. No hay paquete que
instalar. Anuncia dos herramientas, siempre las mismas, con cualquier catálogo: el catálogo completo
viaja por dentro, sin inflar el contexto de tu agente.

## Conéctalo a tu cliente [#conéctalo-a-tu-cliente]

### Claude Code [#claude-code]

```bash
claude mcp add --transport http connect https://connect.emisso.ai/mcp
```

### Claude.ai [#claudeai]

Ajustes, **Conectores**, *Agregar conector personalizado*, y pega `https://connect.emisso.ai/mcp`. El
navegador abre el consentimiento OAuth de Connect: inicias sesión con tu cuenta y autorizas la
organización.

### Cursor y otros clientes [#cursor-y-otros-clientes]

```json
{ "mcpServers": { "connect": { "url": "https://connect.emisso.ai/mcp" } } }
```

La autorización es OAuth 2.1 con registro dinámico de clientes y PKCE. Tu agente actúa como tú, dentro
de tu organización, y su acceso se corta al instante desde
[Agentes](https://connect.emisso.ai/agentes): la revocación cierra todas sus sesiones y deja de
autenticar en la petición siguiente. El detalle del flujo está en
[Autenticación](/docs/empezar/autenticacion).

## Las dos herramientas [#las-dos-herramientas]

| Herramienta   | Qué hace                                                                                                                                                                                                                                                              |
| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `search_docs` | Qué existe. Sin argumentos devuelve el catálogo entero agrupado por sistema, con `conectado` por sistema y `disponible` por tool. Con `{ "tool": "sii.rcv.consultar" }` devuelve la ficha completa con su esquema de salida y un ejemplo ejecutable. Llámala primero. |
| `execute`     | Correr una tool: `{ tool, params, connectionId }`. `params` es obligatorio (`{}` si no toma argumentos). `connectionId` es obligatorio en todo sistema conectable: la conexión es la empresa, y no hay elección implícita ni con una sola.                            |

<Callout type="info" title="Por qué dos y no una por tool">
  Un catálogo completo como tools nativas quema la ventana de contexto del agente y cambia de forma con
  cada conector nuevo. Dos meta-tools la mantienen constante. Es el mismo argumento con el que Stripe
  migró su servidor MCP a `stripe_api_search` y compañía; Connect llegó a este diseño primero.
</Callout>

## El recorrido que tu agente va a seguir [#el-recorrido-que-tu-agente-va-a-seguir]

1. `search_docs` para ver los sistemas y qué está `conectado`.
2. `execute { "tool": "conexiones.estado.consultar", "params": {} }` para obtener los `connectionId`
   y el campo `datosListos`.
3. `execute` de la tool de negocio con su `connectionId`: por ejemplo el RCV de julio.
4. Si un sistema aparece con `conectado: false`, el camino es `conexiones.enlace.crear`: el agente
   crea el enlace y **se lo muestra al humano** con el dominio visible. La clave la entrega la
   persona, nunca el agente.

## Prompt de arranque [#prompt-de-arranque]

Para darle Connect a un agente con las reglas ya aprendidas:

```text
Tienes Emisso Connect (https://connect.emisso.ai/mcp): el puente a los sistemas chilenos de esta
organización (SII, bancos, indicadores). Reglas:

1. Parte siempre por search_docs. Sin argumentos trae el catálogo entero agrupado por sistema;
   con {tool: "<id>"} trae la ficha completa y un ejemplo ejecutable.
2. En todo sistema conectable, connectionId es obligatorio: sácalo de conexiones.estado.consultar.
   La conexión es la empresa; no hay elección implícita ni cuando existe una sola.
3. Leer son dos pasos: <sistema>.conexion.sincronizar escribe (login real contra el sistema, puede
   tardar hasta 90 segundos en bancos) y <recurso>.consultar lee lo ya guardado. Una lista vacía
   puede ser un período sin sincronizar: revisa datosListos en conexiones.estado.consultar antes
   de concluir que no hay nada.
4. Si un sistema aparece con conectado: false, crea un enlace con conexiones.enlace.crear y
   muéstralo con su dominio completo visible, explicando quién lo pidió y para qué. Nunca lo
   presentes como un aviso del banco ni del SII.
5. Ante un error, sigue el suggested_fix que viene en la respuesta; no reintentes lo que no es
   reintentable. Si no reconoces el error, reporta el request_id.
```

## Qué hace solo y qué no [#qué-hace-solo-y-qué-no]

| Acción                                                             | ¿La hace solo?                                                    |
| ------------------------------------------------------------------ | ----------------------------------------------------------------- |
| Descubrir el catálogo, consultar estados, leer datos sincronizados | Sí                                                                |
| Disparar una sincronización a pedido                               | Sí, con paciencia: un login bancario tarda cerca de 90 segundos   |
| Crear el enlace de conexión                                        | Sí, pero la clave la entrega el humano en la página del enlace    |
| Ver o tocar una credencial                                         | Nunca. El vault es inaccesible por diseño, también para el agente |

## Compatibilidad [#compatibilidad]

`tools/call` con un nombre nativo (`sii__rcv__consultar`, la codificación con doble guion bajo) sigue
despachando como puerta de compatibilidad, aunque `tools/list` ya no lo anuncie. Si tu cliente guardó
esos nombres, siguen funcionando.

## Próximos pasos [#próximos-pasos]

* [Recursos máquina-legibles](/docs/agentes/recursos): llms.txt, markdown por página y el OpenAPI completo.
* [Conecta tu primera empresa](/docs/empezar/conectar): el flujo que tu agente va a iniciar.
