MCP协议开发实战,从零搭建AI Agent工具链,7月28日MCP正式规范发布,手把手教你用无状态架构搭建属于自己的AI Agent服务器
目录一、 什么是 MCP为什么它是 AI Agent 的“标准插座”二、 从零搭建一个简单的“天气/运维”MCP Server1. 环境准备2. 编写核心代码 (server.py)三、 无状态架构为什么是“无状态”四、 如何让 AI 调用它五、 给开发者的进阶技巧实战避坑六、 总结通往 AI Agent 运维化之路如果您喜欢此文章请收藏、点赞、评论谢谢祝您快乐每一天。随着Model Context Protocol (MCP)在 7 月底的正式发布AI Agent 的开发范式发生了剧变。过去开发者需要为每一个 AI 模型Claude, ChatGPT 等重复对接各种工具而现在MCP 提供了一个标准的“通用接口”让 AI 服务器像连接打印机一样连接各种工具、数据库和 API。一、 什么是 MCP为什么它是 AI Agent 的“标准插座”MCP 的核心在于将AI 模型Host与外部资源/工具Server分离Host (客户端):例如 Claude Desktop, Cursor, 或你自己写的 Agent。Server (服务端):实现 MCP 协议的程序提供工具Tools、资源Resources和提示词Prompts。核心优势一次开发随处调用。你用 Node.js 或 Python 写一个 MCP ServerClaude Desktop 能用Cursor 能用未来所有支持 MCP 的 AI 都能直接调用。二、 从零搭建一个简单的“天气/运维”MCP Server我们以Python SDK为例搭建一个能够查询内网服务状态或简单信息的 MCP Server。1. 环境准备# 创建项目目录mkdir my-mcp-server cd my-mcp-serverpython -m venv venv source venv/bin/activatepip install mcp2. 编写核心代码 (server.py)MCP Server 的本质是一个基于JSON-RPC的无状态通信程序。from mcp.server.fastmcp import FastMCP# 初始化 Server名字叫 Ops-Toolsmcp FastMCP(Ops-Tools)# 定义一个工具AI 可以直接调用这个函数mcp.tool()def get_service_status(service_name: str) - str:查询指定服务的运行状态# 模拟内网运维逻辑if service_name db-prod:return Service db-prod is running normally (latency: 12ms).return fService {service_name} not found.if __name__ __main__:mcp.run()三、 无状态架构为什么是“无状态”MCP 协议被设计为无状态 (Stateless)是极其明智的弹性扩展由于 Server 不保存对话上下文你可以通过 Nginx 或负载均衡器轻松横向扩展多个实例。安全隔离每个请求都是独立的不会出现跨用户污染。便于调试你可以通过标准输入/输出 (stdio) 直接运行脚本进行调试而不需要搭建复杂的长连接。四、 如何让 AI 调用它你需要告诉 AI以 Claude Desktop 为例你的 Server 在哪里。在配置文件~/Library/Application Support/Claude/claude_desktop_config.json中添加{mcpServers: {my-ops-tool: {command: python,args: [/path/to/my-mcp-server/server.py]}}}重启 Claude Desktop 后你会看到一个“小插头”图标点击它AI 就已经“学会”了如何通过get_service_status函数与你的系统交互。重启 Claude Desktop 后你会看到一个“小插头”图标点击它AI 就已经“学会”了如何通过get_service_status函数与你的系统交互。五、 给开发者的进阶技巧实战避坑数据流监控MCP Server 默认通过stdio通信。如果你想调试可以在启动脚本中将stderr重定向到一个日志文件或者在代码中加入logging.basicConfig(filenamemcp.log, levellogging.DEBUG)。安全性重中之重不要暴露敏感权限MCP Server 运行在本地如果你的工具允许执行rm -rfAI 可能会误操作。最小化原则工具函数中一定要加入权限检查比如只读数据库连接或者通过鉴权层拦截请求。利用资源Resources而非工具ToolsTools是“动作”如发送邮件、查询数据库。Resources是“数据”如读取服务器配置文档、查看日志片段。如果你只是给 AI 提供信息请使用Resources它能让模型更高效地获取上下文。六、 总结通往 AI Agent 运维化之路MCP 的发布标志着AI Agent 从“玩具”向“基础设施”的转变。对于运维你不再需要开发繁琐的 API 接口只需要把现有的运维脚本套上一层 MCP 外壳AI 就能自主诊断故障。对于开发者你正在构建的是一个标准化的生态。今天你为自己的公司写了一个 MCP 数据库查询工具明天你就可以把同样的逻辑迁移到 Cursor 中作为你个人的代码分析助手。建议下一步尝试将你的企业内网 API 或常用的 CLI 工具封装进一个 MCP Server。当你第一次在聊天框输入“查询下 db-prod 的状态”并看到 AI 自主执行该函数时你会感受到 AI 运维的真正魅力。如果您喜欢此文章请收藏、点赞、评论谢谢祝您快乐每一天。

相关新闻

7、Rust程序设计语言——常见集合

7、Rust程序设计语言——常见集合

目录1. Vector1.1 新建vector1.2 更新vector1.3 读取vector的元素1.4 遍历vector中的元素1.5 使用枚举储存多种类型1.6 丢弃vector时也会丢弃其所有元素2. String2.1 定义字符串2.2 新建字符串2.3 更新字符串2.3.1 使用push_str和push追加字符串2.3.2 使用运算符或format!宏拼接…

2026/10/18 2:34:53 阅读更多 →
HTTP与HTTPS核心区别及安全握手过程详解

HTTP与HTTPS核心区别及安全握手过程详解

1. HTTP与HTTPS的本质区别HTTP(HyperText Transfer Protocol)和HTTPS(HyperText Transfer Protocol Secure)是互联网上应用最广泛的两种传输协议。它们最核心的区别在于数据传输的安全性。HTTP协议诞生于1991年,采用明…

2026/10/18 2:34:54 阅读更多 →
C++智能指针详解:RAII原理、unique_ptr与shared_ptr实战指南

C++智能指针详解:RAII原理、unique_ptr与shared_ptr实战指南

1. 项目概述:为什么我们需要智能指针?在C的世界里,内存管理一直是个让人又爱又恨的话题。爱的是,手动管理内存给了我们极致的控制权,能写出性能极高的代码;恨的是,一个不小心,内存泄…

2026/10/18 2:35:14 阅读更多 →

最新新闻

轻量跨平台AI聊天网关:统一接入多模型服务的工程实践

轻量跨平台AI聊天网关:统一接入多模型服务的工程实践

这两年做 AI 应用,我感触最深的一句话是:模型能力决定天花板,接入工程决定能不能落地。最麻烦的技术环节往往不在模型本身,而是把不同模型服务商接到自己业务里的那段路。每个服务商的接口规范有差异,密钥管理、模型名…

2026/10/20 14:24:55 阅读更多 →
深度学习时间序列预测实战:数据准备、模型选型与调参经验

深度学习时间序列预测实战:数据准备、模型选型与调参经验

做过几年时间序列预测相关的项目之后,我有一个很直接的感觉:深度学习不是时间序列问题的“万能解药”,但它确实把解决复杂预测问题的上限抬高了非常多。传统统计模型在数据平稳、场景单一、特征维度不高的任务里依旧能打,可一旦遇…

2026/10/20 14:24:55 阅读更多 →
能拿18项第一的Argon,为何在代码实战中翻车?

能拿18项第一的Argon,为何在代码实战中翻车?

1. 榜单上的神话:18项第一是怎么来的最近圈子里被一个名字刷屏了——“Argon”。不少群里都在转发那张截图,上面明晃晃列着一排“第一名”,总数吓人,18项。有人直接喊“地表最强”,也有人追问“能不能平替我现在在用的…

2026/10/20 14:24:55 阅读更多 →
ResidualQuant:循环Transformer的2-bit KV Cache残差量化压缩方案

ResidualQuant:循环Transformer的2-bit KV Cache残差量化压缩方案

1. 循环 Transformer 的 KV Cache 为什么还要省 1.1 先搞清楚循环 Transformer 的 Cache 长什么样 第一次看到 ResidualQuant 这个标题,我第一反应是:循环 Transformer 不是已经有固定大小的状态了吗,KV Cache 怎么还要压缩?后来…

2026/10/20 14:24:55 阅读更多 →
开源时间序列模型深度对比:从ARIMA到Transformer的选型与实操

开源时间序列模型深度对比:从ARIMA到Transformer的选型与实操

1. 时间序列建模的现状与选型困境时间序列预测这件事,看起来门槛不高,但真正落到生产环境里,坑远比想象中多。我最早接触这块是在一个设备运行状态监测的项目里,当时手头只有几百条按小时采样的传感器读数,用移动平均和…

2026/10/20 14:24:55 阅读更多 →
HBase启动报错Failed update hbase:meta表描述符故障解析

HBase启动报错Failed update hbase:meta表描述符故障解析

1. 项目概述:HBase启动时“Failed update hbase:meta table descriptor”报错的本质与影响范围你刚配好HBase集群,执行start-hbase.sh后,日志里赫然跳出一行红字:“Failed update hbase:meta table descriptor”,紧接着…

2026/10/20 14:23:49 阅读更多 →

日新闻

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

CLRC663芯片Pin-to-Pin替代实战:从评估到量产全记录

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
ESP32舵机控制指南:原理、多路驱动与避坑实战

ESP32舵机控制指南:原理、多路驱动与避坑实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →
位移法实现一阶低通滤波:单片机ADC采样降噪实战

位移法实现一阶低通滤波:单片机ADC采样降噪实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 1:01:30 阅读更多 →

周新闻

基于GMM的语音识别系统原理与MATLAB实现详解

基于GMM的语音识别系统原理与MATLAB实现详解

说到基于高斯混合模型(GMM)的语音识别系统,很多人第一反应就是一堆数学公式,觉得门槛很高。但如果你真的在MATLAB里把它落地跑通,会发现核心其实就是三件事:把声音变成特征向量,用GMM给每个类别…

2026/10/20 10:02:13 阅读更多 →
数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理入门:反白、灰度化、调色板修改与导出txt实践

数字图像处理这四个字听起来挺唬人,但落到具体操作上,无非就是让计算机按你的想法“摆弄”像素。我在一个模拟项目X里用了一套特别经典的基础处理流程:对图像做反白、改调色板、彩色转灰度,最后把像素数据导出成txt文件。单看每一…

2026/10/19 17:32:41 阅读更多 →
机器人大脑技术盘点:具身智能的感知、决策与数据闭环

机器人大脑技术盘点:具身智能的感知、决策与数据闭环

如果你的信息流最近也天天刷到“机器人大脑”这个词,你会发现一个很有意思的现象:每个人说的“大脑”根本不是同一个东西。有人指的是大语言模型,有人指的是运动控制系统,还有人指的是能理解物理世界的端到端模型。在2026年这个时…

2026/10/20 2:50:50 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 10:02:08 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:17 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/20 9:50:45 阅读更多 →