MCP简单入门
本文章是最近成为话题的 MCP 入门文章
关于 MCP (Model Context Protocol) 本文将以以下三步来介绍
- 逐渐理解
- 小试牛刀
- 深层理解
即便是关于 MCP 什么都不懂的新人,只要按照顺序读这个文章的话,就以【能逐渐理解 MCP,并且能够简单的进行实际使用】作为目标吧!
逐渐理解
MCP 的话,简单来说就是为了将 LLM 应用 和 外部服务 进行连接而制造出来的接口(协议)。
LLM 应用是诸如 ChatGPT、Claude、Cursor 等使用大语言模型 (LLM) 的应用程序
- :warning:注意:这里说的并不是类似于
GPT-4o
或者是DeepSeek R1
那种独立的大语言模型
早期的 LLM 应用不管怎么发展都只是一个十分聪明的聊天工具,只会回应文本
为了这个,人们需要对LLM应用所给出的回复做出相应的判断
最初解决这个问题的是 OpenAI的Function Calling。
通过使用 Function Calling,让 LLM 判断执行什么动作,同时利用指定的 JSON 响应,使LLM应用能直接执行动作。
但是 LLM 应用那边需要对应无数的外部服务,一个一个实装连接的话总会有个头。这时候,就需要出现一个新的服务来解决这个问题。
就这样,为了统一 LLM 应用 和 外部服务 进行连接的接口(协议)MCP 就此登场。 通过外部服务提供商(或者是第三方服务)构建 MCP Server(后文将详细说明)的机制,各 LLM 应用无需进行额外开发,即可通过标准化接口调用外部服务资源。
小试牛刀
中文里有句古话,叫做**实践出真知!**不试试怎么知道会不会呢?那么我们来实际使用 MCP 试一试吧!
这里,我们和 官方文档 一样,来试试 Filesystem MCP Server
- 下面的内容将会出现像【MCP Server】那样可能是第一次看到的词语,稍后将会详细介绍。这里暂时将就着看就可以了!
这里需要安装 Claude 的桌面端软件,没有的就安装一下
配置 MCP Server
首先,在 Claude 上配置 Filesystem MCP Server
- 在软件的菜单栏
File
→Settings
→Developer
- 然后选择
Get Started
跟着里面的内容来配置先提环境
在下面的路径新建一个设定文件
- Windows:
%APPDATA%\Claude\claude_desktop_config.json
- macOS:
~/Library/Application\ Support/Claude/claude_desktop_config.json
-
在上述文件添加上以下内容,
{username}
还请换成自己电脑上的用户名1 2 3 4 5 6 7 8 9 10 11 12
{ "mcpServers": { "filesystem": { "command": "npx", "args": [ "-y", "@modelcontextprotocol/server-filesystem", "/Users/{username}/Downloads" // TODO: 请把 username 替换为你的用户名。 ] } } }
-
这样准备工作就做完了!可以重启 Claude 了。不出意外的话,首页上就会出现🔨图标,并且也会显示可用的功能组
-
来试试能不能用吧!向 Claude 提问 “Show recently downloaded files”,之后会出现 “Allow tool from “filesystem” (local)?"(允许工具访问本地文件吗?) 的选项,选择 “Allow for this chat”(在这个对话中允许) 即可
然后 Claude 就很正常的把你电脑里下载的文件说出来了
深层理解
在刚刚的实际操作中体验并建立基本认知后,让我们进一步深度解析 MCP 的技术架构与实现原理。
组件
在 MCP 中,主要有 5 个组件。
术语 | 说明 |
---|---|
LLM 应用 | 指提供使用 LLM(大型语言模型)接口的应用程序,例如 ChatGPT、Claude、Cursor 等。请注意与 LLM 本身区分开来。在官方文档中也称为 LLM Host。 |
LLM | LLM 应用所使用的 LLM 模型。多数情况下是通过 API 远程调用的模型。 |
MCP Client | 遵循 MCP 协议并与 MCP Server 通信的客户端。每个 LLM 应用中 MCP Client 与 MCP Server 通常是一对一的关系,也可以存在多个 MCP Client。 |
MCP Server | 在 MCP Client 与 外部服务 之间起桥梁作用的轻量级服务器。可以被看作是为 LLM 应用准备的 BFF (Backend For Frontend)。虽然叫 “Server”,但与 LLM 应用一样,它也可以在本地机器上运行,请注意区分。只要每个服务遵循 MCP 协议,就可以通过 MCP Server 实现与 LLM 应用的连接。 |
外部服务 | 指 PC 上的文件系统、Google 日历事件、Github、餐饮日志、Slack 等各种外部服务。这些服务可能存在于本地(如文件系统),也可能通过 API 远程访问(如 Github 和 Slack)。 |
准确的来说 MCP 应该是决定 MCP Client 和 MCP Server 之间通信方式的协议。
MCP 运作方式
上面所说的这些组件,到底是怎么样连接并运行起来的,我们以刚刚的 Filesystem MCP Server 为例整理一下
- LLM 应用启动的时候,Filesystem 专用的 MCP Client 和 Filesystem 专用的 MCP Server 的连接开始初始化。这个时候的 MCP Server 将给 MCP Client 回答 协议的版本 以及 功能。
- LLM 应用将给 LLM 发送 提示词(Prompt)。这个时候,MCP Server 的信息也将被一同送给可以使用 Filesystem 的 MCP 里。
- LLM 判断【这里应该获取文件一览】,回答 使用许可(Function Calling)。
- LLM 应用在内部使用 MCP Client 请求 MCP Server 来的执行操作(也就是刚刚的使用许可)。
- MCP Server 会向 Filesystem 发送请求,以检索文件列表。
- Filesystem 返回结果。
- MCP Server 将结果返回给 MCP Client。
- LLM 应用会将从 LLM Client 里拿到的结果,再投给 LLM。
- LLM 对执行结果进行智能优化处理后回传至 LLM 应用(或在此环节进一步生成工具调用指令)
外部服务如果是远程服务的话,虽然大概步骤都差不多,但是在这种时候 MCP Server 是在本地运行的!
如果是远程的话,那么第 4 步在执行的时候就会使用 API 了
总结
未来,借助 MCP,LLM 应用很可能会从聊天工具进化为“万能超级应用”。接下来,不妨试着用 MCP 将你的服务或 API 连接起来吧!
如果你想了解更多内容,也可以参考本次引用的官方文档。