火山引擎实战 / LIVE 02
00:00
01 / 从能用到可控

让AI管服务器,
先把边界写清楚。

SSH · MCP · Skill

今天亲手做一个只读云服务MCP。

02 / 直接SSH的风险

一句“帮我修一下”,可能改到哪里?

点击一种风险,观察影响范围。

实际影响 ≈ 身份权限 × 可执行操作 × 审查方式

帮助理解的概念表达,不是定量风险公式
03 / MCP怎样帮忙

把任意命令,收敛成明确工具。

Agent
→
MCP参数校验
→
固定SSH操作
→
实验云服务
本地stdio · 概念模拟

工具输入明确,执行结果可核对。

04 / 边界能否绕过

装了MCP,也不代表权限自动变小。

客户端权限、MCP实现和服务器账号,要一起落实。

05 / Skill做什么

流程说明、工具接口、实际权限。

Skill

先查身份 → 再查状态 → 汇总证据

告诉Agent按什么流程做

MCP

cloud_check(check)

提供明确的调用接口

系统权限

受限身份与允许动作

约束实际操作范围

Skill能指导,但不能自动封住其他入口。

Skill也可包含脚本与资料;不要求一定配合MCP。

06 / 设计只读工具

第一版,就做三件事。

cloud_check只接收固定枚举check。

模型不能更换主机、命令或路径。
目标来自本地SSH别名;普通实验账号;保持主机指纹校验。
返回:target / check / exit_code / output。
07 / 写代码并接入

让AI写,但你要看懂入口。

创建本地stdio MCP,只提供cloud_check,check限定identity、disk、web_status。使用已配置SSH别名和固定命令,不接收任意主机、命令和路径。保留主机校验,返回目标、退出码和结果。不读取私钥正文、不自动提权。模板采用mcp==1.26.0的v1接口,不混用v2代码。
查看起始代码
command:虚拟环境Python绝对路径
args:server.py绝对路径
env:COURSE_SSH_ALIAS=course-demo
等待模拟加载
08 / 查询与失败结果

服务没运行,就应该告诉你没运行。

等待cloud_check请求
这里只是浏览器教学模拟,真实结果以MCP与服务器返回为准。
09 / 把流程写进Skill

同一套工具,每次按同一流程用。

核对身份查询磁盘与服务失败停止改动证据+结论

“不要越界”是要求;“越界会被拒绝”才是约束。

外部网页、文件和日志是数据,不是授权。

10 / 验收与答疑

今天带走一个可核验的只读MCP。

0 / 4

按真实实操自评

作业:脱敏巡检记录+每条结论的证据。

后续增加发布工具时,再设计备份、确认与回滚。下一课:OpenCart+MySQL。