In breve
Quando un agente continua a risolvere lo stesso compito in più passaggi, può proporre un code tool riutilizzabile con code_propose_tool. La proposta non esegue nulla e non concede nulla; un amministratore rivede il programma in AI Skills e crea lo strumento con un clic, in sola lettura e con i permessi di chi lo chiama. Come funziona in AnythingMCP, passo per passo.
TL;DR: Un agente che risponde a "ricavi mensili per canale" scrivendo ogni settimana lo stesso programma non dovrebbe doverlo riscrivere ogni volta, ma non dovrebbe nemmeno poter creare strumenti da solo. Nella code mode di AnythingMCP fa una via di mezzo: chiama code_propose_tool con un nome, una descrizione, il programma e il motivo per cui vale la pena conservarlo. Questo registra una proposta e nient'altro: nessun codice viene eseguito, nessuno strumento compare. Un amministratore la trova in AI Skills → Suggested, legge il programma e clicca Create tool. Il nuovo strumento è in sola lettura e viene eseguito con i permessi di ciascun chiamante; qualsiasi permesso in più richiede una modifica separata e deliberata. Disponibile in AnythingMCP self-hosted dalla v0.52.0, in arrivo su AnythingMCP Cloud.
Perché proposte e non strumenti creati in autonomia
Gli agenti sono bravi a riconoscere quando un compito è meccanico: le stesse tre chiamate, lo stesso join, la stessa somma. Trasformarlo in uno strumento salvato rende la risposta successiva più rapida, più economica e più coerente. Ma uno strumento è anche una capacità permanente nel tuo workspace, e il programma che c'è dietro è stato scritto da un modello che potrebbe aver letto contenuti non attendibili. Quindi l'agente può suggerire, e una persona decide. È lo stesso principio che AnythingMCP usa per le skill e la memoria aziendale proposte dai client AI: l'agente prepara una bozza, un amministratore approva.
Cosa ti serve
- AnythingMCP self-hosted v0.52.1 o successiva con il code runner configurato (configurazione nel passo 1 qui).
- Code mode impostata su
inlinesul server MCP.inlineè ciò che rende disponibilicode_executeecode_propose_tool;toolsserve solo i code tool salvati. Impostala nella pagina del server (Modalità codice → Code tool salvati + codice inline), disponibile dalla v0.52.1; vedi il passo 2 del tutorial sui code tool. - La capability inline-code sul ruolo dell'utente. Gli amministratori del workspace ce l'hanno.
- Come annunciato con la v0.52, il codice inline e le proposte fanno parte dei piani Team ed Enterprise.
Passo 1 — L'agente risolve il compito inline
Un utente pone una domanda che richiede più chiamate, per esempio "ricavi di ottobre, fatture shop e B2B". Con il codice inline attivo, l'agente scrive un programma e lo esegue con code_execute: in sola lettura, con i permessi dell'utente, sui connettori che l'utente può raggiungere su quel server. Vedi la ricetta dei ricavi per capire che aspetto ha un programma di questo tipo.
Passo 2 — L'agente propone di conservarlo
Quando l'agente individua uno schema che vale la pena conservare (di sua iniziativa, o perché l'utente dice "salvalo come strumento"), chiama code_propose_tool con:
| Campo | Cosa compila l'agente |
|---|---|
name | Un nome breve per lo strumento, ad es. monthly_revenue_by_channel |
description | Cosa fa e cosa restituisce lo strumento, per l'amministratore e per i futuri chiamanti |
code | Il programma, dello stesso tipo del corpo usato per code_execute |
rationale | Perché vale la pena salvarlo, ad es. "richiesto quattro volte questo mese; sostituisce circa 20 chiamate a strumenti" |
inputSchema | Facoltativo: i parametri propri dello strumento, ad es. month come YYYY-MM |
La risposta all'agente è semplice: la proposta è registrata per la revisione e non verrà eseguita né diventerà uno strumento finché un amministratore non la approva. Lo stesso si può comunicare all'utente.
Passo 3 — L'amministratore la rivede
Apri AI Skills nella barra laterale (sotto Intelligence) e passa a Suggested. Una proposta appare come una scheda contrassegnata da Code tool proposal, con:
- l'ambito e una nota che indica che è stata proposta da un agente ed è in sola lettura, eseguita con i permessi del chiamante;
- Why: la motivazione dell'agente;
- Does: la descrizione;
- Program con la sua lunghezza in caratteri, da leggere per intero;
- una nota su quale connettore verrà creato lo strumento e sul fatto che le scritture o i diritti dell'autore possono essere aggiunti solo in seguito, nella pagina degli strumenti del connettore.

Leggi il programma come faresti con una piccola pull request:
- Quali strumenti chiama? Ogni
amcp.run('…'). Sono quelli promessi dalla descrizione, e sono tutte letture? - Cosa restituisce? Solo ciò che serve alla domanda, o record interi con dati personali?
- I cicli hanno senso? Paginazione che termina, batch di chiamate in parallelo, nessuna chiamata per riga di una tabella grande senza necessità. Un'esecuzione si interrompe dopo 10 secondi e 500 chiamate a strumenti.
- Nome e descrizione sono abbastanza chiari perché l'AI chiami lo strumento al momento giusto e spieghi correttamente il risultato (lordo o netto, quale periodo, quali sistemi)?
Passo 4 — Crea lo strumento oppure scartalo
Create tool esegue i normali controlli di creazione degli strumenti: i connettori devono appartenere allo stesso workspace e si applica il numero di code tool salvabili previsto dal piano. Lo strumento viene creato sul connettore indicato nella scheda:
- in sola lettura (può chiamare solo strumenti che non modificano i dati);
- run as invoker (ogni chiamata interna viene verificata rispetto al ruolo del chiamante);
- usando i connettori di chi ha proposto su quel server. Dopo la creazione apri lo strumento e restringi Uses ai connettori e agli strumenti che chiama davvero.
Dismiss sposta la proposta nella scheda Dismissed. Se l'agente continua a proporre qualcosa che non vuoi, indicalo nelle istruzioni del server.
Passo 5 — Solo se serve: più permessi, in modo deliberato
Uno strumento creato può essere modificato come qualsiasi code tool nella pagina MCP Tools del connettore. Due impostazioni non sono raggiungibili tramite una proposta:
- Allow write tools, per consentire al programma di chiamare strumenti che modificano i dati. Richiede Enterprise.
- Run as definer, per far eseguire il programma con la curation dell'autore invece che con i permessi del chiamante. Solo per amministratori.
Entrambe vengono ricontrollate al salvataggio. È questo il punto del design: un agente non può mai aumentare la propria autorità, perché una proposta è sempre in sola lettura, sempre invoker e limitata ai connettori che l'utente proponente poteva già raggiungere.
Perché è sicuro
- Una proposta è inerte.
code_propose_toolnon esegue codice e non crea nulla. - Nessuna escalation. Lo strumento proposto può fare riferimento solo ai connettori di chi lo propone e parte in sola lettura, come invoker.
- Decide una persona. Solo un amministratore può trasformare una proposta in uno strumento, con gli stessi controlli di uno strumento scritto a mano.
- Le esecuzioni restano contenute e verificabili. Una volta creato, ogni esecuzione passa dal code runner isolato e viene registrata insieme a ogni chiamata interna a strumenti. Vedi Esecuzione sicura del codice per gli agenti AI.
FAQ
Un utente normale può proporre strumenti?
Qualsiasi utente il cui ruolo abbia la capability inline-code, su un server con code mode inline. Senza la capability, l'utente non vede né code_execute né code_propose_tool.
L'agente vede se la sua proposta è stata accettata? L'agente vede il nuovo strumento nell'elenco degli strumenti del server una volta creato, come qualsiasi altro strumento, e da quel momento può chiamarlo.
Posso modificare il programma prima di creare lo strumento? Crealo, poi modificalo nella pagina MCP Tools del connettore come qualsiasi code tool: programma, descrizione, parametri, Uses.
Correlati
- Che cos'è la code mode di MCP?
- Crea il tuo primo code tool, passo per passo
- Ricette di code mode: ricavi mensili, riconciliazione fatture, 100 ricerche di prezzi
- Esecuzione sicura del codice per gli agenti AI
- Governance MCP, ruoli utente e permessi
- Knowledge graph per MCP
Questa guida ti è stata utile?