Salta l'installazione. Attivo in meno di 2 minuti.
Avvia una prova gratuita su cloud.anythingmcp.com, aggiungi Tailscale con un clic, poi punta il tuo client AI (Claude, ChatGPT, Copilot o Cursor) all'endpoint MCP generato. Niente Docker, niente git clone, nessuna esperienza di sviluppo richiesta.
In breve
Amministrazione di una tailnet Tailscale tramite l'API v2: dispositivi con route, tag, approvazione e attributi di posture, utenti e ruoli, auth key, il policy file (lettura, validazione, anteprima), DNS e MagicDNS, impostazioni della tailnet, audit log di configurazione e network flow log, log streaming, webhook, Services e integrazioni di posture. Accede con un client OAuth, senza login dal browser.
Prova a chiedere
Prompt di esempio per Tailscale
Clicca su un prompt per copiarlo. Incollalo in Claude, ChatGPT, Cursor, Gemini, Copilot o OpenClaw per eseguirlo contro questo connettore.
Claude è un'AI e può sbagliare. Verifica sempre le risposte.
💡 Niente installazione? Vai direttamente su cloud.anythingmcp.com. Accedi, clicca Connectors → Tailscale, inserisci le credenziali, genera una MCP API key e hai finito. Niente Docker, niente
git clone, niente server locale.
Tailscale + Gemini
Amministrazione di una tailnet Tailscale tramite l'API v2: dispositivi con route, tag, approvazione e attributi di posture, utenti e ruoli, auth key, il policy file (lettura, validazione, anteprima), DNS e MagicDNS, impostazioni della tailnet, audit log di configurazione e network flow log, log streaming, webhook, Services e integrazioni di posture. Accede con un client OAuth, senza login dal browser.
Prerequisiti
Le istruzioni di setup complete sono incluse nel connettore stesso (visibili nello store quando lo selezioni). Le variabili d'ambiente richieste sono:
TAILSCALE_OAUTH_CLIENT_ID, TAILSCALE_OAUTH_CLIENT_SECRET
Step 1 — Ottieni le credenziali
La configurazione richiede circa 5 minuti e un utente della tailnet con ruolo Owner, Admin, Network admin o IT admin. Il connettore accede con un client OAuth di Tailscale (OAuth2 client credentials): non c'è login dal browser e non c'è un account utente dietro.
- Apri https://login.tailscale.com/admin/settings/trust-credentials (Settings, Trust credentials; console più vecchie: Settings, OAuth clients) e fai clic su Credential, poi OAuth.
- Scegli gli scope. Per la sola lettura basta
all:read. Per gli strumenti di scrittura aggiungi gli scope corrispondenti:devices:core(richiede uno o più tag, per esempiotag:server),devices:routes,users,auth_keys(richiede anch'esso dei tag),policy_file,dns,feature_settings,webhooks.allconcede tutto. - Copia il Client ID (per esempio
kAbCdEf1CNTRL) inTAILSCALE_OAUTH_CLIENT_IDe il Client secret (tskey-client-..., mostrato una sola volta) inTAILSCALE_OAUTH_CLIENT_SECRET. Un API access token (tskey-api-...) qui non funziona. - Installa il connettore ed esegui
tailscale_list_devices: elenca i dispositivi della tailnet e conferma il client.
Il connettore scambia il client con un access token di un'ora su https://api.tailscale.com/api/v2/oauth/token e lo rinnova da solo. A differenza degli API access token, che durano al massimo 90 giorni, un client OAuth non scade. Ogni chiamata va alla tailnet a cui appartiene il client (- nel percorso). Una scrittura per cui il client non ha lo scope risponde 403.
Secret nelle risposte: l'AI vede tutto ciò che uno strumento restituisce. tailscale_create_auth_key restituisce una nuova auth key (tskey-auth-...) e tailscale_create_webhook un signing secret del webhook, ciascuno mostrato solo questa volta; entrambi finiscono nella conversazione e presso il fornitore dell'AI. L'AI li consegna solo a chi li ha chiesti, mai ad altri strumenti, file o messaggi. tailscale_list_user_invites mostra link di invito con cui chiunque li abbia può entrare. tailscale_list_keys e tailscale_get_key non restituiscono mai i valori delle chiavi, e in tailscale_list_webhooks, tailscale_get_webhook e tailscale_get_log_streaming_configuration signing secret, token e credenziali cloud sono rimossi.
Dispositivi: tailscale_list_devices con filter (per esempio hostname=web-1, tags=tag:prod, authorized=false) e fields=all per route e connettività; tailscale_get_device, tailscale_get_device_routes e tailscale_get_device_posture_attributes. Modifiche: tailscale_authorize_device (approvare un dispositivo o revocare l'approvazione), tailscale_set_device_routes (approvare subnet route ed exit node), tailscale_set_device_tags, tailscale_set_device_name (il nuovo nome diventa subito il nome MagicDNS) e tailscale_set_device_key_expiry (scadenza della chiave disattivata, per server più che per portatili).
Utenti: tailscale_list_users per ruolo o tipo, tailscale_get_user, tailscale_list_user_invites; tailscale_update_user_role, tailscale_approve_user, e tailscale_suspend_user e tailscale_restore_user (una sospensione si annulla con il ripristino).
Chiavi: tailscale_list_keys (all=true aggiunge auth key e API access token), tailscale_get_key e tailscale_create_auth_key per aggiungere server, container o runner CI: riutilizzabile o monouso, effimera, preautorizzata, valida al massimo 90 giorni. Con il client OAuth di questo connettore la chiave deve avere dei tag, quelli del client o tag di loro proprietà.
Regole di accesso: tailscale_get_policy_file legge il policy file (grants e acls, groups, hosts, tagOwners, autoApprovers, ssh, nodeAttrs, postures, tests) con il suo etag. tailscale_preview_policy_rules mostra quali regole valgono per un utente o un IP:porta, e tailscale_validate_policy_file controlla una bozza ed esegue i suoi test; nessuno dei due modifica nulla.
DNS e impostazioni: tailscale_get_dns_configuration mostra nameserver, split DNS, domini di ricerca e MagicDNS in una chiamata. Le modifiche passano per tailscale_set_dns_nameservers, tailscale_set_dns_preferences (MagicDNS attivo o no; per attivarlo serve un nameserver globale), tailscale_set_dns_search_paths e tailscale_update_split_dns (cambiano solo i domini indicati). tailscale_get_tailnet_settings e tailscale_update_tailnet_settings coprono approvazione di dispositivi e utenti, scadenza delle chiavi, aggiornamenti automatici, network flow logging, certificati HTTPS e altro; tailscale_get_contacts mostra i contatti di account, supporto e sicurezza.
Log e integrazioni: tailscale_list_configuration_audit_logs (chi ha cambiato cosa, conservato 90 giorni, filtrabile per autore, oggetto o evento), tailscale_list_network_flow_logs (traffico tra dispositivi, nei piani Premium ed Enterprise con flow logging attivo; l'AI chiede minuti, non giorni, perché le risposte crescono in fretta), tailscale_get_log_streaming_status e tailscale_get_log_streaming_configuration per lo streaming verso un SIEM, webhook (tailscale_list_webhooks, tailscale_get_webhook, tailscale_create_webhook), Tailscale Services (tailscale_list_services, tailscale_get_service, tailscale_list_service_hosts) e integrazioni di posture (tailscale_list_posture_integrations).
Le modifiche sostituiscono gli elenchi: route, tag, nameserver e domini di ricerca si inviano come elenco completo. L'AI legge prima il valore attuale e invia le voci esistenti più quella nuova; una route lasciata fuori viene disattivata.
Disattivati all'installazione: tailscale_expire_device_key, tailscale_delete_device, tailscale_delete_user e tailscale_delete_key, perché non si possono annullare, e tailscale_set_policy_file, perché sostituisce in una sola chiamata l'intera policy di accesso della tailnet e una regola sbagliata taglia fuori utenti e dispositivi. Un amministratore del workspace li attiva consapevolmente quando il team ne ha bisogno.
Formati dei dati: il nodeId di un dispositivo (per esempio nAbCdEf1CNTRL) è l'id preferito; funziona anche l'id numerico. name è il nome MagicDNS (web-1.tailnet-name.ts.net), addresses sono gli IP Tailscale (100.x.y.z e fd7a:115c:a1e0::/48). Gli orari sono RFC 3339 in UTC; lastSeen è vuoto finché un dispositivo è connesso (connectedToControl: true). Un expires di 0001-01-01 significa che la scadenza della chiave è disattivata. I tag hanno la forma tag:name.
Paginazione: gli elenchi arrivano in una sola risposta, senza paginazione. Gli strumenti dei log accettano invece un orario start ed end.
Errori comuni: 401 significa che il client OAuth è stato eliminato o il secret è errato. 403 significa che al client mancano lo scope o i tag per questa chiamata, oppure che il piano non include la funzione. 404 significa che l'id non esiste in questa tailnet. 400 arriva con un message per input non validi, compresi i policy file con test che falliscono. 412 significa che la policy è cambiata dopo il tuo etag. 429 significa rate limit: attendi un minuto e riprova.
Il connettore non crea client OAuth o API access token, non annuncia route e non registra dispositivi (questo avviene sul dispositivo), e con gli strumenti attivi all'installazione non elimina dispositivi, utenti o chiavi e non sostituisce il policy file.
Step 2 — Installa l'adapter
curl -fsSL https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml -o docker-compose.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d
Step 3 — Aggiungi il connettore in Gemini
L'URL del tuo server: in AnythingMCP apri MCP Servers → il server su cui si trova questo connettore e copia il suo URL (
https://cloud.anythingmcp.com/mcp/…). Usalo ovunque questa guida mostraYOUR_SERVER_ID.
Gemini CLI legge i server MCP da ~/.gemini/settings.json (su Windows %USERPROFILE%\.gemini\settings.json). Aggiungi:
{
"mcpServers": {
"anythingmcp": {
"httpUrl": "https://cloud.anythingmcp.com/mcp/YOUR_SERVER_ID",
"headers": { "X-API-Key": "YOUR_MCP_API_KEY" }
}
}
}
- Crea una chiave API MCP in AnythingMCP da MCP Servers → il tuo server → API keys e incollala al posto di
YOUR_MCP_API_KEY. - Salva il file e riavvia
gemini. - Esegui
/mcpin Gemini CLI (oppuregemini mcp listdal terminale):anythingmcpdovrebbe risultare connesso. - Inizia a scrivere prompt: Gemini CLI ora può chiamare i tool di
Tailscale.
Tool disponibili
| Tool | What it does |
|---|---|
tailscale_list_devices | List the devices (machines) of the tailnet: nodeId, numeric id, name (MagicDNS name), hostname, user, OS, client version, Tailscale IP… |
tailscale_get_device | One device with its details: name, hostname, user, OS, addresses, tags, authorized, key expiry, lastSeen, connectedToControl and, with… |
tailscale_get_device_routes | The subnet routes a device advertises (advertisedRoutes) and the ones that are approved for it (enabledRoutes) |
tailscale_set_device_routes | Replace the list of approved (enabled) subnet routes of a device |
tailscale_authorize_device | Approve a device that waits for device approval (authorized=true), or take the approval back (authorized=false), which cuts it off from the… |
tailscale_set_device_name | Rename a device: the new name becomes its MagicDNS name at once, so links and scripts that use the old name stop working |
tailscale_set_device_tags | Replace the tags of a device |
tailscale_set_device_key_expiry | Switch key expiry off (key_expiry_disabled=true) or back on for a device |
tailscale_expire_device_key | Expire the node key of a device now |
tailscale_delete_device | Remove a device from the tailnet |
tailscale_get_device_posture_attributes | The posture attributes of a device as key-value pairs: those Tailscale collects (node:os, node:tsVersion, ...), those from posture… |
tailscale_list_users | List the users of the tailnet: id, displayName, loginName (e-mail), role, status (active, idle, suspended, needs-approval… |
tailscale_get_user | One user: displayName, loginName, role, status, type, created, lastSeen, deviceCount |
tailscale_update_user_role | Change the role of a user |
tailscale_approve_user | Approve a user whose status is needs-approval (when user approval is on in the tailnet settings) |
tailscale_suspend_user | Suspend a user: their devices lose access to the tailnet until the user is restored with tailscale_restore_user |
tailscale_restore_user | Restore a suspended user, giving their devices access to the tailnet again |
tailscale_delete_user | Delete a user from the tailnet, together with their devices |
tailscale_list_user_invites | Open (not yet accepted) invitations to join the tailnet: id, e-mail, role, inviter and when the e-mail was last sent. inviteUrl lets… |
tailscale_list_keys | List the keys of the tailnet: auth keys, API access tokens, OAuth clients and federated identities, with id, keyType, description, created… |
tailscale_get_key | One key by id: keyType, description, created, expires, revoked, invalid, capabilities (reusable, ephemeral, preauthorized, tags for auth… |
tailscale_create_auth_key | Create an auth key to add devices to the tailnet |
tailscale_delete_key | Revoke a key by id: an auth key, an API access token or a trust credential |
tailscale_get_policy_file | The tailnet policy file (access rules) as JSON: grants and acls, groups, hosts, tagOwners, autoApprovers, ssh, nodeAttrs, postures and… |
tailscale_validate_policy_file | Check a policy file without saving it: Tailscale parses it and runs its tests (and sshTests) |
tailscale_preview_policy_rules | Which rules of a policy file would apply to one user or one IP:port, without saving it |
tailscale_set_policy_file | Replace the whole tailnet policy file |
tailscale_get_dns_configuration | The full DNS setup of the tailnet in one call: global nameservers, split DNS routes (domain to nameservers), search paths and preferences… |
tailscale_set_dns_nameservers | Replace the global DNS nameservers of the tailnet |
tailscale_set_dns_preferences | Switch MagicDNS on or off for the tailnet |
tailscale_set_dns_search_paths | Replace the DNS search domains of the tailnet |
tailscale_update_split_dns | Change split DNS for some domains: only the domains you pass are changed, the others stay |
tailscale_get_tailnet_settings | The tailnet settings: device approval, device auto-updates, key expiry in days, user approval, who may join external tailnets, network flow… |
tailscale_update_tailnet_settings | Change one or more tailnet settings; fields you leave out keep their value |
tailscale_get_contacts | The account, support and security contact e-mails of the tailnet, each with its fallback and whether it still needs verification |
tailscale_list_configuration_audit_logs | Configuration audit log: who changed what in the tailnet (devices, users, keys, policy file, DNS, settings) between start and end, in time… |
tailscale_list_network_flow_logs | Network flow logs between start and end: which devices talked to which addresses and ports, with packet and byte counts per sample period… |
tailscale_get_log_streaming_status | Whether streaming of a log type to a SIEM works: last activity, last error, bytes and entries sent, rate |
tailscale_get_log_streaming_configuration | Where a log type is streamed: destination type (splunk, elastic, datadog, s3, ...), URL, upload period, compression, S3 bucket and region |
tailscale_list_webhooks | The webhook endpoints of the tailnet: endpointId, URL, provider type, the events they receive and who created them |
tailscale_get_webhook | One webhook endpoint by id: URL, provider type, subscribed events, creator, created and lastModified |
tailscale_create_webhook | Create a webhook that sends tailnet events to a URL |
tailscale_list_services | Tailscale Services of the tailnet (virtual services hosted by one or more devices): name (svc:...), addresses, ports, tags and comment |
tailscale_get_service | One Tailscale Service by name: its addresses, ports, tags and comment |
tailscale_list_service_hosts | The devices that host a Tailscale Service, with whether each one is approved to serve it |
tailscale_list_posture_integrations | The device posture integrations of the tailnet (CrowdStrike Falcon, Intune, Jamf Pro, Kandji, Kolide, SentinelOne): provider, cloud id… |
Esempi di prompt
- "Quali dispositivi non si vedono da più di 30 giorni? Mostra nome, utente e ultima connessione."
- "Quali subnet route annuncia router-1, e quali non sono ancora approvate?"
- "Crea una auth key riutilizzabile e preautorizzata con il tag tag:ci che scada tra 7 giorni."
- "Chi ha modificato il policy file o le impostazioni DNS nell'ultima settimana?"
- "Quali regole del nostro policy file valgono per [email protected]?"
FAQ
Dove cerca i server MCP Gemini CLI? In ~/.gemini/settings.json per il tuo utente, oppure in .gemini/settings.json dentro un progetto. gemini mcp list mostra ogni server e se si connette.
Prossimi passi
- Landing del connettore
- Collegare a Claude
- Collegare a ChatGPT
- Collegare a Cursor
- Collegare a Meta Muse
- Collegare a Microsoft Copilot
Questa guida ti è stata utile?