# Servidor MCP

> Conecta Claude Code, Cursor y otras herramientas de IA a tu cuenta de intoCHAT a través de su servidor MCP remoto: el endpoint, las claves de API y los ámbitos, la configuración de cada cliente, las herramientas y los límites.

intoCHAT tiene un servidor MCP remoto. MCP (Model Context Protocol) es la forma estándar en que herramientas de IA como Claude Code y Cursor se conectan a otros servicios. Una vez que conectas la tuya, puedes pedirle con tus propias palabras que liste tus agentes, lea sus conversaciones y leads, añada textos y pares de pregunta y respuesta, elimine fuentes o envíe un mensaje de prueba a un agente, y ella llama a intoCHAT por ti.

El servidor MCP usa las mismas claves de API, ámbitos, plan y límite de frecuencia que la [API REST](/es/docs/rest-api), y sus herramientas hacen exactamente lo mismo que los endpoints REST correspondientes.

## Endpoint

```text
https://www.intochat.ai/api/mcp
```

El servidor usa el transporte Streamable HTTP. Cada petición necesita tu clave de API en la cabecera `Authorization`:

```text
Authorization: Bearer ic_live_YOUR_KEY
```

Usa la dirección con `www`, como arriba.

> Todavía no se admite el inicio de sesión con OAuth. Los clientes que solo pueden conectarse con OAuth, como los conectores personalizados de Claude.ai y de la app de escritorio de Claude, o los conectores de ChatGPT, de momento no pueden usar el servidor. Funcionan los clientes que te dejan poner una cabecera: Claude Code, Cursor, el MCP Inspector y la app de escritorio de Claude a través de un puente local (consulta [Otros clientes](#otros-clientes)).

## Antes de empezar

El servidor MCP está incluido en **Starter**, **Pro** y **Enterprise**, como la API REST. En **Free** no puedes crear claves de API, y una cuenta que vuelve a Free recibe un error en cada petición hasta que vuelve a estar en Starter o superior.

Necesitas una clave de API. Solo el propietario de la cuenta y los admins pueden crearla.

## Crear una clave de API

1. En la barra lateral, en **Settings**, haz clic en **API keys**.
2. En **Create a key**, ponle a la clave un **Name**, por ejemplo `Claude Code`.
3. En **Access**, elige qué puede hacer la herramienta de IA. **Every scope, including ones added later** permite todas las herramientas. Para que sea de solo lectura, elige **Only the scopes I choose** y marca solo los ámbitos `:read`. Consulta en [Herramientas](#herramientas) el ámbito que necesita cada una.
4. Haz clic en **Create key**, después en **Copy**, y haz clic en **I've saved it**. La clave solo se muestra una vez.

Una clave funciona para todos los agentes de la cuenta. Trátala como una contraseña: no la pongas en archivos que subes a un repositorio o compartes, y revócala en la página **API keys** si otra persona puede tenerla. Consulta [Crear una clave de API](/es/docs/rest-api#crear-una-clave-de-api) en la documentación de la API REST para más detalles.

## Conectar Claude Code

Ejecuta esto en un terminal, con tu clave en lugar de `ic_live_YOUR_KEY`:

```bash
claude mcp add --transport http intochat https://www.intochat.ai/api/mcp \
  --header "Authorization: Bearer ic_live_YOUR_KEY"
```

Así se añade el servidor para el proyecto actual, solo en tu ordenador. Para usarlo en todos los proyectos, añade `--scope user` antes de `--transport`.

Para compartir la configuración con tu equipo en el `.mcp.json` del proyecto sin la clave, lee la clave de una variable de entorno:

```json
{
  "mcpServers": {
    "intochat": {
      "type": "http",
      "url": "https://www.intochat.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer ${INTOCHAT_API_KEY}"
      }
    }
  }
}
```

Después escribe `/mcp` en Claude Code para comprobar que **intochat** está conectado, y pide, por ejemplo: «Lista mis agentes de intoCHAT».

## Conectar Cursor

En los ajustes de Cursor, abre la sección de MCP y añade un servidor, o edita `~/.cursor/mcp.json` (todos los proyectos) o `.cursor/mcp.json` en un proyecto:

```json
{
  "mcpServers": {
    "intochat": {
      "url": "https://www.intochat.ai/api/mcp",
      "headers": {
        "Authorization": "Bearer ic_live_YOUR_KEY"
      }
    }
  }
}
```

Las herramientas de intoCHAT aparecen entonces en la lista de herramientas MCP, y el agente de Cursor puede usarlas.

## Otros clientes

Puede conectarse cualquier cliente MCP que admita el transporte Streamable HTTP y te deje añadir una cabecera. Dale el [endpoint](#endpoint) y la cabecera `Authorization`.

**App de escritorio de Claude.** Sus ajustes de **Connectors** necesitan OAuth, que todavía no se admite. En su lugar, añade el servidor a `claude_desktop_config.json` a través del puente de código abierto `mcp-remote`, que necesita Node.js en tu ordenador:

```json
{
  "mcpServers": {
    "intochat": {
      "command": "npx",
      "args": ["-y", "mcp-remote", "https://www.intochat.ai/api/mcp", "--header", "Authorization:${INTOCHAT_AUTH}"],
      "env": {
        "INTOCHAT_AUTH": "Bearer ic_live_YOUR_KEY"
      }
    }
  }
}
```

**MCP Inspector.** Ejecuta `npx @modelcontextprotocol/inspector`, elige **Streamable HTTP**, introduce el endpoint y añade la cabecera `Authorization`. Conéctate a través del proxy del Inspector: el servidor rechaza las peticiones hechas directamente desde una página web de otro sitio.

**Probar con curl.** Cada petición es un mensaje JSON-RPC en un POST:

```bash
curl https://www.intochat.ai/api/mcp \
  -H "Authorization: Bearer ic_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -H "Accept: application/json, text/event-stream" \
  -H "MCP-Protocol-Version: 2025-11-25" \
  -d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list"}'
```

El servidor habla las versiones de MCP `2026-07-28` y de `2025-03-26` a `2025-11-25`, responde a cada petición con JSON y no guarda ninguna sesión entre peticiones.

## Herramientas

| Herramienta | Ámbito | Qué hace |
| --- | --- | --- |
| `list_agents` | `agents:read` | Lista los agentes de la cuenta con sus IDs, su estado de entrenamiento y sus recuentos. |
| `get_agent` | `agents:read` | Obtiene un agente. |
| `chat_with_agent` | `chat` | Envía un mensaje a un agente y devuelve su respuesta. Cada respuesta cuenta como un mensaje de tu plan. |
| `list_conversations` | `conversations:read` | Lista las conversaciones de un agente, de la más reciente a la más antigua, sin transcripciones. |
| `get_conversation` | `conversations:read` | Obtiene una conversación con su transcripción. |
| `list_leads` | `leads:read` | Lista los leads que captó un agente, del más reciente al más antiguo. |
| `list_contacts` | `leads:read` | Lista los [contactos](/es/docs/contacts) de un agente, del más reciente al más antiguo, o busca uno por `email` o `external_id`. |
| `upsert_contact` | `contacts:write` | Crea o actualiza un contacto por `external_id`, si no por `email`, con `phone`, `name` y `attributes` (un objeto; `null` quita un atributo). |
| `list_sources` | `sources:read` | Lista las fuentes de conocimiento de un agente, su progreso de entrenamiento y los caracteres que usa. |
| `add_text_source` | `sources:write` | Añade un texto con un título e inicia el entrenamiento. |
| `add_qa_pair` | `sources:write` | Añade una pregunta y su respuesta e inicia el entrenamiento. Si el agente ya tiene la misma pregunta, se sustituye su respuesta. |
| `delete_source` | `sources:write` | Elimina una fuente y lo que el agente aprendió de ella. No se puede deshacer. |

Cada herramienta devuelve los mismos datos que su endpoint REST, como JSON. `list_conversations`, `list_leads` y `list_contacts` admiten de forma opcional `limit` (de 1 a 100), `cursor` y `since`, como se explica en [Paginación](/es/docs/rest-api#paginacion).

Las herramientas están marcadas como de solo lectura o no, y `delete_source`, `add_qa_pair` y `upsert_contact` como capaces de cambiar lo que ya existe, para que tu herramienta de IA pueda preguntarte antes de usarlas. Muchas herramientas de IA piden tu confirmación antes de ejecutar cualquier herramienta.

Si la clave no tiene el ámbito que necesita una herramienta, la herramienta responde con un error que nombra el ámbito, y no ocurre nada. Un agente, una conversación o una fuente de otra cuenta da «not found», igual que uno que no existe.

No hay herramientas para crear agentes ni para cambiar sus ajustes o instrucciones. Eso se hace en el panel.

## Chatear con un agente

`chat_with_agent` envía un mensaje real, que responde el mismo código que el widget del chat, a partir del conocimiento, las instrucciones y las acciones del agente. Úsalo para probar cómo responde un agente.

- Cada respuesta cuenta como un mensaje de tu plan y para el [tope mensual de mensajes](/es/docs/limits-and-access#tope-mensual-de-mensajes) del agente, si has fijado uno. Consulta [Qué cuenta como mensaje](/es/docs/plans-and-limits#que-cuenta-como-mensaje).
- Omite `conversationId` para empezar una conversación nueva. Para continuar una, pasa el `conversationId` de la respuesta anterior.
- Las conversaciones aparecen en la pestaña **Conversations** del agente como cualquier otra.
- A un agente privado no se puede llegar de esta forma. Consulta [Agentes privados](/es/docs/allowed-domains#agentes-privados).

Pide a tu herramienta de IA que no envíe muchos mensajes seguidos salvo que sea tu intención: cada uno gasta mensajes de tu plan.

## Límites

- **Plan:** Starter, Pro o Enterprise. En Free, las peticiones se rechazan.
- **Límite de frecuencia:** 60 peticiones por minuto por clave, compartidas con la API REST. Conectarse cuesta unas cuantas peticiones, y también cada llamada a una herramienta. Por encima del límite, las peticiones se rechazan durante el resto del minuto. Una clave aparte para tu herramienta de IA evita que gaste las peticiones de tu servidor.
- **Mensajes:** cada respuesta de `chat_with_agent` cuenta como un mensaje de tu plan. Una respuesta tiene que terminar en 55 segundos.
- **Inicio de sesión:** solo claves de API. Todavía no se admite OAuth, así que los clientes que lo necesitan no pueden conectarse.
- **Fuentes:** solo textos y pares de pregunta y respuesta. Las páginas web, los archivos y las páginas de Notion se añaden en el panel.
- **Sin actualizaciones en directo:** el servidor responde a cada petición y no envía notificaciones.

Si tu cliente no puede conectarse, mira el error que muestra: una clave no válida o revocada se rechaza con `401`, una cuenta en Free con `403`, y demasiadas peticiones con `429`.

## Siguientes pasos

- Llama a intoCHAT desde tu propio código: [API REST](/es/docs/rest-api).
- Recibe en tu servidor los leads y los traspasos en cuanto ocurren: [Webhooks](/es/docs/webhooks).
- Escribe buenos textos y pares de pregunta y respuesta: [Texto y preguntas](/es/docs/text-and-qa).
