news 2026/10/3 16:17:23

基于 1Panel 的 AI 运维教学指南:用 TaoToken 统一 Key 打通 mcp-1panel 与 MCP 服务

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
基于 1Panel 的 AI 运维教学指南:用 TaoToken 统一 Key 打通 mcp-1panel 与 MCP 服务

1. 为什么要在 1Panel 上折腾 AI 运维这套链路

1Panel 是这两年国内服务器圈子里装机量很高的开源面板,Docker 管理、应用商店、网站反代、计划任务这些功能做得比较顺手。但真正让它从「好用」变成「有点意思」的,是把 AI 运维接进来——让大模型能直接读面板状态、查容器、看日志,而不是你复制粘贴一堆信息去问它。

我自己的场景是这样的:手上有几台跑着 1Panel 的机器,平时要盯容器状态、看某个应用是不是挂了、偶尔要重启服务。以前的做法是打开面板点来点去,或者 SSH 上去敲 docker ps。后来想,能不能让 AI 直接调 1Panel 的接口帮我干这些事?答案就是 mcp-1panel 这个 MCP 服务。

MCP 全称 Model Context Protocol,你可以把它理解成「给大模型装的手脚」——模型本身只会聊天,通过 MCP 协议它才能调用外部工具。mcp-1panel 就是把 1Panel 的 API 包装成 MCP 工具,让 Claude、Cursor 里的模型、MaxKB 里的智能体都能操作你的面板。

那 TaoToken 在这里扮演什么角色?它是统一 Key 和 API 通道。你不需要在 Cursor、MaxKB、Claude Code 里各配一套不同厂商的 Key,而是用 TaoToken 一个 Key 走一个兼容接口,模型侧统一管理。对运维场景来说,这意味着你换模型、加模型都不用改 MCP 配置,只改一个 Base URL 和 Key 就行。

这篇适合谁看:已经装了或者准备装 1Panel、想让 AI 帮忙做运维、又不想在多个平台之间来回倒腾 Key 的人。下面从 GO 环境开始,一步步把 mcp-1panel 跑起来,再用 TaoToken 把模型通道接上,最后做一次真实调用验证。

2. 前置准备:1Panel 环境、GO 环境与 TaoToken Key 获取

这一节把三样东西备齐:能用的 1Panel、能编译 mcp-1panel 的 GO 环境、以及 TaoToken 的 API Key。顺序别乱,GO 环境是编译 mcp-1panel 的前提,TaoToken Key 是后面接模型的前提。

2.1 确认 1Panel 已安装并能登录

如果你还没装 1Panel,SSH 登录服务器后切到 root:

sudo -i

然后跑官方安装脚本,按提示走完:

bash -c "$(curl -sSL https://resource.fit2cloud.com/1panel/package/v2/quick_start.sh)"

如果卡在 Docker 安装失败,换这个脚本再试:

bash <(curl -sSL https://linuxmirrors.cn/docker.sh)

装完后控制台会打印访问地址,格式是http://服务器IP:端口/安全入口。忘了安全入口就执行:

1pctl user-info

浏览器能打开面板、能登录,这一步就算过了。记得在云厂商安全组里放行对应端口,不然外网访问不进去。

2.2 安装 GO 环境(编译 mcp-1panel 必需)

mcp-1panel 官方推荐从源码构建,所以得有 GO。先更新包索引:

sudo apt update

下载 GO 的 tarball,这里用 1.25.6 版本举例:

wget https://go.dev/dl/go1.25.6.linux-amd64.tar.gz

解压到/usr/local:

sudo tar -C /usr/local -xzf go1.25.6.linux-amd64.tar.gz

确认目录内容:

ls /usr/local/go

接着把 GO 加进 PATH。编辑.bashrc:

nano ~/.bashrc

在末尾加一行:

export PATH=$PATH:/usr/local/go/bin

保存后重新加载:

source ~/.bashrc

验证:

go version

能打印出go version go1.25.6 linux/amd64就对了。这一步踩过的坑是:有人用sudo装完 GO,但当前 shell 没重新 source,导致go命令找不到,其实只是环境变量没生效。

2.3 获取 TaoToken API Key

打开 TaoToken 控制台,在 API Keys 页面创建一个新 Key。这个 Key 后面会同时给 Cursor、MaxKB 或者 Claude Code 用,所以建议起个能认出来的名字,比如1panel-ops。

创建完把 Key 复制下来存好,页面关了就看不到了。同时记下两个地址:

  • Base URL:https://taotoken.net/api
  • 模型对话入口:用来验证模型通道是否通

TaoToken 的好处是这里配一次,后面所有接 MCP 的客户端都复用同一个 Key 和 Base URL,不用每个工具单独申请。模型 ID 按你实际要用的填,比如claude-sonnet-4-5这类,具体以控制台模型列表为准。

3. 安装 mcp-1panel 并配置 MCP 服务(含可复制配置)

环境齐了,开始装 mcp-1panel。它是 1Panel 官方出的 MCP 服务,把面板 API 封装成模型能调用的工具。

3.1 从源码构建二进制

克隆仓库:

git clone https://github.com/1Panel-dev/mcp-1panel.git cd mcp-1panel

构建:

make build

构建产物在./build/mcp-1panel。把它移到系统 PATH 里,方便全局调用:

mv ./build/mcp-1panel /usr/local/bin/ chmod +x /usr/local/bin/mcp-1panel

回到根目录验证:

cd / mcp-1panel --help

直接运行mcp-1panel,看到Run Stdio server字样说明二进制没问题,Ctrl+C退出即可。

3.2 拿到 1Panel 的 API 密钥并配白名单

进 1Panel 面板,找到「面板设置」里的 API 接口,生成或查看接口密钥。同时要把调用来源的 IP 加进白名单,否则 MCP 服务请求会被拒。这一步很多人漏掉,表现就是后面调用一直 401 或权限错误。

记下两个值:

  • 1Panel 访问地址,比如http://localhost:8080或你的面板域名
  • 1Panel 访问令牌(API Key)

3.3 用 SSE 方式启动 MCP Server

mcp-1panel 支持 stdio 和 SSE 两种传输。SSE 适合远程或容器化场景,启动命令:

mcp-1panel -host <your 1Panel access address> -token <your 1Panel access token> -transport sse -addr http://localhost:8000

参数说明:

参数含义示例
-host1Panel 访问地址http://localhost:8080
-token1Panel 访问令牌面板设置里生成的那串
-transport传输方式sse或stdio
-addrSSE 监听地址http://localhost:8000

启动后这个进程要常驻,建议用 1Panel 的「计划任务」或者 systemd 托管,别用前台终端挂着。

3.4 在客户端注册 MCP 服务(Cursor 配置示例)

以 Cursor 为例,Ctrl+L打开 chat,进 Settings 的 Tools & MCP,添加配置。stdio 方式的 JSON 片段如下:

{ "mcpServers": { "mcp-1panel": { "command": "mcp-1panel", "env": { "PANEL_ACCESS_TOKEN": "<your 1Panel access token>", "PANEL_HOST": "http://localhost:8080" } } } }

如果你走 SSE,配置里填 SSE 的 URL 即可。这里三件套要写全:Base URL 指向 TaoToken 的https://taotoken.net/api,Key 用刚才创建的 TaoToken Key,Model ID 填你要用的模型。三者缺一,模型侧就调不通。

MaxKB 那边的 MCP 配置格式略有不同,参考:

{ "mcp-1panel": { "url": "http://IP:端口/MCPserver名称", "transport": "sse" } }

如果用 Streamable HTTP,把sse换成streamable_http。

4. 验证请求:一次真实的 AI 运维调用

配置写完不验证等于没配。这一节做一次端到端调用,确认「模型 → TaoToken → MCP → 1Panel」整条链路是通的。

4.1 先单独验证 MCP 服务本身

在接模型之前,先确认 mcp-1panel 能正常响应。用 curl 打一下 SSE 端点:

curl -N http://localhost:8000/sse

如果能看到事件流输出,说明 MCP 服务活着。如果连接被拒,检查进程是否还在、端口是否被占。

4.2 在 Cursor 里发起一次运维对话

打开 Cursor 的 chat,输入类似这样的指令:

帮我看看 1Panel 上现在有哪些容器在运行,有没有状态异常的

模型会通过 MCP 调用 mcp-1panel 暴露的工具,去查 1Panel 的容器列表,然后把结果整理给你。如果配置正确,你会看到它返回容器名、状态、镜像等信息,而不是干巴巴地说「我无法访问」。

这一步的关键是模型侧要能拿到工具列表。如果 Cursor 里看不到 mcp-1panel 的工具,多半是 MCP 配置的 JSON 格式错了,或者command路径不对。

4.3 用 TaoToken 模型对话入口做通道验证

除了在 Cursor 里验证,也可以直接用 TaoToken 的模型对话入口测一下模型通道。发一条简单消息,确认返回正常,说明 Base URL 和 Key 没问题。通道通了,再回到 MCP 场景,问题就只可能出在 MCP 配置本身,排查范围一下子缩小了。

4.4 成功结果长什么样

一次成功的调用,你会看到模型先「思考」要调哪个工具,然后输出工具调用参数,接着拿到 1Panel 返回的 JSON,最后用自然语言总结。比如它会说「当前有 5 个容器在运行,其中 xxx 处于 exited 状态,建议检查日志」。到这一步,AI 运维链路就算打通了。

5. 常见报错排查:401、local proxy failed 与 OAuth 问题

配置过程中最容易卡在几个固定报错上,这里逐个拆。

5.1 401 Unauthorized

最常见。原因通常是 1Panel 的 API 令牌不对,或者 IP 没进白名单。检查顺序:

  1. 面板设置里的 API 密钥是否复制完整,有没有多余空格
  2. 调用来源 IP 是否加进了 API 白名单
  3. -token参数传的值和面板里的是否一致

TaoToken 侧的 401 则是 Key 无效或过期,去控制台确认 Key 状态,必要时重新生成。

5.2 local proxy failed

这个报错一般出现在客户端连不上 MCP 服务时。可能原因:

  • mcp-1panel 进程没起来,或者崩了
  • SSE 监听地址写错,比如写成了0.0.0.0但客户端连的是localhost
  • 端口被防火墙拦了

排查方法:先在服务器本地curl一下 SSE 地址,本地通、远程不通就是网络或防火墙问题。

5.3 reading choices 相关报错

这类报错通常和模型返回格式有关,出现在模型通道侧。检查 Base URL 是否指向https://taotoken.net/api,Model ID 是否是控制台里真实存在的模型。模型 ID 写错时,返回结构会异常,客户端解析就报 choices 相关错误。

5.4 OAuth 报错

如果你用的是 Claude Code 这类带 OAuth 流程的客户端,报 OAuth 错误一般是认证配置没对齐。确认客户端里填的是 TaoToken 的 Base URL 和 Key,而不是残留的旧配置。清掉缓存重新登录一次往往能解决。

5.5 工具列表为空

MCP 连上了但看不到工具,检查 mcp-1panel 启动时-host和-token是否都传了。缺任何一个,服务可能启动但工具注册失败。

6. 把链路用起来:TaoToken 统一 Key 的长期价值

链路打通只是开始,真正省事的是后面。TaoToken 在这里的价值不是「多一个平台」,而是把模型接入这件事收敛成一个入口。

以前的做法是:Cursor 配一套 Key,MaxKB 配一套,Claude Code 再配一套,换模型时每个地方都要改。现在统一走 TaoToken 的 Base URL 和 Key,换模型只改 Model ID,MCP 配置完全不用动。对运维场景来说,这意味着你可以今天用这个模型查容器,明天换个模型分析日志,配置层面零改动。

如果你要长期跑编码和 Agent 类任务,可以看下 Coding Plan,它更适合高频调用场景。日常排障和接入问题,直接翻接入文档最快。想先验证模型通道,用模型对话入口发一条消息就行。

几个实用建议:mcp-1panel 用 systemd 托管,别前台挂着;1Panel 的 API 白名单尽量收窄到调用来源 IP;TaoToken 的 Key 按用途分开建,方便出问题时定位是哪个环节。这套配下来,AI 运维就不是演示,而是真能天天用的东西。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!