程序员就不要把MCP当神话了!
MCP协议深度剖析--楼兰
之前给大家分享过,现在AI大模型的发展方向是希望更好的将AI大模型与传统的软件能力相结合。现在,这个方向有了更实际的突破。在2024年底,claude大模型的开发公司Anthropic提出了一个MCP(Model Context Protocol)协议。通过MCP协议,可以让应用程序以一种统一的方式向LLM大语言模型提供工具调用。
而随着几千个MCP服务突然冒出,百度、阿里等厂商也开始大规模接入MCP,这个协议也迅速在互联网上引起轩然大波。按照那些流量派见风就是雨的性子,MCP也着实被大吹特吹了一波。我见过最夸张的说法是,23年是AI大模型的元年,24年是Agent的元年,那么25年就是MCP的元年。这个MCP真有这么神奇吗?那我们就分三个步骤来剖析下MCP到底是个什么东东。
- MCP快速上手
- 详解MCP工作机制
- 手写实现MCP服务
一、MCP快速上手
MCP最神奇的地方就是只要做下简单的配置,就能完成很多复杂的工作。那这次,我们就先不来介绍MCP那些花里胡哨的概念,直接上手来玩玩MCP。
首先,我们需要使用一个支持MCP的客户端工具。 这类工具现在有很多,以后肯定也会越来越多。这次我们使用一个免费的。 在VSCode中有一个开发插件,Cline。通过这个插件可以快速和AI大模型交互。
安装VSCode和Cline过程略。需要稍微注意下的是,cline插件默认是访问Claude大模型。使用Cline需要先登录。登录时,可以使用google邮箱或者github账号登录。
然后,对Cline插件进行配置,让他访问国内的模型,这样就不需要科学上网了。

接下来,就可以正常的访问大语言模型了。

到这里,还一切正常,没什么不同的。接下来,在cline的上方有个小小的MCP Server按钮。通过这里,就可以打开MCP的体验之路。
以高德地图提供的MCP服务为例。高德地图开放平台提供了非常详细的MCP接入介绍: https://lbs.amap.com/api/mcp-server/summary。 只需要在高德开放平台注册账号,登录后,在左侧菜单中选择“应用管理”-》“我的应用”,然后创建新应用,就可以申请一个API-KEY

有了这个API-KEY之后,在MCP Server按钮的右侧,选择MCP Server。在MCP的配置文件中写入以下内容:
{
"mcpServers": {
"amap-amap-sse": {
"url": "https://mcp.amap.com/sse?key=你在高德官网上申请的key"
}
}
}
配置完成,右侧就能看到这个MCP服务被安装上来了。

接下来,在Cline中,如果你询问和地图相关的一些问题,那么,Cline在调用大模型的过程中,就会自动调用高德地图的MCP服务,获得地图相关的信息。

并且,最终参考高德地图给出的路线信息,大模型会给出一个完整的路线规划

到这里,我们就完成了MCP服务的初体验。只需要简单配置一个JSON文件,就可以给大模型提供更多扩展的功能。
当然,除了这里演示到的高德地图的MCP服务外,还有很多五花八门的MCP服务。甚至还有很多MCP的信息聚合网站。比如 https://mcp.so 上,目前就聚合了好几千个各种各样的MCP服务。通过这些服务,我们可以让AI大模型完成聊天以外的各种各样的功能。包括发送邮件、浏览网页等。甚至直接操作本地文件也可以。还有阿里云百炼平台 https://bailian.console.aliyun.com/?tab=mcp#/mcp-market 更是将各种MCP服务聚合成了很多独立的服务。只要开通对应的服务后,就可以在阿里云百炼的智能应用中,用图形化的方式直接集成这些MCP服务。
通过MCP服务,可以让大模型不再只是扮演一个大脑的角色,而是拥有了四肢,直接替代人的工作能力。这样看起来,MCP确实给大模型带来了一次质的飞跃。但是,事实情况真的是这样吗?
作为纯小白,或许你只能跟在别人身后,听风就是雨。但是,作为程序员,我们是有能力更全面的去理解MCP的。
二、了解MCP工作机制
MCP协议,全程Model Context Protocol,中文翻译是模型上下文协议。MCP协议是由Anthropic公司提出的,是一个专门用于与AI大语言模型进行交互的协议。但是本质上,MCP协议只是允许应用程序以一种统一的方式向大语言模型提供Function call函数调用。而Function call是很多大语言模型自身就提供的一种功能机制。
例如,通过下面的案例,我们就可以很简单的给大模型提供路线规划的能力。
from config.load_key import load_key
from langchain_openai import ChatOpenAI
# 构建阿里云百炼大模型客户端
llm = ChatOpenAI(
model="qwen-plus",
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
openai_api_key=load_key("BAILIAN_API_KEY"),
)
import datetime
from langchain.tools import tool
# 定义工具 注意要添加注释
@tool(description="规划行车路线")
def get_route_plan(origin_city:str,target_city:str):
"""规划行车路线
Args:
origin_city: 出发城市
target_city: 目标城市
"""
result = f"从城市


557

被折叠的 条评论
为什么被折叠?



