MCP Hub
Back to servers

Tailscale MCP Server

Secure MCP access for private infrastructure over Tailscale — 48 tools across 9 domains

Registryglama
Forks
1
Updated
Mar 15, 2026

Quick Install

npx -y tailscale-mcp

mcp-tailscale

Secure MCP access for private infrastructure over Tailscale

npm GitHub release License: AGPL-3.0 CalVer Node.js TypeScript mcp-tailscale MCP server

The Problem

AI agents need access to internal tools, services, and infrastructure — but exposing private systems to the internet creates unacceptable security risks. VPNs are complex, SSH tunnels are fragile, and API gateways add latency and maintenance overhead.

mcp-tailscale bridges this gap: a lightweight MCP server that gives AI agents secure, authenticated access to your Tailscale-connected infrastructure — without exposing anything to the public internet.

What It Does

mcp-tailscale is an MCP Gateway Runtime that connects AI agents (Claude, GPT, custom) to your private infrastructure through Tailscale's zero-trust network. It provides 48 tools across 9 domains for managing devices, DNS, ACL policies, auth keys, users, webhooks, posture integrations, and tailnet settings — all through the Tailscale API v2.

No SSH. No shell execution. API-only. 4 runtime dependencies.

Use Cases

  • DevOps Automation — Let AI agents manage device authorization, subnet routes, and ACL policies across your tailnet
  • DNS Management — Configure split DNS, global nameservers, and MagicDNS through natural language
  • Security Auditing — Automated ACL policy validation, posture compliance checks, and key rotation
  • Fleet Management — Monitor device status, manage tags, and onboard new devices at scale
  • Infrastructure as Conversation — Query and modify your private network configuration through AI-driven workflows

Quick Start

Install from npm

npm install -g tailscale-mcp

Or clone and build from source

git clone https://github.com/itunified-io/mcp-tailscale.git
cd mcp-tailscale
npm install
cp .env.example .env   # Edit with your Tailscale API key and tailnet name
npm run build
node dist/index.js     # stdio transport for MCP

Claude Code Integration

Add to .mcp.json in your project root:

{
  "mcpServers": {
    "tailscale": {
      "command": "node",
      "args": ["/path/to/mcp-tailscale/dist/index.js"],
      "env": {
        "TAILSCALE_API_KEY": "your-api-key-here",
        "TAILSCALE_TAILNET": "your-tailnet-name"
      },
      "comment": "Or use OAuth: TAILSCALE_OAUTH_CLIENT_ID + TAILSCALE_OAUTH_CLIENT_SECRET instead of TAILSCALE_API_KEY"
    }
  }
}

Features

48 tools across 9 domains:

  • Devices — List, get, delete, authorize, expire, rename devices; manage routes, tags, and posture attributes
  • DNS — Global nameservers, search paths, split DNS configuration, MagicDNS preferences
  • ACL — Get, set, preview, validate, and test ACL policies
  • Keys — List, get, create, and revoke auth keys
  • Tailnet — Settings (read/write), contacts, Tailnet Lock status
  • Users — List and get tailnet users with role/type filtering
  • Webhooks — Create, list, get, and delete webhook endpoints
  • Posture Integrations — List, get, create, and delete third-party posture provider integrations
  • Diagnostics — Tailnet status summary, API connectivity check, log streaming, DERP map

Authentication: API key or OAuth client credentials (auto-refresh)

Skills

Claude Code skills compose MCP tools into higher-level workflows. See .claude/skills/README.md for detailed documentation.

SkillSlash CommandDescription
tailscale-health/ts-healthTailnet health dashboard — devices, DNS, ACL, keys, connectivity
tailscale-live-test/ts-testLive integration test — read + safe writes with cleanup
tailscale-acl-managementACL policy management — view, edit, validate, test, drift detection
tailscale-device-managementDevice management — list, authorize, routes, tags, posture
tailscale-dns-managementDNS management — split DNS, nameservers, search paths, MagicDNS
tailscale-key-managementAuth key management — create, list, rotate, revoke
tailscale-onboardingNew device onboarding — auth key, authorize, tags, routes, verify

SSE Transport

By default, mcp-tailscale uses stdio transport. To enable HTTP/SSE:

export TAILSCALE_MCP_TRANSPORT=sse
export TAILSCALE_MCP_AUTH_TOKEN=your-secret-token
export TAILSCALE_MCP_PORT=3000      # optional, default: 3000
export TAILSCALE_MCP_HOST=localhost  # optional, default: localhost
node dist/index.js

All requests require Authorization: Bearer <token>. The server will not start without TAILSCALE_MCP_AUTH_TOKEN.

Configuration

VariableRequiredDefaultDescription
TAILSCALE_API_KEYYes*Tailscale API key (from admin console > Settings > Keys)
TAILSCALE_OAUTH_CLIENT_IDYes*OAuth client ID (from admin console > Settings > OAuth)
TAILSCALE_OAUTH_CLIENT_SECRETYes*OAuth client secret
TAILSCALE_TAILNETYesTailnet name (e.g., example.com or your org name)
TAILSCALE_API_URLNohttps://api.tailscale.comAPI base URL (override for testing)
TAILSCALE_TIMEOUTNo30000Request timeout in milliseconds

*Either TAILSCALE_API_KEY or both TAILSCALE_OAUTH_CLIENT_ID + TAILSCALE_OAUTH_CLIENT_SECRET must be set. OAuth takes priority when both are configured.

Authentication

API Key: Create at login.tailscale.com/admin/settings/keys. The key needs read/write access to the resources you want to manage.

OAuth Client Credentials: Create at login.tailscale.com/admin/settings/oauth. OAuth tokens auto-refresh before expiry. Recommended for automated/service integrations.

Tools

Devices (11 tools)

ToolDescription
tailscale_device_listList all devices in the tailnet
tailscale_device_getGet device details by ID
tailscale_device_deleteDelete a device (requires confirm: true)
tailscale_device_authorizeAuthorize a pending device
tailscale_device_routes_getGet advertised and enabled routes
tailscale_device_routes_setSet enabled subnet routes
tailscale_device_tags_setSet ACL tags on a device
tailscale_device_posture_getGet custom posture attributes
tailscale_device_posture_setSet a custom posture attribute
tailscale_device_expireExpire a device key (requires confirm: true)
tailscale_device_renameSet a custom display name for a device

DNS (8 tools)

ToolDescription
tailscale_dns_nameservers_getGet global DNS nameservers
tailscale_dns_nameservers_setSet global DNS nameservers
tailscale_dns_searchpaths_getGet DNS search paths
tailscale_dns_searchpaths_setSet DNS search paths
tailscale_dns_splitdns_getGet split DNS configuration
tailscale_dns_splitdns_setUpdate split DNS configuration (PATCH)
tailscale_dns_preferences_getGet DNS preferences (MagicDNS)
tailscale_dns_preferences_setSet DNS preferences

ACL (5 tools)

ToolDescription
tailscale_acl_getGet the current ACL policy
tailscale_acl_setReplace the ACL policy (requires confirm: true)
tailscale_acl_previewPreview ACL policy for a user or IP
tailscale_acl_validateValidate an ACL policy without applying
tailscale_acl_testRun ACL tests defined in the policy

Keys (4 tools)

ToolDescription
tailscale_key_listList all auth keys
tailscale_key_getGet auth key details
tailscale_key_createCreate a new auth key
tailscale_key_deleteDelete an auth key (requires confirm: true)

Tailnet (5 tools)

ToolDescription
tailscale_tailnet_settings_getGet tailnet settings
tailscale_tailnet_settings_updateUpdate tailnet settings (requires confirm: true)
tailscale_tailnet_contacts_getGet tailnet contact emails
tailscale_tailnet_contacts_setUpdate tailnet contacts (requires confirm: true)
tailscale_tailnet_lock_statusGet Tailnet Lock status

Users (2 tools)

ToolDescription
tailscale_user_listList all users (filter by type/role)
tailscale_user_getGet user details by ID

Webhooks (4 tools)

ToolDescription
tailscale_webhook_listList all webhook endpoints
tailscale_webhook_createCreate a webhook endpoint
tailscale_webhook_getGet webhook details by ID
tailscale_webhook_deleteDelete a webhook (requires confirm: true)

Posture Integrations (4 tools)

ToolDescription
tailscale_posture_integration_listList all posture provider integrations
tailscale_posture_integration_getGet posture integration details by ID
tailscale_posture_integration_createCreate a posture provider integration
tailscale_posture_integration_deleteDelete a posture integration (requires confirm: true)

Diagnostics (5 tools)

ToolDescription
tailscale_statusTailnet status summary (device counts, online/offline)
tailscale_api_verifyVerify API connectivity and authentication
tailscale_log_stream_getGet log streaming configuration
tailscale_log_stream_setSet log streaming configuration (requires confirm: true)
tailscale_derp_mapGet DERP relay map

Architecture

See ARCHITECTURE.md for detailed architecture diagrams and component descriptions.

Roadmap

See ROADMAP.md for the product development roadmap.

Development

npm run build      # Compile TypeScript
npm test           # Run unit tests (vitest)
npm run typecheck  # Type check only (no emit)

See CONTRIBUTING.md for contribution guidelines. See docs/api-reference.md for the Tailscale API v2 endpoint mapping.

Open Source

mcp-tailscale is the community edition — a fully functional MCP Gateway Runtime under AGPL-3.0. Self-host it, contribute to it, build on it.

What you get with the open-source edition:

  • Complete Tailscale API v2 coverage (48 tools, 9 domains)
  • stdio and SSE transport
  • API key and OAuth authentication
  • Zod-validated inputs, structured error handling
  • Claude Code skills for common workflows
  • Full test suite (vitest)

Commercial

For organizations that need governance, compliance, and multi-tenant capabilities on top of the open-source runtime, we offer commercial editions with enterprise features.

Planned enterprise capabilities:

  • Role-based access control (RBAC)
  • OIDC/SAML single sign-on
  • Audit event logging
  • Policy engine for tool access control
  • Multi-tenant isolation
  • Commercial license (no AGPL obligations)
  • Priority support and SLA

See PRODUCT_PACKAGING.md for tier details.

Contact us: GitHub Sponsors

License

This project is dual-licensed:

If you use mcp-tailscale in a proprietary product or SaaS offering, a commercial license is required. Support development by sponsoring us on GitHub.

Reviews

No reviews yet

Sign in to write a review