OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?

2025年3月26日,OpenAI 公告全面支持MCP。不仅仅是ChatGPT客户端还有OPENAI的SDK。
Claude推出MCP是否就是当下的最佳AI组件方案?
https://modelcontextprotocol.io/introduction
收藏者
0
被浏览
85

5 个回答

夜林蓝 LV

发表于 2025-4-8 13:19:52

我先提供几个关键性节点文章。
Claude CEO 让你更理解如何构建Agent
一篇全面的大模型AI代理的调查评估。Survey on Evaluation of LLM-based Agents | alphaXiv
cloudflare 教你实现一个远端mcp

MCP协议官网

字节的agent-tars对MCP的最新总结
客户端开发者,应该关注如何组件(MCP)的交互和用户人机体验。
MCP的有状态以及多层级Agent是非常有挑战的一件事。在这方面http://akka.net kafka orleans dapr 等开源状态数据提供商都重点聚焦这一部分的研发。
而云厂商会重点发力基础设施侧入口,Auth鉴权,MCP组件的分发。



OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-1.jpg

星月喜品工坊 LV

发表于 2025-4-8 13:31:40

无非就是开发function calling是更方面了一些,目前已经有很多mcp client的开源工具,例如:anthropic的Claude desktop 以及 cursor 、Chatwise 这些。自己只需要注册一个自己的工具。或者直接用其他人开源的mcp server。
先说结论:不会有什么实质性的影响,想要给行业带来颠覆性的影响,主要还是靠大语言模型的能力。哪有其他人回答的那么夸张。
让大模型调用的函数,分为两个过程:

  • 大模型识别出需要调用的函数和参数
  • 自己调用后把函数的结果和问题传递给大模型整理出答案
mcp就是方便你写注册函数和函数调用的过程。例如下面代码实现一个MCP server:
  1. from mcp.server.fastmcp import FastMCP
  2. mcp = FastMCP("WeatherServer")
  3. @mcp.tool()
  4. async def query_weather(city: str) -> str:
  5.     """
  6.     输入指定城市的英文名称,返回今日天气查询结果。
  7.     :param city: 城市名称(需使用英文)
  8.     :return: 格式化后的天气信息
  9.     """
  10.     data = await fetch_weather(city)
  11.     return format_weather(data)
复制代码
自己写客户端调用的时候:
  1. async def process_query(self, query: str) -> str:
  2.     messages = [{"role": "user", "content": query}]
  3.    
  4.     response = await self.session.list_tools()
  5.    
  6.     available_tools = [{
  7.         "type": "function",
  8.         "function": {
  9.             "name": tool.name,
  10.             "description": tool.description,
  11.             "input_schema": tool.inputSchema
  12.         }
  13.     } for tool in response.tools]
  14.    
  15.     response = self.client.chat.completions.create(
  16.         model=self.model,            
  17.         messages=messages,
  18.         tools=available_tools     
  19.     )
  20.     content = response.choices[0]
  21.     if content.finish_reason == "tool_calls":
  22.         # 解析工具
  23.         tool_call = content.message.tool_calls[0]
  24.         tool_name = tool_call.function.name
  25.         tool_args = json.loads(tool_call.function.arguments)
  26.         
  27.         # 执行工具
  28.         result = await self.session.call_tool(tool_name, tool_args)
  29.         print(f"\n\n[Calling tool {tool_name} with args {tool_args}]\n\n")
  30.         
  31.         messages.append(content.message.model_dump())
  32.         messages.append({
  33.             "role": "tool",
  34.             "content": result.content[0].text,
  35.             "tool_call_id": tool_call.id,
  36.         })
  37.         
  38.         response = self.client.chat.completions.create(
  39.             model=self.model,
  40.             messages=messages,
  41.         )
  42.         return response.choices[0].message.content
  43.         
  44.     return content.message.content
复制代码
实现逻辑就是使用装饰器来处理函数的元数据信息,mcp内部实现了一个ToolManager和Tool来管理注册的函数。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-1.jpg


OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-2.jpg

同样的,不是用mcp时,也可以用下面代码来简化注册工具
  1. import json
  2. import inspect
  3. from datetime import datetime, timedelta
  4. from collections import OrderedDict
  5. from types import GenericAlias
  6. from typing import get_origin, Annotated, Dict, List, TypeVar
  7. tools = []
  8. _TOOL_HOOKS = OrderedDict()
  9. def register_tools(func: callable):
  10.     tool_name = func.__name__
  11.     tool_description = inspect.getdoc(func).strip()
  12.     python_params = inspect.signature(func).parameters
  13.     tool_params = []
  14.     for name, param in python_params.items():
  15.         annotation = param.annotation
  16.         if annotation is inspect.Parameter.empty:
  17.             raise TypeError(f"Parameter `{name}` missing type annotation")
  18.         if get_origin(annotation) != Annotated:
  19.             raise TypeError(f"Annotation type for `{name}` must be typing.Annotated")
  20.         typ, (description, required) = annotation.__origin__, annotation.__metadata__
  21.         typ: str = str(typ) if isinstance(typ, GenericAlias) else typ.__name__
  22.         if not isinstance(description, str):
  23.             raise TypeError(f"Description for `{name}` must be a string")
  24.         if not isinstance(required, bool):
  25.             raise TypeError(f"Required for `{name}` must be a bool")
  26.         tool_params.append({
  27.             "name": name,
  28.             "description": description,
  29.             "type": typ,
  30.             "required": required
  31.         })
  32.     properties = OrderedDict()
  33.     for param in tool_params:
  34.         properties[param["name"]] = {
  35.             "description": param["description"],
  36.             "type": param["type"]
  37.         }
  38.     tool_def = {
  39.         "type": "function",
  40.         "function": {
  41.             "name": tool_name,
  42.             "description": tool_description,
  43.             "parameters": {
  44.                 "type": "object",
  45.                 "properties": properties,
  46.             },
  47.             "required": [tool_param["name"] for tool_param in tool_params if tool_param["required"]]
  48.         },
  49.         
  50.     }
  51.     tools.append(tool_def)
  52.     _TOOL_HOOKS[tool_name] = func
  53.    
  54.     return func
复制代码
注册工具的时候:
  1. @register_tools
  2. async def query_weather(
  3.     city: Annotated[string, '输入指定城市的英文名称', True]
  4. ) -> str:
  5.     """
  6.     输入指定城市的英文名称,返回今日天气查询结果。
  7.     Args:
  8.         city: 输入指定城市的英文名称
  9.    
  10.     return: 格式化后的天气信息
  11.     """
  12.     data = await fetch_weather(city)
  13.     return format_weather(data)
复制代码
调用的之后参考上面mcp client的实现。上面两种方法有区别吗?
所以说mcp不会给行业带来什么实质性的影响。

shower LV

发表于 2025-4-8 13:46:04

识时务者为俊杰,openai 下对了一步棋。
如果是开发过大模型调度中台的朋友,应该知道,目前业界很多大模型公司都支持一个叫做 openai 协议的东西,也就是一套统一的大模型服务访问协议,大家只需要提供 base_url 和 modelname 以及 token 这三样东西就能直接使用一个非常标准化的程序访问一个大模型厂商的服务。这让开发者在不同厂商直接切换的成本几乎为0。
社区却很少有人强调,这套访问准入协议就是 openai 的,就连 openai 的竞争对手 deepseek 的接口文档里面也用的是 openai:

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-1.jpg

关于 openai 协议的技术细节这一点,我在两天发布的文章中说到过:
锦恢:优雅地开发 MCP 服务器(一)MCP 中的 Resources,Prompts,Tools 和基本调试方法目前支持 openai 协议的大模型厂商也不少了,我写的 OpenMCP 只是罗列了其中一小部分:

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-2.jpg


anyway,在协议生态上,openai 已经把这条道路打赢了。而目前工业界的重点逐步开始投入落地了,因为 pretrain scaling law 的上限已经被 Grok3 和 openai o3 探明了,卷 SOTA 玩流量的游戏快结束了。到头了,也就该落地了。而 MCP 协议是让各个应用无感接入大模型的,目前看起来最棒的方法,但是 Anthropic 已经先立了山头(关于 MCP 的历史和基础,可以看我之前写的这篇文章:锦恢:Agent 时代基础设施 | MCP 协议介绍),目前已经有不少的人在基于 MCP 的服务端协议开发了不少的应用,相关的各类商城现在也是层出不穷。我们不得不承认,MCP 协议本身确实有不合理的地方,比如 Resources 资源准入设计和 openai 协议本身是不兼容的,但是 openai 现在想要自立山头,搞这个协议划不来,不如一起来搞这个生态。
<hr/>最后打个小广告,我最近正在开发一款一体化的 MCP 服务调试工具,目前耗时两天,进度如下

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-3.jpg


OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-4.jpg


OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-5.jpg

项目地址:https://github.com/LSTM-Kirigaya/openmcp-client
完成 MCP 客户端协议和 message bridge 之后,该项目将会以 vscode 插件的形式于下周上线。感兴趣的朋友可以加入 OpenMCP 交流群一起讨论,QQ 号:782833642。
让我们一起完成 app 接入大模型的最后一块拼图吧!

情感职场成长师 LV

发表于 2025-4-8 13:54:45

2025年3月26日,OpenAI宣布全面支持MCP协议,这不仅仅覆盖ChatGPT客户端,还包括OpenAI的SDK。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-1.jpg

这个决定挺让人眼前一亮的,毕竟MCP(Model Context Protocol)是Anthropic推出的一个开放标准,而Anthropic可是OpenAI的竞争对手。现在OpenAI选择拥抱这个标准,对AI行业的影响肯定不小。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-2.jpg

这事儿对行业最大的影响就是让AI系统之间的“沟通”更顺畅了。MCP是个开放标准,简单说就是一套通用的规则,能让不同的AI模型和外部数据源、工具更轻松地对接。以前,开发者想让AI跟某个系统合作,得自己动手写一堆定制代码,现在有了MCP这个“通用插头”,开发过程能省不少力气。时间和成本下来了,AI应用的开发速度自然就提上去了。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-3.jpg

重要的是,OpenAI这么一带头,MCP很可能变成行业里的“通用语言”。作为AI领域的扛把子,OpenAI的支持会让更多公司和开发者觉得这个标准靠谱,搞不好以后大家提到AI集成,第一反应就是MCP。就像当年USB普及后,各种设备都能插上用,AI生态系统也会因为这种标准化变得更紧密、更高效。
直接的好处是AI的“聪明度”能再上一层楼。MCP让AI能实时拉取外部数据、调用工具,回答问题时就不光靠自己脑子里的东西了,能给出更贴合实际、更精准的答案。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-4.jpg


OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-5.jpg

这事儿还有点意思的地方在于,它透着一股合作的气息。OpenAI用上竞争对手Anthropic的标准,这种开放态度可能会带动更多公司分享技术,大家一起把蛋糕做大。
总体来看MCP确实有它的独到之处:它是开放的,谁都能用,灵活性很强;设计时也考虑了安全,能保护数据和隐私;而且从推出到现在,已经有不少开发者社区的支持,生态系统在慢慢长大。OpenAI这种大厂的背书更是给它加了分。

Autism LV

发表于 2025-4-8 14:03:36

也许未来回头看,OpenAI 支持 MCP 协议会是 AI Agent 的重要里程碑。这件事情有其实非常多个解读的角度,我最近两周沉迷 MCP,体验了很多 server,也手搓了不少工具。单纯围绕 MCP 都能写上几十篇文章(挖坑)。今天主要围绕 OpenAI 来聊几句吧,一些关于 MCP 的更基础的普及文章回头再写。
我个人的几个暴论(省流版):

  • 暴论 1:MCP 的成功已经是必然的事情,大家现在就应该去学、去用、去接入。
  • 暴论 2:互联网现有的所有 API 服务,都值得/应该接入 MCP 的生态。
  • 暴论 3:MCP 的成功,是开源的成功,再次证明了开源社区的能力和开放态度的重要性。
  • 暴论 4:OpenAI 原本有机会引领 AI Agnet 的标准化,但他们的封闭性导致错失先发优势。
  • 暴论 5:Manus 的爆火加速了 MCP 的出圈,MCP 承接了一部分 Manus 的流量。
接下来我挨着展开论述一下这 5 点暴论(看完了再喷我)。
<hr/>第一,MCP 的生态已经初具规模了,可以说 MCP 已经完成了一个通用协议的前半程采纳,未来的前景和路线也已经比较明确了,MCP 的成功是大概率的事情。
如果说那些前半程主动接入的 early adopter 是出于早期尝试或技术 sense,那么接下来会有越来越多的企业、开发者、个人主动/被动地接入 MCP 的生态,这就是生态的威力,会把大家都卷进去。
我举个例子,百度地图率先推出了官方的 MCP Server[1],首批支持了 8 个 tool,只需要填入百度地图的 API_key 就可以使用。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-1.jpg

这样用户就很便捷地让 AI 调用起百度地图的 tool 能力(地理编码、地理逆编码、地点检索、详情检索、批量算路、路线规划、天气查询、IP 定位),而不需要自己再去写很多代码。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-2.jpg

百度地图这样做了几天之后,高德地图也宣布推出了官方 MCP Server[2]。这明显就是被卷到了,所以当 MCP 形成生态以后,不是自己做不做的问题,而是竞品会卷着你做。
所以从现在开始,各家企业应该积极接入 MCP,开发者应该积极学习 MCP,个人用户应该积极使用 MCP。晚做不如早做,被动做不如主动做
<hr/>第二,从 AI Agent 发展的长远视角看,当下互联网上所有的 API 服务,都值得也应该兼容 MCP 协议MCP 生态的繁荣,会极大地丰富 AI Agent 工具选择,降低 AI Agent 开发能力,加速成熟 AI Agent 的到来
API 是互联网的基础设施,那么 MCP 的目标就是搭建起 AI Agent 选择、使用工具时服务端和客户端之间的中间层基础设施,就像 Type-C 接口一样,把外部世界、工具能力和底层模型无缝地衔接起来。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-3.jpg

<hr/>第三,MCP 的成功,是开源开放的成功,再次证明了开源共建的效果。我们常说,一流企业做标准,二流企业做品牌,三流企业做产品。过去,Anthropic 靠 Claude 这个产品可以算作三流企业,OpenAI 形成了自己的金字招牌,但有了 MCP 之后,Anthropic 就跻身了标准制定的层面。
尽管 Anthropic 的 Claude 并不开源,但 MCP 这步棋走的非常正确。MCP 作为一个协议,一个通用技术的倡导,与具体的 AI 模型、应用客户端、提供工具服务的企业都不绑定。
这很重要,因为你制定协议是一件事,别人接纳使用你的协议是另一件事。如果你没点真东西,或者想把大家拖进闭源的生态里,大家凭什么认你当带头大哥。
现在,我们完全可以在全链路开源的场景(开源模型、开源客户端、开源工具)下接入 MCP,这也是能够吸引众多开发者的地方。
我自己测试了一下小模型的 MCP 工具能力,在这里给大家做一个最简单的 demo 演示。举个例子,我用 Qwen2.5-0.5B 的开源小模型,问它「9.8 和 9.11 哪个更大?」,显然它回答是错误的。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-4.jpg

然后我用 10 行代码搓了一个 MCP 工具,功能只有一个,就是数字比大小。
  1. from mcp.server.fastmcp import FastMCP
  2. mcp = FastMCP("numeric_comparison")
  3. @mcp.tool()
  4. def compare(a: float, b: float)->str:
  5.     """compare two numbers, input float number, return result"""
  6.     return f"{a}>{b}" if a - b > 0 else f"{b}>{a}"
  7. if __name__ == "__main__":
  8.     mcp.run(transport='stdio')
复制代码
然后,我们在 Client 中接入这个工具:

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-5.jpg

再次提问,开源小模型就能做对比大小的题目了:

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-6.jpg

这只是一个最简单的演示,为了说明 MCP 可以在全链路开源的场景下实现很多操作,而不必要跟 Claude 3.5 模型,或者 Claude Desktop 客户端绑定使用。
<hr/>第四,OpenAI 原本有机会引领 AI Agent 的标准,他们只要多走半步,构建一个共享工具的开源生态就能成功,但恰恰他们的封闭生态导致了 Function call 的失败
OpenAI 毫无疑问是这一轮 LLMs(大语言模型)的引领者,其实 OpenAI 的先发优势是极为明显的,举个例子,比如现在所有的模型都会兼容 OpenAI API 的输入输出格式,开发者/用户只需要替换 base_url、model、和 api_key 就能使用其他模型。
可以说,OpenAI 制定了大模型 API 的规范标准,包括流式输出、Prompt、completion、tokens 等等。因为它的先发优势,所有后来者都要遵守 openai SDK 的标准,以达到最佳的兼容效果。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-7.jpg


https://medium.com/@svdoever/setup-for-llm-experimentation-with-openai-api-and-local-models-8331e498ecfc

在 Agent 领域,OpenAI 应该说也是有点优势的。他们最早开始搞 plugin,然后是 Function_call,GPTs,后来又有 Operator,Agents SDK 等等。
但是,他们始终没有迈出去开源的那一步,始终没有把目光、视野放到全部企业、全部应用、全部模型、全部用户,没有选择构建 MCP 这样的生态。
我看到很多人说,MCP 本质上和 Function_call 没有区别。对啊,确实没有区别,那 OpenAI 为什么不做标准,不去维护好开源社区呢?
现在 MCP 已然成功,OpenAI 明白已经不可能再另起炉灶,让大家都来兼容自己的标准了,所以才选择了兼容 MCP,也算是「拥抱」了开源生态。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-8.jpg

这对开发者和用户来说自然是好事,学习成本低,开发的兼容性更强。
但反过来,对于 OpenAI 来说,能做上游的标准制定者,谁愿意做下游的跟随采用者呢?
<hr/>第五,某种程度上讲,Manus 给 MCP 点了一把火。
当然,首先要说明的是,我知道 Manus 的技术栈里没有使用 MCP[3],我也知道 Manus 和 MCP 的成功之间没有任何因果关系,我只是在表达,Manus 的出圈给 MCP 引流的相关性(哪怕只有一点点相关性)。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-9.jpg


Manus 并没有使用 MCP

为什么这么说呢,因为 Manus 作为通用 Agent 吸引了大家的关注,给了大家「2025 Agent 可以落地」的希望,给 AI Agent 带来了更高的关注度,也因而给 MCP 等协议层解决方案带来了流量。
另一方面,Manus 的成功让开发者意识到,Agent 依然需要大量的基础设施层的工作。,我们需要一个统一的协议来连接 AI 模型与工具,而 MCP 作为现成的、已经具有一定规模的开源标准,进入了更多人的视野。
换句话说:Manus 的成功揭示了 AI Agent 与外部工具无缝交互的重要性,而 MCP 恰好提供了这样的解决方案,天时地利人和,一切都刚刚好。
<hr/>最后的一个开放题是,为什么是 Anthropic?
我们简单分析了 OpenAI 在 Agent 通用协议标准制定上的失败,那反过来说,为什么成功的是 Anthropic?他们家 Claude 也不开源啊,怎么就想起来搞个 MCP,统一 Agent 协议呢?
这个问题没有标准答案,毕竟选择也好,成功也罢,都有历史的偶然性。
我朋友提供了一个角度,那就是,尽管 OpenAI 的模型一直领跑,ChatGPT 做了很多应用工作,但在编程领域,Claude 是绝对的王者
同时,Coding Agent 是最先落地的一个专用 Agent 方向,出现了 Cursor、Devin、Windsurf、cline 等大量的 Coding Agent 工具,而这些工具的首选模型,也是 Claude 3.5。
程序员是真的非常有「自我革命」精神,也是新技术最积极的采纳者。比如,在 MCP 社区上[4],一共分享有 4766 个 MCP Server,其中仅「开发者工具」分类下就有 2783 个,还不算其他各种编程分类。

OpenAI 将全面支持 MCP 协议,会给行业带来哪些影响?-10.jpg

MCP 的协议从提出,到规范,到开源,到广泛采用,非一日之功。也许正是 Anthropic/Claude 长期以来在编程领域的领先,进而在 AI Coding Agent 取得成功,才促使他们构建起 MCP 这样的开源标准。当然,这只是一家之言,一个角度,供大家发散思考。
总之,MCP 挺好玩的,随着 OpenAI 的表态,接下来应该会再迎来一波各家官方提供 MCP Server 的高潮。
写了 3000 多字,感觉也只写了个开头。最近太忙了,有时间想多写点,大家可以点点赞点点关注,给我上上压力,哈哈。
最后,以大家吴恩达老师的惯用结尾作为结束吧:Keep Learning!

您需要登录后才可以回帖 登录 | 立即注册