“Rinomina ACME Corp in Globex in questo contratto” è un lavoro di tre secondi per una persona e una trappola per un agente IA. Il percorso ovvio, leggere il documento e scriverne uno nuovo, elimina gli stili, i bordi delle tabelle, le intestazioni e la fiducia del revisore che nulla sia cambiato. Con il server GroupDocs.Editor MCP in esecuzione localmente, Claude, Cursor o Copilot modificano il file invece di riscriverlo: trovano le parole, le sostituiscono in loco, mantengono la formattazione e ti dicono quante ne hanno cambiate:

Rinomina ACME Corp in Globex Ltd in contract.docx e mantieni la formattazione.

La versione passo‑passo con configurazione, prompt e risoluzione dei problemi è nella documentazione: Come modificare i documenti con agenti IA usando MCP.

Cosa va storto quando il modello riscrive il file?

Un modello linguistico non possiede un .docx. Possiede solo testo. Quando gli chiedi di “aggiornare il contratto”, il percorso naturale è leggere le parole, cambiarle e produrre un nuovo documento dalla sua copia. Tre cose si perdono lungo il percorso.

Formattazione. Nomi delle parti in grassetto, intestazioni numerate, linee della griglia della tabella, larghezze delle colonne della tabella delle tariffe, piè di pagina con i numeri di pagina: nulla di tutto ciò fa parte del testo che il modello ha letto, quindi nulla sopravvive al viaggio a meno che qualcosa non lo ricostruisca.

Tutto ciò che il modello non è stato chiesto di toccare. La rigenerazione significa che ogni frase passa di nuovo attraverso il modello. Una clausola può essere “pulita”, un numero riformattato, una frase eliminata perché la finestra di contesto si è riempita. Il revisore ora deve confrontare l’intero documento per fidarsi di una modifica di tre parole.

La traccia di audit. “Ho aggiornato il contratto” è la stessa risposta sia che il modello abbia cambiato un nome sia che ne abbia cambiati sette. Non c’è alcun conteggio e nessun modo per distinguere una modifica attenta da una sicura.

I server di modifica solo DOCX già esistenti hanno risolto il primo problema per Word. Gli altri due, e ogni formato che non è Word, sono ancora aperti.

Come appare una modifica mirata?

Due chiamate. Catturate da GroupDocs.Editor.Mcp 26.10.0 contro un accordo di servizi sintetico in cui “ACME Corp” compare sette volte:

-> get_document_info {"file":{"filePath":"contract.docx"}}
<- { "family": "WordProcessing", "pageCount": 1, "canEdit": true,
     "canSaveTo": [ "docx", "doc", "rtf", "odt", "pdf", "md", ... ] }

-> replace_text {"file":{"filePath":"contract.docx"},
                 "find":"ACME Corp","replace":"Globex Ltd","wholeWord":true}
<- Replaced 6 occurrence(s) of 'ACME Corp' in 'contract.docx'
   Saved to: …/contract_edited.docx

-> replace_text {"file":{"filePath":"contract.docx"},
                 "find":"Initech","replace":"Globex Ltd"}
<- Text replacement found no matches for 'Initech' in 'contract.docx'.
   No file was written.

La copia modificata mantiene il nome della parte in grassetto, gli stili delle intestazioni e la tabella delle tariffe. L’originale rimane intatto; il risultato è un nuovo file, contract_edited.docx, nella cartella di archiviazione.

Perché sei e non sette?

Questo è il dettaglio che vale la pena leggere due volte. Il settimo “ACME Corp” si trova nella clausola delle note, dove “ACME” è in corsivo e " Corp" no. Nel file sono due run di formattazione, e replace_text corrisponde all’interno di un singolo run. Non ha indovinato e non ha unito gli stili per forzare una corrispondenza; ha segnalato sei, e il settimo è ancora “ACME Corp”.

Questo è il comportamento che desideri da uno strumento che modifica contratti. Un conteggio inferiore a quello atteso è un invito a controllare; una riscrittura “completa” silenziosa non lo è. L’agente può proseguire con l’altro percorso offerto dal server: estrarre quella parte come HTML, modificarla e salvarla nuovamente. Il post sul round‑trip lo copre.

Le chiamate, in ordine

user              agent                        Editor MCP server
 |  "Rename ACME Corp to Globex Ltd in contract.docx"          |
 |---------------->|                                           |
 |                 |-- get_document_info {"file":...} -------->|
 |                 |<- WordProcessing, 1 page, canEdit --------|
 |                 |-- replace_text {"find":"ACME Corp",       |
 |                 |     "replace":"Globex Ltd",               |
 |                 |     "wholeWord":true} ------------------->|
 |                 |<- "Replaced 6 occurrence(s) ...           |
 |                 |    Saved to: .../contract_edited.docx" ---|
 |<- "6 changed; one more is split across formatting - check  |
 |    the notices clause. The original is kept."               |
      (a find that matches nothing: 'No file was written.')

Perché è più di un trucco per Word

La stessa chiamata funziona su un foglio di calcolo, una diapositiva, un PDF o un file di testo. Nei nostri test, "worksheet": 1 ha rinominato il fornitore nella scheda riepilogativa del budget lasciando intatte le altre due schede; "slide": 1 ha fatto lo stesso su una presentazione di revisione. "format": "pdf" modifica e converte in una sola chiamata, quindi “correggi il nome e inviami un PDF” è un unico passo. "regex": true gestisce pattern come le stringhe di versione.

Prima della modifica, get_document_info informa l’agente su cosa sta trattando: la famiglia, il numero di pagine, fogli o diapositive, se il file è protetto da password e in quali formati può essere salvato. Un agente prudente lo chiama per primo, e puoi chiedergli di farlo.

Configurazione

dnx GroupDocs.Editor.Mcp --yes

con GROUPDOCS_MCP_STORAGE_PATH che punta alla cartella che l’agente può modificare, o l’immagine Docker ghcr.io/groupdocs-editor/editor-net-mcp. La configurazione per cliente è nel centro di documentazione. Ciò che è cambiato nel motore stesso è nelle note di rilascio di GroupDocs.Editor per .NET 26.6.

Limiti onesti

  • replace_text corrisponde all’interno di un singolo run di formattazione; una frase divisa tra stili non viene trovata, e il conteggio lo mostra.
  • Nessuna modifica tracciata e nessun commento: il risultato è una copia modificata, non una versione a margine.
  • Modalità valutazione: ogni output inizia con una riga di banner di valutazione, le cartelle di lavoro salvate ottengono un foglio aggiuntivo, e solo i primi due fogli o diapositive possono essere modificati. Il server rifiuta il terzo e spiega il motivo.
  • La modifica dei PDF è una conversione in HTML o Word modificabile e ritorno; non è una modifica in‑place del PDF.

FAQ

L’agente sovrascriverà il mio file originale?
No. Ogni modifica scrive un nuovo file, <name>_edited.<ext> per impostazione predefinita o il outputName che fornisci, nella cartella di archiviazione.

Cosa succede se il testo non è presente nel documento?
Non viene scritto nulla. Il server risponde “found no matches … No file was written.”, così l’agente può informarti invece di restituire una copia invariata.

Funziona senza Word installato?
Sì. Il server gira localmente con il motore GroupDocs.Editor; non è necessaria alcuna installazione di Office né upload.

Approfondisci