打破LLM数据孤岛!Anthropic革命性MCP让大模型解锁全网数据

编辑:编辑部 YZh

【新智元导读】就在刚刚,Anthropic重磅开源了「模型上下文协议」MCP,LLM的数据孤岛被彻底打破了!LLM应用和外部数据源、工具都将无缝集成,真正互联的系统就在眼前,整个LLM应用生态要变天了。

在引领AI操控计算机革命之后,OpenAI劲敌又在预谋一场颠覆未来的新范式。

就在昨天,Anthropic发布了一项革命性的技术——模型上下文协议(Model Context Protocol,MCP)。

从此,LLM应用链接数据难的痛点,有望彻底解决。

我们不必再为每个数据源写定制的集成代码了,LLM应用的生态恐怕要颠覆!

这个名为MCP的开放协议,目标是实现LLM应用程序与外部数据源和工具之间的无缝集成。

因为允许LLM访问和利用外部资源,它的功能性和实用性都会大大增强。

无论是构建AI驱动的IDE、聊天界面,还是创建自定义的AI工作流,MCP都提供了一种标准化的方式,来连接LLM与它们所需的上下文。

现在,AI大模型已经得到了大量投资,推理和性能都取得了飞速进步。但我们为何很难看到一款杀手级的AI主流应用?

其中一个重要原因,就是即使是最先进的模型,也会因为受制于传统系统和信息流的低集成度,从而难以获取多种数据,陷入信息孤岛。

因为每个新的数据源,都需要定制化的集成,就导致真正的互联系统难以扩展。

但如今MCP的诞生,彻底击碎了这个痛点!

简单配置一下,MCP就能让Claude直接连接GitHub,创建仓库了,一套操作非常丝滑炸裂。

向Claude发送指令:

创建一个简单的HTML页面

创建名为simple-page的仓库

将HTML页面推送到simple-page仓库

向HTML页面添加一些CSS样式,然后将其推送上去

提交一个问题,在HTML页面上添加更多内容

现在创建一个名为feature的分支,并修复此问题,然后推送更改

针对main分支提交拉取请求,包含这些更改

获取对于git的操作权限后,Claude在中间几个步骤经过了重复尝试,除最后一步以外,完美完成了作者的要求。

核心架构

MCP的核心遵循客户端-服务器架构,其中多个服务可以连接到任何兼容的客户端。

其中Host主机是启动连接的LLM应用程序(如Claude Desktop或IDE),客户端在主机应用程序内与服务器保持1V1连接,服务器则向客户端提供上下文、工具和提示。

具体来说,客户端是Claude Desktop、IDE或AI工具等应用程序,服务器则是公开数据源的轻型适配器。

客户端和服务器之间的连接,是通过stdio或SSE等传输方式建立的。传输层处理消息成帧、传递和错误处理。

MCP的强大之处在于,它通过相同的协议同时处理本地资源(数据库、文件、服务)和远程资源(Slack或GitHub等API)。

目前,MCP仅在本地受支持,服务器必须在自己的计算机上运行。

但是,Anthropic正在通过企业级身份验证构建远程服务器支持,以便团队可以在整个组织中安全地共享其上下文来源。

Anthropic的目标就是,构建一个AI通过单一、优雅的协议就能连接到任何数据源的世界,MCP就是其中的通用转换器。

只要将MCP集成到客户端一次,就可以连接到任何地方的数据源。

一次构建,让AI无处不在

AI时讯初创CEO Rowan Cheung认为,MCP对于大模型来说至关重要。

当前,大模型是一个拥有博士水平级别的推理引擎,却会被诸如「明天的天气会是什么样的」或「我今天的日程安排是什么」之类的问题难住。

解决这一问题良策,便是提供所需的上下文。(即回答特定用户问题所需的特定数据)。

这很重要,因为引擎的趋势是蒸馏:让模型更小以适应用户延迟窗口,但会导致「知识」丢失。

如今,各大AI公司都在尝试不同的方法:

谷歌依赖于自己的内部服务:搜索、Gmail、日历

微软正在尝试使用其安全的Office Copilot应用程序获取企业用户上下文

苹果试图通过隐私保护继续获取用户上下文,同时允许访问ChatGPT进行高级查询

OpenAI已经尝试了GPT,现在正在尝试通过ChatGPT桌面应用程序连接应用程序。ChatGPT的愿景是通过屏幕共享控制用户桌面。

Anthropic与OpenAI的处境类似,因为他们没有现成的用户上下文。

他们的解决方案似乎是,提供一个干净的协议,通过该协议,任何网站,API或系统资源都可以被任何AI访问。

也就意味着,构建一次,让AI无处不在。

专注AI原生平台Ada CEO Mike Murchison深入分析了MCP三个重要影响:

应用集成护城河正被削弱。随着AI模型能够原生接入第三方数据源,应用程序之前建立的独特数据集成优势正在消失

前沿模型在「预集成」到各种内容商店能力上展开竞争。未来,各大AI模型会竞相提供与不同内容库的原生连接能力

将会看到前沿AI模型与特定数据源公司建立独家的合作关系

世界首个工程师Cognition创始人表示,统一的界面是向扩展无处不在的智能体迈出的一大步。

还有人表示,当AI与我们的工具无缝集成时,感觉AGI快要来了。

Block首席技术官Dhanji R. Prasanna说:「像模型上下文协议这样的开放技术,是连接人工智能与现实世界应用的桥梁,确保了创新的可及性、透明性和协作性。我们很高兴能在协议上进行合作,并利用它来构建智能体系统,从而消除机械性工作的负担,让人们可以专注于创意。」

创建Server代码

我们可以利用MCP Python SDK来轻松创建具有MCP能力的服务器与客户端,实现相应的功能。

例如,下述代码就是结合MCP Python SDK实现了服务器的搭建。

# /// script# dependencies = [# "mcp"# ]# ///from mcp.server import Server, NotificationOptionsfrom mcp.server.models import InitializationOptionsimport mcp.server.stdioimport mcp.types as types# Create a server instanceserver = Server("example-server")# Add prompt capabilities@server.list_prompts()async def handle_list_prompts() -> list[types.Prompt]: return [ types.Prompt( name="example-prompt", description="An example prompt template", arguments=[ types.Promptargument( name="arg1", description="Example argument", required=True ) ] ) ]@server.get_prompt()async def handle_get_prompt( name: str, arguments: dict[str, str] | None) -> types.GetPromptResult: if name != "example-prompt": raise ValueError(f"Unknown prompt: {name}") return types.GetPromptResult( description="Example prompt", messages=[ types.PromptMessage( role="user", content=types.TextContent( type="text", text="Example prompt text" ) ) ] )async def run(): # Run the server as STDIO async with mcp.server.stdio.stdio_server() as (read_stream, write_stream): await server.run( read_stream, write_stream, InitializationOptions( server_name="example", server_version="0.1.0", capabilities=server.get_capabilities( notification_options=NotificationOptions(), experimental_capabilities={}, ) ) )if __name__ == "__main__": import asyncio asyncio.run(run())

工作流程

作者给出了一个案例:利用MCP实现Claude Desktop访问查询本地SQLite数据库,来说明整体的交互工作流程。

实现效果

这个例子中使用MCP与Claude Desktop交互时的具体流程如下:

Claude Desktop在启动时连接到用户配置的MCP服务器

Claude Desktop确定哪个MCP服务器可以提供帮助,本例中就是SQLite

通过协议来确定功能的实现方式

从MCP服务器(SQLite)请求数据或操作

交互流程

网友自主搭建

Claude研究人员在短短5分钟内,使用MCP就将Claude和搜索引擎连接起来。

EverArt AI的创始人创建一个server,使用自家平台API去让Claude生成图像。这个server可以访问其帐户上所有可用的图像模型。

要求Claude通过使用EverArt和Flux模型,生成一张美丽的家的图片,它会调用本地mcp-server-everart,然后弹出一个「是否允许」界面。

同意之后,它会立即生成出一张符合要求的图片。

再比如,创建一副35mm镜头拍摄的飞船登陆火星的照片。

另有开发者搭建了一个YouTube MCP server,直接能让Claude下载YouTube字幕,并通过yt-dlp进行总结。