Skip to main content
Glama
PainInTheNic

tailscale-mcp-server

by PainInTheNic

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TS_LOCAL_APINoReserved for the optional LocalAPI fast path (Phase 3).0
TAILSCALE_API_KEYNoLegacy static API access token (inherits the creator's full role).
TAILSCALE_TAILNETNoTailnet for REST calls; - = the credential's own tailnet.-
TAILSCALE_CLI_PATHNoPath to tailscale/tailscale.exe if not in the default location or PATH.
TAILSCALE_LOG_LEVELNodebug / info / warn / error (stderr only).info
TAILSCALE_RISK_LEVELNoread (read-only), write (adds connect/disconnect/set), admin (adds destructive tools).write
TAILSCALE_API_BASE_URLNoOverride (https or loopback only).https://api.tailscale.com
TAILSCALE_AUTH_KEY_FILENoPath to a file holding a tailnet auth key for headless first-login (passed as file:<path>; never in argv).
TAILSCALE_OAUTH_CLIENT_IDNoPreferred REST credentials (OAuth client-credentials). Both or neither.
TAILSCALE_OAUTH_CLIENT_SECRETNoPreferred REST credentials (OAuth client-credentials). Both or neither.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": true
}
prompts
{
  "listChanged": true
}
resources
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
tailscale_statusA

Report this host's Tailscale connection state, read from tailscale status --json.

Returns a normalized state and a connected boolean (true only when BackendState=Running AND Self.Online). Assigned Tailscale IPs persist even while Stopped, so an IP alone does not mean connected. The plain-status exit code is ignored (it is 1 when stopped); state comes from the JSON. Read-only.

tailscale_get_prefsA

Return this host's current effective Tailscale preferences via tailscale get --json (works even while Stopped). Read-only. Shows AcceptRoutes, AcceptDNS, ExitNode, Hostname, RunSSH, ShieldsUp, etc.

tailscale_connectA

Bring this host online on its tailnet (tailscale up). Connectivity only — it does not change preferences (use tailscale_set_prefs).

If already Running, returns immediately; if Stopped with a valid key, runs a flag-free up (silent, no browser) then polls until reachable; if login/re-auth is needed it does NOT block — it returns a login authURL (or logs in headlessly if TAILSCALE_AUTH_KEY_FILE is set). action ∈ already_connected | reconnected | needs_login. Success means state=running. No elevation needed on Windows.

tailscale_disconnectA

Disconnect this host (tailscale down): brings WireGuard down but STAYS LOGGED IN — fully reversible with tailscale_connect and does NOT expire the node key (use tailscale_logout for that). Interrupts Tailscale connectivity for every user of this machine, so it requires user approval. action ∈ already_disconnected | disconnected. Success means state=stopped.

tailscale_list_exit_nodesA

List tailnet nodes advertising as exit nodes (tailscale exit-node list), optionally filtered by country, or ask Tailscale to suggest the best one (exit-node suggest). Read-only. Select one with tailscale_set_exit_node.

tailscale_pingB

Ping a peer at the Tailscale layer (tailscale ping) and report the path (DERP relay vs direct). Read-only.

tailscale_netcheckA

Analyze local network conditions (tailscale netcheck): DERP relay reachability & latency, NAT type, UDP, IPv6. Returns JSON. Read-only.

tailscale_versionA

Report client and daemon versions (tailscale version --json), optionally checking for updates. Read-only.

tailscale_whoisA

Show the machine and user associated with a Tailscale IP (tailscale whois --json). Read-only.

tailscale_whoamiB

Show the machine + user identity of this node (tailscale whoami --json). Read-only.

tailscale_dns_statusA

Report the internal DNS forwarder (100.100.100.100) / MagicDNS configuration: resolvers, split-DNS, cert domains (tailscale dns status). Read-only.

tailscale_get_syspolicyA

List the effective LOCAL system policy applied to Tailscale on this host (MDM/GPO/registry) via tailscale syspolicy list. Use it to explain a preference that a set/up change did not persist. NOTE: this is local device policy, NOT Tailscale device posture. Read-only.

tailscale_list_profilesA

List the Tailscale account/login profiles on this machine (tailscale switch --list). Read-only.

tailscale_set_prefsA

Incrementally change one or more preferences via tailscale set (no connect/disconnect, no complete-flag-set requirement). Only benign prefs — exit-node and routes have dedicated tools. Returns the resulting status.

tailscale_set_exit_nodeA

Route this host's internet traffic through a tailnet exit node (tailscale set --exit-node). Pass an empty string to CLEAR (stop using an exit node). ⚠ This redirects ALL of this host's traffic through the chosen node, so it requires user approval. Returns the resulting status.

tailscale_set_routesA

Advertise subnet routes from this host and/or toggle accepting routes advertised by others (tailscale set --advertise-routes / --accept-routes). Advertised subnet routes still need approval in the admin console. ⚠ Route changes alter connectivity, so this requires user approval. Pass an empty advertiseRoutes array to withdraw all advertised routes. Returns the resulting status.

tailscale_switch_profileA

Switch the active Tailscale account/login profile on this machine (tailscale switch <id>). ⚠ This changes which identity/tailnet controls this node, so it requires user approval. Use tailscale_list_profiles to see ids. Returns the resulting status.

tailscale_server_infoA

Report this MCP server's version, live backends (CLI path, whether REST credentials are configured), the effective tailnet, the risk level, and a catalog of every tool: whether each is available now or, if not, WHY (risk_gated — raise TAILSCALE_RISK_LEVEL; or needs_credentials — set TAILSCALE_OAUTH_* / TAILSCALE_API_KEY). Use this when a tool you expected is missing. Read-only.

Prompts

Interactive templates invoked by user choice

NameDescription
diagnose_connectivityGuide a step-by-step diagnosis of this host's Tailscale connectivity.
review_acl_changeSafely propose and apply a tailnet ACL policy change using validate + ETag concurrency.

Resources

Contextual data attached and managed by the client

NameDescription
tailscale-statusNormalized connection state of this host.
tailscale-prefsCurrent effective preferences.

TDQS

A3.9/5.0

Scored across 18 tools

Disambiguation5/5

Each tool has a clearly distinct purpose: get/set pairs are separated (get_prefs vs set_prefs), exit-node selection (set_exit_node) is split from listing (list_exit_nodes), and set_prefs explicitly excludes exit-node/routes which have dedicated tools. The only near-overlap is whoami (this node's identity) vs whois (identity for an IP), but the descriptions disambiguate them cleanly.

Naming Consistency5/5

Every tool uses the tailscale_ prefix with a predictable verb_noun or command-name pattern (list_profiles, set_prefs, get_prefs, set_exit_node, list_exit_nodes, dns_status). The few noun-only names (status, ping, netcheck, version, whoami) mirror the underlying CLI commands, so the convention remains consistent and readable.

Tool Count4/5

18 tools is within a reasonable range and each one maps to a distinct CLI capability (status, prefs, exit nodes, routes, DNS, netcheck, ping, profile switching). It is slightly on the heavy side, but the broad surface of Tailscale's CLI justifies the count.

Completeness4/5

Strong lifecycle coverage: connect/disconnect, prefs get/set, exit-node and route management, profiles, syspolicy, DNS, netcheck, ping, whois. Minor gaps include the absence of a logout tool (explicitly referenced in tailscale_disconnect's description) and no serve/funnel or file-transfer operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues