100 行代码搓出来的MCP服务,打造一个简易版“智能化运维”平台
我正在参加CodeBuddy「首席试玩官」内容创作大赛,本文所使用的 CodeBuddy 免费下载链接:腾讯云代码助手 CodeBuddy - AI 时代的智能编程伙伴
你好,我是悟空。
本篇抛砖引玉,通过一个真实案例来讲解如何通过智能体 + MCP 来实现一个简易的智能化运维平台。
整体的思路如下,后面我们也会详细讲解如何用 智能体 + MCP 来实现这个思路。

前言
在一个月黑风高的网上,我正准备将我写的博客内容部署到我的网站,发现我部署到 Jenkins 服务坏了,就不能一键部署我的更新和部署网站了。
于是我就重装了一遍 Jenkins,然后安装了各种 Jenkins 插件,配置了 NodeJS、Git 权限,倒腾了一晚上,最后发现从 Git 仓库拉取代码一直提示错误,最后放弃了。
只能我自己手动打包,然后把文件手动上传到服务器并部署。
这个手动打包部署到动作虽然简单,但这种重复性工作我是非常不喜欢的。突发奇想,可否让 CodeBuddy 帮我执行编译->打包->上传->部署的命令呢?
另外把如果这一系列动作做成一个 MCP
服务是不是更棒呢,我只要对 CodeBuddy 说:更新我的博客网站,它就会开始执行这些动作呢,真正的实现了智能运维,这个想法是不是很酷?
MCP 概述
Model Context Protocol(模型上下文协议)简称为 MCP 协议。简单来说,它就是给 AI 和各类工具数据之间搭了个标准化的”桥梁”,让开发者不用再为对接问题头疼了。
智能运维平台的原理如下图所示:

其实这个架构图很像一个情报机构:
MCP 主机(MCP Hosts):发起请求的 LLM 应用程序(例如 Claude Desktop、IDE 或 AI 工具)。可以理解为是一个可对话的主机程序。也就是情报机构的大厅,当有人想要获得情报时,先到大厅来咨询。
MCP 客户端(MCP Clients):在主机程序内部,与 MCP server 保持 1:1 的连接。MCP Client 负责与 MCP Server 进行通信。与情报人员保持单线联系。在实际实现中,一个程序可以通过管理多个连接来同时与多个 MCP Server 进行交互,而不需要为每个服务器启动独立的客户端进程或实例。
MCP 服务器(MCP Servers):为 MCP client 提供上下文、工具和 prompt 信息。类似情报机构的情报人员。
当用户发送 prompt(例如:我要部署生产环境的订单服务) 到 MCP Hosts 时,**MCP Hosts 会调用 MCP Client 与 MCP Server 进行通信,获取当前 MCP Server 具备哪些能力,然后连同用户的 prompt 一起发送给大模型,大模型就可以针对用户的提问,决定何时使用这些能力了。**这个过程就类似,我们填充 ReAct 模板,发送给大模型。在 Agent 中,我们知道大模型只管选择工具,并不管调用工具。调用工具要由实际的程序完成,这就像万有引力定律一样,是定理。那么在 MCP 中,当然也不能违背这个定理。
当大模型选择了合适的能力后,MCP Hosts 会调用 MCP Cient 与 MCP Server 进行通信,由 MCP Server 调用工具或者读取资源后,反馈给 MCP Client,然后再由 MCP Hosts 反馈给大模型,由大模型判断是否能解决用户的问题。如果解决了,则会生成自然语言响应,最终由 MCP Hosts 将响应展示给用户。
MCP 主要是为了解决当前 AI 模型因数据孤岛限制,无法充分发挥潜力的难题,MCP 使得 AI 应用能够安全地访问和操作本地及远程数据,为 AI 应用提供了连接万物的接口。
部署步骤
之前的 Jenkins Pipeline 文件还留着在,我直接将上面的部署命令 copy 下来。
其实部署命令也就简单的四步:
1、编译博客代码
2、将 dist 压缩成 dist.tar.gz 包
3、将 dist.tar.gz 包上传到网站根目录。
4、将 dist.tar.gz 包解压。
这第一步肯定是要在本地编译下看报不报错的,那么不需要 MCP 服务来做的。我们来看看剩下的几步。
让 CodeBuddy 直接部署博客
那我先让 CodeBuddy 不通过 MCP Server 直接执行第三步,于是发送提示词:
将文件 dist.tar.gz 远程拷贝到服务器
这一步肯定会失败的,因为服务器的 IP、账号和密钥文件都没给他。

没关系,我们把服务器的信息都发给 CodeBuddy 就行,即使是密钥文件,我们告诉它密钥文件路径就行,它就会自己去本地磁盘去找。然后它就会执行上传操作了,如下图所示,dist.gz.tar 文件上传成功了

但是它上传到路径不对,不是网站根目录,这不废话么,我都没告诉它网站路径是啥。
接着我告诉 CodeBuddy 上传到这里,然后执行解压命令:
上传到这 /我的网站的路径/passjava-learning ,并执行解压命令 tar -xzf dist.tar.gz

然后 CodeBuddy 会帮我生成一串命令尝试去部署。

拿到这个命令后,我就让 CodeBuddy 生成一个 MCP 来帮我执行这些命令。
生成 MCP 代码
提示语如下图所示,就是让 CodeBuddy 根据这个命令来做成 MCP Server,作用是用来部署我的博客。

它就会在本地帮我创建一个 MCP Server 的项目。

MCP Server 的核心代码就是 index.ts,100 行左右。

CodeBuddy 会自动帮我们编译 MCP Server 并启动它。执行 npm run build 就会自动启动 MCP Server。对了,我手动改了下 MCP Server 的代码,把压缩命令也写进去了,然后博客目录也是通过参数传进去的。

CodeBuddy 还会帮我们配置好 MCP Server。

MCP 配置文件如下:
{
"mcpServers": {
"blog-deploy": {
"command": "node",
"args": ["/Users/wukong/Documents/TencentCloud/MCP/blog-deploy-server/build/index.js"],
"env": {
"BLOG_PATH": "/Users/wukong/xx/00.PassJava-VuePress/dist",
"TAR_FILE": "/Users/wukong/xx/00.PassJava-VuePress/dist.tar.gz",
"SSH_HOST": "<填写服务器 ip>",
"SSH_USER": "<填写服务器账号>",
"SSH_PORT": "22",
"SSH_KEY_PATH": "<填写本地密钥路径>",
"DEPLOY_PATH": "<填写网站根目录>"
},
"disabled": false,
"autoApprove": []
}
}
}
让 MCP Server 部署博客
在 CodeBuddy Craft 中对话:直接部署博客。CodeBuddy 就开始自动部署了,是不是非常智能,都不需要登录 Jenkins,比 Jenkins 方便太多了。

到博客网站上看一看,真的部署成功了。

通过这个案例,我们实现了一个简单的智能运维平台,只需要告诉智能体, 它就会帮我们执行部署工作,其实可以将这个思路延伸到更广的运维工作中,打造一个更全面智能化运维的平台,本篇只是抛砖引入,欢迎拍砖。