Tailscale MCP Server
Integrate with Tailscale's CLI and API for automated network management and monitoring.
Tailscale MCP Server
A Bun-first Model Context Protocol server for operating Tailscale through a private, least-privilege interface.
The default transport is stdio for local MCP clients. Optional HTTP transport
binds to 127.0.0.1 by default and is designed to be exposed privately with
Tailscale Serve or another tailnet-only proxy.
Install
bun install
bun run build
Local MCP Usage
{
"mcpServers": {
"tailscale": {
"command": "bunx",
"args": ["@hexsleeves/tailscale-mcp-server"],
"env": {
"TAILSCALE_OAUTH_CLIENT_ID": "your-client-id",
"TAILSCALE_OAUTH_CLIENT_SECRET": "your-client-secret",
"TAILSCALE_TAILNET": "-"
}
}
}
}
OAuth clients are preferred for automation because they use scoped access and short-lived tokens. API keys remain supported for compatibility:
TAILSCALE_API_KEY=tskey-... bun run src/index.ts
HTTP Mode
HTTP mode requires a bearer token and only accepts localhost or tailnet host headers by default.
export MCP_TRANSPORT=http
export MCP_HTTP_BEARER_TOKEN="$(openssl rand -base64 32)"
export TAILSCALE_OAUTH_CLIENT_ID="your-client-id"
export TAILSCALE_OAUTH_CLIENT_SECRET="your-client-secret"
bun run src/index.ts --http --port 3000 --host 127.0.0.1
Expose it privately through Tailscale Serve:
tailscale serve --bg 443 localhost:3000
Do not use Funnel for normal MCP operation. Funnel makes the service publicly reachable and should require a separate threat review.
Configuration
| Variable | Default | Description |
|---|---|---|
MCP_TRANSPORT | stdio | stdio or http |
MCP_HTTP_BIND_HOST | 127.0.0.1 | HTTP bind host |
MCP_HTTP_PORT | 3000 | HTTP bind port |
MCP_HTTP_BEARER_TOKEN | Required in HTTP mode | |
MCP_ALLOWED_HOSTS | Comma-separated extra allowed HTTP hosts | |
TAILSCALE_TAILNET | - | Tailnet name or - shorthand |
TAILSCALE_API_BASE_URL | https://api.tailscale.com | Tailscale API base URL |
TAILSCALE_OAUTH_CLIENT_ID | Preferred auth method | |
TAILSCALE_OAUTH_CLIENT_SECRET | Preferred auth method | |
TAILSCALE_API_KEY | Compatibility auth method | |
TAILSCALE_ALLOWED_TOOL_RISK | read | read, write, or admin |
TAILSCALE_CLI_PATH | tailscale | Local CLI path |
LOG_LEVEL | info | debug, info, warn, or error |
MCP_SERVER_LOG_FILE | Optional file log path |
Risk levels:
read: read-only tools and resources.write: write operations such as ACL/DNS/route updates.admin: destructive or host-affecting actions such as delete, deauthorize, connect, disconnect, and auth key mutation.
Tools
Stable tool names:
list_devicesdevice_actionmanage_routesget_network_statusconnect_networkdisconnect_networkping_peerget_versionget_tailnet_infomanage_aclmanage_dnsmanage_keysmanage_policy_filemanage_file_sharingmanage_exit_nodesmanage_webhooksmanage_device_tags
Resources
tailscale://tailnet/summarytailscale://devicestailscale://devices/{deviceId}tailscale://acl/current
Prompts
diagnose_tailnet_connectivityreview_acl_change
Development
bun install
bun test
bun run typecheck
bun run lint
bun run build
Full local gate:
bun run qa
Docker
docker build -t tailscale-mcp-server .
docker run --rm \
-e MCP_HTTP_BEARER_TOKEN="$MCP_HTTP_BEARER_TOKEN" \
-e TAILSCALE_OAUTH_CLIENT_ID="$TAILSCALE_OAUTH_CLIENT_ID" \
-e TAILSCALE_OAUTH_CLIENT_SECRET="$TAILSCALE_OAUTH_CLIENT_SECRET" \
-p 127.0.0.1:3000:3000 \
tailscale-mcp-server
Keep the published port bound to localhost and expose it to other devices with Tailscale Serve.
For a sidecar deployment that runs the MCP server behind a private Tailscale
Serve endpoint, see deploy/README.md.
Serveurs connexes
HAProxy MCP Server
Interact with HAProxy's runtime API for administration, monitoring, and traffic analysis.
Azure Pricing MCP Server
Query Azure retail pricing information using the Azure Retail Prices API.
Linode MCP Server
Manage Linode cloud infrastructure resources through natural language conversation.
Remote MCP Server (Authless)
A remote MCP server deployable on Cloudflare Workers without authentication.
Fleet-MCP
Enables AI assistants to interact with Fleet Device Management for device management, security monitoring, and compliance enforcement.
Reservation System MCP Server
Integrates with the WeChat cloud development reservation system API.
FreshMCP
Provides an MCP interface for FreshMCP operations using Azure Cosmos DB and AI Search.
CompetLab
Competitive intelligence platform with 24 tools — monitor competitor pricing, content, positioning, tech stacks, and how ChatGPT, Claude, and Gemini rank your brand.
Flutterwave
Interact with the Flutterwave API to manage transactions, generate payment links, and handle customer support.
YouTube MCP
Manage YouTube videos, create Shorts, and get analytics using the YouTube API.