自己写一个智能体-使用MCP服务

我们提到,智能体之所以比单纯的语言模型强大,是因为它拥有了“手”和“脚”——也就是使用工具的能力

智能体 = 大语言模型(大脑) + 规划(前额叶) + 工具(手脚)

理论说得再多,终究要落地。今天我们就来聊聊如何通过MCP (Model Context Protocol)协议,真正的让你的智能体“动”起来。我们将以一个实际场景为例:写一段代码,让AI自动把一篇文章发布到微信公众号。

什么是 MCP?

在开始写代码之前,得先解决一个痛点。

以前我们要让 GPT 连接外部工具(比如读取文件、搜索网页、操作数据库),通常需要针对不同的 API 写一大堆胶水代码。如果你用LangChain,你得遵循它的接口规范;如果你换个框架,可能全得重写。

MCP (Model Context Protocol)就是 AI 时代的USB-C 接口。它是由 Anthropic 等公司推动的一个开放标准。

  • MCP Server:提供工具(比如:文件读取服务、微信发布服务)。
  • MCP Client:也就是我们的智能体(负责连接模型和服务端)。
  • LLM:负责决策调用哪个工具。

只要大家遵循这个协议,你的智能体就可以无缝连接任何支持 MCP 的工具,而不需要关心底层的具体实现。

实战:构建公众号发布智能体

接下来,我们通过一段Node.js代码,演示如何把一个本地 Markdown 文件,通过 MCP 服务发布到微信公众号。

1. 准备工作

在这个例子中,我们需要三个角色的配合:

  1. 大脑:一个支持 Function Calling 的大模型(如 GPT-4o 或 DeepSeek 等兼容 OpenAI 格式的模型)。
  2. 工具箱 (MCP Server):这里我们使用 文颜 MCP,这是一个封装了微信公众号发布功能的 MCP 服务,我们通过 Docker 运行它。
  3. 智能体 (MCP Client):我们自己写的这段 JS 代码。

2. 连接 MCP 服务

首先,我们需要建立与 MCP Server 的连接。在代码中,我们通过StdioClientTransport来启动一个 Docker 容器作为我们的工具服务。

import { Client } from "@modelcontextprotocol/sdk/client/index.js"; import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js"; // ... 环境变量检查代码 ... const pwd = process.cwd(); // 建立传输通道:通过 Docker 运行 wenyan-mcp 服务 const transport = new StdioClientTransport({ command: "docker", args: [ "run", "--rm", "-i", // 必须开启交互模式,以便通过 stdio 通信 "--env-file", ".env.test", // 传入公众号的 AppID 等凭证 "-e", `HOST_FILE_PATH=${pwd}`, "-v", `${pwd}:/mnt/host-downloads`, // 挂载目录,让容器能读取到文章 "caol64/wenyan-mcp", ], }); const client = new Client( { name: "wenyan-client", version: "1.0.0" }, { capabilities: {} } ); await client.connect(transport);

这段代码对应了上一篇提到的**“工具使用”**的前提——智能体得先能拿得起工具。

3. 获取工具列表

连接成功后,智能体需要知道自己有哪些工具可用。这对应了理论篇中的**“问题分类”**准备阶段,只有知道有哪些工具,模型才能决定用哪个。

// 获取 MCP 服务端提供的所有工具 const mcpResponse = await client.listTools(); // 将 MCP 的工具定义转换为 OpenAI 兼容的 Function Calling 格式 const openaiTools = mcpResponse.tools.map((tool) => ({ type: "function", function: { name: tool.name, description: tool.description, parameters: tool.inputSchema, // MCP 的 schema 通常直接兼容 }, }));

此时,openaiTools里就装满了诸如publish_article之类的方法描述。

4. 思考与决策

现在进入核心环节。我们将文章内容和需求告诉 LLM,让它自己判断该做什么。

const llmClient = new OpenAI({ apiKey: LLM_API_KEY, baseURL: LLM_BASE_URL }); const content = "./test/publish.md"; // 待发布的文章路径 // 用户的指令:既包含了目标(发布),也包含了参数(使用 phycat 主题) const userPrompt = { role: "user", content: `使用phycat主题将这篇文章发布到微信公众号:\n\n${content}` }; // 第一轮对话:询问 LLM const response = await llmClient.chat.completions.create({ model: LLM_MODEL, messages: [userPrompt], tools: openaiTools, // 把工具箱展示给它 tool_choice: "auto", // 让模型自己决定是否用工具 });

在这里,模型会分析userPrompt。它发现你的意图是“发布”,并且它看到了openaiTools里有一个能发布的工具,于是它不会直接回答“好的”,而是会返回一个tool_calls请求。

5. 执行工具与反馈

智能体捕获到模型的调用请求,真正的去执行操作,并将结果反馈给模型。这就是**“优化答案”**的前奏。

const assistantMessage = response.choices[0].message; if (assistantMessage.tool_calls) { for (const toolCall of assistantMessage.tool_calls) { const name = toolCall.function.name; const args = JSON.parse(toolCall.function.arguments); // 关键步骤:通过 MCP Client 真正的调用 Docker 里的服务 const result = await client.callTool({ name: name, arguments: args, }); // 获取工具执行结果(比如:发布成功的链接) const toolContent = result.content.map((item) => item.text).join("\n"); // 将结果拼接回对话历史 const finalMessages = [ userPrompt, assistantMessage, { role: "tool", tool_call_id: toolCall.id, content: toolContent, }, ]; // 第二轮对话:让 LLM 根据工具执行结果给用户一个最终回复 const finalResponse = await llmClient.chat.completions.create({ model: LLM_MODEL, messages: finalMessages, }); console.log(finalResponse.choices[0].message.content); } }

发生了什么?

让我们回顾一下整个流程:

  1. User: "帮我把publish.md发到公众号。"
  2. LLM: (思考:我不能直接操作微信,但我有一个叫publish_article的工具。我需要提取参数:文件路径和主题。) ->发出指令
  3. Agent (JS代码): 收到指令,通过 MCP 协议告诉 Docker 容器里的服务:“嘿,运行一下这个函数”。
  4. MCP Server: 执行实际的 API 调用,转换 Markdown,上传素材,保存到草稿箱,返回结果:“发布成功,文章链接是 xxx”。
  5. LLM: 收到结果,组织语言。 ->最终回复: "您的文章已成功发布,使用了 phycat 主题,链接如下:xxx。"

总结

通过引入 MCP,我们把“智能体”的代码写得非常通用。

注意到了吗?上面这段代码里,没有任何一行是关于微信 API 的具体实现的。如果不加载wenyan-mcp,而是换成一个filesystem-mcp,这段代码逻辑几乎不用变,智能体就能拥有操作文件的能力。

这就是现代智能体架构的魅力:大模型负责逻辑,MCP 负责能力,智能体程序负责连接。

学习资源推荐

如果你想更深入地学习大模型,以下是一些非常有价值的学习资源,这些资源将帮助你从不同角度学习大模型,提升你的实践能力。

一、全套AGI大模型学习路线

AI大模型时代的学习之旅:从基础到前沿,掌握人工智能的核心技能!​

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

二、640套AI大模型报告合集

这套包含640份报告的合集,涵盖了AI大模型的理论研究、技术实现、行业应用等多个方面。无论您是科研人员、工程师,还是对AI大模型感兴趣的爱好者,这套报告合集都将为您提供宝贵的信息和启示

​因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

三、AI大模型经典PDF籍

随着人工智能技术的飞速发展,AI大模型已经成为了当今科技领域的一大热点。这些大型预训练模型,如GPT-3、BERT、XLNet等,以其强大的语言理解和生成能力,正在改变我们对人工智能的认识。 那以下这些PDF籍就是非常不错的学习资源。

因篇幅有限,仅展示部分资料,需要点击文章最下方名片即可前往获取

四、AI大模型商业化落地方案

作为普通人,入局大模型时代需要持续学习和实践,不断提高自己的技能和认知水平,同时也需要有责任感和伦理意识,为人工智能的健康发展贡献力量。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1168176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

在家也能批量做爆款短视频!MoneyPrinterTurbo+cpolar让你告别手动剪辑!

MoneyPrinterTurbo 是一款面向内容创作者的 AI 短视频自动化生成工具,核心功能覆盖从主题输入到成品输出的全流程 —— 依托通义千问、DeepSeek 等大模型自动撰写脚本,从 Pexels 抓取无版权高清素材,搭配多音色 TTS 配音和智能字幕生成&#…

AI Agent 深度解析:原理、架构与未来应用浪潮

1.什么是 AI Agent大语言模型(LLM)最基础且广为人知的应用形式是作为聊天机器人(ChatBot),以问答模式与用户交互。典型代表如 ChatGPT、DeepSeek、通义千问等,均采用“一问一答”的方式响应用户请求。例如&…

三分钟说清楚 ReAct Agent 的技术实现

ReAct Agent 技术实现主要依赖于精心设计的 Prompt 模板、输出解析器和执行循环三大核心机制。1. 核心 Prompt 工程LangChain 使用特定的 Prompt 模板引导 LLM 按 Thought → Action → Observation 格式输出:# 简化的 Prompt 结构 template """ 用…

新一代AI直播场控系统,实现全平台高效管理,带完整的搭建部署教程

温馨提示:文末有资源获取方式面对多平台并存的直播生态,主播们常常疲于在不同软件间切换,难以形成统一的互动风格与运营策略。我们专为应对这一挑战,设计出全新一代AI自动场控机器人源码系统。本系统的核心理念在于“聚合”与“统…

什么是AI 智能体(Agent)

在当今的 AI 浪潮中,我们经常听到“Agent(智能体)”这个词。但实际上,一个能够自主解决问题的 AI Agent 到底是如何工作的?它不仅仅是一个聊天机器人,更是一个拥有“手脚”和“神经系统”的复杂架构。什么是…

[MindSpore进阶] 摆脱 Model.train:详解函数式自动微分与自定义训练循环

在 MindSpore 的日常开发中,很多初学者习惯使用 Model.train接口进行模型训练。这在运行标准模型时非常方便,但在科研探索或需要复杂的梯度控制(如对抗生成网络 GAN、强化学习或自定义梯度裁剪)时,高层 API 就显得不够…

[MindSpore进阶] 玩转昇腾算力:从自定义训练步到 @jit 图模式加速实战

摘要: 在昇腾(Ascend)NPU上进行模型训练时,我们往往不满足于高层封装的 Model.train接口。为了实现更复杂的梯度控制、梯度累积或混合精度策略,自定义训练循环是必经之路。本文将以 MindSpore 2.x 的函数式编程范式为基…

学长亲荐9个AI论文写作软件,本科生毕业论文必备!

学长亲荐9个AI论文写作软件,本科生毕业论文必备! 1.「千笔」—— 一站式学术支持“专家”,从初稿到降重一步到位(推荐指数:★★★★★)在论文写作过程中,许多同学都面临一个难题:如何…

从 “文献堆” 到 “综述稿”:paperxie 如何让学术写作的第一步就躺赢?paperxie 文献综述

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/aippt https://www.paperxie.cn/ai/journalsReviewedhttps://www.paperxie.cn/ai/journalsReviewedhttps://www.paperxie.cn/ai/journalsReviewed 当你坐在电脑前,盯着 “文献综述” 四个字发呆…

解锁论文写作高效秘籍:Paperxie助力文献综述轻松搞定paperxie文献综述

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/aippt https://www.paperxie.cn/ai/journalsReviewedhttps://www.paperxie.cn/ai/journalsReviewedhttps://www.paperxie.cn/ai/journalsReviewed 在学术的浩瀚海洋中,撰写论文是每一位学者和学…

基于.NET和C#构建光伏IoT物模型方案

一、目前国内接入最常见、最有代表性的 4 类光伏设备二、华为 SUN2000 逆变器通讯报文示例 这是一个标准 Modbus TCP 请求报文: 00 01 00 00 00 06 01 03 75 30 00 06 含义: Modbus TCP 报文由两部分组成: MBAP Header(7字节&…

Labview解析CAN报文与发送CAN基于DBC文件及dll说明文档的功能演示 (适用于20...

Labview 用DBC文件解析CAN报文以及DBC格式发送CAN,调用的dll有说明文档。 2013,2016,2019版本。 参考程序后续可以自己改动。LabVIEW作为一款功能强大的图形化编程工具,在汽车电子领域有着广泛的应用,尤其是在CAN总线通…

React Native for OpenHarmony 实战:Sound 音频播放详解

React Native for OpenHarmony 实战:Sound 音频播放详解 摘要 本文深入探讨React Native在OpenHarmony平台上的音频播放实现方案。通过对比主流音频库react-native-sound和expo-av的适配表现,结合OpenHarmony音频子系统的特性,提供完整的音…

智能直播新时代,AI场控系统全面解析,打造高效互动直播间

温馨提示:文末有资源获取方式在当今数字化直播浪潮中,主播们面临观众互动、内容管理和粉丝维护的多重挑战。为此,我们推出一款创新的AI自动场控机器人源码系统,旨在通过先进技术整合,构建一个智能化、自动化的直播环境…

全能直播互动源码系统,以直播间为平台,整合弹幕、点歌、答谢等多项功能

温馨提示:文末有资源获取方式在直播行业竞争日益激烈的今天,主播如何维系粉丝关系、提升社区活跃度成为关键。我们开发的AI自动场控机器人源码系统,正是针对这一需求而生。该系统以直播间为平台,整合弹幕、点歌、答谢等多项功能&a…

可编程直播神器,自定义AI场控系统,创造专属直播风格

温馨提示:文末有资源获取方式在直播内容多样化的时代,主播渴望通过个性化互动脱颖而出。我们推出的AI自动场控机器人源码系统,正是为满足这一创新需求而设计。该系统以AI大模型和智能控制技术为支撑,整合弹幕、点歌、回复等模块&a…

解锁论文写作高效秘籍:Paperxie引领文献综述革新之旅paperxie文献综述

paperxie-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/aippt https://www.paperxie.cn/ai/journalsReviewedhttps://www.paperxie.cn/ai/journalsReviewedhttps://www.paperxie.cn/ai/journalsReviewed​ 在学术的浩瀚海洋中,论文写作是每一位学者、…

React Native for OpenHarmony 实战:Vibration 震动反馈详解

React Native for OpenHarmony 实战:Vibration 震动反馈详解 摘要:本文深入探讨 React Native 的 Vibration 模块在 OpenHarmony 平台的实战应用。通过剖析震动反馈的技术原理、跨平台适配要点及性能优化策略,结合 6 个完整可运行的代码示例&…

Python Web 开发进阶实战:混沌工程初探 —— 主动注入故障,构建高韧性系统

第一章:为什么需要混沌工程?1.1 传统测试的盲区测试类型覆盖场景无法发现的问题单元测试函数逻辑依赖服务宕机集成测试模块交互网络分区、延迟E2E 测试用户路径第三方 API 超时现实世界充满不确定性:云服务商区域故障(AWS us-east…

‌AI驱动边界值测试:模拟用户行为自动生成用例,揭示3个隐藏Bug的实战全解析

AI赋能边界值测试的三大突破‌ ‌效率跃升‌:AI将边界值测试用例生成时间从数天压缩至分钟级,覆盖维度提升300%以上。‌缺陷捕获‌:通过模拟真实用户行为路径,AI成功发现传统方法遗漏的‌三类隐藏Bug‌:‌业务逻辑边界…