就在昨天,Anthropic发布了一项革命性的技术——模型上下文协议(Model Context Protocol,MCP)。
从此,LLM应用链接数据难的痛点,有望彻底解决。
我们不必再为每个数据源写定制的集成代码了,LLM应用的生态恐怕要颠覆!
这个名为MCP的开放协议,目标是实现LLM应用程序与外部数据源和工具之间的无缝集成。
因为允许LLM访问和利用外部资源,它的功能性和实用性都会大大增强。
无论是构建AI驱动的IDE、聊天界面,还是创建自定义的AI工作流,MCP都提供了一种标准化的方式,来连接LLM与它们所需的上下文。
现在,AI大模型已经得到了大量投资,推理和性能都取得了飞速进步。但我们为何很难看到一款杀手级的AI主流应用?
其中一个重要原因,就是即使是最先进的模型,也会因为受制于传统系统和信息流的低集成度,从而难以获取多种数据,陷入信息孤岛。
因为每个新的数据源,都需要定制化的集成,就导致真正的互联系统难以扩展。
但如今MCP的诞生,彻底击碎了这个痛点!
下面这个视频,给我们展示了MCP的惊人表现。
简单配置一下,MCP就能让Claude直接连接GitHub,创建仓库了,一套操作非常丝滑炸裂。
向Claude发送指令:
创建一个简单的HTML页面 创建名为simple-page的仓库 将HTML页面推送到simple-page仓库 向HTML页面添加一些CSS样式,然后将其推送上去 提交一个问题,在HTML页面上添加更多内容 现在创建一个名为feature的分支,并修复此问题,然后推送更改 针对main分支提交拉取请求,包含这些更改
核心架构
一次构建,让AI无处不在
谷歌依赖于自己的内部服务:搜索、Gmail、日历 微软正在尝试使用其安全的Office Copilot应用程序获取企业用户上下文 苹果试图通过隐私保护继续获取用户上下文,同时允许访问ChatGPT进行高级查询 OpenAI已经尝试了GPT,现在正在尝试通过ChatGPT桌面应用程序连接应用程序。ChatGPT的愿景是通过屏幕共享控制用户桌面。
应用集成护城河正被削弱。随着AI模型能够原生接入第三方数据源,应用程序之前建立的独特数据集成优势正在消失
前沿模型在「预集成」到各种内容商店能力上展开竞争。未来,各大AI模型会竞相提供与不同内容库的原生连接能力
将会看到前沿AI模型与特定数据源公司建立独家的合作关系
创建Server代码
# /// script
# dependencies = [
# "mcp"
# ]
# ///
from mcp.server import Server, NotificationOptions
from mcp.server.models import InitializationOptions
import mcp.server.stdio
import mcp.types as types
# Create a server instance
server = 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交互时的具体流程如下:
Claude Desktop在启动时连接到用户配置的MCP服务器
Claude Desktop确定哪个MCP服务器可以提供帮助,本例中就是SQLite
通过协议来确定功能的实现方式
从MCP服务器(SQLite)请求数据或操作
网友自主搭建
https://x.com/alxfazio/status/1861082314953892191
https://x.com/ScottWu46/status/1861130277675794700
https://x.com/rowancheung/status/1861149923007439253
https://modelcontextprotocol.io/quickstart
https://www.anthropic.com/news/model-context-protocol
想要了解更多资讯,请扫描下方二维码,关注机器学习研究会
转自:新智元