Dokumen-Pintar
62 herramientas conscientes del formato para que la IA lea y edite archivos de Word, Excel y PDF con precisión, además de revisión de documentos académicos según estándares de Indonesia.
Documentación
Dokumen-Pintar
Servidor MCP universal para CRUD de documentos en múltiples formatos
Lee, escribe, busca y gestiona archivos de texto, Office y PDF
desde cualquier agente de IA que soporte el Protocolo de Contexto de Modelo.
Características · Formatos · Inicio rápido · Herramientas · Documentación · Benchmark · Contribuciones
Por qué Dokumen-Pintar
La mayoría de los servidores MCP de sistema de archivos se limitan a "lee este archivo, escribe ese archivo". Dokumen-Pintar trata los documentos como datos estructurados que la IA puede navegar. Dile a un agente que actualice un párrafo por índice, que establezca una celda por Sheet1!B2, que recorra un árbol JSON con JSONPath, que genere un DOCX desde Markdown: funciona igual en todos los formatos compatibles.
Cada herramienta de mutación crea una instantánea del archivo primero. Cada acción queda registrada en un registro de auditoría. Cada ruta está aislada en raíces que tú aceptas. La configuración predeterminada es sensata; los perfiles cubren el resto.
Características
|
Aislamiento multiraíz — Define múltiples raíces de espacio de trabajo con control de 10 formatos — Texto plano, Markdown, LaTeX, JSON / YAML, CSV / TSV, XML / SVG, DOCX, XLSX, PPTX, PDF. 62 herramientas MCP — CRUD de archivos y contenido, acceso estructurado, operaciones por lotes, búsqueda, versionado, metadatos, creación, extracción de imágenes, secciones, plantillas, TOC, bibliografía, comparación de documentos, lint: todo expuesto como herramientas invocables. Creación — Genera DOCX o PDF desde una especificación JSON o fuente Markdown mediante |
Acceso estructurado — JSONPath para JSON / YAML, XPath para XML, celda / rango / hoja para XLSX, párrafo / tabla para DOCX, diapositiva para PPTX, página para PDF. Versionado automático — Instantáneas de copia al escribir en cada escritura. Deshacer, comparar, restaurar y purgar en cualquier momento. Capa de metadatos — Lee, escribe, elimina o extrae EXIF, propiedades principales de OOXML y docinfo de PDF a través de una API consistente. Registro de auditoría — Cada mutación se registra en JSONL con marca de tiempo y detalles de la operación. 2 transportes — stdio (Claude Desktop, Cursor, VS Code, Windsurf) y HTTP / SSE. |
Formatos compatibles
| Formato | Lectura | Escritura | Consulta estructurada | Búsqueda |
|---|---|---|---|---|
| Texto plano / Markdown | ✅ | ✅ | — | ✅ |
| JSON | ✅ | ✅ | JSONPath $.key | ✅ |
| YAML | ✅ | ✅ | JSONPath $.key | ✅ |
| CSV / TSV | ✅ | ✅ | row:N · col:NAME · cell:row:N,col:NAME | ✅ |
| XML / SVG | ✅ | ✅ | XPath //node | ✅ |
| DOCX | ✅ | ✅ | paragraph:N · table:N | ✅ |
| XLSX | ✅ | ✅ | cell:Sheet!A1 · range: · sheet: | ✅ |
| PPTX | ✅ | ✅ | slide:N · slide_title:N | ✅ |
| ✅ | — | page:N · outline · metadata | ✅ |
Inicio rápido
1. Instalación
pip install dokumen-pintar
Desde el código fuente (desarrollo)
git clone https://github.com/firdausmntp/Dokumen-Pintar.git
cd Dokumen-Pintar
pip install -e ".[dev]"
Con búsqueda semántica
pip install dokumen-pintar[semantic]
2. Crea una configuración
dokumen-pintar-init
O crea una manualmente:
{
"roots": [
{ "name": "documents", "path": "~/Documents", "writable": true },
{ "name": "projects", "path": "~/Projects", "writable": true }
]
}
Todos los demás campos son opcionales con valores predeterminados sensatos. Consulta docs/CONFIG.md.
3. Ejecuta
dokumen-pintar --config dokumen-pintar.config.json
Raíces ad-hoc sin archivo de configuración
Anula o reemplaza las raíces de configuración desde la línea de comandos: útil para sesiones puntuales o scripts:
# Single writable root, no config file required
dokumen-pintar --root docs:/path/to/folder
# Multiple roots, mix read-only and writable, choose stdio transport
dokumen-pintar \
--root project:/repo:rw \
--root refs:/library:ro \
--transport stdio
# Force every root to read-only (overrides config + --root)
dokumen-pintar --config myconfig.json --read-only
# Path-only shorthand (root name derived from basename)
dokumen-pintar --root /home/me/Documents
Verificación de estado
dokumen-pintar-doctor --config dokumen-pintar.config.json
Verifica la validez de la configuración, la existencia de las raíces, la capacidad de escritura de instantáneas .mcpdocs,
los manejadores registrados y las dependencias opcionales de búsqueda semántica.
4. Conéctate a un cliente de IA
Claude Desktop
Añade a tu claude_desktop_config.json:
{
"mcpServers": {
"dokumen-pintar": {
"command": "dokumen-pintar",
"args": ["--config", "/path/to/dokumen-pintar.config.json"]
}
}
}
Cursor / VS Code / Windsurf
Usa el mismo transporte stdio. Apunta la configuración MCP de tu IDE al comando dokumen-pintar y a la ruta de configuración.
HTTP/SSE (remoto o multicliente)
{
"transport": {
"stdio": false,
"http": { "enabled": true, "port": 7878 }
}
}
Inicia el servidor y conecta tu cliente a http://127.0.0.1:7878.
Ejemplos de uso
# List available workspace roots
workspace_list_roots()
# Read a Word document
content_read(path="documents:/reports/q1.docx")
# Create a new file
file_create(path="documents:/notes/todo.txt", content="Hello World")
# Find & replace inside a file
content_replace(path="documents:/notes/todo.txt", old="World", new="Everyone")
# Full-text search across all PDFs
search_content(query="budget 2024", format="pdf")
# Read an Excel cell
structured_get(path="documents:/data.xlsx", expr="cell:Sheet1!B2")
# Update a JSON key
structured_set(path="documents:/config.json", expr="$.database.port", value=5432)
# Delete an XML node
structured_delete(path="documents:/data.xml", expr="//item[@id='old']")
# Batch rename (dry-run first)
batch_rename(glob="*.txt", pattern="draft_", replacement="final_", dry_run=true)
# Undo last change
version_undo(path="documents:/reports/q1.docx")
Guía completa con recetas: docs/USAGE.md
Resumen de herramientas
62 herramientas MCP organizadas por categoría:
| Categoría | Herramientas |
|---|---|
| Espacio de trabajo | workspace_list_roots · workspace_stat · workspace_tree · workspace_diagnose |
| CRUD de archivos | file_create · file_delete · file_rename · file_copy · file_move |
| Contenido | content_read · content_write · content_append · content_insert · content_replace · content_delete_range · content_patch · content_diff |
| Estructurado | struct_get · struct_set · struct_delete · struct_meta |
| Metadatos | metadata_read · metadata_write · metadata_delete · metadata_strip · metadata_read_batch |
| Creación | validate_spec · compose_docx · compose_pdf · compose_from_markdown · compose_to_markdown |
| Secciones | section_extract · section_merge |
| Imágenes | image_list · image_extract · image_extract_all · image_replace |
| Plantillas | template_list · template_install · template_render · template_render_named |
| TOC y bibliografía | toc_generate · bibliography_check · bibliography_format |
| Comparar y lint | document_compare · document_lint · document_lint_fix |
| Lote | batch_rename · batch_replace_content · batch_replace_structured · batch_delete |
| Búsqueda | search_filename · search_content · search_in_format |
| Versionado | version_list · version_diff · version_restore · version_undo · version_purge |
| Semántico * | search_semantic · semantic_index_path · semantic_stats |
* Solo se registra cuando semantic_search.enabled = true y el extra [semantic] está instalado.
Referencia completa de parámetros: docs/TOOLS.md
Arquitectura
flowchart TD
Client["AI Client\n(Claude, Cursor, VS Code, ...)"]
Client -->|"MCP protocol\n(stdio or HTTP/SSE)"| Server
subgraph Server["dokumen-pintar server"]
PG["PathGuard\nsandboxed multi-root"]
H["Handlers\n9 format parsers"]
V["Versions\ncopy-on-write snapshots"]
A["AuditLog\nJSONL mutation log"]
S["Search\nfilename + content"]
SE["Semantic\nvector index (optional)"]
end
Server --> FS["Filesystem\n(sandboxed workspace roots)"]
Detalles completos: docs/ARCHITECTURE.md
Pruebas
pip install -e ".[dev]"
pytest
1403Pruebas superadas |
100%Cobertura de línea + rama |
100%Umbral mínimo |
-n autoParalelo mediante xdist |
Informe de cobertura HTML: htmlcov/index.html
Números de rendimiento y metodología: docs/BENCHMARK.md
Documentación
| Documento | Contenido |
|---|---|
| USAGE.md | URIs de espacio de trabajo, ejemplos de herramientas, recetas prácticas |
| CONFIG.md | Todos los campos de configuración con tipos, valores predeterminados y notas |
| TOOLS.md | Referencia completa de las 62 herramientas |
| ARCHITECTURE.md | Mapa de módulos, flujo de solicitudes, versionado, seguridad |
| BENCHMARK.md | Líneas base de rendimiento y metodología |
| profiles/ | Seis perfiles de configuración preajustados (personal, desarrollador, investigación, ...) |
| AGENTS.md | Guía para contribuyentes: convenciones, flujo de desarrollo, proceso de PR |
Contribuciones
git clone https://github.com/firdausmntp/Dokumen-Pintar.git
cd Dokumen-Pintar
pip install -e ".[dev]"
ruff check src/ # lint
mypy src/dokumen_pintar/ # type check
pytest # test + coverage
Las PR son bienvenidas. Todas las pruebas deben pasar y la cobertura debe mantenerse al 100%. Lee AGENTS.md antes de enviar: cubre convenciones, el protocolo de manejadores y cómo añadir un nuevo formato o herramienta.
Licencia
MIT — 2026 firdausmntp
Construido por firdausmntp