MCP Server for LeenO - Computi Metrici management through LibreOffice
Project description
LeenO MCP Server
MCP (Model Context Protocol) Server per la gestione di computi metrici estimativi tramite LeenO e LibreOffice.
Cos'è
Questo server MCP permette a un agente AI (come Claude) di gestire documenti di computo metrico creati con LeenO, l'estensione open source per LibreOffice Calc.
Funzionalità
Gestione Documenti
- Creare nuovi documenti LeenO
- Aprire documenti esistenti
- Salvare e chiudere documenti
- Ottenere statistiche e informazioni
Computo Metrico
- Aggiungere/eliminare voci di lavoro
- Gestire capitoli e sottocapitoli
- Aggiungere righe di misurazione
- Calcolare totali
Elenco Prezzi
- Cercare prezzi per codice o descrizione
- Aggiungere/modificare/eliminare prezzi
- Importare prezzari regionali
Contabilità Lavori
- Aggiungere voci di contabilità
- Gestire SAL (Stati Avanzamento Lavori)
- Verificare stato della contabilità
Export
- Esportare in PDF
- Esportare in CSV
- Esportare in Excel (XLSX)
- Esportare in XPWE (formato LeenO)
Requisiti
- LibreOffice 7.0+ con estensione LeenO installata
- Python 3.10+ (incluso in LibreOffice)
- mcp e pydantic (pacchetti Python)
Nota Windows: È necessario usare il Python incluso in LibreOffice per accedere all'API UNO. Il percorso tipico è:
C:\Program Files\LibreOffice\program\python.exe
Installazione
1. Clona il repository
git clone https://github.com/mikibart/leeno-mcp-server.git
cd leeno-mcp-server
2. Installa le dipendenze nel Python di LibreOffice
Windows:
"C:\Program Files\LibreOffice\program\python.exe" -m pip install mcp pydantic
Linux:
# Il percorso può variare in base alla distribuzione
/usr/lib/libreoffice/program/python -m pip install mcp pydantic
macOS:
/Applications/LibreOffice.app/Contents/Resources/python -m pip install mcp pydantic
3. Installa il pacchetto (opzionale)
# Con il Python di LibreOffice
"C:\Program Files\LibreOffice\program\python.exe" -m pip install -e .
Utilizzo
Passo 1: Avvia LibreOffice in modalità headless
LibreOffice deve essere avviato con il listener socket abilitato.
Windows (PowerShell):
Start-Process "C:\Program Files\LibreOffice\program\soffice.exe" -ArgumentList '--headless', '--accept="socket,host=localhost,port=2002;urp;StarOffice.ComponentContext"'
Windows (CMD):
start "" "C:\Program Files\LibreOffice\program\soffice.exe" --headless --accept="socket,host=localhost,port=2002;urp;StarOffice.ComponentContext"
Linux/macOS:
soffice --headless --accept="socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" &
Verifica: LibreOffice è pronto quando i processi
soffice.exeesoffice.binsono in esecuzione.
Passo 2: Avvia il server MCP
Windows:
"C:\Program Files\LibreOffice\program\python.exe" -m leeno_mcp.server
Linux/macOS:
/path/to/libreoffice/python -m leeno_mcp.server
Passo 3: Configura il client MCP
Claude Desktop
Aggiungi al file claude_desktop_config.json:
Windows (%APPDATA%\Claude\claude_desktop_config.json):
{
"mcpServers": {
"leeno": {
"command": "C:\\Program Files\\LibreOffice\\program\\python.exe",
"args": ["-m", "leeno_mcp.server"],
"env": {
"PYTHONPATH": "C:\\path\\to\\leeno-mcp-server\\src"
}
}
}
}
macOS (~/Library/Application Support/Claude/claude_desktop_config.json):
{
"mcpServers": {
"leeno": {
"command": "/Applications/LibreOffice.app/Contents/Resources/python",
"args": ["-m", "leeno_mcp.server"],
"env": {
"PYTHONPATH": "/path/to/leeno-mcp-server/src"
}
}
}
}
Claude Code
Aggiungi al file .claude/settings.json nella home o nel progetto:
{
"mcpServers": {
"leeno": {
"command": "C:\\Program Files\\LibreOffice\\program\\python.exe",
"args": ["-m", "leeno_mcp.server"],
"env": {
"PYTHONPATH": "C:\\path\\to\\leeno-mcp-server\\src"
}
}
}
}
Tool Disponibili (50 totali)
Documenti (6 tools)
| Tool | Descrizione |
|---|---|
leeno_document_create |
Crea nuovo documento da template |
leeno_document_open |
Apre documento esistente |
leeno_document_save |
Salva documento |
leeno_document_close |
Chiude documento |
leeno_document_list |
Lista documenti aperti |
leeno_document_info |
Info e statistiche documento |
Computo (8 tools)
| Tool | Descrizione |
|---|---|
leeno_computo_add_voce |
Aggiunge voce di computo |
leeno_computo_list_voci |
Lista voci del computo |
leeno_computo_get_voce |
Dettaglio singola voce |
leeno_computo_delete_voce |
Elimina voce |
leeno_computo_add_capitolo |
Aggiunge capitolo/sottocapitolo |
leeno_computo_add_misura |
Aggiunge riga di misurazione |
leeno_computo_get_totale |
Totale computo |
leeno_computo_get_struttura |
Struttura capitoli e voci |
Prezzi (7 tools)
| Tool | Descrizione |
|---|---|
leeno_prezzi_search |
Cerca prezzi per testo |
leeno_prezzi_get |
Dettaglio prezzo per codice |
leeno_prezzi_add |
Aggiunge nuovo prezzo |
leeno_prezzi_edit |
Modifica prezzo esistente |
leeno_prezzi_delete |
Elimina prezzo |
leeno_prezzi_list |
Lista tutti i prezzi |
leeno_prezzi_count |
Conta prezzi in elenco |
Analisi Prezzi (5 tools) 🆕
| Tool | Descrizione |
|---|---|
leeno_analisi_create |
Crea nuova analisi di prezzo |
leeno_analisi_add_componente |
Aggiunge componente all'analisi |
leeno_analisi_transfer |
Trasferisce analisi a Elenco Prezzi |
leeno_analisi_list |
Lista tutte le analisi |
leeno_analisi_create_complete |
Crea analisi completa con componenti |
Import Prezzari (4 tools) 🆕
| Tool | Descrizione |
|---|---|
leeno_prezzi_import |
Importa prezzario da file XML |
leeno_prezzi_detect_format |
Rileva formato file prezzario |
leeno_prezzi_list_formats |
Lista formati supportati |
leeno_prezzi_import_url |
Importa prezzario da URL |
Formati regionali supportati: Toscana, Lombardia, Veneto, Liguria, Sardegna, Basilicata, Calabria, Campania, SIX, XPWE
Contabilità (6 tools)
| Tool | Descrizione |
|---|---|
leeno_contab_add_voce |
Aggiunge voce di contabilità |
leeno_contab_list_voci |
Lista voci contabilità |
leeno_contab_get_sal |
Info su SAL specifico |
leeno_contab_get_stato |
Stato generale contabilità |
leeno_contab_emetti_sal |
Emette nuovo SAL |
leeno_contab_annulla_sal |
Annulla ultimo SAL |
Varianti (4 tools) 🆕
| Tool | Descrizione |
|---|---|
leeno_variante_create |
Crea variante da COMPUTO |
leeno_variante_info |
Info sulla variante |
leeno_variante_compare |
Confronta VARIANTE vs COMPUTO |
leeno_variante_delete |
Elimina variante |
Giornale Lavori (5 tools) 🆕
| Tool | Descrizione |
|---|---|
leeno_giornale_create |
Crea giornale dei lavori |
leeno_giornale_nuovo_giorno |
Aggiunge nuovo giorno |
leeno_giornale_info |
Info sul giornale |
leeno_giornale_list_giorni |
Lista tutti i giorni |
leeno_giornale_add_nota |
Aggiunge nota a un giorno |
Export (5 tools)
| Tool | Descrizione |
|---|---|
leeno_export_pdf |
Esporta in PDF |
leeno_export_csv |
Esporta in CSV |
leeno_export_xlsx |
Esporta in Excel |
leeno_export_xpwe |
Esporta in XPWE (LeenO) |
leeno_export_formats |
Lista formati disponibili |
Configurazione
Variabili d'ambiente opzionali:
| Variabile | Descrizione | Default |
|---|---|---|
LEENO_UNO_HOST |
Host LibreOffice | localhost |
LEENO_UNO_PORT |
Porta LibreOffice | 2002 |
LEENO_TEMPLATE_PATH |
Percorso template LeenO | auto-detect |
LEENO_LOG_LEVEL |
Livello log (DEBUG/INFO/WARNING/ERROR) | INFO |
Esempio di utilizzo
User: Crea un nuovo computo metrico
AI: [Chiama leeno_document_create]
Documento creato con ID: doc_a1b2c3d4
User: Aggiungi un capitolo "OPERE MURARIE"
AI: [Chiama leeno_computo_add_capitolo con nome="OPERE MURARIE", livello=1]
Capitolo aggiunto: CAP_001
User: Cerca nel prezzario "scavo"
AI: [Chiama leeno_prezzi_search con query="scavo"]
Trovati 15 prezzi:
- [01.A01.001] Scavo a sezione aperta... mc € 12.50
- [01.A01.002] Scavo in trincea... mc € 18.00
...
User: Aggiungi la prima voce con quantità 100 mc
AI: [Chiama leeno_computo_add_voce con codice="01.A01.001", quantita=100]
Voce aggiunta: V001, importo € 1,250.00
User: Qual è il totale?
AI: [Chiama leeno_computo_get_totale]
Totale computo: € 1,250.00
Sicurezza: € 37.50
Manodopera: € 375.00
User: Esporta in PDF
AI: [Chiama leeno_export_pdf con output_path="computo.pdf"]
PDF esportato: computo.pdf
Troubleshooting
Errore "Connection refused"
LibreOffice non è in ascolto sulla porta 2002:
- Verifica che LibreOffice sia avviato con
--accept="socket,host=localhost,port=2002;urp;StarOffice.ComponentContext" - Controlla che i processi
soffice.exeesoffice.binsiano attivi - Attendi qualche secondo dopo l'avvio prima di connetterti
Errore "UNO module not available"
Stai usando il Python di sistema invece di quello di LibreOffice:
- Windows: Usa
"C:\Program Files\LibreOffice\program\python.exe" - Linux: Usa il Python nella cartella di LibreOffice
- macOS: Usa
/Applications/LibreOffice.app/Contents/Resources/python
Errore "Module use of python311.dll conflicts"
Conflitto tra versioni Python. Assicurati di usare esclusivamente il Python di LibreOffice per tutto (installazione dipendenze ed esecuzione server).
Il documento non viene riconosciuto come LeenO
Il documento deve contenere i fogli standard di LeenO:
COMPUTO- Foglio computo metricoElenco Prezzi- Elenco prezziS2- Foglio di sistema LeenO
Sviluppo
Eseguire i test
# Installa dipendenze di sviluppo
"C:\Program Files\LibreOffice\program\python.exe" -m pip install pytest pytest-asyncio
# Esegui i test
cd leeno-mcp-server
"C:\Program Files\LibreOffice\program\python.exe" -m pytest tests/ -v
Struttura del progetto
leeno-mcp-server/
├── src/leeno_mcp/
│ ├── connection/ # Connessione UNO e pool documenti
│ ├── models/ # Modelli Pydantic
│ ├── wrappers/ # Wrapper per operazioni LeenO
│ ├── tools/ # Tool MCP
│ ├── utils/ # Utilità ed eccezioni
│ ├── config.py # Configurazione
│ └── server.py # Entry point server
├── tests/ # Test suite (112 test)
└── pyproject.toml # Configurazione progetto
Licenza
MIT License - Vedi LICENSE
Link Utili
- LeenO - Estensione per LibreOffice
- Telegram LeenO - Supporto comunità
- MCP Protocol - Model Context Protocol
- GitHub Repository
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 leeno_mcp-0.5.0.tar.gz.
File metadata
- Download URL: leeno_mcp-0.5.0.tar.gz
- Upload date:
- Size: 82.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
51916068591cc3f36093314f8b380b67269aafda542a8e6ffa61119b16869288
|
|
| MD5 |
c351f21302a93efaeed236b336f438f0
|
|
| BLAKE2b-256 |
fddc00f32fb71cb0c233ccc54c8a4530c9176d5106d2beca3aea15cfe63ea6dd
|
File details
Details for the file leeno_mcp-0.5.0-py3-none-any.whl.
File metadata
- Download URL: leeno_mcp-0.5.0-py3-none-any.whl
- Upload date:
- Size: 75.1 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
c56d7dca2d722ec3726bed164d9e5e7c7ba070262e1282e4171142f201260203
|
|
| MD5 |
af715f66fd6d24fc3b73f46b3161575b
|
|
| BLAKE2b-256 |
905a93c6bfcddb23b553903e431b17b50ed94d5065f27b82299fd7e3b03d981e
|