Se hai passato un po' di tempo con Claude Desktop o Cursor negli ultimi sei mesi, probabilmente hai notato il pannello degli strumenti - un elenco di azioni con nome che l'agente può invocare nel corso di una conversazione. Questi strumenti provengono da un server MCP. Questo post spiega cosa significa, perché uno shortener di URL è un candidato naturale, e come collegare @elido/mcp-server a entrambi i client affinché l'agente possa accorciare URL, generare QR code e richiamare breakdown dei clic senza lasciare l'editor.
Cos'è MCP#
Il Model Context Protocol è un piccolo standard aperto che consente a un client AI - Claude Desktop, Cursor o qualsiasi framework di agente compatibile - di scoprire e chiamare strumenti esterni tramite un'interfaccia JSON-RPC uniforme. Il processo server gira localmente sulla tua macchina (o su un host che controlli), espone un elenco di strumenti tipizzati e comunica con il client tramite input/output standard. Il client invia una richiesta di chiamata a uno strumento, il server esegue il lavoro e il risultato torna nella conversazione come contesto. Il modello non vede mai la tua API key; la vede il server. L'intero wire protocol si adatta in pochi kilobyte per messaggio; non c'è nessun SDK da installare lato client, e il server può essere scritto in qualsiasi linguaggio capace di leggere stdin e scrivere stdout.
La versione breve: MCP è un modo standardizzato per un client AI di chiamare codice che controlli. L'agente descrive l'intento, lo strumento esegue il lavoro, l'agente incorpora il risultato.
Perché uno shortener di URL si adatta bene#
Il punto di attrito con i link brevi in qualsiasi workflow di content è sempre lo stesso: sei nel mezzo della stesura di un'email o di un brief di campagna, hai bisogno di un URL breve brandizzato per la CTA, e devi aprire una nuova scheda verso la dashboard, creare il link, copiarlo, tornare alla scheda e incollarlo. Questo cambio di contesto costa trenta secondi ma, cosa più importante, spezza il flusso di stesura.
MCP elimina il cambio di contesto. Quando @elido/mcp-server è connesso, l'agente può chiamare create_link inline - l'URL breve appare nella conversazione e tu continui. Lo stesso vale per casi meno ovvi:
- Stesura di un annuncio per il lancio di un prodotto che necessita di cinque link UTM per canale: l'agente può chiamare
create_linkcinque volte in sequenza con tag diversi, poi inserire tutti e cinque in linea nella copia. - Chiedere all'agente di produrre un QR code per un materiale stampato:
generate_qrrestituisce un artefatto SVG che l'agente mostra in-context. - Revisione delle performance della campagna della settimana scorsa:
query_analyticsestrae una timeseries di clic per qualsiasi link o per l'intero workspace, corretta per il fuso orario, senza dover accedere alla dashboard.
Nessuno di questi richiede che il modello capisca la tua API. Richiedono che @elido/mcp-server traduca una chiamata a uno strumento tipizzato in una richiesta REST autenticata e restituisca il risultato.
Il server MCP di Elido si adatta a questo modello in modo diretto. È un processo Node locale che si interpone tra il client AI e l'API REST di Elido. Quando l'agente chiama create_link, il server traduce quella chiamata in una richiesta autenticata POST /v1/workspaces/{id}/links, gestisce la risoluzione del workspace e restituisce il risultato come testo strutturato che l'agente può leggere. La chiave API non lascia mai il processo server; il client vede solo il risultato dello strumento.
Cosa ship il server oggi#
@elido/mcp-server è pubblicato su npm (Apache-2.0, versione 0.1.x). Il sorgente si trova in packages/mcp-server/ nel monorepo di Elido. Parla il trasporto MCP stdio - JSON-RPC 2.0 delimitato da newline su stdin/stdout - e non ha dipendenze runtime oltre Node 20+. Non usa il pacchetto ufficiale @modelcontextprotocol/sdk; il wire è fatto a mano per mantenere il pacchetto piccolo e facile da verificare prima di dargli una API key.
I cinque strumenti disponibili nella 0.1.x:
| Strumento | Cosa fa |
|---|---|
create_link | Accorcia un URL con slug, dominio, titolo e tag opzionali. Restituisce il record completo del link incluso l'URL breve. |
list_links | Elenca i link recenti nel workspace, con paginazione. |
query_analytics | Timeseries del conteggio clic per il workspace o un singolo link, suddivisa per ora o giorno in qualsiasi fuso orario IANA. |
generate_qr | Genera un QR code (SVG o PNG) per un link esistente. |
list_workspaces | Enumera i workspace visibili alla chiave API. |
Le operazioni di amministrazione del workspace - invitare membri, ruotare le API key, configurare domini personalizzati, gestire la fatturazione - non sono intenzionalmente nella superficie MCP. Quelle rimangono nella dashboard. La superficie degli strumenti è limitata a ciò di cui un agente che lavora su contenuti o campagne ha effettivamente bisogno inline.
Ottenere una API key#
Prima di configurare entrambi i client è necessaria una API key con scope per il workspace su cui l'agente dovrebbe operare.
- Apri Impostazioni → API Key nella dashboard di Elido.
- Clicca su Nuova chiave, dagli un nome che identifichi l'agente (es.
claude-desktop-mcp) e seleziona lo scope Link lettura/scrittura + Analytics lettura. Non concedere lo scope admin del workspace a meno che non tu abbia una ragione specifica. - Copia la chiave - viene mostrata una sola volta. Avrai bisogno anche dell'ID numerico del workspace, visibile in Impostazioni → Workspace → Generale.
Tieni la chiave fuori dal controllo di versione. I file di configurazione MCP descritti di seguito si trovano nella tua home directory o in un percorso locale al progetto; non fare il commit di nessuno dei due in un repository condiviso.
Per ulteriori informazioni sugli scope delle API key e sul log di audit che mostra ogni chiamata agli strumenti, consulta la documentazione sulle API key.
Configurare Claude Desktop#
Claude Desktop legge il suo elenco di server MCP da un file JSON in:
- macOS:
~/Library/Application Support/Claude/claude_desktop_config.json - Windows:
%APPDATA%\Claude\claude_desktop_config.json
Se il file non esiste, crealo. Aggiungi il blocco del server elido dentro mcpServers:
{
"mcpServers": {
"elido": {
"command": "npx",
"args": ["-y", "@elido/mcp-server"],
"env": {
"ELIDO_API_KEY": "elido_pk_your_key_here",
"ELIDO_WORKSPACE_ID": "42"
}
}
}
}
Sostituisci elido_pk_your_key_here con la tua chiave effettiva e 42 con il tuo ID workspace.
ELIDO_WORKSPACE_ID è opzionale se la chiave ha accesso a esattamente un workspace - il server lo risolverà automaticamente. Impostalo esplicitamente quando la chiave può vedere più di un workspace; senza di esso il server deve fare un round-trip extra a ogni chiamata che necessita di un workspace, e il comportamento è imprevedibile se l'accesso si espande in seguito a un secondo workspace.
Dopo aver salvato il file, chiudi e riavvia Claude Desktop. Gli strumenti Elido appaiono nel pannello degli strumenti. Se non appaiono, controlla la console sviluppatori di Claude Desktop (Aiuto → Mostra strumenti sviluppatore) per l'output stderr del processo server - la causa più comune è un errore di battitura nella chiave o un percorso command che non si risolve.
Se preferisci bloccare la versione esatta del pacchetto invece di scaricare l'ultima tramite npx, installalo prima globalmente:
npm install -g @elido/[email protected]
Poi sostituisci la coppia command / args:
{
"command": "elido-mcp-server",
"args": []
}
Configurare Cursor#
Cursor supporta la configurazione MCP locale al progetto tramite un file .cursor/mcp.json alla radice del workspace. Il formato è identico al blocco mcpServers di Claude Desktop:
{
"mcpServers": {
"elido": {
"command": "npx",
"args": ["-y", "@elido/mcp-server"],
"env": {
"ELIDO_API_KEY": "elido_pk_your_key_here",
"ELIDO_WORKSPACE_ID": "42"
}
}
}
}
Crea .cursor/mcp.json alla radice del progetto (aggiungilo a .gitignore se il repository è condiviso - il file contiene una API key attiva). Apri Impostazioni Cursor → Funzionalità → MCP, verifica che il server sia elencato e mostri un indicatore di stato verde, poi riavvia il pannello dell'agente. Gli strumenti Elido appariranno nell'elenco degli strumenti del Composer.
Puoi anche configurare una configurazione MCP globale di Cursor in ~/.cursor/mcp.json se vuoi gli strumenti disponibili in tutti i progetti senza file di configurazione per progetto. Le regole di precedenza seguono lo stesso schema di Claude Desktop.
Sessione di esempio: stesura di un'email di campagna e accorciamento della CTA#
Ecco come appare una reale interazione una volta connesso il server. La trascrizione dell'agente è condensata ma riflette la forma effettiva della chiamata allo strumento.
Utente: Scrivi una breve email di campagna per la nostra svendita primaverile. La CTA dovrebbe linkare a https://shop.example.com/spring-2026 - accorciala con il tag spring-2026 e usa lo slug spring se disponibile.
Claude: Accorcerò prima l'URL, poi scriverò l'email attorno al risultato.
[Chiamata strumento: create_link]
{
"destination_url": "https://shop.example.com/spring-2026",
"slug": "spring",
"title": "Spring 2026 sale CTA",
"tags": ["spring-2026"]
}
[Risultato strumento]
{
"id": 1847,
"short_url": "https://s.elido.me/spring",
"destination_url": "https://shop.example.com/spring-2026",
"slug": "spring",
"tags": ["spring-2026"],
"created_at": "2026-05-11T09:14:22Z"
}
Claude: Il link breve è https://s.elido.me/spring. Ecco la bozza dell'email:
Oggetto: Svendita primaverile - fino al 40% di sconto, solo questa settimana
Ciao [Nome],
La nostra svendita primaverile è iniziata. Nuovi arrivi, linee in liquidazione e qualche sorpresa che abbiamo tenuto da parte per il momento giusto.
Scopri la svendita → https://s.elido.me/spring
Termina domenica. Nessun codice necessario.
L'agente ha chiamato create_link con i parametri del tuo prompt, ha ricevuto indietro il record canonico del link e ha usato il campo short_url nella bozza. Se lo slug spring fosse stato occupato, l'API avrebbe restituito un 409 e l'agente avrebbe provato un'alternativa o avrebbe evidenziato il conflitto per farti risolvere.
Nota che domain_id non è stato fornito nella chiamata allo strumento. Il server lo risolve automaticamente: se non viene fornito nessun domain_id, recupera l'elenco dei domini del workspace e sceglie il primo dominio verificato. Per i workspace del piano Free è f.elido.me; per i workspace a pagamento è s.elido.me o un dominio personalizzato se ne è configurato uno. Se vuoi un dominio specifico, passa il suo ID numerico esplicitamente - puoi cercarlo con list_workspaces o dalla dashboard.
Puoi anche chiedere all'agente di gestire più link in un singolo turno. "Crea link con tag UTM per email, Twitter e LinkedIn - tutti che puntano alla pagina della svendita primaverile" risulterà in tre chiamate create_link sequenziali con set di tag diversi, e l'agente presenterà tutti e tre gli URL brevi in una tabella che puoi incollare direttamente in un brief di campagna. Questo schema sostituisce una sessione manuale di creazione UTM nella dashboard per la configurazione di campagne di routine, anche se non supporta ancora il sistema di template UTM a livello workspace (trattato nella guida al tracciamento UTM) - quel livello di automazione passa ancora per l'API REST.
Sessione di esempio: query dei breakdown dei clic#
Il secondo schema è estrarre analytics durante una revisione di campagna senza aprire la dashboard.
Utente: Come si sono comportati i link spring-2026 la settimana scorsa? Suddividi per giorno, ora di Berlino.
Claude: Lasciatemi estrarre la timeseries per quel link.
[Chiamata strumento: query_analytics]
{
"link_id": 1847,
"from": "2026-05-04",
"to": "2026-05-10",
"interval": "day",
"tz": "Europe/Berlin"
}
[Risultato strumento]
{
"items": [
{ "bucket": "2026-05-04", "clicks": 312 },
{ "bucket": "2026-05-05", "clicks": 489 },
{ "bucket": "2026-05-06", "clicks": 701 },
{ "bucket": "2026-05-07", "clicks": 1204 },
{ "bucket": "2026-05-08", "clicks": 988 },
{ "bucket": "2026-05-09", "clicks": 623 },
{ "bucket": "2026-05-10", "clicks": 417 }
],
"total": 4734,
"tz": "Europe/Berlin"
}
Claude: Il link primaverile ha ricevuto 4.734 clic la settimana scorsa. Il picco è stato mercoledì–giovedì (701 → 1.204), il che si allinea con gli invii email a metà settimana. Il traffico è calato durante il fine settimana. Se hai inviato l'email di campagna giovedì mattina ora di Berlino, il picco corrisponde.
Per confrontare più link, chiedi all'agente di chiamare query_analytics una volta per link e compilare i risultati. Sono alcune chiamate agli strumenti in più, ma l'agente gestisce il loop; ottieni una tabella affiancata senza aprire la dashboard o scrivere uno script.
Il parametro tz garantisce che i bucket giornalieri si allineino con la tua mezzanotte locale, non UTC. Un'email di campagna inviata alle 9 ora CET che interroghi in UTC avrà il traffico del primo giorno diviso su due giorni UTC - tz: Europe/Berlin lo evita. Il supporto ai fusi orari proviene dal lavoro di analytics Phase 6.A descritto nella pagina del server MCP.
Sicurezza - scope della chiave, cosa invia il server, il log di audit#
Alcune cose da sapere prima di mettere tutto questo davanti a un team.
Limita lo scope della chiave. Gli strumenti create_link e generate_qr necessitano di accesso in scrittura ai link. query_analytics necessita di accesso in lettura all'analytics. list_links e list_workspaces necessitano di accesso in lettura ai link. Se il tuo workflow è di sola lettura - estrazione di metriche durante una revisione - crea una chiave con sola analytics lettura + link lettura e passala al server. Il server chiamerà solo gli endpoint che la chiave consente; tutto il resto restituisce un 403 che emerge come errore nella risposta dell'agente.
Cosa invia il server. Ogni chiamata agli strumenti diventa una richiesta autenticata a api.elido.app con Authorization: Bearer <key>. Il server invia l'header User-Agent: elido-mcp-server/0.1.0 su ogni richiesta; quella stringa è visibile nel log di audit. Nessun dato viene inviato ad Anthropic o a qualsiasi servizio di terze parti dal server stesso - il server MCP è un processo locale che fa da intermediario tra il client e l'API di Elido. Quali dati il client AI invia al proprio backend (il tuo prompt di Claude Desktop, i risultati degli strumenti che tornano nel contesto) è regolato dalle politiche sui dati di Anthropic o Cursor, non di Elido.
Log di audit. Ogni chiamata API effettuata dal server MCP appare in Impostazioni → Log di audit nella dashboard, contrassegnata con il nome della chiave e l'IP di origine. Se vedi chiamate agli strumenti inaspettate, ruota immediatamente la chiave da Impostazioni → API Key. Il log di audit è disponibile sui piani Pro e Business.
La chiave nel file di configurazione. Il blocco env in claude_desktop_config.json e .cursor/mcp.json archivia la chiave in testo normale. Su una macchina personale questo è accettabile; in un ambiente condiviso o gestito preferisci iniettare la chiave tramite il keychain di sistema o un secrets manager e referenziarla tramite una variabile d'ambiente che la configurazione MCP legge indirettamente. Per i setup di team, ogni membro dovrebbe avere la propria chiave - le chiavi condivise rendono l'attribuzione nel log di audit senza senso.
Limiti onesti#
Alcune cose che il server MCP non fa, per scelta progettuale.
Nessuna operazione admin del workspace. Invitare membri del team, configurare domini personalizzati, gestire la fatturazione del piano, creare o eliminare workspace - niente di tutto questo è nella superficie degli strumenti. Queste operazioni sono abbastanza consequenziali da giustificare il fatto di richiedere un essere umano loggato nella dashboard come controllo. La superficie MCP è intenzionalmente limitata al lavoro che un agente di contenuti o campagne necessita inline. Se hai bisogno di automatizzare il provisioning del workspace, l'API REST e il provider Terraform sono gli strumenti giusti.
Nessuno streaming in tempo reale. Il trasporto attuale è stdio con richiesta/risposta sincrona. Il trasporto SSE è nella roadmap. Per la maggior parte dei workflow degli agenti - creare un link, ottenere un QR code, estrarre una timeseries settimanale - il modello sincrono va bene. Per un caso d'uso che richiede lo streaming di un grande elenco di link o di seguire un contatore di clic in tempo reale, la dashboard o l'API REST è lo strumento giusto oggi.
Si applicano i rate limit. L'API di Elido impone rate limit per chiave indipendentemente dal fatto che il chiamante sia un essere umano, uno script o un server MCP. I limiti per tier di piano sono nel riferimento API. I workflow degli agenti che chiamano create_link in loop stretti - creando in blocco centinaia di link programmaticamente - dovrebbero usare l'endpoint di importazione bulk REST (POST /v1/links/bulk) direttamente invece di emettere centinaia di singole chiamate create_link. Il server MCP è ottimizzato per uso interattivo e inline; le operazioni bulk appartengono alla superficie di scripting.
query_analytics restituisce solo conteggi di clic. La timeseries che restituisce lo strumento query_analytics è conteggi di clic suddivisi per tempo. Non restituisce breakdown geografici, suddivisioni per dispositivo, dati di referrer o attribuzione delle conversioni. Questi sono disponibili nella dashboard e tramite l'API REST completa dell'analytics ma non fanno parte dell'attuale superficie degli strumenti MCP. Se il tuo workflow di agente richiede un breakdown per paese per link, chiama l'API REST direttamente.
Dove andare dopo#
Il sorgente del server e il tracker dei problemi si trovano in packages/mcp-server/ nel monorepo di Elido. Il pacchetto è pubblicato con provenance npm, quindi ogni release è crittograficamente legata al commit da cui è stata costruita - verificare l'artefatto di pubblicazione è semplice.
La pagina di integrazione MCP ha il riferimento agli strumenti, la matrice degli scope e la configurazione self-host per puntare ELIDO_API_BASE a un'istanza privata di Elido. Se sei su un piano che include la configurazione MCP del workspace, la pagina copre anche il workflow di rotazione delle chiavi del team.
I due setup che vale di più provare per primi:
-
Collega Claude Desktop come descritto sopra, apri una nuova conversazione e digita "accorcia
https://example.com/testcon il tagmcp-test". Guarda la chiamata allo strumento attivarsi e l'URL breve apparire nella risposta. L'intero setup dovrebbe richiedere meno di cinque minuti. -
Se già usi Cursor per contenuti o documentazione, inserisci
.cursor/mcp.jsonnella radice del progetto e chiedi al Composer di "riassumere i link più cliccati della settimana scorsa per conteggio clic". Le chiamatelist_linksequery_analyticsavvengono inline e l'agente scrive il riassunto direttamente nella chat.
Entrambi sono in beta (0.1.x) - la superficie degli strumenti crescerà, ma gli input degli strumenti esistenti non si romperanno nell'intervallo 0.1.x. Se qualcosa non funziona come descritto qui, apri una issue con l'etichetta area:mcp e la tratteremo come una regressione.
Correlati sul blog#
- Raggiungere p95 < 15ms per i redirect da FRA, ASH e SGP
- Importazione bulk di link brevi da un Google Sheet (il vero workflow di campagna)
- Perché usiamo ClickHouse per le analytics dei clic (e non Postgres)
- URL shortener per SaaS: lifecycle, onboarding, comunicazioni in-product
Se stai valutando Elido sul costo, il server MCP è disponibile su tutti i piani - le chiamate agli strumenti contano sugli stessi rate limit API di qualsiasi altro client. La visibilità del log di audit descritta sopra richiede Pro o superiore. Vedi la pagina dei prezzi per il confronto completo dei piani.
- Marius
Prova Elido
Incolla un URL, ottieni un link breve
Senza registrazione. Il link vive 30 giorni. Iscriviti per conservarlo.
Gratis, nessuna registrazione richiesta · 2 al giorno