浅谈MCP :AI时代下的TCP/IP协议

admin 2025年3月24日19:19:10评论9 views字数 6898阅读22分59秒阅读模式

大家好,我是小斐呀。

由于最近身边环境的影响,我这边也开始入局 ALL in AI 的浪潮了,大环境如此我也不例外,回顾大模型的发展历程,从2022年11月30日 OpenAI 推出的 ChatGPT 到今年年初的 DeepSeek 大火,这短短 3 年多以来大模型和周边工具的发展已经让人目不暇接。

就在最近我也思考在我的工作领域中如何能够利用上 大模型 结合 AI 工具来帮我提效或者降本呢,就在我陷入不知两难的境地时,突然天空一声巨响炸的我脑瓜子灵光一闪有了个初步的想法,下面我介绍下我这个想法概念(还在探索中,不一定能跑通)。

由于最近在分享监控告警相关的案例,结合当下的日常工作,我就构思引入大模型解决我想法的实现架构:

浅谈MCP :AI时代下的TCP/IP协议

看到这个架构你肯定第一反应是干什么的,我最开始的核心需求就是根据监控数据对资源做动态伸缩,并释放资源,资源调度集中,在指定时间段关闭无资源服务器,比如业务低峰时期服务器断电,节省电费等等,反正就是响应国家号召节能减排,小朋友是不是有很多问号?

其实理想状态下还可以干很多事:

  • 虚机通过聊天给出需求自动开通
  • 查询监控通过聊天给你准确图表数据
  • 还有什么大家可以帮忙想想?

理想状态下我希望可以实现:我发送一段话,他就帮我把活全干了,比如我需要查看全局整体服务器资源使用负载数据,然后设定时间自动给我在业务低峰期资源调度并关闭服务器:

帮我查看历史服务器资源使用趋势,根据趋势判断业务低峰期时段,并根据低峰期时段调度资源集中到某一批服务器,剩下的全部给我关机,高峰期提前给我开机并平衡调度分布。

理论上我觉得是可以实现的,但是有个前置条件,就是保证稳定性的前提下去做事情,别搞出大事那就完犊子,实际落地还是要结合企业内部实际情况去做针对性的调整。

不知道这个能不能落地,反正这是一个想法,我觉得挺有意思,可以继续拓展一下,下面介绍下 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 :AI时代下的TCP/IP协议

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 :AI时代下的TCP/IP协议

通信机制

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 的步骤如下:

  1. 安装 Claude Desktop : 确保已在 macOS 或 Windows 系统上安装最新版本的 Claude Desktop 。
  2. 配置 MCP 服务器: 在 Claude Desktop 的配置文件中,配置入口 Claude Desktop > 菜单 > File > Settings > Developer > Edit Config :
浅谈MCP :AI时代下的TCP/IP协议

点击 Edit Config

浅谈MCP :AI时代下的TCP/IP协议

这将在以下位置创建一个配置文件:

  • 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 ,然后单击确定(以管理员运行)。

浅谈MCP :AI时代下的TCP/IP协议

输入 node -v 和 npm -v ,如果出现如下图所示的信息,表示安装成功。

浅谈MCP :AI时代下的TCP/IP协议

打开 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 :AI时代下的TCP/IP协议
浅谈MCP :AI时代下的TCP/IP协议

上面两个 *MCP Server 都是 running 状态代表正常运行,回来对话窗口,可以看到右下角有个锤子图标,

浅谈MCP :AI时代下的TCP/IP协议

点击一下就可以看到这里面可用的 MCP 工具了:

浅谈MCP :AI时代下的TCP/IP协议

到此就完成了基本的配置和测试,接下来就可以在实际对话中使用这个工具了。

客户端支持的工具有很多,比如 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协议

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年3月24日19:19:10
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   浅谈MCP :AI时代下的TCP/IP协议https://cn-sec.com/archives/3878988.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息