MCP server universal untuk CRUD dokumen lintas format (text, JSON, YAML, CSV, XML, DOCX, XLSX, PPTX, PDF) dengan versioning, sandboxed multi-root, search, batch, dan semantic search opsional.
Project description
Dokumen-Pintar
Universal MCP server for cross-format document CRUD
Read, write, search, and manage text, Office, and PDF files from any AI agent that supports the Model Context Protocol.
Features
- Multi-root Sandbox — Define multiple workspace roots with per-root
writablecontrol. All paths outside the sandbox are rejected. - 10 Formats — Plain text, Markdown, JSON, YAML, CSV/TSV, XML/SVG, DOCX, XLSX, PPTX, PDF.
- 30 MCP Tools — File & content CRUD, structured access, batch operations, search, versioning — all exposed as callable tools for AI agents.
- Automatic Versioning — Copy-on-write snapshots on every write operation. Undo, diff, restore, and purge anytime.
- Structured Access — JSONPath for JSON/YAML, XPath for XML, cell/range/sheet for XLSX, paragraph/table for DOCX, slide for PPTX, page for PDF.
- Batch Operations — Mass rename, find-and-replace, and delete with dry-run by default.
- Semantic Search (optional) — Vector search powered by sentence-transformers; enable via config.
- Audit Trail — Every mutation logged to JSONL with timestamp and operation details.
- 2 Transports — stdio (Claude Desktop, Cursor, VS Code, Windsurf) and HTTP/SSE.
Supported Formats
| Format | Read | Write | Structured Query | Search |
|---|---|---|---|---|
| Plain text / Markdown | Y | Y | — | Y |
| JSON | Y | Y | JSONPath $.key |
Y |
| YAML | Y | Y | JSONPath $.key |
Y |
| CSV / TSV | Y | Y | row:N col:N cell:R,C |
Y |
| XML / SVG | Y | Y | XPath //node |
Y |
| DOCX | Y | Y | paragraph:N table:N |
Y |
| XLSX | Y | Y | cell:Sheet!A1 range: sheet: |
Y |
| PPTX | Y | Y | slide:N slide_title:N |
Y |
| Y | — | page:N outline metadata |
Y |
Quick Start
1. Install
pip install dokumen-pintar
With semantic search:
pip install dokumen-pintar[semantic]
2. Create a Config
dokumen-pintar-init
Or create one manually:
{
"roots": [
{ "name": "documents", "path": "~/Documents", "writable": true },
{ "name": "projects", "path": "~/Projects", "writable": true }
]
}
3. Run
dokumen-pintar --config dokumen-pintar.config.json
4. Connect to an AI Client
Claude Desktop — Add to claude_desktop_config.json:
{
"mcpServers": {
"dokumen-pintar": {
"command": "dokumen-pintar",
"args": ["--config", "/path/to/dokumen-pintar.config.json"]
}
}
}
Cursor / VS Code / Windsurf — Use the same stdio transport. Point your IDE's MCP settings to the dokumen-pintar command and config path.
Tools Overview
30 MCP tools organized by category:
| Category | Tools |
|---|---|
| Workspace | workspace_list_roots workspace_stat workspace_tree |
| File CRUD | file_create file_delete file_rename file_copy file_move |
| Content | content_read content_write content_append content_insert content_replace content_patch |
| Structured | structured_get structured_set structured_delete structured_meta |
| Batch | batch_rename batch_replace_content batch_delete |
| Search | search_filename search_content search_in_format |
| Versioning | version_list version_diff version_restore version_undo version_purge |
| Semantic* | semantic_index semantic_search |
*Only available when semantic_search.enabled = true and [semantic] extras are installed.
Documentation
Full docs on GitHub: github.com/firdausmntp/Dokumen-Pintar
- USAGE.md — Workspace URIs, tool examples, practical recipes
- CONFIG.md — All config fields with types, defaults, and notes
- TOOLS.md — Full reference for all 30 tools
- ARCHITECTURE.md — Module map, request flow, versioning, safety
License
MIT — 2026 firdausmntp
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file dokumen_pintar-1.0.0.tar.gz.
File metadata
- Download URL: dokumen_pintar-1.0.0.tar.gz
- Upload date:
- Size: 89.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9661c1ea0604aeec906833dd6802489ac46e0ec01c642e234d4049644ce8781c
|
|
| MD5 |
f9cd577f6453b44e36f0b2abdf6499e6
|
|
| BLAKE2b-256 |
ca141c846dbfe9f146dfb6d21782e1d235a3f90022689d07480644c491f1b52c
|
Provenance
The following attestation bundles were made for dokumen_pintar-1.0.0.tar.gz:
Publisher:
publish.yml on firdausmntp/Dokumen-Pintar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dokumen_pintar-1.0.0.tar.gz -
Subject digest:
9661c1ea0604aeec906833dd6802489ac46e0ec01c642e234d4049644ce8781c - Sigstore transparency entry: 1535568156
- Sigstore integration time:
-
Permalink:
firdausmntp/Dokumen-Pintar@0c5f081f2e3112c1add6a017d1f4c2dfb3208edb -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/firdausmntp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0c5f081f2e3112c1add6a017d1f4c2dfb3208edb -
Trigger Event:
push
-
Statement type:
File details
Details for the file dokumen_pintar-1.0.0-py3-none-any.whl.
File metadata
- Download URL: dokumen_pintar-1.0.0-py3-none-any.whl
- Upload date:
- Size: 61.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
160f34ec1a1f6ed14191ddc1250a6c5da842e4a98159b4b78205cfb08eb7f2bd
|
|
| MD5 |
72390f0f0791fd29c2eea160a5690952
|
|
| BLAKE2b-256 |
1573d03f6bf1eb0c66aed013048aceb095448b5827c36319a9892f2de2cccf3a
|
Provenance
The following attestation bundles were made for dokumen_pintar-1.0.0-py3-none-any.whl:
Publisher:
publish.yml on firdausmntp/Dokumen-Pintar
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
dokumen_pintar-1.0.0-py3-none-any.whl -
Subject digest:
160f34ec1a1f6ed14191ddc1250a6c5da842e4a98159b4b78205cfb08eb7f2bd - Sigstore transparency entry: 1535568310
- Sigstore integration time:
-
Permalink:
firdausmntp/Dokumen-Pintar@0c5f081f2e3112c1add6a017d1f4c2dfb3208edb -
Branch / Tag:
refs/tags/v1.0.0 - Owner: https://github.com/firdausmntp
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@0c5f081f2e3112c1add6a017d1f4c2dfb3208edb -
Trigger Event:
push
-
Statement type: