mcpField
T
tailnetport

tailnetport

本地服务
github.com/CloudCorpRecords云与基础设施01 周前更新

关于 tailnetport

tailnetport 通过 CLI 或 stdio MCP 服务管理 Tailscale tailnet。单个动作路由工具涵盖设备、密钥、ACL、DNS 和用户操作,删除设备设有双重限制。

主要功能

  1. 01单一动作路由工具
  2. 02列出并查看设备与路由
  3. 03读取密钥、ACL、DNS 和用户
  4. 04授权或删除设备
  5. 05删除需通过双重确认

适用场景

  1. 01检查 tailnet 设备及其通告路由
  2. 02查看 tailnet 密钥、ACL 或 DNS 设置
  3. 03通过 API 授权设备
  4. 04启用两项保护后删除设备

MCP 相关

stdio MCP 服务提供一个 `tailscale` 工具,将操作路由到 Tailscale API v2。删除设备既需在调用中设置 `confirm: true`,也需在环境中设置 `TAILSCALE_ALLOW_DESTRUCTIVE=true`。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"cloudcorprecords-tailnetport": {
"command": "npx",
"args": [
"-y",
"@reneturcios/tailnetport"
]
}
}
}
启动命令npx -y @reneturcios/tailnetport

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
npm@reneturcios/tailnetport0.1.0
ocighcr.io/cloudcorprecords/tailnetport:0.1.0

工具

1

收录的工具列表 · 更新于 1 周前

参数类型必填说明
idstring否设备 ID,是 device、device_routes、authorize_device 和 delete_device 操作必需的。
actionenum是要运行的操作: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
confirmboolean否确认标志,必须为 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 中的设备。
deviceid(必填)获取一台设备。
device_routesid(必填)获取一台设备通告的路由。
keys—列出 tailnet 的 API 密钥。
acl—获取 tailnet ACL 策略。
dns—获取 tailnet 的 DNS 名称服务器和偏好设置。
users—列出 tailnet 中的用户。
help—返回本地动作文档;不会发出 API 请求。
authorize_deviceid(必填)授权一台设备。
delete_deviceid 和 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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。