PDF Reader
Lee texto, metadatos y número de páginas de archivos PDF de forma segura dentro del contexto del proyecto.
Documentación
Citra
Dale ojos a tu agente de IA para PDFs — con pruebas.
Evidencia PDF local-primero para agentes. Texto estructurado, tablas, OCR, recortes visuales y citas a nivel de página que tu agente puede defender — no inventar.
Paquete canónico @sylphx/citra · bin citra · MCP io.github.SylphxAI/citra · live 5.0.0
Configuración cero en una línea
npx -y @sylphx/citra
Sin Docker. Sin clave de API. Sin instalación global. Lanza un servidor MCP stdio que los agentes pueden usar de inmediato.
| Cliente | Configuración |
|---|---|
| Cualquier agente / CLI | npx -y @sylphx/citra |
| Claude Code | claude mcp add citra -- npx -y @sylphx/citra |
| Claude Desktop / Cursor / VS Code / Codex | "command": "npx", "args": ["-y", "@sylphx/citra"] |
| CLI global | npm i -g @sylphx/citra → citra |
Por qué Citra se siente injustamente bueno
Las herramientas de PDF en texto plano hacen que los agentes adivinen. Citra devuelve un Gemelo de Documento de Agente que pueden citar.
| Dolor hoy | Con Citra |
|---|---|
| Números de página inventados o faltantes | Página + geometría + procedencia |
| Tablas aplanadas en sopa | Filas · columnas · celdas · cuadros delimitadores |
| Los PDFs escaneados se vuelven ruido | Ruta OCR vinculada a evidencia |
| Instalación / configuración / “esperar que funcione” | npx -y — listo |
| Retrocesos silenciosos del motor | Cierre seguro si falta el binario nativo |
Cinco razones por las que los equipos eligen Citra
- Configuración cero — MCP real de
npx, no un arranque de 20 pasos. - Evidencia, no vibraciones — citas que los agentes pueden mostrar a un humano.
- Local-primero — los PDFs permanecen en la máquina; sin API de visión en la nube requerida.
- Marca única — un paquete, un binario, una historia (
@sylphx/citra/citra). - Familia de instrumentos — compón con Iris (imagen), Cue (video), Spine, Lookout, Locus.
Ve la diferencia
| Sin evidencia | Con Citra |
|---|---|
| “Los ingresos fueron de aproximadamente $12M” | “Página 14, Tabla 3, celda (fila 4, col 2) = $12.4M” |
| Estructura de tabla perdida | Filas, columnas, celdas, cuadros delimitadores |
| PDF escaneado = texto basura | OCR con evidencia vinculada a página |
| Texto oculto / adversarial ignorado | Señales de confianza cuando se solicitan |
Lo que obtienes
Tres herramientas. Una superficie de producto.
| Herramienta | Para qué la usan los agentes |
|---|---|
read_pdf | Predeterminado inteligente: markdown, tablas, estructura, OCR, citas |
search_pdf | Encuentra coincidencias de página + fragmento antes de la lectura profunda |
pdf_evidence | Recortes, renderizados, inspección, operaciones de evidencia enfocadas |
Llamada mínima:
{
"sources": [{ "path": "/absolute/path/to/report.pdf" }]
}
Casos de uso principales
- Informes financieros — extrae celdas de tabla que los agentes pueden citar por página y geometría
- Artículos de investigación — encabezados, orden de lectura, citas a nivel de página
- Documentos escaneados — ruta OCR con evidencia, no una sopa de texto
Plataformas
Un paquete nativo opcional se selecciona solo para tu host:
| Plataforma | Paquete nativo |
|---|---|
| macOS arm64 | @sylphx/citra-darwin-arm64 |
| macOS x64 | @sylphx/citra-darwin-x64 |
| Linux x64 | @sylphx/citra-linux-x64-gnu |
| Linux arm64 | @sylphx/citra-linux-arm64-gnu |
| Windows x64 | @sylphx/citra-win32-x64-msvc |
Nativo faltante → cierre seguro (sin motor PDF TypeScript silencioso).
Documentación del producto
| Doc | Propósito |
|---|---|
| docs/POSITIONING.md | Posicionamiento estratégico |
| docs/COMPETITIVE.md | Anclas de pares y cuña |
| docs/EVIDENCE_CONTRACT.md | Evidencia = contrato de resultados |
| docs/TOOL_SURFACE.md | Política de pocas herramientas claras |
| docs/PRODUCT_INDEPENDENCE.md | Este repositorio es la SSOT |
| docs/IPPB.md | Barra de producto pública independiente |
| docs/PUBLISH.md | Estado de publicación npm / git |
| docs/guide/installation.md | Configuración de instalación y host |
| skills/citra/SKILL.md | Superficie de habilidades del agente |
Superficies (MCP · CLI · SDK)
MCP (ruta de agente predeterminada)
npx -y @sylphx/citra
Claude Desktop / Cursor / VS Code / Codex
{
"mcpServers": {
"citra": {
"command": "npx",
"args": ["-y", "@sylphx/citra"]
}
}
}
Los hosts de doble era que envían server/discover antes de initialize (p. ej. Gemini Antigravity CLI) son compatibles en stdio.
CLI
npx -y @sylphx/citra --help
SDK
@sylphx/citra/sdk→Citra(read/search/evidence)@sylphx/citra/pure-rust→ helpers de cliente de bajo nivel- Mismas herramientas que MCP:
read_pdf·search_pdf·pdf_evidence - Requiere el paquete nativo opcional de la plataforma (igual que MCP)
Huella de instalación (honesta)
Compara instalaciones limpias completas, no “tarball de envoltorio JS vs ejecutable nativo”:
| Métrica (instalación limpia medida, linux-x64) | TS histórico 3.0.14 | Linaje Sole-Rust 4.1.0 |
|---|---|---|
| Paquete principal en disco | ~403 KB | ~77 KB |
node_modules completo | ~82.3 MiB | ~24.4 MiB (~3.4× más pequeño) |
| Archivos instalados | 4,101 | 20 (~205× menos) |
| Dependencias npm de producción | PDF.js + SDK TS de MCP + más | {} + un nativo de plataforma |
El binario nativo ocupa varios megabytes porque es el motor PDF. Eso es esperado — y sigue siendo una instalación más limpia que distribuir PDF.js + un árbol JS grande.
Detalles: comparación de huella de instalación
Rendimiento (acotado por método)
A/B de doble modo mismo-host linux-x64 controlado vs @sylphx/pdf-reader-mcp@3.0.14 histórico, usando nativos sole-Rust instalados desde el registro (medido en el linaje 4.1.x; el método aplica a los paquetes sole-Rust actuales):
| Modo | Qué mide | Resultado |
|---|---|---|
persistent_warm | servidor de larga duración, read_pdf local idéntico repetido después del calentamiento | mejora de latencia mediana de ≥ ~10× en las 8 clases de fixtures requeridas |
startup_inclusive | spawn + inicialización + una tarea | gran ventaja en los mismos fixtures |
persistent_warm incluye una caché local al proceso para path+opciones locales idénticos. La primera solicitud en un proceso aún paga el costo completo de análisis.
No es una garantía multi-host. Detalles: informe 4.1.0 · política de afirmaciones
Nota del motor
La producción actual es un motor Rust nativo en plataformas compatibles a través de un lanzador Node delgado.
Local-primero. Cinco paquetes de plataforma. Una instalación limpia. Cierre seguro sin el nativo correspondiente.
Los CMaps ToUnicode con formato inusual o rotos se manejan sin fallar; el binario de release es panic-unwind, por lo que un pánico en un hilo de trabajo falla la solicitud en lugar de abortar el proceso (#608).
Historial de ingeniería y pines de recuperación: docs/migration.md — no es el discurso del producto.
Prueba del producto y enlaces
Detén las alucinaciones de PDF. Dales pruebas a los agentes.
npx -y @sylphx/citra