01|开箱即用:MCP是LLM开发范式的增强

你好,我是黄佳。

这节课,我们将用一个通过MCP协议调用外部工具的实战,来理解MCP协议的强大之处。

在正式开始MCP实战之前,我们不妨先来回顾一下这两三年来,也就是MCP出现之前,我们是如何使用大模型的。

从提示工程到RAG

大模型可以开箱即用,也就是我们人类通过提示工程和它直接对话,让它帮我们解决问题。随着大模型的能力越来越强大,尤其是推理模型的出现,它的回答越来越靠谱了。

然而,大模型并非全知全能。预训练的数据虽然也在更新,但仍然有截止时间;而当我希望它分析属于我个人的图书销售数据时,它当然并不知道我、或者你的企业内部拥有哪些数据,此时就是RAG(Retrival-Augmented Generation),检索增强生成上场的时刻。

RAG这种LLM应用开发范式背后的基本思想,就是通过将大型语言模型(LLM)与外部数据源相结合来提高其准确性和相关性。先通过向量之间的相似度,用检索系统从外部数据源搜索数据,以识别与用户查询相关的信息。LLM 随后利用检索到的信息生成更精确、更及时的响应。

  1. 检索:首先通过向量数据库或其他检索系统,找出与用户查询相关的信息;

  2. 增强:将检索到的信息作为上下文提供给大模型;

  3. 生成:大模型基于这些额外信息生成回答。

RAG是大模型时代应用开发的一个伟大创新,大大提高了大模型回答的准确性和相关性,特别是在处理专业领域或企业特定信息时。

举例来说,我们需要编写 SQL 查询来检索过去 10 天内最畅销的产品。由于 LLM 不知道表模式或列名,因此直接询问 LLM 可能会导致无法使用的 SQL 查询。为了改进这一点,可以通过RAG 来获取模式和列,以便 LLM 可以更准确地生成查询。

从RAG到Agent和工具调用

RAG解决的是让LLM使用内部知识,同时减少幻觉的问题,但是它并没有增强大模型的行动能力。也就是说,大模型再怎么厉害,还是只能回答我们的问题,帮我们出主意、给建议,提方案。它仍有局限性,尤其是当我们需要大模型执行复杂的多步骤任务,或与多个外部系统交互时。它也许可以帮我们画一张漂亮的图片,但是还不能帮我们生成PPT,回复邮件,更别说让它去上网查机票、订酒店了。

于是Agent模式应运而生。Agent本质上是赋予了大模型使用工具并采取行动的开发范式。它的工作流程包括:

  1. 规划:大模型理解用户需求,规划解决方案。

  2. 工具选择:决定使用哪些工具来完成任务。

  3. 工具调用:调用选定的工具并处理返回结果。

  4. 反思与调整:评估进展,必要时调整计划。

  5. 输出结果:向用户呈现最终结果。

工具调用的能力让大模型不再仅限于生成文本,而是可以执行实际操作,例如查询数据库、调用API、创建可视化图表、发送邮件,检索和处理文档等等一系列任务。这大大扩展了AI应用的范围和价值。以OpenAI的Function Calling和Anthropic的Tool Use为例,它们都允许开发者为模型定义可调用的工具,模型可以自主决定何时使用这些工具。

大模型应用开发的两个范式

以上所说的RAG和Agent,就是大模型应用开发的目前最常用,也最通用的两个范式。

我曾经在《大模型应用开发:RAG实战课》的序言中,这样总结过它们:

图片

然而,要让你的大模型拥有各种工具调用能力,绝非易事。即使是使用LangChain这样的开发框架,要想为LLM配置一个工具,也要在程序中手动向大模型注册工具的名称及各种参数。在我们的LangChain实战课“工具调用”一课中,为了让我的LLM自动接收或发送一个邮件,我可是费尽千辛万苦,足足花了两天才完成了这么简单的一个设置。

而有了MCP协议,无论是RAG,还是Agent+Tool Calls(或称Function Calling),这两个大模型应用开发的关键范式,都将得益于MCP提供的工具发现和主动调用能力。

MCP增强了RAG和Agent

现在你已经知道,MCP(模型上下文协议)是一个开放标准,用于将 AI 连接到数据库和工具,就​​像专为 LLM 构建的 API 层一样。你可以将MCP想象成AI应用程序的“USB-C接口”。正如USB-C为你的设备提供了连接各种外设的标准方式,MCP为AI模型提供了连接不同数据源和工具的标准方式。

图片

所有的工具或者服务提供商(如Github、Milvus、PostgreSQL、Snowflake 或 Spark)都会按照MCP协议制定的标准定义一个共享接口,那就无需每个开发团队都分别与他们构建一次性集成,而MCP客户端中的LLM可以无缝地接入该接口。

对于RAG来说,MCP通过定义统一的SessionMessage协议和工具发现机制,使RAG能够无缝接入多源数据检索,只需一次集成即可动态检索并注入上下文,大幅提高了检索增强生成的准确性和可维护性。

同时,MCP为Agent提供了标准化的工具调用接口和结果回传格式,让大模型可以自主选择、分步调度各类工具执行复杂任务,无需手动注册或编码集成。这将显著提升Agent应用的开发效率和扩展能力。

MCP实战:Cursor(或Copilot)+ DuckDB

下面,我们正式开始一次通过MCP进行工具调用的实战。这个实战案例中,我要在我的代码编辑器中用一个叫做DuckDB的数据分析工具来帮我自动分析我的图书销售情况。

好,在这个实战任务中,有下面几个相关参与方。

  • 代码编辑环境。其实这个环境不是简单的环境,它本身必须就是一个支持MCP协议的 MCP Client。我用的是Cursor,你当然也可以替换成Github Copilot、VS Code、Cline、Winsurf等,它们全都支持MCP,全都是MCP Client。Cursor是在开源的VS Code上开发出来的一个分支应用,非常好用,能够自动生成代码,对MCP的支持也非常好。你可以去官网下载,并免费试用。

  • LLM 大模型:这个相关方隐藏在代码编辑器也就是MCP Client内部,当我和Cursor互动对话的时候,其实我是在和Cursor后台所调用的LLM对话,比如GPT-4o或者DeepSeek R1或者Claude模型。

  • DuckDB:这是一个支持MCP协议的 MCP Server。我们选择DuckDB,只是因为其简单好用,便于展示。你完全可以用同样的步骤在你的MCP Client中配置任意多个其他的MCP Server,比如“彩云天气服务”“Google邮箱服务”等等。配置好了Server之后,其中的一系列工具或资源会展现在你的MCP Client中。

  • MCP:这就是Cursor和DuckDB以及所有的MCP Client和MCP Server所共同认可的一套通信标准。

有无数多的MCP服务可以开箱就用,例如下图所示,就是Cursor官网上所展示的部分MCP服务。而MCP的官方 GitHub 上,也有一系列的服务供应商列表。此外,你也可以去各种IT服务提供者的网站上看看,很可能也有惊喜(比如高德地图很早就提供了MCP服务)。

图片

以上各种 MCP 服务覆盖从源数据提取、知识检索到云原生管理、支付与监控等方方面面,可根据业务需求在对话中灵活组合使用。

好,在MCP官方服务列表中,你就可以看到我们即将使用的数据分析工具DuckDB,也叫MotherDuck,妈妈鸭(DuckDB的在线版本)。

图片

如果你也像我一样,对MotherDuck(详情)完全不了解。那么正合适,MCP简单到什么程度呢?你在完全不懂的情况下,也可以快速展开对该服务的使用。 所有细节都封装在MCP协议内部,我们只要知道它大概可以做数据分析就可以开始用了。

通过前面的链接中点击MotherDuck,进入MotherDuck的GitHub,你会找到它的MCP配置说明。

图片

我们所要做的,就是打开Cursor的Chat Setting,选择MCP,然后再选择Add new global MCP server。

图片

然后,把下面这段配置给复制并粘贴到你的mcp.json文件中。

{
  "mcpServers": {
    "mcp-server-motherduck": {
      "command": "uvx",
      "args": [
        "mcp-server-motherduck",
        "--db-path",
        "md:",
        "--motherduck-token",
        "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJlbWFpbCI6InRvaHVhbmdqaWFAZ21haWwuY29tIiwic2Vzc2lvbiI6InRvaHVhbmdqaWEuZ21haWwuY29tIiwicGF0IjoiLUFvRmlRcE9xREZNb05sVFdwZzJha28yMDNnc0tkM3VyMXhBeHRKS3phZyIsInVzZXJJZCI6ImU0ZmUwZTYxLTgxMDEtNDdlZC05OGNhLTJmNGQ2MjZkYTUxYyIsImlzcyI6Im1kX3BhdCIsInJlYWRPbmx5IjpmYWxzZSwidG9rZW5UeXBlIjoicmVhZF93cml0ZSIsImlhdCI6MTc0Nzc0MTUxOX0.kmAvQ2AllpYo9UdotsqaysLHfe_yU51EeOpXYd85bkc"
      ]
    }
  }
}

代码中“–motherduck-token”下面的一串文字是我的motherduck API key,方便的话请你去它的官网申请一个。因为我常常知道国内的朋友访问外网有可能不便,如果实在不行你就用我的Key完成这个Demo吧。但是这是下下之策,因为如果大家都用的话,我的key有可能会超出限额。

图片

配好了之后,回到MCP Servers的页面,我们看到mcp-server-motherduck旁边的按钮就变绿了,而且他的Tools也展现了出来,目前只有一个,就是“query”(可以查询CSV文件或数据表)。如果没有变绿,你可以选择开关,关闭在打开,或者Refresh一下。选择旁边的铅笔就能重新配置。

图片

看到MCP工具已经变成绿色,我就迫不及待地希望利用Cursor这个MCP Client来调用Mother Duck的工具服务了!我在Cursor的对话界面中输入下面的话:

请调用mother duck工具帮我做数据分析

图片

Cursor回答我说当然可以,但是你需要提交一个数据表。

哈哈,那好的,我把我的一个数据文件(我的过去三年的图书销量)放在项目目录中,让它给我分析一下。

图片

果然,MCP Client 成功的调用了MCP工具!不过,它告诉我,MotherDuck只能访问云端的文件。

图片

不要紧,我这把我的数据表上传到云端。

图片

图片

图片

图片

在MotherDuck网页版进行了几个简单操作,就把我的数据文件上载到了云端数据库。

现在,我应该可以成功的在MCP Client,也就是Cursor的对话界面中调用MotherDuck的query工具了吧!

图片

果然,这次工具开始运作了。由于需要进行额外的数据转换,初次尝试失败了。我惊讶地发现,它能主动将错误信息反馈给大模型,并持续尝试了好几次,直到问题得到解决。

最后它生成的成功查询如下:


{
  "query": "SELECT CAST(STRFTIME('%Y', 日期) AS INTEGER) AS 年份, SUM(\"零基础学机器学习\") AS 零基础学机器学习销量, SUM(\"数据分析咖哥十话\") AS 数据分析咖哥十话销量, SUM(\"GPT图解\") AS GPT图解销量 FROM Sales_data GROUP BY 年份 ORDER BY 年份;"
}

可以看出,经过多次尝试之后,这个数据分析Agent对我的CSV文件已经有了全面的掌控和了解,它知道了数据表中的每一个字段和涵义。而我,一个MotherDuck纯小白,在MCP协议的帮助之下,和大模型一起,用几分钟的时间掌握并成功运行了这个服务中的query工具。

总结一下

我们已经看到,MCP + LLM 释放了工具集成的潜力,并简化了代码开发周期。对于程序员而言,AI正成为我们必备技能,而不再只是锦上添花。从小事做起,构建一个人工智能驱动的工具,你会发现,你能够省去很多时间精力。

AI 不仅能在 DuckDB 中自动完成数据转换,更可以通过 MCP 协议无缝对接各种数据库、云服务、大数据等平台,大幅减轻工程师在管道搭建与维护上的负担。借助 MCP 统一的服务发现与调用标准,AI 从“可有可无”蜕变为工作流程中不可或缺的核心引擎,让你能够快速构建各类智能化工具,把想法高效转化为实际产品。

思考题

1.请你在你的编辑环境中选择另一种MCP服务和工具,并尝试使用它完成一个任务。

2.在你当前的项目或团队中,哪些场景最适合引入 MCP 协议来替代手写集成?

3.MCP 与传统的 Function Calling 或 SDK 接入相比,你认为它的最大优势与潜在挑战各是什么?

欢迎你在留言区和我交流互动。如果这节课对你有启发,也欢迎分享给身边更多朋友,让我们一起分享AI提效的高光时刻。

精选留言

  • 悟空聊架构

    2025-06-10 13:57:16

    文中好像有个笔误?
    原文:LLM 大模型:这个相关方隐藏在代码编辑器也就是 MCP Client 内部。
    这里应该是 MCP Host 才对吧?
    作者回复

    悟空兄弟,你太棒了。首先你提出了一个很好的,我在文章中需要加强说明的概念,即 —— 到底什么是MCP Client,什么是MCP Host。

    首先,MCP Host 不是 MCP Server ,而是处在客户端。
    其次,Host 和 Client 的术语可能被混用,因为Host 通常包含 Client 功能。例如,Claude Desktop 既是 Host(提供用户界面),也通过内置的 Client 与 MCP Server 交互。这种紧密耦合可能导致术语的模糊,但严格来说:Host 是应用程序整体,Client 是其内部的通信组件。

    MCP Host 是指运行用户交互界面的应用程序,通常是直接与用户交互的AI工具或平台,例如Claude Desktop、Cursor IDE或其他AI增强的应用。Host 是整个系统的“前端”,负责协调用户请求、调用语言模型(LLM)以及管理与MCP服务器的交互。通常包含一个或多个 MCP Client 来处理与特定 MCP Server 的通信。

    MCP Client 是嵌入在 MCP Host 中的组件,负责与特定的 MCP Server 建立和维护一对一的连接。主要作用是处理 Host 与 Server 之间的通信,发送请求、接收响应,并将结果传递回 Host 以供语言模型或用户使用。每个 MCP Client 专为一个特定的 MCP Server 工作,充当 Host 和 Server 之间的“中间人”。

    相对于文中应该怎么说,厘清上述两个概念对我们来说更重要。

    更好的说法是:“LLM 大模型:这个相关方通常部署在 MCP Host 或由 MCP Client 调用,例如通过 API 对接 GPT-4o、Claude、DeepSeek 等模型。”

    我决定保持原文,不修改原文的说法。这样,大家在看到原文时,其实应该可以明白我的意思,同时也能通过我们的讨论,清晰的认识到Client和Host在MCP语境中的微妙差别。我的意思,其实也就是LLM的调用,我们不用管,Cursor全权负责去调度。

    2025-06-10 23:03:56

  • 笃定

    2025-06-30 09:58:41

    Hello 老师,关于文章中的以下内容,我有些疑问:

    文章疑问点:
    """
    由于需要进行额外的数据转换,初次尝试失败了。我惊讶地发现,它能主动将错误信息反馈给大模型,并持续尝试了好几次,直到问题得到解决。
    """

    首先我个人理解 MCP 三方:

    MCP Host 通常是直接与用户交互的 AI 工具或平台,需要支持 MCP 协议 例如 Claude Desktop、Cursor IDE。

    MCP Client 是嵌入在 MCP Host 中的组件,负责与特定的 MCP Server 建立和维护一对一的连接。主要做工具发现、工具调用、资源发现、Prompt 模板等功能。

    MCP Server 提供工具的封装和具体工具的描述、提供资源或 Prompt 模板,响应和处理 Client 的调用。

    问题:
    我个人也测试过用 MySQL、PG 的 MCP Server 去查询数据,同样也需要了和老师上述一样的问题,就是大模型第一次调用 MCP Server 时会失败的场景,原因肯定是大模型不熟悉咱们的库表 schema 嘛,上来就使用自己认为的 SQL 去查询数据,那么肯定会失败;当 MCP Server 返回错误信息之后,MCP Client 也将错误信息返回给大模型,大模型输出错误;但是这时,疑惑点来了,这个时候第一次调用已经失败了,那么是谁触发的第二次调用大模型的操作呢?谁意识到此次没有解决用户的问题呢(大模型肯定知道工具返回错误了,但是它不能自己再去发起重新调用,就类似于 Function Call 失败了,返回个 Message 一样)。那么是 MCP Client 去做的吗?我个人感觉应该是,因为它是大模型和 MCP Server 之间的中间人桥梁,因为第一次调用已经失败了,它需要把 MCP Server 返回的错误的调用结果,以及工具信息再次发送给大模型,让它重新思考,大模型根据这些上下本、以及之前的短期记忆,大模型再次思考并给出正确的 SQL 语句,再次去查询,直到查询正确。(这里其实我观察到的现象是,大模型会先去执行查询库表 schema 的 SQL,虽然调用成功了,但是仍然没有解决用户问题,还需要具体的再次执行查询 table 的操作,感觉这里应该仍然也是 MCP Client 触发的,MCP Client 有点 Agent 的味道哈哈)

    不知道我的疑问是否有些奇怪,或者还没有理解 MCP 组件的核心本质而想的太多了哈哈。希望能得到老师的解答。
    作者回复

    非常高兴看到你已经深入实践 MCP,并且对其底层交互流程产生了思考!你的问题不仅不奇怪,反而非常关键——你已经触及了“失败恢复机制”以及“主动交互重试”在 MCP 架构中的责任边界问题。我觉得值得单独写一篇文章来探讨这个问题。
    先简单说说我的核心想法,供大家探讨:

    “工具调用失败后,是谁驱动大模型重新尝试调用的?是 MCP Client 吗?它是怎么做到的?” ------ 是大模型自己来判断什么时候结束。

    而且你的看法很正确。可以说,像Cursor这样的MCP Client,本身就是一个Agent。但是Agent的内核,仍然是LLM。

    用户发出指令:“请查询2023年销售额”。
    LLM 生成了工具调用请求。
    MCP Client 将该调用转发给 MCP Server。
    MCP Server 执行失败(表名不存在、字段错误等),返回错误信息。
    MCP Client 把工具返回的错误结构化包装后,作为一条普通消息内容交给大模型。

    MCP 并不会直接说“出错了,你再试试”,它只是把错误响应以 自然语言或 JSON 的方式交给 LLM,然后就“松手”了。

    这时 大模型本身在新的上下文中,能“看到”如下内容:
    用户原始问题
    自己生成的 SQL 工具调用指令
    工具返回的错误信息(字段不存在、表不存在)
    当前会话历史
    于是,它自主判断出“上次调用失败了”,进而:自己再次主动发起工具调用。
    所以真正“发起重试”的不是 MCP Client,而是大模型自己!

    你说 MCP Client 有点像 Agent,很对,但它的 “Agent味” 是有限度的。它不会做“推理”。它不会主动“决定”是否重试。它只是一个“驱动管道 + 工具注册中枢”。但它有两个关键职责:转发所有结果(无论成功失败)到模型端,供模型参考上下文。保持一次对话流顺畅,维护 LLM - Server - Host 三者之间的一致性状态。

    为什么 LLM 能“多次尝试”?前提条件是 Client会有一个轮询机制:MCP 的工具调用结果是“可引用”的上下文;LLM “记得住”它上次失败了;LLM有足够的智能进行ReAct反思。

    Client 在反复调工具吗?表面上是这样的,实际上:MCP Client 不会做决策,它只是负责“把反馈送回去、等待新一轮调用”的传递者;是 大模型自己通过上下文反思机制完成重试,并自己决定什么时候停止。

    2025-07-02 23:42:19

  • Geek_fb0c7a

    2025-06-10 10:06:00

    MCP 与传统的 Function Calling 或 SDK 接入相比:如果工具比较简单,且和agent都是内系统,其实function call更简单,如果这个工具希望多个agent复用,且对外提供服务,就提供mcp服务
    作者回复

    兄弟,我只能说你总结的好到位。不管黑猫白猫,简单好用就是好猫。MCP,Function Calling, API Call,简单有效的完成当前任务就是好猫。MCP是大公司为大模型提供服务的一个标准化封装。

    2025-06-10 21:08:51

  • coderlee

    2025-06-22 17:28:06

    1. 关于cursor,新版本的一些问题,如果用的是版本1.1.3,那么mcp配置是在cursor setting->Tools& integrations->MCP Tools->New MCP Server;这里,还推荐一个工具,叫做cherry studio,个人觉得用它来做一些简单的与MCP交互的demo还是挺方便的;
    2. 关于MotherDuck,如果是国内环境,然后又是在wsl2上运行,科学上网可能还是下载不了插件,这个时候可以选择手动下载依赖到/root/.duckdb/extensions/v1.3.0/linux_amd64路径下,需要下载motherduck.duckdb_extension、motherduck.v1.3.0-2025-06-121.duckdb_extension 这两个文件,下载链接分别是: http://extensions.duckdb.org/v1.3.0/linux_amd64/motherduck.duckdb_extension.gz,http://ext.motherduck.com/v1.3.0/linux_amd64/motherduck.v1.3.0-2025-06-121.duckdb_extension.gz;
    3. cursor上试了试motherDuck,同时,也在vscode上了,试了下motherDuck、fetch、mcp-caiyun-weather,确实调用通用服务特别方便。
    4. 同理,在项目上,还是需要考虑网络环境,如果是可以部署在互联网的项目,那么通过MCP方式来调用一些已经开源的或者已经部署好的通用服务,那么将是一个非常便捷的事情;
    5.MCP 与传统的 Function Calling 或 SDK 接入相比,你认为它的最大优势与潜在挑战各是什么?
    1)如果仅是调用,那么不用关心API的参数、调用方式,MCP提供了极大的便利性,能够快速集成到Agent的工具中
    2)如果即是调用者,也是服务提供者,那么如何快速开发和维护好MCP、设计良好的开发规范等,应该是一个需要去考虑的问题
    作者回复

    谢谢兄弟的详细记录和推荐。
    1. 的确,cherry studio网上也有很多人用它来做MCP Client。
    2. 谢谢给出手动下载依赖
    5. 这就是为什么Java,Typescript和其它技术栈的同学在MCP时代变得有事可做的原因😅😂🤣

    2025-06-23 11:17:31

  • 虎虎❤️

    2025-06-09 01:27:39

    2、我认为一些通用的能力可能会适合MCP协议,例如针对用户的问题的路由器,用户问题按照思维导图的模式扩写等。
    3、MCP协议对接成本低,降低重复开发。但SDK和function可能在具体场景的适配上会更有针对性,接口对接复杂但表达能力更强,最终可能有更好的效果。
    作者回复

    对的,简而言之,MCP有点像是给Agent和LLM提供的SaaS服务。

    2025-06-09 09:31:31

  • see

    2025-08-14 21:37:41

    cursor国内不能用了, 怎么搞?
    作者回复

    真的吗?可以科学科学或者换国内的IDE(如Trae), 以下是大模型的建议。
    实用解决方案
    A. 代理 + HTTP 协议降级(推荐)
    这是目前国内用户最常用的方式:
    使用稳定代理服务(例如 XXXXXXX等)。
    在 Cursor 的设置中:
    打开 Settings → Network(网络);
    将 HTTP 协议版本由 HTTP/2 降级为 HTTP/1.1 或 HTTP/1.0(部分教程推荐);
    重启 Cursor,通常即可恢复模型可用性
    B. 软路由透明代理(适合技术用户)
    如果你有软路由(如 OpenWrt)环境,可通过插件(Passwall、SSR‑Plus 等)设置针对 Cursor 的分流规则,让其走代理出口,而其他流量不受影响,配置一次长期可用,且更稳定 。

    2025-08-15 16:14:28

  • 杨陆伟

    2025-07-24 10:54:26

    公司内部的数据怎么办?有什么解决方案?
    作者回复

    公司内部数据就RAG啊,可以看看我的https://github.com/huangjia2019/rag-in-action

    2025-07-30 18:31:24

  • @҈҉҈҉҈҉҈҉҈҉҈҉AI

    2025-07-09 16:47:07

    MCP 对比传统 Function Calling/SDK 的优劣
    优势
    标准化协议:统一 JSON-RPC 2.0 格式,适配多工具或数据源,降低集成成本
    动态上下文管理:多轮交互中整合工具输出,增强推理连贯性
    开放跨模型兼容:不绑定特定 LLM 或厂商,支持生态互通
    挑战
    标准化与定制化冲突:复杂工具需额外适配,难以覆盖所有场景特殊需求
    上下文一致性风险:多轮工具调用可能导致信息丢失或冗余
    安全权限复杂度:跨平台调用需额外解决认证、数据加密等安全问题
    生态适配成本:当前垂直领域工具支持有限,自研系统封装需投入资源
    作者回复

    总结的挺好。而且我也纳闷,当我给一个Host,配置无数个MCP服务(几百个工具)时会发生什么。毕竟一个电脑也就只有几个USB接口,太多了也不行。

    2025-07-18 23:51:39

  • beatdrug

    2025-07-08 22:59:39

    老师,你好,我自己去motherduck 申请了一个motherduck-token,但是连不上,用你文中的确可以,是因为我的motherduck是试用版的问题吗?
    作者回复

    谢谢评论区乌鸦同学的说明!

    2025-07-17 21:10:32

  • Geek_953a7b

    2025-07-07 13:59:28

    运行不了, anaconda3/Scripts/mcp.exe 直接被公司的windows security 封杀了. MCP协议安全风险很大吗?
    作者回复

    有安全风险,回头我们开一篇文章专门来探讨这个主题。

    2025-07-08 00:41:21

  • klee

    2025-07-06 20:09:55

    实测cursor版本1.2.1,mother duck mcp server 配置:{
    "mcpServers": {
    "mcp-server-motherduck": {
    "command": "uvx",
    "args": [
    "mcp-server-motherduck",
    "--db-path",
    "md:",
    "--motherduck-token",
    "<YOUR_MOTHERDUCK_TOKEN_HERE>"
    ]
    }
    }
    } 。win11环境。先用 uv --version , uvx --version 命令验证当前环境是否有 uv 。如果没有,需要进行安装,powershell -c "irm https://astral.sh/uv/install.ps1 | iex" , 设置环境变量 $env:Path = "C:\Users\${user}\.local\bin;$env:Path" 。重启 cursor。切换mother duck mcp 按钮,就可以加载出tool了。
    作者回复

    感谢!

    2025-07-07 12:40:32

  • 🌀Pick Monster 🌀

    2025-06-22 00:46:18

    新版的Cursor中MCP成了Tools & Integrations,增加了motherduck后,提示0 tools enabled。检查UV安装了(直接通过powershell安装),这是什么原因?
    作者回复

    重启机器再试试?换成其它MCP服务试试?新版应该不会影响的。

    2025-06-23 12:20:59

  • eazonshaw

    2025-06-11 22:21:45

    各位如果配置了motherduck没有变绿的话,可以执行下pip install uv~
    作者回复

    哇塞,感谢同学分享实战Tips!!!!
    欢迎大家纷纷分享实战小技巧。

    2025-06-12 16:11:35

  • 0mfg

    2025-06-11 17:35:34

    黄老师您好,请问我们公司为自己的产品操作实现了mcp server的功能,通过cursor或者claude客户端添加本地python代码提供的server功能都测试完了,请问有哪些方法或者平台可以把这些python代码实现的mcp server发布到互联网,可以供我们的c端客户公开注册使用。谢谢
    作者回复

    开心看到来自最前沿、一线的MCP实践者的分享!!

    我看到几个可能的选项供您参考:
    1. 低代码部署方案:https://cloud.tencent.com/developer/mcp/server/10011 - 腾讯云的 EdgeOne Pages MCP
    2. 低代码部署方案:
    https://help.aliyun.com/zh/model-studio/mcp-quickstart - 阿里云百炼
    3. 如果您的 MCP Server 需要被 AI Agent(如 Claude、Cursor)发现和调用,可以注册到 Nacos 3.0 MCP Registry - 在这里 https://github.com/alibaba/nacos / 同时,可以考虑给MCP Server Repo官方开PR请求 - https://github.com/modelcontextprotocol/servers 这里。
    4. 要让 C 端用户自助注册和使用 MCP Server,可以借鉴参考 东方超算的“东方六合”MCP 服务平台,它提供 MCP 服务聚合,用户可自行选择 MCP 功能。
    5. 部署到云服务器 / 高可用性和弹性伸缩: Docker + Kubernetes(K8S)+ 云服务 (腾讯云、阿里云、AWS)

    您觉得呢?可否研究一下上述方案之后,我们继续探讨。非常期待您的回复和进一步的看法。

    2025-06-12 00:25:06

  • 一路前行

    2025-06-11 17:26:24

    还有一个问题老师,cursor免费版,只能默认用gpt模型么,deepseek不可以么
    作者回复

    cursor免费版默认包含DeepSeek呀,同学们说是不是这样。

    2025-06-11 18:19:37

  • 一路前行

    2025-06-11 17:21:06

    这章是不是少点内容1.如何cursor配置自定义外部大模型,2.老师测试数据的位置在git上面么,可否贴个下载链接
    作者回复

    好,谢谢同学的建议。其实我们的实战可以用Cursor本地模型来完成啊。自定义外部大模型,通常不如Cursor默认模型好用呢。
    测试数据:https://github.com/huangjia2019/mcp-in-action/tree/master/99-data-files

    2025-06-11 18:18:28

  • Geek_a79df6

    2025-06-11 12:58:05

    老师 我理解这个 MCP 是通用的服务调用协议, 那普通的服务是不是也可以调用, 作为统一的云服务接入的协议.
    作者回复

    我认为当然是可以的。MCP确实是一个通用的服务调用协议,它可以用来统一接入各种后端服务,理论上不仅限于AI/LLM场景,普通的API服务、微服务、云服务都可以通过MCP暴露出来,被客户端调用。

    那么问题又来了,MCP和普通的REST/gRPC又有何区别呢?答案是它作为一个通用的协议,同时强调了对LLM的“友好性”。

    MCP的每个工具都带有结构化的schema(参数类型、描述、输入输出说明),这让LLM可以自动解析、理解和调用工具。例如,MCP工具的参数和返回值都用JSON Schema描述,LLM可以直接用这些schema生成调用参数。

    MCP支持自动发现工具,LLM可以动态获取当前可用的所有工具和资源,无需硬编码。这非常适合LLM的“动态工具调用”能力。

    MCP的协议语义(如“工具”、“资源”、“提示”)本身就是为AI助手、智能体、RAG等场景设计的,和传统REST/gRPC等通用API协议相比,更贴合AI应用需求。

    以上。

    2025-06-11 16:11:09