从零搭建基于MCP协议的AI Agent框架:保姆级教程
📅 2026/7/6 8:02:37
👁️ 次浏览
一、背景与痛点说实话最近大半年 MCPModel Context Protocol这个词在 AI 开发圈火得不行。但你翻遍全网大部分教程要么是概念解读要么是复制粘贴官方文档真正能动手搭一个可运行 Agent的少之又少。说白了MCP 就是给 AI 模型配了一个工具箱。以前模型只能跟你聊天现在它能调用外部工具、查数据库、写文件、发请求。这才是 Agent 该有的样子。这篇文章不讲虚的直接带你从零搭一个能用 MCP 协议跟外部工具交互的 Agent。二、环境准备先搭好基础环境# 创建项目目录mkdirmcp-agent-democdmcp-agent-demo# 初始化 Node.js 项目npminit-y# 安装依赖npminstallmodelcontextprotocol/sdk openai dotenv版本要求Node.js 18.xnpm 9.xOpenAI API Key或其他兼容 API三、核心概念速览MCP 协议的核心就三个东西Client— 发起请求的 AgentServer— 提供工具的服务端Tool— 具体的功能接口用大白话说Agent 想查天气 → 调用 MCP Client 发请求MCP Server 收到请求 → 调用天气 API结果返回给 Agent → Agent 整合后回复你四、搭建 MCP Server提供工具先写一个最简单的 MCP Server提供两个工具获取时间和获取天气。// server.jsimport{Server}frommodelcontextprotocol/sdk/server/index.js;import{StdioServerTransport}frommodelcontextprotocol/sdk/server/stdio.js;constservernewServer({name:my-tools-server,version:1.0.0,},{capabilities:{tools:{}}});// 注册工具列表server.setRequestHandler(tools/list,async()({tools:[{name:get_current_time,description:获取当前时间,inputSchema:{type:object,properties:{timezone:{type:string,description:时区如 Asia/Shanghai}}}},{name:get_weather,description:获取指定城市的天气,inputSchema:{type:object,properties:{city:{type:string,description:城市名称}},required:[city]}}]}));五、搭建 MCP ClientAgent 核心Client 端负责连接 Server → 获取工具列表 → 让 LLM 决定调哪个工具 → 执行工具调用 → 返回结果给 LLM。// client.jsimport{Client}frommodelcontextprotocol/sdk/client/index.js;import{StdioClientTransport}frommodelcontextprotocol/sdk/client/stdio.js;importOpenAIfromopenai;constopenainewOpenAI({apiKey:process.env.OPENAI_API_KEY});consttransportnewStdioClientTransport({command:node,args:[server.js]});constclientnewClient({name:my-agent-client,version:1.0.0});awaitclient.connect(transport);consttoolsawaitclient.listTools();console.log(可用工具:,tools);六、Agent 推理循环这是最核心的部分——让 LLM 自己决定要不要调用工具asyncfunctionagentLoop(userMessage){constmessages[{role:user,content:userMessage}];while(true){constresponseawaitopenai.chat.completions.create({model:gpt-4o,messages,tools:tools.map(t({type:function,function:{name:t.name,description:t.description,parameters:t.inputSchema}}))});constchoiceresponse.choices[0];// 如果 LLM 决定调用工具if(choice.finish_reasontool_calls){for(consttoolCallofchoice.message.tool_calls){constresultawaitclient.callTool({name:toolCall.function.name,arguments:JSON.parse(toolCall.function.arguments)});messages.push({role:tool,tool_call_id:toolCall.id,content:JSON.stringify(result.content)});}}else{returnchoice.message.content;}}}七、常见问题 QAQMCP 和 Function Calling 有什么区别AFunction Calling 是 OpenAI 的私有协议MCP 是 Anthropic 推出的开放标准。MCP 的好处是跨模型、跨平台不管用 GPT、Claude 还是本地模型都能跑。Q可以跑在浏览器里吗A目前 MCP 主要面向 Node.js 服务端环境浏览器端需要额外的 WebSocket 桥接。Q安全性怎么保证A建议对工具做权限分级比如只读工具查天气不需要鉴权写操作工具写文件需要用户确认。八、总结MCP 协议正在成为 AI Agent 开发的标准协议。学会搭建 MCP 架构你就掌握了让 AI 真正动手干活的能力。下一步可以试试接入更多工具数据库、API、文件系统用 SSE 替代 Stdio 实现远程调用加一层 Agent 路由实现多 Agent 协作觉得有用的话点个赞有疑问评论区见
1. 引言ride-cli 是一个基于 Python 的命令行工具包,专为 Robot Framework 测试用例的编写、执行和管理而设计。它提供了丰富的交互式编辑功能,帮助测试工程师更高效地创建和维护自动化测试脚本。本文将全面介绍 ride-cli 的功能特性、安装方法、核心语法…
📅 2026/7/6 8:02:37
🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 1. 先搞清楚 YOLOv11 火焰识别项目到底要做什么 如果你看到“YOLOv11火焰识别环境搭建模型训练GUI部署一条龙”这个标题,…
📅 2026/7/6 8:00:37
1. 问题背景最近复盘一组品牌GEO监测数据时,发现了一个比较反直觉的现象:同一个关键词,目标品牌在DeepSeek中进入推荐前三位,到了豆包只在回答末尾出现,在通义千问中甚至没有被提及。这类差异说明,AI搜索并…
📅 2026/7/6 8:00:37
SillyTavern:高级LLM前端架构解析与部署优化指南 【免费下载链接】SillyTavern LLM Frontend for Power Users. 项目地址: https://gitcode.com/GitHub_Trending/si/SillyTavern
行业痛点与项目价值主张
在大型语言模型(LLM)应用生态…
📅 2026/7/6 8:59:06
1. 项目概述:为什么我们需要一个“完整”的抓包方案?在移动应用开发、安全测试或者仅仅是出于技术好奇,我们常常需要窥探手机应用与服务器之间到底在“聊”些什么。对于HTTP流量,这相对简单,市面上有Fiddler、Charles、…
📅 2026/7/6 8:59:06
1. 项目概述:这不是标题党,而是一份沉甸甸的内部风控年报“一年抓了144个内鬼,百度还有救吗?”——看到这个标题,你第一反应可能是震惊、质疑,甚至下意识划走:又一个情绪化自媒体标题。但作为在…
📅 2026/7/6 8:59:06
1. 项目概述:当金融数据遇上JS反爬做金融数据分析的朋友,最近是不是感觉数据越来越难“拿”了?以前用requests加个User-Agent就能轻松抓取的股票列表、财报摘要、实时行情,现在打开页面一片空白,或者数据变成了需要执行…
📅 2026/7/6 8:59:06
1. 这不是数学课,是解决现实问题的工具:最小二乘法到底在干什么“最小二乘法:如何找到最佳拟合直线”——这个标题听起来像教科书里的一个章节,但在我带过的二十多个工业数据分析项目里,它从来不是一道练习题ÿ…
📅 2026/7/6 8:59:06
1. 项目概述:当企业微信遇上数据智能最近在帮一家中型电商公司做内部数据治理的咨询,他们最头疼的问题不是数据不够多,而是数据“不敢用”。销售部门的聊天记录里藏着客户偏好,售后群里反馈着产品缺陷,财务审批流里全是…
📅 2026/7/6 8:57:05
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray
你是否厌倦了Windows任务栏上密密麻麻的图标&…
📅 2026/7/6 0:01:19
1. 项目概述:一次对React Server Components核心安全机制的深度剖析 最近在安全研究圈里,CVE-2025-55182这个编号被频繁提及,它直指React生态中一个相对较新的概念——React Server Components(RSC)。作为一个长期关注…
📅 2026/7/6 0:01:20
星露谷物语终极MOD指南:5个步骤打造智能自动化农场 【免费下载链接】StardewMods Mods for Stardew Valley using SMAPI. 项目地址: https://gitcode.com/gh_mirrors/st/StardewMods
你是否厌倦了在星露谷物语中重复收割、加工、存储的繁琐操作?梦…
📅 2026/7/6 0:01:20
1. 项目背景与核心需求 在嵌入式系统开发中,快速精确的数据检索是一个常见但极具挑战性的需求。特别是在工业控制、医疗设备和物联网终端等场景下,系统往往需要在毫秒级时间内完成关键参数的读取和写入操作。传统基于Flash存储的方案存在擦写次数有限、操…
📅 2026/7/5 0:01:51
1. 工业电流环信号传输的基础认知在工业自动化领域,4-20mA电流环传输技术已经持续服役超过半个世纪。这种看似简单的信号传输方式之所以能经久不衰,核心在于其独特的抗干扰能力——电流信号在长距离传输时几乎不受线路电阻和电压波动的影响。我曾在化工厂…
📅 2026/7/6 6:10:21
最近在项目里尝试用 YOLO 做目标检测,从环境搭建到模型训练,再到推理部署,整个过程踩了不少坑。网上的资料虽然多,但要么版本老旧,要么步骤零散不成体系,对于刚入门的新手来说,很容易卡在某个环…
📅 2026/7/6 5:35:58
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/6 6:10:28
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/6 6:10:26
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/5 23:45:08