Skip to content
verify mcp Beta VerifyMCP is currently in beta. If you notice any issues, email [email protected] and we’ll put it right.

io.github.YawLabs/tailscale-mcp

NPM · @YAWLABS/TAILSCALE-MCP · SCANNED AUG 4

Tailscale MCP server for managing your tailnet from AI assistants

−7 this week 71 Trust /100
Trust breakdown (6 categories)

How this component scores in each security and reliability category. Every signal is checked automatically from public evidence about the published package, including repeated runs of it in an isolated sandbox, and we only credit what we can confirm. How we score →

Supply Chain Security100
  • No malware found by supply-chain analysis.Pass
  • No known CVEs affecting this package version or its production dependencies.Pass
  • No install/post-install scripts declared.Pass
  • No production dependencies, so there is no dependency health to assess. View diagnostics → Pass
Provenance & Transparency19
Schema Quality & AI Usability88
  • 100% of prompts and resources have a non-trivial description (not blank, and not just the item's name).Pass
  • AI-judged instruction clarity (excellent).Pass
  • Tool/resource definitions use about 6773 tokens (~72/item across 93 items; 89 tools + 4 resources), lean.Pass
  • Usage-examples check failed: none of the tools include examples. See how to fix → Fail
Stability & Change Management30
  • Stability observed for 9 of 30 days with no destabilising changes; credit accrues until the full window elapses.Partial
Tool Coverage100
  • 100% of tools have a non-trivial description (not blank, and not just the tool's name).Pass
  • 100% of tool parameters carry a description.Pass
Capabilities100
  • Implements a supported MCP spec version (2025-11-25); the latest is 2026-07-28.Pass
Install

Add this component to your MCP client. Where a client-specific snippet is available, pick your client below and copy it straight into your config; otherwise use the connection detail shown.

npm · @yawlabs/tailscale-mcp

# add to Claude Code
claude mcp add yawlabs-tailscale-mcp -- npx -y @yawlabs/tailscale-mcp
# add to Codex CLI
codex mcp add yawlabs-tailscale-mcp -- npx -y @yawlabs/tailscale-mcp
// opencode.json
{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "yawlabs-tailscale-mcp": {
      "type": "local",
      "command": [
        "npx",
        "-y",
        "@yawlabs/tailscale-mcp"
      ],
      "enabled": true
    }
  }
}
# add to OpenClaw
openclaw mcp add yawlabs-tailscale-mcp --command npx --arg -y --arg @yawlabs/tailscale-mcp
# ~/.hermes/config.yaml
mcp_servers:
  yawlabs-tailscale-mcp:
    command: "npx"
    args: ["-y", "@yawlabs/tailscale-mcp"]
// mcp.json
{
  "mcpServers": {
    "yawlabs-tailscale-mcp": {
      "command": "npx",
      "args": [
        "-y",
        "@yawlabs/tailscale-mcp"
      ]
    }
  }
}
Changelog

Every change we have recorded for this component, newest first. Security-relevant changes are always shown. ▲ marks a change for the better, ▼ a change for the worse; unmarked changes are neutral.

  • 4 Aug 26 +1
    • Security disclosure: fail → unverified functional
  • 3 Aug 26 +4
    • Stability: unverified → 0.27 functional
  • 2 Aug 26 +15
    • Malware scan: unverified → pass security
  • 31 Jul 26 −9
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 30 Jul 26 −18
    • Malware scan: pass → unverified security
  • 27 Jul 26 0
    • We updated how we score, so this day's move reflects our rubric, not a change to the server See what changed → functional
  • 26 Jul 26 78

    First indexed and scored.

Diagnostics

Diagnostic detail from the automated scan of this channel: what the scanner observed at each step, so you can see exactly where a check passed or failed. It is informational only and never changes the trust score.

Captured 4 Aug 2026 · Analysed npm/@yawlabs/[email protected]

Provenance none

Ecosystem: npm · Outcome: none

Dependencies 0 packages

0 packages in the resolved dependency tree.

MCP tools — 89 exposed · ~6,697 tokens

The tools this component advertises to a client, with an estimated token cost for each. Expand a tool to see its parameters and schema. The per-tool counts are indicative and are not scored directly; the schema's total context footprint is one signal in Schema Quality & AI Usability.

Tool Tokens
tailscale_accept_device_invite ~38

Accept a device share invitation using the invite URL or code.

NameTypeReqDescription
invitestringyesThe device invite URL or invite code

No output schema declared.

No examples provided.

tailscale_approve_user ~38

Approve a pending user, granting them access to the tailnet.

NameTypeReqDescription
userIdstringyesThe user ID to approve

No output schema declared.

No examples provided.

tailscale_authorize_device ~33

Authorize a device that is pending authorization.

NameTypeReqDescription
deviceIdstringyesThe device ID to authorize

No output schema declared.

No examples provided.

tailscale_batch_update_posture_attributes ~159

Batch update custom posture attributes across multiple devices. Each attribute key must start with 'custom:'. Uses JSON Merge Patch semantics — pass null as the attribute config to delete.

NameTypeReqDescription
commentstringOptional comment added to the audit log explaining why attributes are being set (max 200 chars)
nodesobjectyesMap of device ID to attribute config map (e.g. { "12345": { "custom:compliant": { "value": "true" } }, "67890": { "custom:compliant": { "value": false, "expiry": "2026-12-01T00:00:00Z" } } }). Pass n…

No output schema declared.

No examples provided.

tailscale_create_aws_external_id ~46

Create or get an AWS external ID for your tailnet. Used when configuring log streaming to S3 — the external ID is included in the IAM role trust policy.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

tailscale_create_device_invite ~107

Create a device share invitation that allows an external user to access a specific device in your tailnet.

NameTypeReqDescription
allowExitNodebooleanWhether the invited device can be used as an exit node (default: false)
deviceIdstringyesThe device ID to create an invite for
emailstringEmail address to send the invite to
multiUsebooleanWhether the invite can be used more than once (default: false)

No output schema declared.

No examples provided.

tailscale_create_key ~495

Create a new key in your tailnet. Supports auth keys (for adding devices), OAuth clients (for programmatic API access), and federated identities (for OIDC-based CI/CD access). Returns the key value — save it immediately, as it cannot be retrieved again. SECURITY: the response body contains a long-lived credential verbatim. MCP clients commonly persist tool responses to logs and conversation transcripts; treat this response as sensitive (do not commit it, avoid re-sharing it in unrelated chat history). Examples: - Auth key: {keyType:'auth', reusable:true, tags:['tag:ci']} - OAuth client: {keyType:'client', scopes:['devices:read','dns']} - Federated (GitHub Actions): {keyType:'federated', scopes:['devices:read'], issuer:'https://token.actions.githubusercontent.com', subject:'repo:my-org/my-repo:*'}

NameTypeReqDescription
audiencestring(federated only) Expected audience claim
customClaimRulesobject(federated only) Custom claim mapping rules
descriptionstringDescription for this key (max 50 chars, alphanumeric/hyphens/spaces)
ephemeralboolean(auth only) Whether devices using this key are ephemeral (default: false)
expirySecondsnumber(auth only) Key expiry in seconds (default: 90 days)
issuerstring(federated only) OIDC issuer URL (e.g. 'https://token.actions.githubusercontent.com')
keyTypestringKey type: 'auth' (default) for device auth keys, 'client' for OAuth clients, 'federated' for OIDC federation
preauthorizedboolean(auth only) Whether devices are pre-authorized (default: false)
reusableboolean(auth only) Whether the key can be used more than once (default: false)
scopesarray(client/federated) OAuth scopes to grant (e.g. ['devices:read', 'dns', 'acl'])
subjectstring(federated only) Expected subject claim, supports * wildcards
tagsarrayACL tags (must start with 'tag:'). Required for client/federated if scopes include 'devices:core' or 'auth_keys'

No output schema declared.

No examples provided.

tailscale_create_posture_integration ~210

Create a new device posture integration.

NameTypeReqDescription
clientIdstringClient ID for the provider (Intune: application UUID; Falcon/Jamf Pro: client id; Kandji/Kolide/Sentinel One: leave blank)
clientSecretstringyesThe secret (auth key, token, etc.) used to authenticate with the provider. SENSITIVE: passed straight to Tailscale and not echoed back, but MCP clients may log the input value you supply.
cloudIdstringIdentifies which of the provider's clouds to integrate with. Falcon: us-1|us-2|eu-1|us-gov; Intune: global|us-gov; Jamf Pro/Kandji/Sentinel One: FQDN of your subdomain; Kolide: leave blank.
providerstringyesThe posture provider
tenantIdstringMicrosoft Intune directory (tenant) ID. Other providers leave blank.

No output schema declared.

No examples provided.

tailscale_create_user_invite ~58

Create a new user invite that allows someone to join your tailnet.

NameTypeReqDescription
emailstringEmail address to send the invite to
rolestringRole to assign to the invited user (default: member)

No output schema declared.

No examples provided.

tailscale_create_webhook ~100

Create a new webhook. The response includes the webhook's signing secret -- this is the only opportunity to capture it; save it immediately. SECURITY: the response body contains the secret verbatim. MCP clients commonly persist tool responses to logs and conversation transcripts; treat this response as sensitive.

NameTypeReqDescription
endpointUrlstringyesThe HTTPS URL to send webhook events to
subscriptionsarrayyesEvent types to subscribe to (at least one)

No output schema declared.

No examples provided.

tailscale_deauthorize_device ~51

Deauthorize a device, immediately removing its access to the tailnet. The device will need to be re-authorized to reconnect.

NameTypeReqDescription
deviceIdstringyesThe device ID to deauthorize

No output schema declared.

No examples provided.

tailscale_delete_device ~47

Permanently remove a device from the tailnet. This is irreversible — the device must re-authenticate to rejoin.

NameTypeReqDescription
deviceIdstringyesThe device ID to delete

No output schema declared.

No examples provided.

tailscale_delete_device_invite ~42

Delete a device invite. This is irreversible — the invite link will stop working.

NameTypeReqDescription
inviteIdstringyesThe device invite ID to delete

No output schema declared.

No examples provided.

tailscale_delete_device_posture_attribute ~59

Delete a custom posture attribute from a device. This is irreversible.

NameTypeReqDescription
attributeKeystringyesThe attribute key to delete (e.g. 'custom:lastAuditDate')
deviceIdstringyesThe device ID

No output schema declared.

No examples provided.

tailscale_delete_key ~86

Delete a key (auth key, OAuth client, or federated identity). This is irreversible. For auth keys, devices already authenticated are unaffected but no new devices can use it. For OAuth clients and federated identities, any integrations using them lose access immediately.

NameTypeReqDescription
keyIdstringyesThe key ID to delete (auth key, OAuth client, or federated identity)

No output schema declared.

No examples provided.

tailscale_delete_log_stream_config ~49

Delete a log streaming configuration. Logs will stop being sent to the configured destination.

NameTypeReqDescription
logTypestringyesThe log type to stop streaming: 'configuration' or 'network'

No output schema declared.

No examples provided.

tailscale_delete_posture_integration ~36

Delete a posture integration. This is irreversible.

NameTypeReqDescription
integrationIdstringyesThe posture integration ID to delete

No output schema declared.

No examples provided.

tailscale_delete_service ~47

Delete a Tailscale Service. This is irreversible — the service's MagicDNS name and virtual IP will be released.

NameTypeReqDescription
serviceNamestringyesThe service name to delete

No output schema declared.

No examples provided.

tailscale_delete_user ~45

Delete a user from the tailnet. This is irreversible — the user and all their devices will be removed.

NameTypeReqDescription
userIdstringyesThe user ID to delete

No output schema declared.

No examples provided.

tailscale_delete_user_invite ~42

Delete a user invite. This is irreversible — the invite link will stop working.

NameTypeReqDescription
inviteIdstringyesThe user invite ID to delete

No output schema declared.

No examples provided.

tailscale_delete_webhook ~39

Delete a webhook. This is irreversible — the webhook secret cannot be recovered.

NameTypeReqDescription
webhookIdstringyesThe webhook ID to delete

No output schema declared.

No examples provided.

tailscale_expire_device ~38

Expire a device's key, forcing it to re-authenticate.

NameTypeReqDescription
deviceIdstringyesThe device ID to expire

No output schema declared.

No examples provided.

tailscale_get_acl ~60

Get the current ACL policy for your tailnet. Returns the raw policy text with original formatting preserved, including comments and trailing commas (HuJSON). Also returns an ETag — you must pass it to tailscale_update_acl to safely update the policy.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

tailscale_get_audit_log ~86

Get the tailnet audit/configuration log. Shows who changed what and when — useful for troubleshooting and compliance.

NameTypeReqDescription
endstringEnd time in RFC3339 format. Defaults to now.
startstringyesStart time in RFC3339 format (e.g. '2026-04-01T00:00:00Z'). Required.

No output schema declared.

No examples provided.

tailscale_get_contacts ~24

Get the tailnet contact information (security, support, admin emails).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

tailscale_get_device ~43

Get detailed information about a specific device by its ID.

NameTypeReqDescription
deviceIdstringyesThe device ID (numeric id or nodeId, NOT the nodeKey)

No output schema declared.

No examples provided.

tailscale_get_device_invite ~32

Get details for a specific device invite.

NameTypeReqDescription
inviteIdstringyesThe device invite ID

No output schema declared.

No examples provided.

tailscale_get_device_posture_attributes ~39

Get all posture attributes for a device, including custom and system-managed attributes.

NameTypeReqDescription
deviceIdstringyesThe device ID

No output schema declared.

No examples provided.

tailscale_get_device_routes ~35

Get the subnet routes a device advertises and which are enabled.

NameTypeReqDescription
deviceIdstringyesThe device ID

No output schema declared.

No examples provided.

tailscale_get_dns_configuration ~40

Get the unified DNS configuration for your tailnet, including nameservers, search paths, split DNS, and MagicDNS preference in a single call.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

tailscale_get_dns_preferences ~26

Get DNS preferences for your tailnet, including whether MagicDNS is enabled.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

tailscale_get_key ~50

Get details for a specific key (auth key, OAuth client, or federated identity).

NameTypeReqDescription
keyIdstringyesThe key ID (auth key, OAuth client, or federated identity)

No output schema declared.

No examples provided.

tailscale_get_log_stream_config ~49

Get the log streaming configuration for a specific log type.

NameTypeReqDescription
logTypestringyesThe log type: 'configuration' for audit logs, 'network' for network flow logs

No output schema declared.

No examples provided.

tailscale_get_log_stream_status ~58

Get the status of log streaming for a specific log type. Shows whether logs are being delivered successfully.

NameTypeReqDescription
logTypestringyesThe log type: 'configuration' for audit logs, 'network' for network flow logs

No output schema declared.

No examples provided.

tailscale_get_nameservers ~22

Get the DNS nameservers configured for your tailnet.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

tailscale_get_network_flow_logs ~94

Get network traffic flow logs showing connections between devices. Shows source/destination nodes, timestamps, and traffic metadata — useful for security monitoring and debugging connectivity.

NameTypeReqDescription
endstringEnd time in RFC3339 format. Defaults to now.
startstringyesStart time in RFC3339 format (e.g. '2026-04-01T00:00:00Z'). Required.

No output schema declared.

No examples provided.

tailscale_get_posture_integration ~34

Get details for a specific device posture integration.

NameTypeReqDescription
integrationIdstringyesThe posture integration ID

No output schema declared.

No examples provided.

tailscale_get_search_paths ~22

Get the DNS search paths configured for your tailnet.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

tailscale_get_service ~43

Get details for a specific Tailscale Service, including its MagicDNS name, virtual IP, and configuration.

NameTypeReqDescription
serviceNamestringyesThe service name

No output schema declared.

No examples provided.

tailscale_get_service_device_approval ~50

Get the approval status of a specific device for a Tailscale Service.

NameTypeReqDescription
deviceIdstringyesThe device ID
serviceNamestringyesThe service name

No output schema declared.

No examples provided.

tailscale_get_split_dns ~21

Get the split DNS configuration for your tailnet.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

tailscale_get_tailnet_settings ~29

Get your tailnet settings (device approval, key expiry, HTTPS certificates, etc.).

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

tailscale_get_user ~28

Get details for a specific user.

NameTypeReqDescription
userIdstringyesThe user ID

No output schema declared.

No examples provided.

tailscale_get_user_invite ~32

Get details for a specific user invite.

NameTypeReqDescription
inviteIdstringyesThe user invite ID

No output schema declared.

No examples provided.

tailscale_get_webhook ~29

Get details for a specific webhook.

NameTypeReqDescription
webhookIdstringyesThe webhook ID

No output schema declared.

No examples provided.

tailscale_list_device_invites ~36

List all device invites for a specific device.

NameTypeReqDescription
deviceIdstringyesThe device ID to list invites for

No output schema declared.

No examples provided.

tailscale_list_devices ~193

List all devices in your tailnet with their status, IP addresses, OS, and last seen time.

NameTypeReqDescription
fieldsstringComma-separated list of fields to include. Omit for all fields. Valid fields: addresses, advertisedRoutes, authorized, blocksIncomingConnections, clientConnectivity, clientVersion, connectedToControl…
filtersobjectServer-side filters as key-value pairs. Filter by any top-level device property (e.g. { isEphemeral: 'true', os: 'linux', tags: 'tag:prod' }). Multiple filters are ANDed together.

No output schema declared.

No examples provided.

tailscale_list_keys ~67

List keys in your tailnet. By default lists auth keys only. Set 'all' to true to include OAuth clients and federated identities.

NameTypeReqDescription
allbooleanWhen true, returns all key types (auth keys, OAuth clients, federated identities). Default: false

No output schema declared.

No examples provided.

tailscale_list_log_stream_configs ~66

List all log streaming configurations for your tailnet. Fetches both 'configuration' (audit) and 'network' (flow) log stream configs. Log streaming sends logs to external destinations like Axiom, Datadog, Splunk, Elasticsearch, or S3.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.

tailscale_list_posture_integrations ~24

List all device posture integrations configured for your tailnet.

Input schema present but exposes no named parameters.

No output schema declared.

No examples provided.