大模型的得力干将MCP(1) - 基础入门
大模型的得力干将MCP(1) - 基础入门
麦金叔的AI之旅上一节Dify应用实战课,我们学习了如何将数据表生成图,可以更直接的展示数据的意义。
今天我们将暂时将Dify的学习搁置一下。来学习AI工具中重要的一个知识:MCP(Model Context Protocol)。
等系列课学习完成,你将能了解什么是MCP,如何开发MCP和如何实际使用它(当然我们会回归到Dify中,配合LLM,更加完善我们的AI应用适用场景)。
**01.**基础概念
MCP(Model Context Protocol)是一种开放协议,它标准化了应用程序如何为LLM提供上下文。
将MCP想象成AI应用程序的USB-C端口。正如USB-C提供了一种将设备连接到各种外围设备和配件的标准化方式一样,MCP也提供了一种将AI模型连接到不同数据源和工具的标准化方式。
它是去年11月才被Claude公司提出来的,但是不到半年时间,基于MCP的生态就如雨后春笋般涌现。过去以API方式提供服务的传统互联网,迅速拥抱这一变化,大量的MCP服务被开发,开源和提供出来。
要想开发MCP应用,首先需要了解的是其架构和几个重要的概念。
简单的图示中,提到了主机,客户端和服务器。
1 主机
MCP主机(MCP Hosts):发起请求的LLM应用程序(例如Cursor、IDE或AI工具)。
其中核心的能力就是LLM有Function Calling的能力,但是为了解决现有Function Calling的使用过程中,需要与LLM节点绑定的问题,便通过剥离的方式,让其成为一个钩子,配合其他两个部分来完成任务。
2 客户端
MCP客户端(MCP Clients):在主机程序内部,与MCP server保持1:1的连接。
通过MCP的协议,通常有两种形式:stdio和sse的方式与服务器进行连接通信。后面也会解释这两种方式的区别和优缺点。
3 服务器
MCP服务器(MCP Servers):为MCP client提供上下文、工具和prompt信息。
服务器类似原先提供API服务的模块,它与本地文件,数据库或者其他公共服务API进行交互,来最终完成数据处理或者信息查询等工作,并提供结果数据。
通过以上几个组件的拆解,LLM就能像调用Function Calling一样,完成特定任务的处理。而MCP Servers可形成公共服务,不必直接绑定到特定LLM节点。
**02.**动手做一做
为了测试,我们需要先准备一个MCP Server。在不清楚如何使用的前提下,我们可以使用现成的开源项目。如下,是一个查询应用程序版本的服务。
1 |
|
- node版本需要v16以上,执行上述npm命令安装进全局,最终包的路径为
1 | C:/Users/USERNAME/AppData/Roaming/npm/node\_modules/mcp-package-version |
- 打开cursor,进入设置,如上图所示,先点”1”,进入MCP配置。然后点”2”,添加一个MCP服务。
如果没有设置过,会在C:/Users/USERNAME/.cursor目录下生成一个mcp.json的文件,将上面json复制进去(记得改一下USERNAME为自己实际电脑的路径)。
图中”3”点一下,使其显示”Enabled”。这时点”5”的位置,就会启动本地MCP服务,此时电脑会弹出一个node的窗口,一定不要关闭,留着它。
如果需要修改配置,可以点”4”的位置,进入JSON编辑。
如果上述操作都完成,可以看到”6”的位置”mcp-package-version”前面有一个绿色的小圆点。如果这个小圆点是空心的,需要再点一下”3”位置的”Disabled”。如果这个小圆点是红色的,说明服务还没有起来,需要再点一下”5”位置的图标。
如果正常,那么”7”位置,tools会列出所有可用的工具。反之,没有显示东西,就是没成功。请检查设置,特别是”command”和”args”,是否正确。
测试一下是否工作正常。
切换到Agent模式,然后输入问答。得到本地电脑正确的信息,如上图所示。
总结
今天学习了基本的MCP的概念,并动手成功跑了一个例子。理解最简单的MCP服务如何操作,使其能被大模型使用。但是,还有更多的MCP的概念没有引入,后面的文章将继续探讨,敬请期待。