Saltar al contenido
Sırdaş
← Desarrolladores

Sırdaş para Claude Code: lee PDF y escaneos sin subirlos

Una línea en la terminal y Claude Code puede leer facturas, contratos, historias clínicas, escaneos y archivos de Office de tu disco. El servidor corre en tu equipo, sin red y sin clave de API; el modelo solo ve lo que el servidor le devuelve.

Versión publicada 0.4.3 · grabado el 2026-10-09

Instalar

Servidor MCP

En la terminal, en cualquier carpeta.

claude mcp add sirdas -- npx -y @sirdaspdf/mcp@0.4.3

Plugin (servidor + skill)

Dentro de Claude Code. Se sirve desde nuestro dominio; no es un plugin oficial de Anthropic.

/plugin marketplace add https://www.sirdaspdf.com/claude/marketplace.json
/plugin install sirdas@sirdaspdf

Pruébalo en dos minutos

Tres PDF inventados, con «SINTÉTICO» impreso, los mismos de la galería de ejemplos. Descárgalos en una carpeta nueva: (galería)

mkdir -p ~/sirdas-demo && cd ~/sirdas-demo
curl -O https://www.sirdaspdf.com/examples/factura.pdf \
     -O https://www.sirdaspdf.com/examples/contrato.pdf \
     -O https://www.sirdaspdf.com/examples/historia-clinica.pdf

Abre Claude Code en esa carpeta y pídele, con tus palabras:

  1. 1«¿De cuánto es factura.pdf, quién la emite y en qué página lo dice?»

    Llama a read_document solo lectura

    Una sola llamada: tipo de documento, cada campo con su página y la línea exacta de donde sale, y los datos personales ya cambiados por marcadores antes de llegar al modelo.

    Respuesta real de @sirdaspdf/mcp@0.4.3, recortada

    {
      "arguments": {
        "path": "factura.pdf"
      },
      "result": {
        "document_type": "factura",
        "steps": [
          "Extracted text from 1 page(s).",
          "Found 1 table(s).",
          "Identified as factura (match 1).",
          "Extracted 7 field(s) with page citations.",
          "Replaced 7 personal data item(s) with placeholders."
        ],
        "fields": [
          {
            "name": "nit_emisor",
            "value": "000000001-1",
            "page": 1,
            "evidence": "Emisor: Empresa Ficticia S.A.S. [NIT_1]"
          },
          {
            "name": "fecha_emision",
            "value": "15/09/2026",
            "page": 1,
            "evidence": "Fecha de emisión: [FECHA_1] Vence: [FECHA_2]"
          },
          {
            "name": "total",
            "value": "1.445.500",
            "page": 1,
            "evidence": "Subtotal: 1.445.500 IVA: 0 Total a pagar: 1.445.500"
          }
        ],
        "redacted": {
          "EMAIL": 1,
          "NIT": 1,
          "DOCUMENTO": 1,
          "TELEFONO": 1,
          "FECHA": 2,
          "NOMBRE": 1
        },
        "tokens": 123,
        "next_steps": [
          "pdf_tables",
          "protect_pdf"
        ]
      }
    }
  2. 2«¿Cuál es el canon y la duración del contrato de arrendamiento? Busca en toda la carpeta.»

    Llama a build_context solo lectura

    build_context lee la carpeta entera y entrega solo los bloques que responden, cada uno con su archivo, página y la línea de evidencia, y dice cuántos tokens entregó frente a los de toda la carpeta. Con cinco PDF de una página la diferencia es pequeña: la cifra se mide en cada llamada, sobre tus propios archivos.

    Respuesta real de @sirdaspdf/mcp@0.4.3, recortada

    {
      "arguments": {
        "query": "¿Cuál es el canon y la duración del contrato de arrendamiento?",
        "max_results": 2
      },
      "result": {
        "items": [
          {
            "source": "contrato.pdf",
            "pages": [
              1,
              1
            ],
            "section": [
              "Contrato de arrendamiento de vivienda urbana"
            ],
            "relevance": 1,
            "evidence": "Canon mensual: $ 1.500.000, pagadero los cinco primeros días de cada mes."
          },
          {
            "source": "contrato.pdf",
            "pages": [
              1,
              1
            ],
            "section": [],
            "relevance": 0.163,
            "evidence": "SINTÉTICO · documento inventado para la galería de Sirdas PDF"
          }
        ],
        "stats": {
          "source_tokens": 456,
          "context_tokens": 243,
          "tokens_saved": 213
        },
        "documents": 5
      }
    }
  3. 3«Pásame la tabla de conceptos de la factura en CSV.»

    Llama a pdf_tables solo lectura

    Las tablas salen por columnas, no como texto corrido. Los importes se quedan como estaban en el documento.

    Respuesta real de @sirdaspdf/mcp@0.4.3, recortada

    {
      "arguments": {
        "path": "factura.pdf"
      },
      "result": {
        "total": 1,
        "tables": [
          {
            "page": 1,
            "columns": 3,
            "csv": "↓ 1"
          }
        ]
      }
    }

    ↓ 1

    Concepto,Cant,Valor
    Consulta general,1,80.000
    Examen de laboratorio,3,245.500
    Ecografía abdominal,1,1.120.000
  4. 4«Convierte historia-clinica.pdf a Markdown sin datos personales para pegarlo en otro chat.»

    Llama a pdf_to_markdown solo lectura

    Nombre, cédula, fecha y número de historia salen como [NOMBRE_1], [DOCUMENTO_1]…; el diagnóstico y el plan se quedan, que es lo que el modelo necesita. Es por reglas: revisa antes de compartir.

    Respuesta real de @sirdaspdf/mcp@0.4.3, recortada

    {
      "arguments": {
        "path": "historia-clinica.pdf"
      },
      "result": {
        "markdown": "↓ 1",
        "tokens_estimate": 108,
        "redacted": {
          "HISTORIA_CLINICA": 1,
          "DOCUMENTO": 1,
          "FECHA": 1,
          "NOMBRE": 2
        }
      }
    }

    ↓ 1

    SINTÉTICO · documento inventado para la galería de Sirdas PDF
    ## Historia clínica · Consulta externa
    Paciente: [NOMBRE_1] C.C. [DOCUMENTO_1]  
    Historia clínica N.º [HISTORIA_CLINICA_1] Fecha: [FECHA_1]  
    Motivo de consulta: dolor abdominal de tres días de evolución.  
    Diagnóstico: gastritis aguda (K29.1).  
    Plan: omeprazol 20 mg cada 24 horas por 14 días. Control en un mes.  
    Médico tratante: Dra. [NOMBRE_2], registro 000000.
  5. 5«Une factura.pdf y contrato.pdf en expediente.pdf.»

    Llama a merge_pdfs escribe un archivo

    Esta escribe un archivo, así que el servidor la declara como herramienta que escribe (readOnlyHint: false) y tu cliente puede pedirte permiso antes. Nunca pisa un archivo que ya exista salvo con overwrite.

    Respuesta real de @sirdaspdf/mcp@0.4.3, recortada

    {
      "arguments": {
        "paths": [
          "factura.pdf",
          "contrato.pdf"
        ],
        "output": "expediente.pdf"
      },
      "result": {
        "output": "expediente.pdf",
        "inputs": 2,
        "bytes": 2473
      }
    }

Limítalo a una carpeta

Solo una carpeta

Sin SIRDAS_ROOT, la raíz es la carpeta desde la que abres Claude Code. Con ella, el servidor rechaza cualquier ruta de fuera, enlaces simbólicos incluidos.

claude mcp add sirdas -e SIRDAS_ROOT="$HOME/sirdas-demo" -- npx -y @sirdaspdf/mcp@0.4.3

Dos variables cambian lo que el agente puede tocar:

Lo que ocupa en tu contexto

La descripción de las herramientas viaja en cada conversación. Medido sobre 0.4.3 (caracteres / 4):

ModoHerramientasTokens aprox.
Todas30~14.000
SIRDAS_TOOLSETS=core15~6.800
SIRDAS_READ_ONLY=119~8.600

Comprueba que está conectado

claude mcp list debe decir «sirdas … Connected». Dentro de Claude Code, /mcp enseña sus herramientas.

Si no aparece: node -v tiene que ser 20 o más, y el cliente tiene que reiniciarse tras cambiar la configuración. El primer arranque descarga el paquete con npx; los siguientes, no.

Qué probamos y qué no

Probado: el comando de arriba registra el servidor publicado y claude mcp list lo da por conectado. La grabación de los pasos es del servidor con el cliente oficial del SDK de MCP, no de una conversación con Claude Code: qué herramienta elige el agente depende del modelo; lo que devuelve, no.

Nuevo en 0.4.3

Llegó con esta versión, así que funciona con la instalación de arriba:

Otros agentes