Tailscale RMCP
ai.dinglebearPublished by dinglebear.aiOfficial publisherv0.1.4Updated Oct 24, 2026
Tailscale device, route, DNS, key, user, and ACL management over MCP and CLI.
Overview
Bridges a Tailscale tailnet to an assistant: list devices, inspect routes, DNS, ACLs, keys and users, and authorize or delete devices.
- What you can do
- List and inspect devices, including subnet routes for a single device
- Read API keys, ACL policy JSON, DNS/MagicDNS settings and tailnet users
- Authorize a device for the tailnet
- Delete a device, only with a server-side opt-in and explicit caller confirmation
- Run the same operations from a CLI, plus setup and doctor checks
- When to use it
- Useful when an assistant should answer questions about a Tailscale tailnet or carry out routine device administration, such as approving a new node, without opening the admin console. Also fits scripted or homelab workflows that want the same actions over MCP and a CLI.
- Requirements
- A Tailscale API key in TAILSCALE_API_KEY, plus TAILSCALE_TAILNET (defaults to the personal tailnet). Runs as a remote endpoint, via npx (which downloads a binary from GitHub Releases), Docker, or a source build with Rust 1.86+. HTTP mode on a non-loopback address needs bearer auth via TAILSCALE_MCP_TOKEN, Google OAuth settings, or a trusted gateway. Network access to the Tailscale API.
Installation
In SourceWeft
- Open Tailscale RMCP in the dashboard and add it to a workspace.
- Connect Authorization token credentials. They are stored privately and never shown on public pages.
- Enable the server for the chats that should use its tools.
Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.
Use with an agent
Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.
Read https://sourceweft.com/mcp/ai.dinglebear%2Frtailscale/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.Other MCP clients
Add this to your client's mcpServers config.
{
"mcpServers": {
"tailscale-rmcp": {
"type": "http",
"url": "https://ts.dinglebear.ai/mcp",
"headers": {
"Authorization": "Bearer <YOUR_TOKEN>"
}
}
}
}README
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
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.
Install
npm / npx
Run the stdio MCP server or CLI without a manual binary install:
The npm package downloads rtailscale during postinstall. Override download
behavior only when testing packaging:
Build From Source
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
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
4. Start Loopback HTTP MCP
In another shell:
5. Make A First MCP Call
Client Configuration
Claude Code Stdio
Claude Code HTTP
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.
Generic MCP JSON
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
MCP Tool Reference
One MCP tool is exposed: tailscale. Pass the required action argument to
select the operation.
Read Actions
Write Actions
Destructive Actions
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:
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.
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:
Non-loopback HTTP startup is rejected unless bearer auth, OAuth, or
TAILSCALE_NOAUTH=true is configured.
Safety And Trust Model
- Tailscale API keys are loaded from config/env only.
- MCP callers select actions and IDs, not upstream credentials.
delete_devicehas a two-key interlock:TAILSCALE_ALLOW_DESTRUCTIVE=trueon the server and caller-providedconfirm=true.- Missing IDs and unknown actions fail before upstream calls.
- Non-loopback HTTP deployments must use bearer auth, OAuth, or a trusted authenticated gateway.
- This bridge does not sandbox Tailscale itself. Tailscale remains responsible for API permissions and tailnet state changes.
Architecture
Distribution Contract
Cargo.toml,Cargo.lock,packages/tailscale-rmcp/package.json,.release-please-manifest.json, andserver.jsonmust agree on the released version.- GitHub Releases publish the
rtailscalebinary consumed by the npm launcher. - The npm package name is
@dinglebear/rtailscale; binary aliases aretailscale-rmcpandrtailscale. - Docker/OCI metadata uses
ghcr.io/dinglebear-ai/rtailscale:<version>(seedocker-compose.prod.yml). The image path still uses the pre-transfer owner namespace even though the repo now lives atdinglebear-ai/rtailscale. plugins/tailscale/.mcp.jsonmust launchnpx -y @dinglebear/rtailscale mcpso stdio clients start the MCP transport rather than the HTTP server.plugins/tailscale/ships no Claude Code hooks;scripts/validate-plugin-layout.shfails if ahooks/directory reappears.- The root README is curated. Source of truth for action behavior and config
defaults is
src/, plus the package, plugin, and registry manifests.
Development
Verification
Runtime smoke:
HTTP smoke:
Deployment
Use loopback for local development:
Use Docker Compose for shared HTTP deployment:
When binding to a non-loopback address, configure TAILSCALE_MCP_TOKEN,
TAILSCALE_MCP_AUTH_MODE=oauth, or TAILSCALE_NOAUTH=true behind an
authenticated gateway.
Troubleshooting
Related Servers
- soma - RMCP runtime and scaffold for provider-backed MCP servers.
- unifi-rmcp - UniFi controller REST API bridge.
- unraid - Unraid monorepo;
unraid-rs/is the GraphQL bridge for NAS and server management. - apprise-rmcp - Apprise notification fan-out bridge for many delivery backends.
- gotify-rmcp - Gotify push notification bridge for sends, messages, apps, and clients.
- arcane-rmcp - Arcane Docker management bridge for containers and related resources.
- yarr - Media-stack bridge for Sonarr, Radarr, Prowlarr, Plex, and related services.
- ytdl-rmcp - Media download and metadata workflow server.
- synapse-rmcp - Local Synapse workflow server for scout and flux actions.
- cortex - Syslog and homelab log aggregation MCP server.
- axon - RAG, crawl, scrape, extract, and semantic search project.
- labby - Homelab control plane and MCP gateway project.
- lumen - Local semantic code search MCP server.
Documentation
CLAUDE.mdis the curated local operating guide for contributors and agents.docs/SETUP.mdis curated plugin/setup guidance.docs/OAUTH.mdis curated OAuth setup guidance.plugins/tailscale/skills/tailscale/SKILL.mdis the agent usage guide.src/is the source of truth for current actions, config defaults, auth behavior, and CLI parsing.- Package, plugin, Docker, and registry manifests are curated distribution contracts and should be checked with the verification commands above.
License
Original Dinglebear-authored portions of this project are licensed under AGPL-3.0-only. Separate commercial licensing is available for organizations that need terms outside the AGPL. Third-party material remains under its original license. See LICENSING.md.
Source: README.md at commit d10e4d5
Tools
0Version history
1- v0.1.4LatestSep 16, 2026
Score
85% of the applicable checks met
How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.
- Reached in the last 30 daysRequired25 pts
- Auth declaredRequired10 pts
- Tools listedRequired15 pts
Answer tools/list without a credential, or ship a package that starts in a sandbox without one.
- DescriptionRequired15 pts
- Logo10 pts
- Documentation15 pts
- License10 pts
Other Dinglebear integrations
Yarr MCP
ai.dinglebear
MCP and CLI server that lets an assistant query and control a self-hosted media stack such as Sonarr, Radarr, Prowlarr, Plex and Jellyfin.
Yarr MCP
ai.dinglebear
MCP server and CLI that gives an assistant one consistent tool surface to query and control a self-hosted media fleet such as Sonarr, Radarr and Plex.

Unraid MCP
ai.dinglebear
Python MCP server that lets an assistant query and manage an Unraid server through its GraphQL API.
Soma
ai.dinglebear
Soma is a local Rust runtime that exposes one compact MCP tool, letting an assistant call built-in actions and dropped-in provider tools over stdio or HTTP.
Labby
ai.dinglebear
Labby is a local Rust-based MCP gateway with a Code Mode, authentication, setup, logs, CLI, HTTP API and operator web UI, run via npx.