Tailscale RMCP
Overview
Description from the maker (original English)
Rust MCP server and CLI for Tailscale devices, users, keys, policies, and auth.
PopNx MCP’s three pillars
These three are never merged into one score: opinions, measurements and popularity are different things.
- User voiceiNo reviews yetReviews open together with accounts in a later step
- Our basic checksi1 of 2 passedChecked from public information; code not scanned yet
- UsageiVery new★ 5
What you can do with it
We have not written a plain-language summary for this one yet. Below are the facts we read from the registry.
- Connection: Runs on your computer
- Transport: stdio
- Category: Developer tools
- You need to fill in: TAILSCALE_API_KEY
Install
Pick the AI app you use, then copy the settings.
Before you install
- Basic checks: 1 of 2 passed
- Runs on your computer with your user’s permissions (files, network, apps).
- You fill in yourself:
TAILSCALE_API_KEY,TAILSCALE_RMCP_VERSION,TAILSCALE_RMCP_REPO,TAILSCALE_RMCP_RELEASE_BASE_URL,RUST_LOG
Values marked secret are keys to your account. Never share them or paste them into a chat.
You need
Which app do you use?
Pick your app above. We remember it, so next time the button says “Install in …”.
Open Claude Desktop → Settings → Developer → Edit Config, and paste this into claude_desktop_config.json
{
"mcpServers": {
"tailscale-rmcp": {
"command": "npx",
"args": [
"-y",
"tailscale-rmcp",
"mcp"
],
"env": {
"TAILSCALE_API_KEY": "your-value",
"TAILSCALE_RMCP_VERSION": "your-value",
"TAILSCALE_RMCP_REPO": "your-value",
"TAILSCALE_RMCP_RELEASE_BASE_URL": "your-value",
"RUST_LOG": "your-value"
}
}
}
}Run this in your terminal
claude mcp add tailscale-rmcp --env TAILSCALE_API_KEY=your-value --env TAILSCALE_RMCP_VERSION=your-value --env TAILSCALE_RMCP_REPO=your-value --env TAILSCALE_RMCP_RELEASE_BASE_URL=your-value --env RUST_LOG=your-value -- npx -y tailscale-rmcp mcpFill in the empty values before running it.
Or copy the settings yourself
Paste into .cursor/mcp.json in your project, or ~/.cursor/mcp.json
{
"mcpServers": {
"tailscale-rmcp": {
"command": "npx",
"args": [
"-y",
"tailscale-rmcp",
"mcp"
],
"env": {
"TAILSCALE_API_KEY": "your-value",
"TAILSCALE_RMCP_VERSION": "your-value",
"TAILSCALE_RMCP_REPO": "your-value",
"TAILSCALE_RMCP_RELEASE_BASE_URL": "your-value",
"RUST_LOG": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
Or copy the settings yourself
Paste into .vscode/mcp.json in your project
{
"servers": {
"tailscale-rmcp": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"tailscale-rmcp",
"mcp"
],
"env": {
"TAILSCALE_API_KEY": "your-value",
"TAILSCALE_RMCP_VERSION": "your-value",
"TAILSCALE_RMCP_REPO": "your-value",
"TAILSCALE_RMCP_RELEASE_BASE_URL": "your-value",
"RUST_LOG": "your-value"
}
}
}
}Your browser asks to open the app, then the app shows the settings and asks you to confirm. Key values are left empty for you to fill in.
This one runs on your computer, and ChatGPT can only connect to servers on the internet. Pick another app.
Your choice stays on this device in a cookie; no account needed.
Values you fill in
- Tailscale API key.
TAILSCALE_RMCP_VERSIONenvOptional GitHub release tag override for the downloaded Tailscale RMCP binary.TAILSCALE_RMCP_REPOenvOptional GitHub owner/repo override for release asset downloads.TAILSCALE_RMCP_RELEASE_BASE_URLenvOptional release download base URL override.RUST_LOGenvTracing filter for Tailscale RMCP logs.
These settings are generated from the maker’s registry entry. If the README says otherwise, follow the README.
Which apps can use it
Based on how this server connects and on each app’s own docs, checked Nov 10, 2026.
Run on your computer in
ClaudeGooseLM StudioMsty StudioCherry StudioCursorVS Code + GitHub CopilotVisual StudioWindsurf (Devin Desktop)ZedKiroClineContinueJetBrains AI AssistantClaude CodeCodex CLIGemini CLIOpenCodenodecodeWarpLibreChatRaycast
What it can do
Runs on your computer; the tool list appears in your AI app after you install it.
Basic checksi
We check information anyone can see; we have not read the code. Checks that do not apply are left out of the count. · Checked Nov 10, 2026
- ! Caution
Maker matches the repo
The publisher (dinglebear.ai) is not the repo owner (jmagar); someone else may have listed it
- ✓ Pass
Still maintained
Code last changed 9 days ago
- … Not checked yet
Has a licence
We have not read this repo from GitHub yet
- – Not applicable
Endpoint responds
This one runs on your computer; there is no internet endpoint
- – Not applicable
Sign-in with OAuth
Runs on your computer and uses local settings instead
- … Not checked yet
No hidden instructions in tool descriptions
Runs on your computer; we can only read tool lists from internet endpoints
Compared with others in Developer toolsi
- More stars than 0% of the other 5729 servers in this category
- Published to the registry more recently than 21% of the other 5729 servers in this category
- Basic checks equal to or better than 13% of the other 5729 servers in this category
Compared with every active server in this category in the registry. Stars count only when the publisher owns the repo.
Common questions
Is Tailscale RMCP safe?
It passed 1 of 2 applicable basic checks. We have not read the code. Before adding a key or token, see what access the server asks for and use a key with only the permissions you need.
What keys or codes does it need?
You need to fill in: TAILSCALE_API_KEY
Does it run on my computer or in the cloud?
It runs on your computer. Your AI app starts it when needed, and data does not pass through the maker’s servers (unless it calls an online service itself).
Is it still maintained?
The GitHub repo last changed 9 days ago, and the latest version (0.1.3) reached the registry 4 months ago.
Which apps can use it?
Apps that support MCP, such as Claude Desktop, Claude Code, Cursor and VS Code. You also need Node.js on your computer.
What can I use instead?
In the same category: REA, Netdata, Front-End Checklist
Alternatives
Servers in the same category from other makers, sorted by stars.
Reading a card:↓ Downloads per weeki★ GitHub starsiThree pillars: reviews · checks · usageiUpdated = latest version published to the registryi
Netdata
Real-time infrastructure monitoring with metrics, logs, alerts, and ML-based anomaly detection.
Front-End Checklist
Review frontend code and live pages against 386 quality-gated web development rules.
README from the maker
Open the README
Copied from the maker’s repo as written. PopNx MCP has not reviewed or endorsed it. HTML, images and scripts are removed. Links lead off this site.
tailscale-rmcp
Tailscale device, route, DNS, key, user, and ACL management over MCP and CLI.
It exposes one MCP tool, tailscale, plus the rtailscale CLI. Agents can list devices, inspect routes, read API keys, ACL policy, DNS settings, and users, authorize devices, and delete devices when the destructive gate is explicitly enabled.
30-second path: set TAILSCALE_API_KEY, then run npx -y @dinglebear/rtailscale devices --json -> start loopback HTTP with TAILSCALE_MCP_HOST=127.0.0.1 npx -y @dinglebear/rtailscale serve -> call tools/call with {"action":"devices"}.
Status: operational RMCP upstream-client server. Write-capable for device authorization; destructive device deletion requires both server opt-in and caller confirmation. HTTP MCP supports loopback dev mode, static bearer tokens, and Google OAuth through lab-auth.
Not for: replacing the Tailscale admin console, bypassing Tailscale account permissions, operating multiple unrelated tailnets from one trust boundary, storing API keys for callers, arbitrary WireGuard control, or passing Tailscale API keys through MCP tool arguments.
Contents
- Naming
- Capabilities And Boundaries
- Install
- Quickstart
- Client Configuration
- Runtime Surfaces
- MCP Tool Reference
- CLI Reference
- Configuration
- Authentication
- Safety And Trust Model
- Architecture
- Distribution Contract
- Development
- Verification
- Deployment
- Troubleshooting
- Related Servers
- Documentation
- License
Naming
| Surface | This repo |
|---|---|
| Repository | tailscale-rmcp |
| Rust crate | tailscale-rmcp |
| Binary / CLI | rtailscale |
| npm package | @dinglebear/rtailscale |
| npm binary aliases | tailscale-rmcp, rtailscale |
| MCP tool | tailscale |
| Config home | ~/.tailscale-mcp on hosts, /data in containers |
| Env prefixes | TAILSCALE_*, TAILSCALE_MCP_*, TAILSCALE_RMCP_* for npm launcher controls |
The repo, crate, and npm package use the RMCP family name. The shipped binary is rtailscale to avoid shadowing the official tailscale CLI.
Capabilities And Boundaries
- List devices and inspect a single device by node ID or legacy numeric device ID.
- Read subnet routes, API keys, ACL policy, DNS/MagicDNS settings, and tailnet users.
- Authorize a device for the tailnet.
- Delete a device only when
TAILSCALE_ALLOW_DESTRUCTIVE=trueand the caller also passes explicit confirmation. - Provide setup and doctor commands for local plugin/runtime checks.
| This repo owns | Tailscale owns | Explicitly out of scope |
|---|---|---|
| MCP/CLI projection, request validation, HTTP MCP auth policy, response shaping, setup checks, and destructive gates. | Tailnet state, device identities, ACL semantics, DNS behavior, API key issuance, user membership, and upstream authorization. | Replacing the admin console, storing caller credentials, multi-tailnet tenancy, arbitrary WireGuard control, policy editing beyond exposed actions, and local Tailscale daemon management. |
Install
| Path | Command | Best for | Notes | |
|---|---|---|---|---|
| npm / npx | npx -y @dinglebear/rtailscale --help | Local MCP clients and quick trials. | Downloads the matching rtailscale binary from GitHub Releases. | |
| Release installer | `curl -fsSL https://raw.githubusercontent.com/dinglebear-ai/rtailscale/main/scripts/install.sh \ | bash` | Host installs without Node. | Installs rtailscale for the current Linux host. |
| Docker / Compose | docker compose up -d | Shared HTTP MCP deployments. | Reads .env and exposes container port 40040. | |
| Build from source | cargo build --release | Development and audits. | Produces target/release/rtailscale. | |
| Plugin | claude plugin install plugins/tailscale | Claude Code local plugin setup from this checkout. | Ships the skill, .mcp.json, and a bundled binary. No hooks — run rtailscale setup check yourself if you want the environment verified. |
npm / npx
Run the stdio MCP server or CLI without a manual binary install:
npx -y @dinglebear/rtailscale --help
npx -y @dinglebear/rtailscale mcp npx -y @dinglebear/rtailscale devices --json
The npm package downloads rtailscale during postinstall. Override download behavior only when testing packaging:
| Variable | Purpose |
|---|---|
TAILSCALE_RMCP_SKIP_DOWNLOAD=1 | Skip postinstall binary download. |
TAILSCALE_RMCP_VERSION or TAILSCALE_RMCP_BINARY_VERSION | Select the GitHub Release tag. |
TAILSCALE_RMCP_REPO | Select the GitHub repo used for release downloads. |
TAILSCALE_RMCP_RELEASE_BASE_URL | Select a custom release base URL. |
Build From Source
git clone https://github.com/dinglebear-ai/rtailscale
cd rtailscale cargo build --release ./target/release/rtailscale --help
Minimum supported Rust version: 1.86.
Quickstart
1. Get A Tailscale API Key
Create an API key at https://login.tailscale.com/admin/settings/keys. Use the minimum capability needed for the actions you plan to expose.
2. Configure The Tailnet
export TAILSCALE_API_KEY="tskey-api-..."
export TAILSCALE_TAILNET="-" # personal, or "example.com" for orgs
Every Tailscale account belongs to a tailnet. TAILSCALE_TAILNET=- targets the default personal tailnet; organization tailnets usually use the org domain.
3. Run A Safe CLI Call
npx -y @dinglebear/rtailscale devices --json
4. Start Loopback HTTP MCP
TAILSCALE_MCP_HOST=127.0.0.1 npx -y @dinglebear/rtailscale serve
In another shell:
curl -sf http://127.0.0.1:40040/health
5. Make A First MCP Call
curl -s -X POST http://127.0.0.1:40040/mcp \
-H "Content-Type: application/json" \ -H "Accept: application/json, text/event-stream" \ -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"tailscale","arguments":{"action":"devices"}}}'
Client Configuration
Claude Code Stdio
{
"mcpServers": { "tailscale": { "command": "npx", "args": ["-y", "tailscale-rmcp", "mcp"], "env": { "TAILSCALE_API_KEY": "tskey-api-...", "TAILSCALE_TAILNET": "-" } } } }
Claude Code HTTP
{
"mcpServers": { "tailscale": { "type": "http", "url": "http://127.0.0.1:40040/mcp", "headers": { "Authorization": "Bearer ${TAILSCALE_MCP_TOKEN}" } } } }
Codex / Labby Gateway
Register Tailscale through Labby as an HTTP upstream when sharing one long-running server, or run it directly as stdio for local-only use.
[mcp_servers.tailscale]
command = "npx" args = ["-y", "tailscale-rmcp", "mcp"]
Generic MCP JSON
{
"command": "rtailscale", "args": ["mcp"], "env": { "TAILSCALE_API_KEY": "tskey-api-...", "TAILSCALE_TAILNET": "-" } }
Do not put TAILSCALE_API_KEY, OAuth secrets, passwords, SSH keys, or upstream bearer tokens in MCP tool arguments. Use env, config files, or the MCP client's secret storage. MCP callers never provide credentials, tokens, keys, or secrets as action arguments.
Runtime Surfaces
| Surface | Status | Entry point | Purpose |
|---|---|---|---|
| MCP stdio | Supported | rtailscale mcp, npx -y @dinglebear/rtailscale mcp | Local child-process MCP clients. |
| MCP HTTP | Supported | rtailscale serve, POST /mcp | Streamable HTTP MCP for local or shared server deployments. |
| CLI | Supported | rtailscale | Scriptable parity and debugging. |
| REST API | Not shipped | N/A | Tailscale already owns the REST API. |
| Web UI | Not shipped | N/A | Tailscale already owns the admin console. |
MCP Tool Reference
One MCP tool is exposed: tailscale. Pass the required action argument to select the operation.
Read Actions
| Action | Description | Required params | Optional params |
|---|---|---|---|
devices | List all devices in the tailnet. | none | none |
device | Return one device. | id | none |
device_routes | Return subnet routes for one device. | id | none |
keys | List API keys in the tailnet. | none | none |
acl | Return ACL policy JSON. | none | none |
dns | Return DNS nameservers, search paths, and MagicDNS preferences. | none | none |
users | List tailnet users. | none | none |
help | Return built-in action documentation. | none | none |
Write Actions
| Action | Description | Required params | Optional params |
|---|---|---|---|
authorize_device | Approve a device for the tailnet. | id | none |
Destructive Actions
| Action | Description | Required params | Optional params |
|---|---|---|---|
delete_device | Permanently remove a device. | id, confirm=true | none |
Device IDs may be stable node IDs such as n1234abc or legacy numeric device IDs. Use action=devices first to discover IDs.
CLI Reference
The binary calls the same service layer as the MCP tool:
rtailscale devices [--json]
rtailscale device [--json] rtailscale routes [--json] rtailscale keys [--json] rtailscale acl [--json] rtailscale dns [--json] rtailscale users [--json] rtailscale authorize [--json] rtailscale delete-device --confirm [--json] rtailscale doctor [--json] rtailscale setup check [--json] rtailscale setup repair [--json] rtailscale setup plugin-hook [--no-repair] [--json] rtailscale serve # HTTP MCP (also the no-argument default) rtailscale mcp # stdio MCP
All commands currently print JSON. --json is accepted for parity with the rest of the RMCP family.
Configuration
Host installs read ~/.tailscale-mcp/.env before loading config. Containers read /data/.env. Process environment overrides both.
| Variable | Default | Purpose |
|---|---|---|
TAILSCALE_API_KEY | unset | Tailscale API key. |
TAILSCALE_TAILNET | - | Tailnet: org domain or - for personal. |
TAILSCALE_ALLOW_DESTRUCTIVE | false | Enable delete_device server-side. |
TAILSCALE_MCP_HOST | 0.0.0.0 | HTTP bind host. |
TAILSCALE_MCP_PORT | 40040 | HTTP bind port. |
TAILSCALE_MCP_SERVER_NAME | tailscale-rmcp | Advertised MCP server name. |
TAILSCALE_MCP_NO_AUTH | false | Disable auth only for loopback development. |
TAILSCALE_MCP_TOKEN | unset | Static bearer token for HTTP MCP. |
TAILSCALE_NOAUTH | false | Trust an upstream gateway to enforce auth. |
TAILSCALE_MCP_AUTH_MODE | bearer | bearer or oauth. |
TAILSCALE_MCP_PUBLIC_URL | unset | Public URL for OAuth discovery. |
TAILSCALE_MCP_GOOGLE_CLIENT_ID | unset | Google OAuth client ID. |
TAILSCALE_MCP_GOOGLE_CLIENT_SECRET | unset | Google OAuth client secret. |
TAILSCALE_MCP_AUTH_ADMIN_EMAIL | unset | Admin email for OAuth bootstrap. |
TAILSCALE_MCP_ALLOWED_HOSTS | unset | Extra accepted Host header values. |
TAILSCALE_MCP_ALLOWED_ORIGINS | unset | Extra accepted CORS origins. |
TAILSCALE_MCP_HOME | platform appdata | Override the config/log home used by setup and file logging. |
The Tailscale API base URL is not configurable; it is fixed at https://api.tailscale.com/api/v2 in src/tailscale.rs.
Authentication
Stdio MCP runs as a local trusted child process and does not use HTTP auth.
HTTP MCP auth policy:
| State | Condition | Behavior |
|---|---|---|
| Loopback dev | TAILSCALE_MCP_HOST starts with 127. or auth is explicitly disabled on loopback | Local unauthenticated development is allowed. |
| Mounted bearer | Non-loopback with TAILSCALE_MCP_TOKEN | Requires Authorization: Bearer and action