Risponderemo a tutte le tue domande!

Applicazioni e Guide

Server MCP basato su N8N

Lo sviluppo delle reti neurali generative ha subito una notevole accelerazione negli ultimi anni. Sono diventate notevolmente più veloci e precise nelle risposte e hanno imparato a ragionare. Tuttavia, le loro capacità sono ancora fondamentalmente limitate dalla loro architettura. Per esempio, ogni LLM esistente al momento in cui scriviamo ha una data di scadenza della conoscenza. Ciò significa che ogni giorno che passa, un LLM di questo tipo ha sempre più probabilità di produrre risposte errate, semplicemente perché manca di informazioni sugli eventi che si sono verificati dopo quella data.

Questa limitazione impone di riqualificare il modello interamente su dati più freschi, il che è costoso e richiede molto tempo. Ma c'è un altro modo. Se si consente al modello di interagire con il mondo esterno, può trovare e aggiornare autonomamente le informazioni richieste durante una conversazione con l'utente, senza bisogno di riqualificarsi.

Questo è più o meno il funzionamento del meccanismo RAG (Retrieval Augmented Generation). Quando risponde a una domanda, il modello interroga prima un database vettoriale preparato in precedenza e, se trova informazioni rilevanti, le incorpora nella domanda. In questo modo, spiegando e aggiornando il DB vettoriale, la qualità delle risposte LLM può essere notevolmente migliorata.

Ma c'è un altro modo, ancora più interessante, per incorporare un contesto aggiornato nei prompt. Si chiama MCP, che sta per Model Context Protocol. È stato originariamente sviluppato da Anthropic per il suo modello Claude. Il momento chiave è stato quando il codice sorgente di MCP è stato reso open-source, consentendo a migliaia di ricercatori di intelligenza artificiale di costruire server personalizzati per vari scopi.

L'essenza di MCP consiste nel dare a un modello di rete neurale l'accesso a strumenti con cui può aggiornare in modo indipendente le proprie conoscenze ed eseguire varie azioni per risolvere in modo efficiente determinati compiti. È il modello stesso a decidere quale strumento utilizzare e se è appropriato in ogni situazione.

Il supporto per MCP è apparso presto in vari IDE come Cursor e in piattaforme di automazione come N8N. Quest'ultima è particolarmente intuitiva, in quanto i flussi di lavoro vengono creati visivamente, rendendo più facile la comprensione. In N8N è possibile collegarsi a un server MCP esistente o crearne uno proprio. Inoltre, è possibile organizzare una connessione diretta all'interno di un singolo flusso di lavoro. Ma andiamo per gradi.

Creazione di un semplice agente AI

Prima di iniziare, assicuratevi che il requisito principale sia soddisfatto: avete un LLM pronto per le connessioni. Può trattarsi di un modello in esecuzione locale con Ollama o di un servizio esterno come ChatGPT di OpenAI. Nel primo caso, è necessario conoscere l'indirizzo dell'API locale di Ollama (e facoltativamente la sua autenticazione), mentre nel secondo caso è necessario un account OpenAI attivo con crediti sufficienti.

La creazione di un agente inizia con il nodo chiave AI Agent. Come minimo, deve essere collegato ad altri due nodi, uno per agire come trigger e l'altro per connettersi all'LLM. Se non si specifica un trigger, il sistema ne creerà uno automaticamente, attivando l'agente alla ricezione di qualsiasi messaggio nella chat interna:

AI Agent only

L'unico pezzo mancante è l'LLM. Ad esempio, è possibile utilizzare la nostra Open WebUI: Tutto in uno per configurare Ollama con un'interfaccia web. L'unica modifica richiesta è che i contenitori per N8N e Open WebUI devono trovarsi sulla stessa rete. Ad esempio, se il contenitore N8N si trova su una rete denominata web, nel comando di installazione per Open WebUI, sostituire --network=host con --network=web.

In alcuni casi, è necessario impostare manualmente la variabile d'ambiente OLLAMA_HOST, ad esempio: -e OLLAMA_HOST=0.0.0.0. Questo permette di collegarsi all'API di Ollama non solo da localhost, ma anche da altri contenitori. Supponiamo che Ollama sia distribuito in un contenitore chiamato ollama-webui. Allora l'URL di base per la connessione da N8N sarà:

http://open-webui:11434

Prima di collegare il nodo Ollama Chat Model, non dimenticate di scaricare almeno un modello. È possibile farlo dall'interfaccia web o tramite la CLI del contenitore. Il comando seguente scarica il modello Llama 3.1 con 8 miliardi di parametri:

ollama pull llama3.1:8b

Una volta scaricato e installato, il modello apparirà automaticamente nell'elenco di quelli disponibili:

Model select

Un flusso di lavoro minimo di un agente AI funzionante si presenta come segue:

Minimal working AI Agent

In questa forma, l'agente può usare solo un modello e non memorizza i dati di input o migliora i prompt usando strumenti esterni. Quindi ha senso aggiungere almeno il nodo Simple Memory. Per carichi leggeri, è sufficiente memorizzare richieste e risposte.

Ma torniamo a MCP. Per iniziare, creare un server utilizzando il nodo speciale MCP Server Trigger:

MCP Server Trigger only

Questo nodo è completamente autonomo e non richiede un'attivazione esterna. Viene attivato esclusivamente da una richiesta esterna in arrivo al suo indirizzo webhook. Per impostazione predefinita, ci sono due URL: Test URL e Production URL. Il primo viene usato durante lo sviluppo, mentre il secondo funziona solo quando il flusso di lavoro viene salvato e attivato.

MCP Server Trigger settings

Il trigger è inutile da solo, ha bisogno di strumenti collegati. Ad esempio, colleghiamo uno degli strumenti più semplici: una calcolatrice. Questa si aspetta un'espressione matematica come input. I nodi comunicano utilizzando un semplice JSON, quindi per far sì che la calcolatrice calcoli 2 + 2, l'input dovrebbe essere:

[
  {
    "query": {
      "input": "2 + 2"
    }
  }
]

Gli LLM possono facilmente generare tali JSON dalle descrizioni dei task in testo semplice e inviarli al nodo, che esegue i calcoli e restituisce il risultato. Colleghiamo il client MCP all'agente:

AI Agent with tools

Vale la pena notare che questo nodo non ha bisogno di connessioni aggiuntive. Nelle sue impostazioni, è sufficiente specificare l'indirizzo dell'endpoint a cui invierà i dati dall'agente AI. Nel nostro esempio, questo indirizzo punta al contenitore chiamato n8n.

MCP Client Settings

Naturalmente, in questa fase è possibile specificare qualsiasi indirizzo di server MCP esterno disponibile. Ma per questo articolo, utilizzeremo un'istanza locale in esecuzione all'interno di N8N. Vediamo come si comportano il client e il server quando all'agente AI viene chiesto di eseguire una semplice operazione matematica:

MCP Client calculations example

Dopo aver ricevuto la richiesta, l'Agente AI:

  1. Cerca nella memoria semplice per vedere se l'utente l'ha già chiesta in precedenza o se è possibile riutilizzare un contesto.
  2. Invia la richiesta all'LLM, che scompone correttamente l'espressione matematica e prepara il JSON corrispondente.
  3. Inviare il JSON allo strumento Calcolatrice e ricevere il risultato.
  4. Utilizzare l'LLM per generare la risposta finale e inserire il risultato nella risposta.
  5. Memorizzare il risultato in Simple Memory.
  6. Emettere il messaggio nella chat.
MCP Client calculations JSON

Allo stesso modo, gli agenti possono lavorare con altri strumenti sul server MCP. Invece di Simple Memory, è possibile utilizzare opzioni più avanzate come MongoDB, Postgres, Redis o persino qualcosa come Zep. Naturalmente, queste opzioni richiedono una manutenzione minima del database, ma le prestazioni complessive aumenteranno in modo significativo.

Ci sono anche molte più opzioni per la selezione degli strumenti. Il nodo MCP Server Trigger supporta oltre 200 strumenti. Questi possono essere di qualsiasi tipo, da semplici richieste HTTP a integrazioni precostituite con servizi Internet pubblici. All'interno di un singolo flusso di lavoro, è possibile creare sia un server che un client. Una cosa importante da notare: questi nodi non possono essere collegati visivamente nell'editor, e questo è un comportamento previsto:

MCP Server and Client with tools

Al posto del trigger predefinito, è possibile utilizzare altre opzioni, come la ricezione di un messaggio tramite messenger, l'invio di un modulo di un sito web o l'esecuzione in base a una pianificazione. In questo modo è possibile impostare flussi di lavoro che reagiscono a eventi o eseguono operazioni di routine, come l'esportazione quotidiana di dati da Google Ads.

E le possibilità offerte dagli agenti di intelligenza artificiale non finiscono qui. È possibile costruire sistemi multi-agente utilizzando diversi modelli di rete neurale che lavorano insieme per risolvere i compiti con maggiore precisione, considerando molti più fattori di influenza nel processo.

Vedi anche:



Aggiornato: 12.08.2025

Pubblicato: 02.07.2025