Servidor MCP
Claix como servidor MCP
Endpoint
https://claix.dev/mcpClaix expone un servidor Model Context Protocol (MCP) (versión 1.12.0, 25 tools) para que asistentes de IA y herramientas de automatización invoquen extracción, Modo agente, ventana de contexto, espacios de conocimiento y gestión de documentos persistidos sin escribir integraciones REST a mano.
La URL pública del servidor es https://claix.dev/mcp. La autenticación usa tu API key de Claix en la cabecera x-api-key (o el parámetro opcional api_key en cada tool si el cliente no envía cabeceras).
Las tools usan nomenclatura dot notation (claix.schemas.list, claix.extract.pdf, …) y devuelven structuredContent con success, data y error.
1. Clientes compatibles
Cualquier programa que soporte MCP puede conectarse a Claix. Estos son los más habituales en producción y desarrollo:
- Cursor
- Claude Desktop
- Claude Code
- Windsurf
- Cline
- Continue
- Zed
- Smithery
- Lovable
- Replit Agent
- ChatGPT (con conectores MCP)
- n8n
- Make
- Zapier (vía HTTP/MCP)
- LangGraph / LangChain
- Cualquier cliente MCP con Streamable HTTP o SSE
IDEs y agentes de código (Cursor, Windsurf, Cline…) suelen usar configuración JSON con la URL del servidor y cabeceras. Smithery y clientes Streamable HTTP envían JSON-RPC directamente a POST /mcp. Claude Desktop suele usar SSE vía mcp-remote (GET /mcp + POST /mcp/message).
2. Autenticación
Opción recomendada — cabecera HTTP en todas las peticiones:
x-api-key: <TU_API_KEY>
En Smithery, configura el header con x-from: { "header": "x-api-key" } para que el usuario introduzca su clave al conectar. La API key es opcional en el schema de configuración si el cliente ya envía x-api-key.
Alternativa por tool: muchas tools aceptan api_key en los argumentos si el cliente MCP no puede enviar cabeceras personalizadas.
3. Modos de transporte
| Modo | Uso típico | Cómo conectar |
|---|---|---|
| Streamable HTTP | Smithery, Cursor, clientes modernos | POST /mcp con JSON-RPC (initialize, tools/list, tools/call). Cabecera Accept: application/json, text/event-stream |
| SSE legacy | Claude Desktop, mcp-remote | GET /mcp (stream SSE) + POST /mcp/message?sessionId=… para mensajes |
Ambos modos están activos en la misma URL base. El servidor detecta automáticamente el tipo de petición.
Metadatos estáticos para escaneo (Smithery, clientes): https://claix.dev/.well-known/mcp/server-card.json
4. Flujo recomendado
- Llama
claix.schemas.listpara obtenerschema_id, tipo y si tiene Modo agente. - Usa
claix.extract.*para extracción estructurada oclaix.agent.*siis_agent_mode=true. - Envía el archivo en
file_base64(Base64 o data URL). El servidor reconstruye el multipart hacia la API REST de Claix. - Lee la respuesta en
structuredContent.data(JSON tipado) o el texto encontent. - Si el schema tiene ventana de contexto activa y la extracción devuelve
document_id, guarda ese UUID: es la referencia al documento persistido en memoria de Claix. - Con el
document_id, usaclaix.window_context.getpara leer el contenido bruto,claix.window_context.askpara preguntas en lenguaje natural, oclaix.document.deletepara eliminar el documento cuando ya no lo necesites.
5. Ventana de contexto y documentos
Cuando un schema tiene ventana de contexto habilitada, Claix persiste el documento procesado y devuelve un document_id en la extracción. Las tres tools siguientes son proxies directos a la API REST de ventana de contexto y borrado; no consumen créditos de extracción.
| Tool | API REST | Argumentos | Respuesta |
|---|---|---|---|
| claix.window_context.get | GET /get-document/{document_id} | document_id (UUID) | document_id, file_name, schema_id, processed_at, content |
| claix.window_context.ask | POST /document-context/{document_id} | document_id, questions[{ question, format }] (máx. 5; format: string|int|boolean|timestamp|array) | user_ask, ia_response tipada, log_id (con verificación de fuente: {value, source}) |
| claix.document.delete | DELETE /delete-document/{document_id} | document_id (UUID) | { document_id } — irreversible, destructiveHint |
Errores habituales en structuredContent.error: 401 (API key inválida), 404 (documento no encontrado o no pertenece a tu cuenta), 400 (parámetros inválidos). El borrado solo acepta DELETE sin body.
Prompt de workflow relacionado: workflow.window-context-ask (vía prompts/get).
6. Tools disponibles
Tras conectar, llama a tools/list para obtener las 25 tools con inputSchema, outputSchema y annotations (incluye destructiveHint en claix.document.delete):
| Tool | Descripción |
|---|---|
| claix.schemas.list | Lista schemas de la cuenta (id, nombre, tipo, is_agent_mode, agent_definition). Llama primero para obtener schema_id. |
| claix.schemas.get | Obtiene un schema por schema_id (GET /api/get-schema/{schema_id}) con su definición completa. Llamada gratuita. |
| claix.schemas.create | Crea un schema (POST /api/create-schema): name, type, schema_definition; opcional Modo agente, window_context y verificación de fuente. |
| claix.schemas.update | Actualiza un schema (PUT /api/update-schema/{schema_id}): mismo body que create; sustituye la configuración completa. Llamada gratuita. |
| claix.schemas.delete | Elimina un schema de la cuenta (POST /api/delete-schema) por schema_id. |
| claix.extract.excel | Excel/CSV → JSON tipado (POST /api/excel-json). Primera hoja. Acepta space_id opcional. Devuelve log_id. Si la verificación de fuente está activa en el schema, cada campo es {value, source}. |
| claix.extract.pdf | PDF → JSON tipado (POST /api/pdf-json). Texto o escaneado, máx. 15 MB. Acepta space_id opcional. Devuelve log_id. Si la verificación de fuente está activa en el schema, cada campo es {value, source}. |
| claix.extract.doc | Documento (.docx, .txt, .md, .rtf) → JSON (POST /api/doc-json). Acepta space_id opcional. Devuelve log_id. Si la verificación de fuente está activa en el schema, cada campo es {value, source}. |
| claix.extract.image | Imagen (JPEG, PNG, WebP, HEIC) → JSON (POST /api/img-json). Acepta space_id opcional. Devuelve log_id. Si la verificación de fuente está activa en el schema, cada campo es {value, source}. |
| claix.extract.text | Texto/HTML/XML → JSON (POST /api/txt-json). Campo content, sin archivo. Acepta space_id opcional. Devuelve log_id. Si la verificación de fuente está activa en el schema, cada campo es {value, source}. |
| claix.extract.audio | Audio (MP3, WAV, M4A, OGG; máx. 12 MB / 10 min) → JSON (POST /api/audio-json). Acepta space_id opcional. Devuelve log_id. Si la verificación de fuente está activa, cada campo es {value, source} y source cita el segundo o rango de segundos. |
| claix.convert.json_to_excel | JSON → Excel .xlsx (POST /api/json-excel). Devuelve file_base64. |
| claix.agent.excel | Excel/CSV + Modo agente → data[], agent_data y log_id (POST /agent/excel-json). Acepta space_id opcional. Si la verificación de fuente está activa en el schema, campos como {value, source}. |
| claix.agent.pdf | PDF + Modo agente → data[], agent_data y log_id (POST /agent/pdf-json). Acepta space_id opcional. Si la verificación de fuente está activa en el schema, campos como {value, source}. |
| claix.agent.doc | Documento + Modo agente (POST /agent/doc-json). Acepta space_id opcional. Devuelve data[], agent_data y log_id. Si la verificación de fuente está activa en el schema, campos como {value, source}. |
| claix.agent.image | Imagen + Modo agente (POST /agent/img-json). Acepta space_id opcional. Devuelve data[], agent_data y log_id. Si la verificación de fuente está activa en el schema, campos como {value, source}. |
| claix.agent.text | Texto/HTML/XML + Modo agente (POST /agent/txt-json). Acepta space_id opcional. Devuelve data[], agent_data y log_id. Si la verificación de fuente está activa en el schema, campos como {value, source}. |
| claix.agent.audio | Audio + Modo agente (POST /agent/audio-json). Acepta space_id opcional. Devuelve data[], agent_data y log_id. Si la verificación de fuente está activa, campos como {value, source} y source cita el segundo o rango de segundos. |
| claix.window_context.get | Contenido bruto y metadatos de un documento persistido. Proxy a GET /get-document/{document_id}. Argumentos: document_id (UUID). Devuelve success, document_id, file_name, schema_id, processed_at y content. Llamada gratuita. |
| claix.window_context.ask | Preguntas tipadas a un documento persistido. Proxy a POST /document-context/{document_id}. Argumentos: document_id y questions (array de { question, format }, máx. 5; format: string|int|boolean|timestamp|array; question ≤400 car.). Devuelve user_ask, ia_response tipada y log_id. Si la verificación de fuente está activa en consulta a documentos, cada ítem de ia_response es {value, source}. |
| claix.spaces.create | Crea un espacio de conocimiento para agrupar documentos. Proxy a POST /create-space. Único argumento: name (máx. 200 caracteres). Devuelve space_id, name y created_at. Llamada gratuita. |
| claix.spaces.add_document | Asigna un space_id a un documento que aún no tiene espacio. Proxy a POST /add-space. Argumentos: document_id y space_id. Falla si el documento ya tiene espacio. Llamada gratuita. |
| claix.spaces.remove_document | Quita el space_id de un documento. Proxy a DELETE /remove-document-from-space/{document_id}. Argumentos: document_id. Llamada gratuita. |
| claix.spaces.delete | Elimina un espacio de conocimiento. Proxy a DELETE /delete-space/{space_id}. Sin body. Argumentos: space_id. Respuesta { space_id }. Irreversible. destructiveHint. Llamada gratuita. |
| claix.space_context.ask | Preguntas tipadas cruzando todos los documentos de un espacio de conocimiento. Proxy a POST /space-context/{space_id}. Argumentos: space_id y questions (array de { question, format }, máx. 5; format: string|int|boolean|timestamp|array). Misma entrada y salida tipada que claix.window_context.ask: user_ask, ia_response y log_id. Si la verificación de fuente está activa en consulta a espacio de conocimiento, cada ítem de ia_response es {value, source}. |
| claix.document.delete | Elimina un documento persistido. Proxy a DELETE /delete-document/{document_id}. Sin body. Argumentos: document_id. Respuesta { document_id }. Irreversible. destructiveHint. Llamada gratuita. |
| claix.document.replace | Sustituye el contenido de un documento con el de otro y elimina la fuente. Proxy a POST /replace-document. Argumentos: document_id y new_content_document_id. Devuelve swap_id, version y swaps_count. Llamada gratuita. |
7. Prompts de workflow
El servidor expone prompts reutilizables vía prompts/list:
| Prompt | Descripción |
|---|---|
| workflow.discover-and-extract | Descubre schemas con claix.schemas.list y extrae JSON con claix.extract.*. |
| workflow.agent-document-analysis | Ejecuta claix.agent.* cuando el schema tiene is_agent_mode. |
| workflow.invoice-pdf | Flujo optimizado para facturas PDF con claix.extract.pdf. |
| workflow.window-context-ask | Pregunta a un document_id persistido con claix.window_context.ask (también puedes leer con claix.window_context.get o borrar con claix.document.delete). |
| workflow.space-context-ask | Crea el espacio con claix.spaces.create, agrupa documentos al extraer y pregunta a todos con claix.space_context.ask para cruzar, comparar o sumar datos repartidos en varios documentos. |
8. Resources
Recursos de documentación disponibles con resources/list:
| URI | Descripción |
|---|---|
| claix://docs/mcp | Guía de conexión MCP y catálogo de tools. |
| claix://docs/openapi | URL de la especificación OpenAPI de Claix. |
| claix://docs/tools | Catálogo JSON de todas las tools MCP. |
9. Ejemplo Smithery
Instalación one-click:
npx -y @smithery/cli run info-f4xz/claix
Configuración manual:
{
"mcpUrl": "https://claix.dev/mcp",
"headers": {
"x-api-key": "TU_API_KEY"
}
}Directorio: smithery.ai/server/info-f4xz/claix
10. Ejemplo Cursor
Añade en la configuración MCP de Cursor (Settings → MCP):
{
"mcpServers": {
"claix": {
"url": "https://claix.dev/mcp",
"headers": {
"x-api-key": "TU_API_KEY"
}
}
}
}11. Ejemplo Claude Desktop
{
"mcpServers": {
"claix": {
"command": "npx",
"args": [
"-y",
"mcp-remote",
"https://claix.dev/mcp",
"--header",
"x-api-key:TU_API_KEY"
]
}
}
}12. n8n y automatización
En n8n puedes usar un nodo HTTP Request con POST https://claix.dev/mcp, cabeceras JSON-RPC y body {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"claix.extract.pdf","arguments":{"schema_id":"…","file_base64":"…"}}}. Para ventana de contexto, cambia name a claix.window_context.get, claix.window_context.ask o claix.document.delete con document_id en arguments. También existen nodos comunitarios MCP; apunta la URL base a Claix y pasa x-api-key.