为什么需要MCP
请看下面的例子:
我们知道纯粹的大语言模型基本只能用来对话,而且其对话的内容是基于训练时的知识库,并没有获取实时的信息的能力。因此要想更好地使用LLM,必须结合其他实时服务,比如天气、地图等。
例如我有这样一个需求:请在本周末天气晴朗的时候帮我规划武汉周边一日游。
这个实际上包含了几个需求:1、查询周末天气;2、查找武汉周边的景点;3、规划一日游的路线。
在没有MCP之前,AI应用想要获取实时天气需要这样做,调用天气服务的API,获取到周末的哪一天天气较好;然后调用地图服务的API,获取武汉周边的景点;将获取到的天气和武汉周边景点给大模型,让大模型帮我规划行程。
这个方案存在几个问题。一是我的AI应用需要频繁编写与不同服务的交互,因为不同的服务它们的交互方式往往是不一样的,另一个,如果用户的需求变了,我们就需要编写代码接入新的服务,难以处理不同的场景。这导致传统的服务与LLM应用结合的困难。
MCP的出现就是为了解决LLM与其他服务或工具的交互问题。
什么是MCP
MCP由Anthropic于2024年11月底推出,目的是解决大语言模型与外部环境交互时的连接问题。它通过建立一种安全、双向的链接,使得大模型能够以一致的方式访问外部资源,同时确保数据的安全性和可控性。
MCP(Model Context Protocol,模型上下文协议)是一种开放标准协议,旨在统一大型语言模型(LLM)与外部数据源和工具之间的通信方式。它可以被看作是AI应用程序的“USB-C接口”,为大模型提供了一种标准化的方法来连接不同的数据源、工具和服务。
MCP 可帮助你在大型语言模型之上构建Agent和复杂工作流。大型语言模型经常需要与数据和工具集成,而 MCP 提供:
- 不断增长的预构建服务列表,你的大型语言模型可以直接以插件的形式接入其中。
- 在不同的大型语言模型提供商和供应商之间切换的灵活性。
- 在你的基础设施内保护数据的安全。
总的来说,MCP是大模型生态里非常重要的一个轮子,目前Anthropic、OpenAi以及国内的腾讯、阿里、百度都已经开始支持MCP,有了这个标准,传统的工具和互联网服务轻松地与大模型结合起来,让大模型具备真正的行动力。
MCP的应用
下面我们将以一个例子来说明MCP的应用。
我们使用CherryStudio作为客户端,它已经支持了MCP,添加高德地图的MCP服务。
首先需要在https://console.amap.com/dev/key/app申请API KEY,并通过以下方式添加高德地图的MCP服务。
上述配置完成后,就可以在对话中使用MCP服务了。注意在对话时需要选择启用相应的MCP服务。
看下对话的结果,在给出结果的过程中,首先调用了高德地图的查询位置坐标、计算距离、搜索附近的咖啡店等接口,这样就可以给出我们实时的结果了。
MCP工作流程介绍
当你提交一个查询时:
- 客户端从MCP服务器获取可用工具列表。
- 你的查询与工具描述一起发送给LLM。
- LLM决定使用哪些工具(如果有)。
- 客户端通过MCP服务器执行工具调用。
- 结果被发送回LLM。
- LLM提供自然语言响应。