吾生有涯 学海无涯
析模有界 知识无界

了解一波MCP及简单功能实现

这阵子MCP挺火的,闲来无聊尝试了一波,感觉挺有意思的。前阵子说利用AI大模型驱动Fluent似乎可以借助MCP实现。

MCP(Model Context Protocol)是Anthropic于2024年开源的标准协议,旨在统一AI模型与数据源的交互方式,提升数据访问的便捷性和可靠性,提供标准化的工具调用、资源管理和提示词功能。目前,MCP仍处于探索阶段,其行业影响力有待进一步验证。

早期的AI大模型依赖于训练,其根据用户输入的提示词给出模型的推理结果,其输出结果受限于模型的训练效果,经常会因为模型能力的不足而出现幻觉。后来人们发现可以借助于利用AI大模型调用函数来实现模型能力的补充,但这种情况经常会因为调用接口的不统一而导致兼容性很差,常常一个实现相同功能的函数为了迎合不同的模型而要重复编写。再后来就有了MCP,人们终于可以在同一个接口规范下去实现函数调用了。也就是说,有了MCP后,只要你的函数满足MCP协议,那么所有支持MCP的AI大模型都可以调用了。

MCP的运作主要包括三部分:

  • MCP Host:需要通过MCP获得数据的程序,例如Claude Desktop, IDEs或者一些AI工具等
  • MCP Client: MCP协议客户端,和MCP Server是一对一支持的。
  • MCP Server:需要通过MCP暴露一些特殊的能力的轻应用。根据MCP协议定义,Server可以提供三种类型的标准能力,Resources、Tools、Prompts,每个Server可同时提供者三种类型能力或其中一种。
    • Resources:资源,类似于文件数据读取,可以是文件资源或是API响应返回的内容。
    • Tools:工具,第三方服务、功能函数,通过此可控制LLM可调用哪些函数。
    • Prompts:提示词,为用户预先定义好的完成特定任务的模板

借用网上流行的一张图来说明MCP各组件之间的关系。

简单来说,就是我们编写各种实现特定功能的代码放在MCP Server中,然后大模型根据用户提示词需求决定调用Server中的哪一段代码来实现特定的功能。

下面举个简单的例子来说明。

比如说前些时候人们经常用“9.11和9.9比较谁更大?”这样的问题来考验AI大模型,虽然说现在的大模型基本都能回答,但是如果我们使用MCP,可以让小模型也能很好地回答此问题。

首先确保机器上安装了python。然后用下面的命令安装MCP组件:

pip install mcp
或者pip install mcp[cli]

安装完毕后执行下面的命令查看mcp是否安装成功:

mcp version

如果显示以下结果,则表示安装成功。

下面来创建一个mcp server。

  • 新建一个 test.py 文件,用于编写 MCP Server 的 python 程序代码。

以下是 test.py 文件内容,注意,备注内容非常重要,大模型通过函数名和备注来判断是否调用次函数。这里只是简单演示而随便编的一段代码,并没有考虑参数a和b相等的情况。

from mcp.server.fastmcp import FastMCP

mcp = FastMCP("compareNumber")

@mcp.tool()
def getNumber(a,b):
    """ 比较两个数的大小,返回较大的数
    参数:
        a : 第一个数
        b : 第二个数
    返回:
        a和b中的最大值
    """

    if a > b:
        return a
    else:
        return b
    
if __name__ == "__main__":
    mcp.run(transport='stdio')

代码编写完毕后将其放在d盘跟路径下,完整路径为d:test.py

下面我们到CherryStudio中测试MCP。

  • 在CherryStudio中点击设置按钮,然后进入 MCP服务器 栏目下,点击 编辑JSON 按钮打开编辑对话框
  • 输入以下信息
{
  "mcpServers": {
    "compareNumber": {
      "description""比较两个数的大小,返回较大的那个数",
      "isActive"true,
      "command""python",
      "args": [
        "d:\test.py"
      ]
    }
  }
}

如下图所示,点击 确定 按钮完成设置。

  • 设置完毕后如下图所示。

下面找个小模型试试。我们使用Qwen2.5:7B来尝试。

首先不开MCP,我们问问 9.11和9.9谁更大? ,如下图所示,7b的qwen并没有给出正确答案。

然后启用MCP,如下图所示,可以看到大模型启用了MCP中的getNumber函数,并给出了正确的结果。

image-20250329024205094

所以,我们可以将想要实现的功能通过MCP进行封装,然后大模型根据用户的提示词选择合适的功能函数进行调用。


(完)

本篇文章来源于微信公众号: CFD之道

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《了解一波MCP及简单功能实现》
文章链接:https://www.topcfd.cn/40843/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册