大家好,我是小斐呀。
由于最近身边环境的影响,我这边也开始入局 ALL in AI
的浪潮了,大环境如此我也不例外,回顾大模型的发展历程,从2022年11月30日 OpenAI
推出的 ChatGPT
到今年年初的 DeepSeek
大火,这短短 3
年多以来大模型和周边工具的发展已经让人目不暇接。
就在最近我也思考在我的工作领域中如何能够利用上 大模型
结合 AI
工具来帮我提效或者降本呢,就在我陷入不知两难的境地时,突然天空一声巨响炸的我脑瓜子灵光一闪有了个初步的想法,下面我介绍下我这个想法概念(还在探索中,不一定能跑通)。
由于最近在分享监控告警相关的案例,结合当下的日常工作,我就构思引入大模型解决我想法的实现架构:
看到这个架构你肯定第一反应是干什么的,我最开始的核心需求就是根据监控数据对资源做动态伸缩,并释放资源,资源调度集中,在指定时间段关闭无资源服务器,比如业务低峰时期服务器断电,节省电费等等,反正就是响应国家号召节能减排,小朋友是不是有很多问号?
其实理想状态下还可以干很多事:
-
虚机通过聊天给出需求自动开通 -
查询监控通过聊天给你准确图表数据 -
还有什么大家可以帮忙想想?
理想状态下我希望可以实现:我发送一段话,他就帮我把活全干了,比如我需要查看全局整体服务器资源使用负载数据,然后设定时间自动给我在业务低峰期资源调度并关闭服务器:
帮我查看历史服务器资源使用趋势,根据趋势判断业务低峰期时段,并根据低峰期时段调度资源集中到某一批服务器,剩下的全部给我关机,高峰期提前给我开机并平衡调度分布。
理论上我觉得是可以实现的,但是有个前置条件,就是保证稳定性的前提下去做事情,别搞出大事那就完犊子,实际落地还是要结合企业内部实际情况去做针对性的调整。
不知道这个能不能落地,反正这是一个想法,我觉得挺有意思,可以继续拓展一下,下面介绍下 MCP
的基础概念。
MCP 基础
MCP
(Model Context Protocol,模型上下文协议),2024年11月25日,由 Anthropic
( Claude
大模型母公司)推出的一种开放标准,旨在统一大型语言模型( LLM
)与外部数据源和工具之间的通信协议。
可让开发人员在其数据源和 AI
驱动的工具之间建立安全的 双向连接
。该架构使开发人员可以通过 MCP Servers
公开其数据,也可以构建连接到这些服务器的 AI
应用程序 MCP Clients
。
MCP
的主要目的在于解决当前 AI
模型因数据孤岛限制而无法充分发挥潜力的难题, MCP
使得 AI
应用能够安全地访问和操作本地及远程数据,为 AI
应用提供了连接万物的接口,可以理解为电子设备的 Type C
协议(可以充电也可以传输数据)。
MCP 对比
在使用大模型的过程中,真正对实际产生价值,肯定要处理大模型如何与外部应用或系统做交互,在这里衍生出了几个方式:
-
Plugins
:OpenAI
推出ChatGPT Plugins
模式,允许模型通过插件与外部应用做交互。 -
Function Calling
: 通过定义工具函数,发起Function Calling
-
Agent Framework Tools
:模型作为代理,动态选择工具完成任务。
现在是面对不同系统框架,都要去学习对应的框架协议和规范,去开发对应的工具,这是非常麻烦的事情,而且非常不友好,所以 MCP
就应运而生,但是我觉得这种标准应该是 OpenAI
来主导的才对。
那听起来好像 MCP
和 Function Calling
有点类似,其实有区别的:
Function Calling
指的是 AI
模型根据上下文自动执行函数的机制。 Function Calling
充当了 AI
模型与外部系统之间的桥梁,不同的模型有不同的 Function Calling
实现,代码集成的方式也不一样,由不同的 AI
模型平台来定义和实现。
如果我们使用 Function Calling
,那么需要通过代码给 LLM
提供一组 functions
,并且提供清晰的函数描述、函数输入和输出,那么 LLM
就可以根据清晰的结构化数据进行推理,执行函数。
Function Calling
的缺点在于处理不好多轮对话和复杂需求,适合边界清晰、描述明确的任务。如果需要处理很多的任务,那么 Function Calling
的代码比较难维护。
MCP
是一个标准协议,如同电子设备的 Type C
协议(可以充电也可以传输数据),使 AI
模型能够与不同的 API
和数据源无缝交互。
MCP
旨在替换碎片化的 Agent
代码集成,从而使 AI
系统更可靠,更有效。通过建立通用标准,服务商可以基于协议来推出他们自己服务的 AI
能力,从而支持开发者更快的构建更强大的 AI
应用。开发者也不需要重复造轮子,通过开源项目可以建立强大的 AI Agent
生态。
MCP
可以在不同的应用或服务之间保持上下文,从而增强整体自主执行任务的能力。
可以理解为 MCP
是将不同任务进行分层处理,每一层都提供特定的能力、描述和限制。而 MCP Client
端根据不同的任务判断,选择是否需要调用某个能力,然后通过每层的输入和输出,构建一个可以处理复杂、多步对话和统一上下文的 Agent
。
AI Agent
可以利用 MCP
提供的功能描述来理解更多的上下文,并在各种平台或服务中自动执行任务。
MCP 架构
MCP
遵循客户端-服务器架构( Client-Server
),其中包含以下几个核心概念:
-
MCP
主机(MCP Hosts
):发起请求的LLM
应用程序(例如Claude Desktop
、IDE
或AI
工具)。 -
MCP
客户端(MCP Clients
):在主机程序内部,与MCP Server
保持 1:1 的连接。 -
MCP
服务器(MCP Servers
):为MCP Client
提供上下文、工具和Prompt
信息。 -
本地资源( Local Resources
):本地计算机中可供MCP Server
安全访问的资源(例如文件、数据库)。 -
远程资源( Remote Resources
):MCP Server
可以连接到的远程资源(例如通过API
)。
MCP Client
MCP Client
充当 LLM
和 MCP Server
之间的桥梁, MCP Client
的工作流程如下:
-
MCP Client
首先从MCP Server
获取可用的工具列表。 -
将用户的查询连同工具描述通过 Function Calling
一起发送给LLM
。 -
LLM
决定是否需要使用工具以及使用哪些工具。 -
如果需要使用工具, MCP Client
会通过MCP Server
执行相应的工具调用。 -
工具调用的结果会被发送回 LLM
。 -
LLM
基于所有信息生成自然语言响应。 -
最后将响应展示给用户。
Claude Desktop
和 Cursor
都支持了 MCP Server
接入能力,它们就是作为 MCP Client
来连接某个 MCP Server
感知和实现调用,我相信后续也有越来越多的工具实现接入。
MCP Server
MCP Server
是 MCP
架构中的关键组件,它可以提供 3
种主要类型的功能:
-
资源( Resources
):类似文件的数据,可以被客户端读取,如API
响应或文件内容。 -
工具( Tools
):可以被LLM
调用的函数(需要用户批准)。 -
提示( Prompts
):预先编写的模板,帮助用户完成特定任务。
整个 MCP
协议核心的在于 Server
,因为 Host
和 Client
相信熟悉计算机网络的都不会陌生,非常好理解,但是 Server
如何理解呢?
看看 Cursor
的 AI Agent
发展过程,我们会发现整个 AI
自动化的过程发展会是从 Chat
到 Composer
再进化到完整的 AI Agent
。
AI Chat
只是提供建议,如何将 AI
的 response
转化为行为和最终的结果,全部依靠人类,例如手动复制粘贴,或者进行某些修改。
AI Composer
是可以自动修改代码,但是需要人类参与和确认,并且无法做到除了修改代码之外的其它操作。
AI Agent
是一个完全的自动化程序,未来完全可以做到自动读取 Figma
的图片,自动生产代码,自动读取日志,自动调试代码,自动 push
代码到 GitHub
。
而 MCP Server
就是为了实现 AI Agent
的自动化而存在的,它是一个中间层,告诉 AI Agent
目前存在哪些服务,哪些 API
,哪些数据源, AI Agent
可以根据 Server
提供的信息来决定是否调用某个服务,然后通过 Function Calling
来执行函数。
MCP 原理
MCP
协议采用了一种独特的架构设计,它将 LLM
与资源之间的通信划分为三个主要部分:客户端 、 服务器 和 资源 。
客户端负责发送请求给 MCP
服务器,服务器则将这些请求转发给相应的资源。这种分层的设计使得 MCP
协议能够更好地控制访问权限,确保只有经过授权的用户才能访问特定的资源。
以下是 MCP
的基本工作流程:
-
初始化连接:客户端向服务器发送连接请求,建立通信通道。 -
发送请求:客户端根据需求构建请求消息,并发送给服务器。 -
处理请求:服务器接收到请求后,解析请求内容,执行相应的操作(如查询数据库、读取文件等)。 -
返回结果:服务器将处理结果封装成响应消息,发送回客户端。 -
断开连接:任务完成后,客户端可以主动关闭连接或等待服务器超时关闭。
通信机制
MCP
协议支持两种主要的通信机制:
-
基于 标准输入输出 的本地通信 -
基于SSE( Server-Sent Events
)的远程通信。
这两种机制都使用 JSON-RPC 2.0
格式进行消息传输,确保了通信的标准化和可扩展性。
-
本地通信:通过 stdio
传输数据,适用于在同一台机器上运行的客户端和服务器之间的通信。 -
远程通信:利用 SSE
与HTTP
结合,实现跨网络的实时数据传输,适用于需要访问远程资源或分布式部署的场景。
数据安全
MCP
通过标准化的数据访问接口,大大减少了直接接触敏感数据的环节,降低了数据泄露的风险。
MCP
内置了安全机制,确保只有经过验证的请求才能访问特定资源,相当于在数据安全又加上了一道防线。同时, MCP
协议还支持多种加密算法,以确保数据在传输过程中的安全性。
例如, MCP
服务器自己控制资源,不需要将 API
密钥等敏感信息提供给 LLM
提供商。这样一来,即使 LLM
提供商受到攻击,攻击者也无法获取到这些敏感信息。
社区工具
目前已经有越来越多的工具支持 MCP
了,比如运维领域常见的 Docker
, Kubernetes
、 Git
、 Github
、 Gitlab
、 Cloudflare
、 Redis
、 MySQL
、 PostgreSQL
、 SQLite
。
也越来越多的工具官方开始支持,就比如我这次需要用到的 Grafana
官方直接打造了 Grafana MCP Server
,这样看来后续会有更多的工具跟进。
Claude
官方本身放开了一些基础的 MCP Server
,比如操作本地数据或文件 Filesystem MCP Server
还有基于网页内容的搜索 Brave Search MCP Server
等等。
社区自己制造的各种 MCP Server
也越来越多,可以去相关的 MCP Client/Server
社区看看,工具是越来越丰富,轮子是越来越多。
下面我基于 Claude Desktop
中演示一下如何配置 MCP Client
添加两个 MCP Server
:
-
Filesystem MCP Server
-
Git MCP Server
Claude Desktop 下载链接:
https://claude.ai/download
以 Claude Desktop
为例,配置 MCP Client
的步骤如下:
-
安装 Claude Desktop
: 确保已在macOS
或Windows
系统上安装最新版本的Claude Desktop
。 -
配置 MCP
服务器: 在Claude Desktop
的配置文件中,配置入口Claude Desktop
>菜单
>File
>Settings
>Developer
>Edit Config
:
点击 Edit Config
这将在以下位置创建一个配置文件:
-
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
-
Windows: %APPDATA%Claudeclaude_desktop_config.json
FileServer MCP Server
由于是 TypeScript
写的,故需要 node.js
依赖:
node.js下载:
https://nodejs.org/zh-cn
双击已下载的安装包,根据安装向导完成安装。
打开 Windows
终端,同时按下 Win+R
打开命令行,输入框输入 cmd
,然后单击确定(以管理员运行)。
输入 node -v
和 npm -v
,如果出现如下图所示的信息,表示安装成功。
打开 VS Code
编辑 claude_desktop_config.json
文件,添加 FileServer MCP Server
和 Git MCP Server
:
{
"mcpServers": {
"filesystem": {
"command": "npx",
"args": [
"-y",
"@modelcontextprotocol/server-filesystem",
"D:\aidev\mcp-file",
"D:\aidev\mcp-test"
]
},
"git": {
"command": "python",
"args": [
"-m",
"mcp_server_git",
"--repository",
"D:\code\gitee\networkdevice-monitor"
]
}
}
}
这里我添加读写本地文件系统的 MCP Server
,给定两个本地目录:
-
D:aidevmcpfile -
D:aidevmcp-test
在添加了一个 Git MCP Server
是为了通过大语言模型来读取、搜索和操作 Git 仓库。
-
D:codegiteenetworkdevice-monitor
注意 Windows
系统需要 转义目录路径符号,并且所有命令行和程序都在管理员权限下打开和执行:
node --version
npm --version
where node
npm root -g
# 安装 server-filesystem 和 uv
npm install -g uv
npm install -g @modelcontextprotocol/server-filesystem
# 安装 python 版本 mcp-server-git
pip install mcp-server-git
# 安装后 验证一下这个模块脚本
python -m mcp_server_git
编辑完 claude_desktop_config.json
以后重启 Claude Desktop
以实现配置生效(以管理员身份运行):
上面两个 *MCP Server
都是 running 状态代表正常运行,回来对话窗口,可以看到右下角有个锤子图标,
点击一下就可以看到这里面可用的 MCP
工具了:
到此就完成了基本的配置和测试,接下来就可以在实际对话中使用这个工具了。
客户端支持的工具有很多,比如 Cursor
,比如 VS Code
下的插件 Continue
和 Cline
等等工具,都可以使用,当然还可以自己开发定制了。
总结
MCP之于AI,有点类似于TCP/IP之于互联网。
三个重要特点:
-
标准协议:将 AI
与所有工具层的交互接口统一成一个标准 -
动态发现: AI
能够按需寻找并调用能够完成指定任务的工具或服务 -
双向通信: AI
与工具之间的通信是双向的,有状态的。AI
既能从工具获取数据,也能向工具发送指令。
在 MCP
工具平台上你可以轻松查找不同功能对应的工具及服务。随着越来越多的 Server
接入 MCP
协议,未来 AI
能够直接调用的工具将呈现指数级增长,这能从根源上打开 Agent
能力的天花板。
并且 MCP
在 MultiAgent
中起到了非常重要的作用,它将协调统一大模型与各工具之间的数据通信接口(预测)。
这篇基础就到此结束,其实还未完全展开,需要详细资料的可以公众号私信回复 mcp
我发一份关于 MCP
详细文档给您。
📣欢迎朋友们关注公众号📢📢:【网络小斐】!
🙋♂️有想法的朋友也可以加我沟通,朋友🔘做个点赞之交!😂😂
欢迎点赞 👍、收藏 💗、关注 💡 三连支持一下,我们下期见~✨
原文始发于微信公众号(网络小斐):浅谈MCP :AI时代下的TCP/IP协议
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论