Kelova Docs

MCP

Conectar el conocimiento indexado de tu tenant a un agente IA externo

Cada tenant tiene su propio servidor MCP (Model Context Protocol) — un endpoint que expone tu conocimiento indexado como una tool (search_knowledge) para que cualquier cliente MCP compatible (Claude Desktop, Claude Code, Cursor, tu propio agente) lo consulte con trazabilidad de fuente.

Crear un endpoint

Requiere JWT y rol admin. La API key se genera y se muestra una sola vez en esta respuesta — Kelova solo guarda el hash (bcrypt), nunca el valor en texto plano.

curl -X POST https://api.kelova.app/tenants/me/mcp \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Claude Desktop",
    "description": "Conector para el equipo de soporte"
  }'

Respuesta (201):

{
  "endpoint": {
    "id": "e1f2a3...",
    "tenant_id": "t9f8e7...",
    "name": "Claude Desktop",
    "description": "Conector para el equipo de soporte",
    "api_key_prefix": "kva_7f3d",
    "hosted": true,
    "status": "active",
    "total_queries": 0,
    "created_at": "2026-07-10T09:00:00Z",
    "endpoint_url": "https://api.kelova.app/mcp/tuempresa"
  },
  "api_key": "kva_7f3d9c1e2b4a5f6d8e0c1a2b3c4d5e6f"
}

Copia api_key de inmediato — la respuesta de este endpoint es la única vez que Kelova lo revela. Si lo pierdes, la única opción es rotarlo (abajo); no existe un endpoint para "ver la key actual".

Listar endpoints

curl https://api.kelova.app/tenants/me/mcp \
  -H "Authorization: Bearer <token>"
{
  "endpoints": [
    {
      "id": "e1f2a3...",
      "tenant_id": "t9f8e7...",
      "name": "Claude Desktop",
      "api_key_prefix": "kva_7f3d",
      "hosted": true,
      "status": "active",
      "total_queries": 128,
      "last_used_at": "2026-07-10T08:30:00Z",
      "created_at": "2026-07-01T09:00:00Z",
      "endpoint_url": "https://api.kelova.app/mcp/tuempresa"
    }
  ]
}

api_key_prefix es lo único que se puede mostrar de la key después de crearla — úsalo para que el usuario identifique cuál endpoint es cuál.

Rotar la key

curl -X POST https://api.kelova.app/tenants/me/mcp/rotate-key \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{"endpoint_id": "e1f2a3..."}'
{
  "endpoint_id": "e1f2a3...",
  "api_key": "kva_9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d"
}

La key anterior queda invalidada de inmediato. Igual que en la creación, este valor solo se muestra una vez.

Analytics de uso

curl "https://api.kelova.app/tenants/me/mcp/analytics?period=30d" \
  -H "Authorization: Bearer <token>"

period acepta 7d, 30d (default), 90d.

{
  "period_days": 30,
  "total_requests": 842,
  "latency_p50_ms": 210,
  "latency_p95_ms": 640,
  "total_tokens_in": 15200,
  "total_tokens_out": 48300,
  "overage_requests": 0,
  "by_endpoint": [
    { "endpoint_id": "e1f2a3...", "requests": 842, "latency_p50_ms": 210 }
  ]
}

Nunca incluye el texto de las queries ni de las respuestas — solo metadata agregada.

Conectar el servidor MCP

El endpoint MCP vive en https://api.kelova.app/mcp/{tenant_slug} (el mismo endpoint_url que devuelve la API) y habla JSON-RPC 2.0 sobre HTTP. La autenticación es por API key en el header Authorization: Bearer <api_key>no es un JWT de usuario.

Agrega este bloque a tu mcp.json (por ejemplo .cursor/mcp.json):

{
  "mcpServers": {
    "kelova": {
      "url": "https://api.kelova.app/mcp/tuempresa",
      "headers": {
        "Authorization": "Bearer <TU_API_KEY>"
      }
    }
  }
}

Claude Desktop y Claude Code no usan mcp.json para servidores remotos HTTP — agrega la URL como conector personalizado (Settings → Connectors → Add custom connector), usando la misma url y el mismo header Authorization: Bearer <TU_API_KEY> que arriba.

Reemplaza <TU_API_KEY> con la key que copiaste al crear o rotar el endpoint — nunca se vuelve a mostrar (R6, arriba).

Qué expone el servidor

El servidor implementa el protocolo MCP estándar (initialize, tools/list, tools/call) y una sola tool:

ToolDescripción
search_knowledgeBusca en los documentos indexados del workspace. Parámetros: query (string, requerido), top_k (integer, opcional, default 5).

Cada resultado incluye source_file, location, synced_at y similarity — la misma trazabilidad de fuente que POST /agent/query (ver Agentes).

Endpoints públicos (sin autenticación)

Útiles para health checks o para que un cliente MCP descubra las capacidades del servidor antes de conectarse:

curl https://api.kelova.app/mcp/registry-manifest
curl https://api.kelova.app/mcp/health

On this page