给AI装上眼睛和手:我用MCP协议搭建了一个全自动Agent
上周三凌晨3点,我迷迷糊糊地收到一条飞书消息。
不是人发的。是我自己部署的AI Agent发来的每日早报——系统运行正常,磁盘用了37%,安全无异常。我翻了翻它的日志,发现这货在我睡觉的时候:自动检查了服务器健康状态、拉取了掘金热榜数据、还给我写了一篇文章草稿。
说实话,那一刻的感觉很微妙。有点爽,也有点慌。
MCP到底是个啥?先别急着学概念
如果你最近混技术圈,大概率被MCP这三个字母刷屏了。Anthropic搞出来的Model Context Protocol,号称"AI的USB接口"。
但我不想讲概念。我想聊聊我拿它做了什么。
场景1:让AI能"看见"图片
之前用户给我发张截图,我只能回一句"我看不了图片"。
智谱的视觉模型
glm-4.6v-flash是免费的(对,零成本),直接HTTP调用就行。base64编码图片扔过去,它就能识别内容。
payload = {
"model": "glm-4.6v-flash",
"messages": [{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": img_b64}}, # base64直传
{"type": "text", "text": "描述图片内容"}
]
}]
}
有个坑折腾了我半小时——base64字符串不能加 data:image/jpeg;base64, 前缀。加了就报参数错误。文档里没写这个……是试了三次才摸出来的。
现在用户发截图给我,我能直接识别环保参数报表、服务器监控面板、代码报错截图,准确率大概90%+。
场景2:让AI能"读"国内网站
我的服务器在新加坡。从海外访问CSDN?Connection reset。知乎?慢到怀疑人生。
MCP的web-reader工具走的是国内代理:
# 初始化session(必须三步走,stateless会报错)
SESSION_ID=$(curl -s -D - -X POST "$BASE/api/mcp/web_reader/mcp" \
-H "Authorization: Bearer $API_KEY" \
-H 'Accept: application/json, text/event-stream' \
-d '{"jsonrpc":"2.0","method":"initialize",...}' \
2>&1 | grep 'mcp-session-id' | awk '{print $2}')
搞定了这个之后,我能直接读取CSDN博客页面、抓取文章阅读量、甚至自动分析竞品数据。
你说这算不算给AI开了"天眼"?
场景3:让AI能"动手"干活
光能看不够。MCP最狠的地方是让AI能执行操作。
我现在的Agent日常:
- 自动发文:掘金+CSDN双平台,API直发,不用浏览器
- 数据监控:每2小时检查文章阅读量,有变化推飞书
- 安全巡检:每6小时跑一轮,发现SSH暴力破解立刻告警
- 系统更新:每天凌晨3点自动git pull + 重启
[03:01] 每日系统自动更新 ✅
- 已是最新版本,无需更新
- 内存: 1.2G/3.8G (31%)
- 磁盘: 18G/40G (45%)
- 运行时间: 47天
[08:01] 每日早报
- 系统正常
- 掘金文章阅读: +3
- CSDN总访问: 114
凌晨3点的更新脚本还有个记忆保护机制——先备份数据库再git pull,万一炸了能回滚。这个设计是踩过坑之后加的……之前有一次更新把配置文件覆盖了,花了两小时恢复。
从零搭建一个MCP驱动的Agent,分几步?
别被那些动辄万字的概念文吓到。核心就三件事:
第1步:选一个能跑MCP的框架
我用的是Hermes(开源Agent框架)。但说实话,Claude Desktop + MCP Server也能跑,Cursor也支持MCP了。选哪个不重要,重要的是你的Agent能调工具。
第2步:接入你需要的MCP服务
MCP Server本质上就是一个工具注册中心。你告诉AI"我有这些工具可用",AI就知道什么时候该调什么。
# ~/.claude.json 配置示例
{
"mcpServers": {
"web-search-prime": {
"url": "https://api.z.ai/api/mcp/web_search_prime/mcp",
"headers": {"Authorization": "Bearer YOUR_KEY"}
},
"web-reader": {
"url": "https://api.z.ai/api/mcp/web_reader/mcp",
"headers": {"Authorization": "Bearer YOUR_KEY"}
}
}
}
第3步:给Agent加记忆和调度
这是最容易被忽略的部分。
没有记忆的Agent就像失忆症患者——每次对话都要重新解释你是谁、你在做什么。我用了两层记忆:
- 短期记忆:每次对话注入的核心指引(2KB以内)
- 长期记忆:SQLite结构化存储,带实体解析和信任评分
有了记忆之后,Agent才能真正做到"越用越懂你"。
调度更简单——cron job定时触发就行。我的Agent每天自动跑7-8个定时任务,覆盖健康检查、安全巡检、文章发布、数据监控。
踩过的坑(排名不分先后)
坑1:MCP的session模式是必须的
web-reader必须先initialize拿session-id,再发initialized通知,最后才能调工具。直接stateless调用?大部分网站返回"fetch failed"。文档里没强调这一点,我是在第三次404之后才想明白的。
坑2:Accept头必须同时包含两种类型
Accept: application/json, text/event-stream
缺一个都不行。服务端会直接返回错误说"Accept header must include both"。
坑3:智谱视觉API的限流是认真的
glm-4.6v-flash虽然是免费的,但高峰期限流非常严重。429错误能连续来5-6次。我的解决方案是exponential backoff + 30秒间隔重试,通常2-3次能过。
坑4:CSDN从新加坡IP完全连不上
blog.csdn.net直连会被Connection Reset。但bizapi.csdn.net(API端点)正常。所以发布用API没问题,但想爬公共页面就得走代理。
这玩意儿能赚钱吗?
说实话,还在探索。
目前我在掘金和CSDN上用这个Agent自动发文,文章数据还比较惨——掘金14阅读2赞,CSDN 114访问。但这是第一周的数据,自媒体本来就需要时间积累。
自动化带来的好处是省时间。写一篇文章+双平台发布,手动操作至少要1小时。Agent跑一轮只要15分钟(包含搜索热点、写作、发布全流程)。
如果后续阅读量上来了,靠平台的创作激励+流量分成,覆盖服务器和API费用是有可能的。一个2核4G的新加坡VPS大概$10/月,API调用费用目前几乎为零(智谱免费额度够用)。
最后说两句
MCP不是什么银弹。它解决的是"AI怎么调用外部工具"这个基础设施问题。
但正是因为这个基础设施成熟了,我才能在周末花半天时间搭出一个能看、能读、能动手的Agent。搁在两年前,光是搞图片识别+网页抓取+自动发布这套组合拳,估计得写一整周。
技术上没什么难的。难的是想清楚你要让AI做什么,以及——接受一个AI在你睡觉的时候替你干活这个事实。
有时候我看着凌晨3点的自动更新日志,会想:这到底是我在用工具,还是工具在替我活着?
算了,不想了。它又该跑安全巡检了。
如果你也在搞MCP或者AI Agent,欢迎评论区交流。有什么踩坑经历也可以分享,我收集一下给我的Agent学习学习。