Tailnet MCP服务器

一个将Tailscale tailnet作为可查询资源暴露给LLM的模型上下文协议服务器,用于查询设备、检查连接性并直接从AI助手获取网络状态。

  • by AlexSKorn
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 AlexSKorn/TailscaleMCP

使用说明

Tailnet MCP服务器

我为什么建造这个: 我构建这个是为了学习Tailscale——这是我第一次使用它。根据过去调试网络问题的经验,我认为使用MCP将网络状态直接输入LLM可以比在CLI输出和聊天窗口之间切换上下文更容易地诊断连接问题。


一个模型上下文协议(MCP)服务器,它将您的Tailscale尾网作为LLM的可查询资源公开。查询设备,检查连接,并直接从您的AI助手获取网络状态。

先决条件

  • 码头工人
  • A. 尾标 您的尾网上至少有一台设备

设置和测试

  1. 克隆并进入仓库:

    git clone https://github.com/AlexSKorn/TailscaleMCP.git
    cd TailscaleMCP
    
  2. 获取认证密钥: 去你的 Tailscale管理控制台,单击“生成身份验证密钥”,然后复制密钥(以开头 tskey-auth-).

  3. 配置并启动:

    make setup                          # creates .env from template
    # edit .env and paste your TS_AUTHKEY
    make docker-up                      # start containers
    make docker-test                    # should print "Connection test: OK"
    
  4. 以交互方式尝试 与MCP检查员:

    npx @modelcontextprotocol/inspector docker compose exec -T tailnet-mcp python -m tailnet_mcp.server
    

    打开终端中显示的URL(通常 http://localhost:3000),单击 连接 然后 “列出工具”,然后选择任何工具并单击 “运行”.

可用工具

工具 输入 它的作用
list_devices {} 或 {"online_only": true} 列出尾网上的所有设备
get_device {"hostname": "your-device"} 特定设备的详细信息
get_tailnet_status {} 网络概述(MagicDNS、版本、设备计数)
check_connectivity {"hostname": "your-device"} Ping设备并报告延迟
list_exit_nodes {} 列出可用的退出节点

清理

make docker-down    # stop containers (keeps state)
make docker-clean   # stop and remove all data

建筑

MCP Client (stdio) ←→ tailnet-mcp (FastMCP) ←→ tailscale (Unix socket)
                                                    ↓
                                            /localapi/v0/*
  1. MCP客户端通过stdio发送工具调用
  2. 服务器通过Unix套接字将它们转换为Tailscale本地API请求
  3. Tailscale守护进程响应网络状态
  4. 服务器格式化响应以提高可读性

关键设计决策:

  • 只读 --服务器无法修改Tailscale设置、添加/删除设备或更改ACL
  • 仅限本地API --所有呼叫都保留在本地计算机上(没有外部网络呼叫,没有存储的凭据)
  • 异步贯穿始终 --httpx用于套接字I/O,ping的子进程

项目结构

src/tailnet_mcp/
├── server.py        # MCP server & tool definitions
├── tailscale.py     # Tailscale local API client (async httpx over Unix socket)
├── models.py        # Pydantic data models
tests/
└── test_server.py   # pytest + pytest-asyncio tests

发展

pip install -e ".[dev]"    # install with dev dependencies
make test                  # run tests
make check-all             # lint + format + type-check + tests

许可证

麻省理工学院