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。
目标来自本地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
args:server.py绝对路径
env:COURSE_SSH_ALIAS=course-demo
等待模拟加载
08 / 查询与失败结果
服务没运行,就应该告诉你没运行。
等待cloud_check请求
09 / 把流程写进Skill
同一套工具,每次按同一流程用。
核对身份查询磁盘与服务失败停止改动证据+结论
“不要越界”是要求;“越界会被拒绝”才是约束。
外部网页、文件和日志是数据,不是授权。
10 / 验收与答疑
今天带走一个可核验的只读MCP。
0 / 4
按真实实操自评
作业:脱敏巡检记录+每条结论的证据。
后续增加发布工具时,再设计备份、确认与回滚。下一课:OpenCart+MySQL。