The Office Worker — office-worker-mcp
Your agent's document clerk. Genera documentos de oficina profesionales — PDF, Word, Excel y PowerPoint — desde datos + un tema corporativo, y lee PDFs (texto, tablas y formularios). Diseñado para agentes de IA (Hermes, Claude, Cursor) vía MCP, 100% local-first.
pip install office-worker-mcp # instala librería + MCP server + CLI 'owi'
Conectalo a tu agente (ejemplo config MCP / stdio):
{ "mcpServers": { "office-worker": { "command": "office-worker-mcp" } } }
Y listo: le pedís "haceme una factura/informe/deck" en lenguaje natural y tu agente usa las tools del oficinista para producir el archivo bien diseñado.
Por qué existe (diferenciadores)
Los MCPs de documentos existentes son CRUD genéricos (47+ tools que inflan el contexto) y no cubren diseño ni PDF como entrada. El Office Worker hace lo contrario:
| office-mcp / takos | The Office Worker | |
|---|---|---|
| Tools | ~47–80 CRUD genéricas | 8 poderosas (~2K tok/turno vs ~6.4K) |
| Plantillas con variables | ❌ | ✅ Jinja ({{ var }}) |
| Temas corporativos (paleta/fuente) | ❌ parámetros sueltos | ✅ aplicable de una vez a todos los formatos |
| PDF como input (leer/tablas/formularios) | ❌ | ✅ PyMuPDF + pdfplumber + pypdf |
| PPTX editable (textos nativos, no imágenes) | parcial | ✅ html-to-pptx verificado |
| Guía anti-loop para agentes | ❌ | ✅ SKILL.md con reglas probadas en producción |
Las 8 tools
| Tool | Qué hace |
|---|---|
render_document |
PDF profesional desde plantilla HTML/Jinja + datos + tema (WeasyPrint) |
create_word |
.docx con h1/h2/párrafos/tablas, tema aplicado (python-docx) |
create_excel |
.xlsx multi-hoja con paleta y filas alternas (openpyxl) |
create_pptx |
.pptx editable desde slides declarativas (html-to-pptx + Playwright) |
read_pdf |
Extrae texto por página + metadatos de un PDF (input) |
pdf_extract_tables |
Tablas estructuradas de un PDF (pdfplumber) |
pdf_list_form_fields |
Campos de formulario AcroForm de un PDF (pypdf) |
list_themes |
Devuelve la paleta/fuente del tema activo como referencia de diseño |
Uso rápido (sin agente, vía CLI o Python)
from office_worker.core import create_word, create_excel, render_pdf
create_word("acta.docx", title="Acta", subtitle="Reunión", blocks=[
{"type":"h2","text":"Puntos"}, {"type":"p","text":"Decisión tomada"}])
create_excel("balance.xlsx", title="Balance", sheets=[{"name":"Resumen",
"headers":["Rubro","Monto"],"rows":[["Ingresos",100],["Gastos",40]]}])
Requisitos locales
- Python ≥ 3.9 · WeasyPrint (necesita fontconfig/pango en Linux) · LibreOffice opcional.
- PPTX editable (opcional):
pip install office-worker-mcp[pptx]+playwright install chromium. Sin este extra, las tools de PDF/Word/Excel funcionan igual; solocreate_pptxqueda deshabilitada. - Todo corre en local; sin cloud.
Desarrollo & tests
pip install -e ".[dev]"
pytest # test_core.py (núcleo) + test_e2e_mcp.py (MCP end-to-end, 8/8 tools)
El test E2E levanta el servidor MCP real, hace handshake y ejecuta cada tool creando/leyendo archivos válidos en disco.
Licencia
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 office_worker_mcp-0.1.0.tar.gz.
File metadata
- Download URL: office_worker_mcp-0.1.0.tar.gz
- Upload date:
- Size: 17.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ea183f2893fe0e0dfbe0531c98a96019e4a968a87b54a3818dd1780980e9ac71
|
|
| MD5 |
1093c76c9ed783996423929211b1cad0
|
|
| BLAKE2b-256 |
f1686914d9aefba23eae7a8b64a33b0afb9b9cd55068a62a2f18470f82ba4c89
|
File details
Details for the file office_worker_mcp-0.1.0-py3-none-any.whl.
File metadata
- Download URL: office_worker_mcp-0.1.0-py3-none-any.whl
- Upload date:
- Size: 17.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/7.0.0 CPython/3.11.15
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
718109194ba9503405b368677665bce06960ad7f550f24c733be544247c866bd
|
|
| MD5 |
27b3181d9df5954665b669d69c9035b9
|
|
| BLAKE2b-256 |
d64f2e9a912766d8039b723d104b0cc0032cdcacf915931235f901922c479a9d
|