@yawlabs/tailscale-mcp 0.8.0 → 0.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/README.md +51 -15
  2. package/dist/index.js +11219 -2079
  3. package/package.json +5 -5
package/README.md CHANGED
@@ -107,34 +107,70 @@ That's it. Now ask your agent:
107
107
 
108
108
  ## Too many tools? Subset them.
109
109
 
110
- 99 tools is a lot. If you've already got a dozen MCP servers and your client is feeling heavy, trim what this one exposes:
110
+ 99 tools is a lot. If you've already got a dozen MCP servers and your client is feeling heavy, trim what this one exposes. Three knobs, combinable:
111
+
112
+ ### Option 1: `TAILSCALE_PROFILE` (preset, easiest)
111
113
 
112
114
  ```json
113
115
  {
114
- "mcpServers": {
115
- "tailscale": {
116
- "command": "npx",
117
- "args": ["-y", "@yawlabs/tailscale-mcp"],
118
- "env": {
119
- "TAILSCALE_API_KEY": "tskey-api-...",
120
- "TAILSCALE_TOOLS": "devices,acl,dns,audit",
121
- "TAILSCALE_READONLY": "1"
122
- }
123
- }
116
+ "env": {
117
+ "TAILSCALE_API_KEY": "tskey-api-...",
118
+ "TAILSCALE_PROFILE": "core"
119
+ }
120
+ }
121
+ ```
122
+
123
+ - **`minimal`** (≈22 tools) — `status`, `devices`, `audit`. Observe the tailnet, read the audit log.
124
+ - **`core`** (≈49 tools) — adds `acl`, `dns`, `keys`, `users`. The day-to-day admin surface.
125
+ - **`full`** (99 tools, default) — everything. Same as omitting the env var.
126
+
127
+ ### Option 2: `TAILSCALE_TOOLS` (explicit group list)
128
+
129
+ ```json
130
+ {
131
+ "env": {
132
+ "TAILSCALE_API_KEY": "tskey-api-...",
133
+ "TAILSCALE_TOOLS": "devices,acl,dns,audit"
124
134
  }
125
135
  }
126
136
  ```
127
137
 
128
- - **`TAILSCALE_TOOLS`** comma-separated list of tool groups to expose. Omit for all groups.
129
- - **`TAILSCALE_READONLY`** — set to `1` or `true` to drop every mutating tool (only tools with `readOnlyHint: true` remain). Combine with `TAILSCALE_TOOLS` for maximum minimalism.
138
+ Comma-separated group names. Overrides `TAILSCALE_PROFILE` when both are set use this when the presets aren't quite right.
130
139
 
131
140
  Valid group names: `status`, `devices`, `acl`, `dns`, `keys`, `users`, `tailnet`, `webhooks`, `network-lock`, `posture`, `audit`, `invites`, `services`, `log-streaming`, `workload-identity`, `oauth-clients`.
132
141
 
133
- The server logs the active filter to stderr on startup so you can confirm what got loaded:
142
+ ### Option 3: `TAILSCALE_READONLY` (drop mutations)
134
143
 
144
+ ```json
145
+ {
146
+ "env": {
147
+ "TAILSCALE_API_KEY": "tskey-api-...",
148
+ "TAILSCALE_PROFILE": "core",
149
+ "TAILSCALE_READONLY": "1"
150
+ }
151
+ }
135
152
  ```
136
- @yawlabs/tailscale-mcp v0.8.0 ready (21 tools, groups=devices,acl,dns,audit, readonly)
153
+
154
+ Set to `1` or `true` to drop every tool without `readOnlyHint: true`. Stacks with `TAILSCALE_PROFILE` or `TAILSCALE_TOOLS` as an intersection — combine for maximum minimalism.
155
+
156
+ ### Confirming what loaded
157
+
158
+ The server logs the active filter to stderr on startup:
159
+
137
160
  ```
161
+ @yawlabs/tailscale-mcp v0.8.1 ready (21 tools, profile=core, readonly)
162
+ ```
163
+
164
+ If you don't set any filter, startup prints a tip pointing you at the profiles.
165
+
166
+ ## Using with mcp.hosting / mcph
167
+
168
+ If you run this server through [mcp.hosting](https://mcp.hosting) (via the `@yawlabs/mcph` local agent), the two filtering layers compose cleanly:
169
+
170
+ 1. **Server-side** — `TAILSCALE_PROFILE` / `TAILSCALE_TOOLS` / `TAILSCALE_READONLY` reduce the tool surface *before* mcph sees it. The unloaded tools aren't registered at all.
171
+ 2. **Client-side** — mcph's `mcp_connect_activate({ tools: [...] })` filters further for what appears in `tools/list`. Tools not in that list stay reachable via `mcp_connect_dispatch`, so you don't lose capability.
172
+
173
+ Recommended pattern for mcph users: set `TAILSCALE_PROFILE=core` (or narrower) in your mcp.hosting server config, then let mcph handle per-conversation activation on top. The server stays lean by default, and `mcp_connect_dispatch` covers the long-tail tools for ad-hoc needs.
138
174
 
139
175
  ## Authentication
140
176