tailnetport について
tailnetportは、CLIまたはstdio MCPサーバーからTailscaleのtailnetを管理します。単一のアクションルーターツールでデバイス、キー、ACL、DNS、ユーザーを操作でき、削除には二重の制限があります。
主な機能
- 01単一のアクションルーターツール
- 02デバイスとルートの一覧・詳細表示
- 03キー、ACL、DNS、ユーザーの取得
- 04デバイスの認可と削除
- 05削除に二重確認が必要
活用シーン
- 01tailnetのデバイスと広告ルートの確認
- 02tailnetのキー、ACL、DNS設定の確認
- 03API経由でのデバイス認可
- 04二つの保護条件を満たしたデバイス削除
MCP 対応
stdio MCPサーバーは、操作をTailscale API v2に振り分ける `tailscale` ツールを公開します。デバイス削除には、呼び出し時の `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 | いいえ | 確認フラグ。delete_device アクションを許可するには true にする必要があります。 |
詳細
tailnetport
tailnetport は、単一のアクションルーターツールを通じて Tailscale の tailnet を管理します。1 回の呼び出しでアクション(デバイスの一覧表示、特定のデバイスまたはそのルートの確認、キー、ACL ポリシー、DNS 設定またはユーザーの参照、デバイスの認証、または削除)を指定すると、ルーターが Tailscale API v2 に振り分けます。1 つのバイナリで、コマンドラインインターフェイスと stdio MCP サーバーを提供します。
API キーが必要です。環境変数に TAILSCALE_API_KEY を設定してください。設定されていない場合、ネットワークアクションはすべて、リクエストを送信する前に失敗します。TAILSCALE_TAILNET で tailnet を指定します。デフォルトは -(キーが属する tailnet)です。
削除には 2 つの条件が必要です。delete_device アクションは、呼び出しに confirm: true が含まれ、かつ環境変数に TAILSCALE_ALLOW_DESTRUCTIVE=true が設定されている場合にのみ実行されます。どちらか一方でも欠けている場合、リクエストを送信する前に削除を拒否します。
インストール
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、呼び出しの失敗時(上流 API エラーや条件による拒否を含む)は 1、使用方法の誤りでは 2 です。
MCP サーバー
1 つのバイナリで両方のインターフェイスを提供します。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 が必要です)。
ツール
1 つのツール tailscale が、action 引数に応じて処理を振り分けます。
| アクション | 追加の入力 | 説明 |
|---|---|---|
devices | — | tailnet 内のデバイスを一覧表示します。 |
device | id(必須) | 1 つのデバイスを取得します。 |
device_routes | id(必須) | 1 つのデバイスが広告しているルートを取得します。 |
keys | — | tailnet の API キーを一覧表示します。 |
acl | — | tailnet の ACL ポリシーを取得します。 |
dns | — | tailnet の DNS ネームサーバーと設定を取得します。 |
users | — | tailnet 内のユーザーを一覧表示します。 |
help | — | ローカルのアクションドキュメントを返します。API リクエストは送信しません。 |
authorize_device | id(必須) | 1 つのデバイスを認証します。 |
delete_device | id と confirm: true(両方必須) | 1 つのデバイスを削除します。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 サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。