Dokumen-Pintar

62 ferramentas conscientes de formato para IA ler e editar arquivos Word, Excel e PDF com precisão — além de verificação de documentos acadêmicos para padrões indonésios.

Documentação

Dokumen-Pintar logo

Dokumen-Pintar

Servidor MCP universal para CRUD de documentos em múltiplos formatos

Leia, escreva, pesquise e gerencie arquivos de texto, Office e PDF
a partir de qualquer agente de IA que suporte o Model Context Protocol.

PyPI  Python 3.10+  MIT License  1403 tests passed  100% coverage

Recursos  ·  Formatos  ·  Início Rápido  ·  Ferramentas  ·  Documentação  ·  Benchmark  ·  Contribuição

Baca dalam Bahasa Indonesia


Por que Dokumen-Pintar

A maioria dos servidores MCP de sistema de arquivos se limita a "leia este arquivo, escreva aquele arquivo." O Dokumen-Pintar trata documentos como dados estruturados que a IA pode navegar. Diga a um agente para atualizar um parágrafo por índice, definir uma célula por Sheet1!B2, percorrer uma árvore JSON com JSONPath, gerar um DOCX a partir de Markdown — tudo funciona da mesma forma em todos os formatos suportados.

Toda ferramenta de mutação tira um snapshot do arquivo primeiro. Toda ação é registrada em um log de auditoria. Todo caminho é isolado em raízes que você opta por incluir. A configuração padrão é sensata; os perfis cobrem o restante.


Recursos

Sandbox Multi-raiz — Defina múltiplas raízes de workspace com controle de writable por raiz. Todos os caminhos fora da sandbox são rejeitados.

10 Formatos — Texto simples, Markdown, LaTeX, JSON / YAML, CSV / TSV, XML / SVG, DOCX, XLSX, PPTX, PDF.

62 Ferramentas MCP — CRUD de arquivos e conteúdo, acesso estruturado, operações em lote, busca, versionamento, metadados, autoria, extração de imagens, seções, modelos, sumário, bibliografia, comparação de documentos, lint — tudo exposto como ferramentas chamáveis.

Autoria — Gere DOCX ou PDF a partir de uma especificação JSON ou fonte Markdown via compose_docx / compose_pdf / compose_from_markdown.

Acesso Estruturado — JSONPath para JSON / YAML, XPath para XML, célula / intervalo / planilha para XLSX, parágrafo / tabela para DOCX, slide para PPTX, página para PDF.

Versionamento Automático — Snapshots copy-on-write em toda escrita. Desfaça, diferencie, restaure e limpe a qualquer momento.

Camada de Metadados — Leia, escreva, exclua ou remova EXIF, propriedades principais OOXML e docinfo de PDF através de uma API consistente.

Trilha de Auditoria — Toda mutação é registrada em JSONL com timestamp e detalhes da operação.

2 Transportes — stdio (Claude Desktop, Cursor, VS Code, Windsurf) e HTTP / SSE.


Formatos Suportados

FormatoLeituraEscritaConsulta EstruturadaBusca
Texto simples / Markdown
JSONJSONPath $.key
YAMLJSONPath $.key
CSV / TSVrow:N · col:NAME · cell:row:N,col:NAME
XML / SVGXPath //node
DOCXparagraph:N · table:N
XLSXcell:Sheet!A1 · range: · sheet:
PPTXslide:N · slide_title:N
PDFpage:N · outline · metadata

Início Rápido

1. Instalação

pip install dokumen-pintar
A partir do código-fonte (desenvolvimento)
git clone https://github.com/firdausmntp/Dokumen-Pintar.git
cd Dokumen-Pintar
pip install -e ".[dev]"
Com busca semântica
pip install dokumen-pintar[semantic]

2. Crie uma Configuração

dokumen-pintar-init

Ou crie uma manualmente:

{
  "roots": [
    { "name": "documents", "path": "~/Documents", "writable": true },
    { "name": "projects",  "path": "~/Projects",  "writable": true }
  ]
}

Todos os outros campos são opcionais com padrões sensatos. Veja docs/CONFIG.md.

3. Execute

dokumen-pintar --config dokumen-pintar.config.json

Raízes ad-hoc sem arquivo de configuração

Substitua ou substitua as raízes de configuração pela linha de comando — útil para sessões pontuais ou 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

Verificação de integridade

dokumen-pintar-doctor --config dokumen-pintar.config.json

Verifica a validade da configuração, existência das raízes, capacidade de escrita de snapshots .mcpdocs, handlers registrados e dependências opcionais de busca semântica.

4. Conecte a um Cliente de IA

Claude Desktop

Adicione ao seu claude_desktop_config.json:

{
  "mcpServers": {
    "dokumen-pintar": {
      "command": "dokumen-pintar",
      "args": ["--config", "/path/to/dokumen-pintar.config.json"]
    }
  }
}
Cursor / VS Code / Windsurf

Use o mesmo transporte stdio. Aponte as configurações MCP do seu IDE para o comando dokumen-pintar e o caminho do arquivo de configuração.

HTTP/SSE (remoto ou multi-cliente)
{
  "transport": {
    "stdio": false,
    "http": { "enabled": true, "port": 7878 }
  }
}

Inicie o servidor e conecte seu cliente a http://127.0.0.1:7878.


Exemplos 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")

Guia completo com receitas: docs/USAGE.md


Visão Geral das Ferramentas

62 ferramentas MCP organizadas por categoria:

CategoriaFerramentas
Workspaceworkspace_list_roots · workspace_stat · workspace_tree · workspace_diagnose
CRUD de Arquivosfile_create · file_delete · file_rename · file_copy · file_move
Conteúdocontent_read · content_write · content_append · content_insert · content_replace · content_delete_range · content_patch · content_diff
Estruturadostruct_get · struct_set · struct_delete · struct_meta
Metadadosmetadata_read · metadata_write · metadata_delete · metadata_strip · metadata_read_batch
Autoriavalidate_spec · compose_docx · compose_pdf · compose_from_markdown · compose_to_markdown
Seçõessection_extract · section_merge
Imagensimage_list · image_extract · image_extract_all · image_replace
Modelostemplate_list · template_install · template_render · template_render_named
Sumário e Bibliografiatoc_generate · bibliography_check · bibliography_format
Comparação e Lintdocument_compare · document_lint · document_lint_fix
Lotebatch_rename · batch_replace_content · batch_replace_structured · batch_delete
Buscasearch_filename · search_content · search_in_format
Versionamentoversion_list · version_diff · version_restore · version_undo · version_purge
Semântico *search_semantic · semantic_index_path · semantic_stats

* Somente registrado quando semantic_search.enabled = true e o extra [semantic] está instalado.

Referência completa de parâmetros: docs/TOOLS.md


Arquitetura

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)"]

Detalhes completos: docs/ARCHITECTURE.md


Testes

pip install -e ".[dev]"
pytest

1403

Testes aprovados

100%

Cobertura de linhas + ramos

100%

Limite mínimo

-n auto

Paralelo via xdist

Relatório de cobertura HTML: htmlcov/index.html

Números de desempenho e metodologia: docs/BENCHMARK.md


Documentação

DocumentoConteúdo
USAGE.mdURIs de workspace, exemplos de ferramentas, receitas práticas
CONFIG.mdTodos os campos de configuração com tipos, padrões e notas
TOOLS.mdReferência completa para todas as 62 ferramentas
ARCHITECTURE.mdMapa de módulos, fluxo de requisições, versionamento, segurança
BENCHMARK.mdLinhas de base de desempenho e metodologia
profiles/Seis perfis de configuração pré-ajustados (pessoal, desenvolvedor, pesquisa, ...)
AGENTS.mdGuia do contribuidor: convenções, fluxo de desenvolvimento, processo de PR

Contribuição

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

PRs são bem-vindos. Todos os testes devem passar e a cobertura deve permanecer em 100%. Leia AGENTS.md antes de enviar — cobre convenções, o protocolo de handlers e como adicionar um novo formato ou ferramenta.


Licença

MIT — 2026 firdausmntp


Construído por firdausmntp