Rtailscale MCP server
{
"mcpServers": {
"dinglebear-rtailscale": {
"command": "npx",
"args": [
"-y",
"@dinglebear/rtailscale@latest"
],
"env": {
"TAILSCALE_RMCP_RELEASE_BASE_URL": "https://...",
"TAILSCALE_API_KEY": "<tailscale_api_key>",
"TAILSCALE_MCP_TOKEN": "<tailscale_mcp_token>",
"TAILSCALE_MCP_PUBLIC_URL": "https://...",
"TAILSCALE_MCP_GOOGLE_CLIENT_ID": "<tailscale_mcp_google_client_id>",
"TAILSCALE_MCP_GOOGLE_CLIENT_SECRET": "<tailscale_mcp_google_client_secret>"
}
}
}
}{
"mcpServers": {
"dinglebear-rtailscale": {
"command": "npx",
"args": [
"-y",
"@dinglebear/rtailscale@latest"
],
"env": {
"TAILSCALE_RMCP_RELEASE_BASE_URL": "https://...",
"TAILSCALE_API_KEY": "<tailscale_api_key>",
"TAILSCALE_MCP_TOKEN": "<tailscale_mcp_token>",
"TAILSCALE_MCP_PUBLIC_URL": "https://...",
"TAILSCALE_MCP_GOOGLE_CLIENT_ID": "<tailscale_mcp_google_client_id>",
"TAILSCALE_MCP_GOOGLE_CLIENT_SECRET": "<tailscale_mcp_google_client_secret>"
}
}
}
}{
"mcpServers": {
"dinglebear-rtailscale": {
"command": "npx",
"args": [
"-y",
"@dinglebear/rtailscale@latest"
],
"env": {
"TAILSCALE_RMCP_RELEASE_BASE_URL": "https://...",
"TAILSCALE_API_KEY": "<tailscale_api_key>",
"TAILSCALE_MCP_TOKEN": "<tailscale_mcp_token>",
"TAILSCALE_MCP_PUBLIC_URL": "https://...",
"TAILSCALE_MCP_GOOGLE_CLIENT_ID": "<tailscale_mcp_google_client_id>",
"TAILSCALE_MCP_GOOGLE_CLIENT_SECRET": "<tailscale_mcp_google_client_secret>"
}
}
}
}{
"servers": {
"dinglebear-rtailscale": {
"command": "npx",
"args": [
"-y",
"@dinglebear/rtailscale@latest"
],
"env": {
"TAILSCALE_RMCP_RELEASE_BASE_URL": "${input:tailscale_rmcp_release_base_url}",
"TAILSCALE_API_KEY": "${input:tailscale_api_key}",
"TAILSCALE_MCP_TOKEN": "${input:tailscale_mcp_token}",
"TAILSCALE_MCP_PUBLIC_URL": "${input:tailscale_mcp_public_url}",
"TAILSCALE_MCP_GOOGLE_CLIENT_ID": "${input:tailscale_mcp_google_client_id}",
"TAILSCALE_MCP_GOOGLE_CLIENT_SECRET": "${input:tailscale_mcp_google_client_secret}"
}
}
},
"inputs": [
{
"id": "tailscale_rmcp_release_base_url",
"type": "promptString",
"description": "Tailscale rmcp release base url",
"password": true
},
{
"id": "tailscale_api_key",
"type": "promptString",
"description": "Tailscale api key",
"password": true
},
{
"id": "tailscale_mcp_token",
"type": "promptString",
"description": "Tailscale mcp token",
"password": true
},
{
"id": "tailscale_mcp_public_url",
"type": "promptString",
"description": "Tailscale mcp public url",
"password": true
},
{
"id": "tailscale_mcp_google_client_id",
"type": "promptString",
"description": "Tailscale mcp google client id",
"password": true
},
{
"id": "tailscale_mcp_google_client_secret",
"type": "promptString",
"description": "Tailscale mcp google client secret",
"password": true
}
]
}{
"mcpServers": {
"dinglebear-rtailscale": {
"command": "npx",
"args": [
"-y",
"@dinglebear/rtailscale@latest"
],
"env": {
"TAILSCALE_RMCP_RELEASE_BASE_URL": "https://...",
"TAILSCALE_API_KEY": "<tailscale_api_key>",
"TAILSCALE_MCP_TOKEN": "<tailscale_mcp_token>",
"TAILSCALE_MCP_PUBLIC_URL": "https://...",
"TAILSCALE_MCP_GOOGLE_CLIENT_ID": "<tailscale_mcp_google_client_id>",
"TAILSCALE_MCP_GOOGLE_CLIENT_SECRET": "<tailscale_mcp_google_client_secret>"
}
}
}
}file .mcp.json (in your project root)file claude_desktop_config.jsonfile ~/.cursor/mcp.jsonfile .vscode/mcp.jsonfile ~/.codeium/windsurf/mcp_config.jsoninstall npx -y @dinglebear/rtailscaleversion 0.1.4
What it does
MCP server for reading and managing Tailscale devices, routes, DNS settings, API keys, users, and ACLs. Exposes a `tailscale` MCP tool and `rtailscale` CLI. Designed for developers and AI agents that need to inspect or administer Tailscale networks.
- List all devices in a tailnet and inspect details for a specific device by node ID.
- Read and manage DNS settings, subnet routes, and ACL policy for a Tailscale network.
- Authorize new devices to join a tailnet or delete devices when destructive operations are explicitly enabled.
Tools this server exposes
| Tool | Does |
|---|---|
| tailscale | Exposes Tailscale management operations including device listing, authorization, deletion, and inspection of routes, DNS, ACLs, and API keys. |
Before you enable it
An MCP server runs with whatever access you give it. Start with a development account rather than production, and check which tools the server exposes before you let an agent call them unattended.