关于 tailnetport
tailnetport 通过 CLI 或 stdio MCP 服务管理 Tailscale tailnet。单个动作路由工具涵盖设备、密钥、ACL、DNS 和用户操作,删除设备设有双重限制。
主要功能
- 01单一动作路由工具
- 02列出并查看设备与路由
- 03读取密钥、ACL、DNS 和用户
- 04授权或删除设备
- 05删除需通过双重确认
适用场景
- 01检查 tailnet 设备及其通告路由
- 02查看 tailnet 密钥、ACL 或 DNS 设置
- 03通过 API 授权设备
- 04启用两项保护后删除设备
MCP 相关
stdio MCP 服务提供一个 `tailscale` 工具,将操作路由到 Tailscale API v2。删除设备既需在调用中设置 `confirm: true`,也需在环境中设置 `TAILSCALE_ALLOW_DESTRUCTIVE=true`。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
1收录的工具列表 · 更新于 1 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| id | string | 否 | 设备 ID,是 device、device_routes、authorize_device 和 delete_device 操作必需的。 |
| action | enum | 是 | 要运行的操作:devices、device、device_routes、keys、acl、dns、users、help、authorize_device 或 delete_device。devices | device | device_routes | keys | acl | dns | users | help | authorize_device | delete_device |
| confirm | boolean | 否 | 确认标志,必须为 true 才允许执行 delete_device 操作。 |
详细介绍
tailnetport
tailnetport 通过单个 动作路由工具管理 Tailscale tailnet。一次调用指定一个动作——列出设备、检查 某台设备或其路由、读取密钥、ACL 策略、DNS 设置或 用户、授权设备或删除设备——路由器会将其映射到 Tailscale API v2。一个二进制文件同时提供命令行界面和 stdio MCP 服务。
需要 API 密钥。请在环境中设置 TAILSCALE_API_KEY;
如果未设置,每个网络动作都会在发出请求前失败。
TAILSCALE_TAILNET 用于选择 tailnet,默认值为 -(密钥所属的
tailnet)。
删除操作设有双重门控:只有当调用包含
confirm: true,并且环境中设置了
TAILSCALE_ALLOW_DESTRUCTIVE=true 时,delete_device 动作才会执行。缺少任一门控都会在发出任何请求前拒绝
删除操作。
安装
npx @reneturcios/tailnetport devices
也可以运行容器镜像:
docker run -i -e TAILSCALE_API_KEY=... ghcr.io/cloudcorprecords/tailnetport
容器默认启动 MCP 服务(见下文)。传入 CLI 参数即可将其用作 CLI。
CLI
tailnetport devices
tailnetport device 12345
tailnetport device-routes 12345
tailnetport keys
tailnetport acl
tailnetport dns
tailnetport users
tailnetport help
tailnetport authorize-device 12345
tailnetport delete-device 12345 --confirm # also needs TAILSCALE_ALLOW_DESTRUCTIVE=true
tailnetport --version
命令会输出上游 JSON 负载;help 会打印本地
动作列表,且不会发出请求。退出代码:成功时为 0,调用
失败时为 1(包括上游 API 错误或门控拒绝),用法错误时为 2。
MCP 服务
同一个二进制文件提供两种接口。mcp 子命令会启动 stdio MCP
服务:
npx -y @reneturcios/tailnetport mcp
MCP 客户端配置:
{
"mcpServers": {
"tailnetport": {
"command": "npx",
"args": ["-y", "@reneturcios/tailnetport", "mcp"],
"env": {
"TAILSCALE_API_KEY": "tskey-...",
"TAILSCALE_TAILNET": "-"
}
}
}
}
只有在希望服务能够删除设备时,才在该 env 中添加 TAILSCALE_ALLOW_DESTRUCTIVE: "true"(每次删除调用仍需包含 confirm: true)。
工具
一个工具 tailscale,根据其 action 参数进行路由:
| 动作 | 额外输入 | 功能 |
|---|---|---|
devices | — | 列出 tailnet 中的设备。 |
device | id(必填) | 获取一台设备。 |
device_routes | id(必填) | 获取一台设备通告的路由。 |
keys | — | 列出 tailnet 的 API 密钥。 |
acl | — | 获取 tailnet ACL 策略。 |
dns | — | 获取 tailnet 的 DNS 名称服务器和偏好设置。 |
users | — | 列出 tailnet 中的用户。 |
help | — | 返回本地动作文档;不会发出 API 请求。 |
authorize_device | id(必填) | 授权一台设备。 |
delete_device | id 和 confirm: true(均必填) | 删除一台设备。还需要 TAILSCALE_ALLOW_DESTRUCTIVE=true。 |
开发
npm install
npm run build # tsc -> dist/
npm test # node test runner over test/*.test.ts, no network (fake fetch fixtures)
npm run dev # run the CLI from source via tsx
许可证
MIT — 请参阅 LICENSE。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。