MCP,你的大模型USB通用接口

模型上下文协议:定义、兴起、应用与平台差异分析

引言

模型上下文协议(Model Context Protocol,简称MCP)是一种开放协议,旨在标准化应用程序向大型语言模型(Large Language Models,简称LLMs)提供上下文的方式 1。它如同一个通用接口,例如计算机上的USB-C端口,使得各种AI模型能够以统一的方式连接到不同的数据源和工具 4。通过提供标准化的连接方式,MCP简化了集成过程,增强了互操作性,并促进了AI应用的可扩展性 5

Gemini_Generated_Image_9usg1n9usg1n9usg

模型上下文协议出现的背景及广泛应用的原因

在MCP出现之前,将AI模型与外部数据源和工具集成通常需要为每个数据源构建定制化的连接器 2。这种方法不仅耗时,而且难以维护和扩展 2。即使是最先进的LLMs,也常常因为与实际数据的隔离而受到限制,无法获取最新的、特定领域的信息 2

Gemini_Generated_Image_f44bmnf44bmnf44b

模型上下文协议的出现正是为了解决这些问题。它提供了一个通用的、开放的标准,使得AI助手(MCP客户端)可以使用单一的协议来查询和检索来自任意来源的数据和上下文 6。MCP旨在取代过去零散的、临时的API连接器或自定义封装器,通过处理身份验证、使用策略和标准化数据格式,实现安全且标准化的连接 6。更重要的是,MCP旨在构建一个可重用或可复用的连接器(MCP服务器)生态系统,开发者只需构建一次,即可在多个LLMs和客户端之间重复使用,从而避免了重复开发相同集成的问题 6。(有点类似于鸿蒙的一次开发,多端部署)

由于其能够提供更相关的AI响应、统一的数据访问以及长期的可维护性,MCP被广泛应用 6。通过连接到实时数据,例如Google Drive文档、API文档、Slack消息或内部数据库,MCP有助于确保模型的回应是最新的、上下文丰富的并且是特定于领域的 6

如何搭建自己的模型上下文协议服务或使用别人的服务

搭建自己的MCP服务通常涉及以下步骤:

  1. 定义服务能力: 清晰地规划您的MCP服务器将提供的功能,例如访问特定数据源、执行特定操作等 4
  2. 选择编程语言: MCP提供了多种编程语言的SDK,包括Python、TypeScript、Java和Kotlin 5。选择最适合您项目需求和团队技能的语言。
  3. 设置开发环境: 安装必要的SDK和依赖项 5。例如,在Python环境中,可以使用pip等包管理器安装MCP SDK 5
  4. 实现服务器功能: 使用SDK定义服务器的行为,包括创建处理客户端请求、处理数据和返回响应的函数 5。这通常涉及到定义“工具”(可以执行的操作)和“资源”(可以访问的数据) 6
  5. 处理协议通信: 确保您的服务器正确地实现了MCP的通信协议,包括消息格式化、错误处理和能力协商 5
  6. 选择传输方式: MCP支持本地(stdio)或远程(Server-Sent Events/WebSockets)传输方式 3。根据您的需求选择合适的传输方式。
  7. 配置服务器: 根据所选的传输方式配置服务器,例如stdio服务器需要定义执行命令,而SSE服务器需要设置URL端点 3
  8. 注册服务器: 将您的MCP服务器注册到相应的MCP客户端(例如Claude Desktop或Cursor)中,以便AI模型可以发现和使用它 3

要使用别人的MCP服务,您通常需要在支持MCP的AI客户端应用程序中配置这些服务。这通常涉及到提供服务器的连接信息,例如命令(对于stdio传输)或URL(对于SSE传输) 3。一些平台还提供了预构建的MCP服务器,可以直接安装和使用 2

Gemini_Generated_Image_6qswmd6qswmd6qsw

Python如何实现模型上下文协议的搭建以及和大模型的交互

Python是搭建MCP服务器的常用语言之一,官方提供了Python SDK 10。以下是一个使用Python SDK搭建简单MCP服务器的示例,该服务器提供一个用于获取天气警报和预报的工具 6

from mcp.server.fastmcp import FastMCP
import httpx

mcp = FastMCP("weather")

@mcp.tool()
async def get_alerts(state: str) -> str:
    """获取美国州的天气警报。"""
    # ... 调用weather.gov,解析数据,返回格式化的警报 ...
    return "当前天气警报..."

@mcp.tool()
async def get_forecast(latitude: float, longitude: float) -> str:
    """获取某个位置的天气预报。"""
    # ... 调用weather.gov,解析数据,返回预报 ...
    return "预报数据..."

if __name__ == "__main__":
    mcp.run(transport='stdio')

在这个例子中,FastMCP​ 类用于初始化服务器,@mcp.tool()​ 装饰器用于定义可以被LLM调用的工具函数。每个工具函数都有一个名称、描述和参数类型。mcp.run(transport='stdio')​ 启动了一个通过标准输入输出进行通信的本地服务器。

与大模型的交互通常由实现了MCP客户端的主机应用程序(例如Claude Desktop或Cursor)来处理。当用户向AI模型提出需要外部数据或工具的问题时,MCP客户端会首先向注册的MCP服务器查询其提供的能力(工具、资源、提示模板) 8。然后,用户的查询和服务器的能力描述会被发送给AI模型。模型会分析查询和可用的MCP工具/资源,并决定是否需要使用它们。如果需要,模型会以结构化的方式指示要使用的工具和参数 8。MCP客户端接收到模型的请求后,会调用相应的MCP服务器上的工具,并将结果返回给模型,最终模型会结合自身知识和外部信息生成回复 8

虽然以上示例侧重于Python服务器端的实现,但Python SDK也支持构建MCP客户端以连接到远程服务器 10。客户端可以发现服务器提供的工具和资源,并发送请求来执行这些工具和检索资源 8

模型上下文协议使用的通用协议及各大模型平台之间的区别

模型上下文协议本身定义了一套标准的通信规则和数据格式,它构建在底层的传输协议之上。MCP支持多种传输协议,最常见的包括:

  • 标准输入输出 (stdio): 这是一种本地传输方式,服务器作为子进程在本地机器上运行,并通过标准输入和输出与客户端通信 3。这种方式简单易用,适用于本地开发和集成。
  • 服务器发送事件 (Server-Sent Events,SSE): 这是一种基于HTTP的协议,允许服务器向客户端推送事件 3。MCP可以使用SSE进行远程通信,服务器可以在本地或远程运行,并通过网络与客户端通信。

在各大模型平台之间,对MCP的支持程度和实现方式存在一些区别:

  • Anthropic Claude: 作为MCP的创始者,Anthropic在其Claude生态系统中提供了最深度的集成 2。Claude Desktop应用程序原生支持MCP服务器的配置和使用 2。Claude 3.5 Sonnet模型能够快速构建MCP服务器实现 2。Anthropic还提供了许多预构建的MCP服务器,用于连接常见的企业系统 2
  • OpenAI: OpenAI本身并没有像Anthropic那样提供直接的MCP支持,但MCP的核心理念与OpenAI的函数调用功能高度一致 15。MCP定义的标准化工具和模式可以潜在地转换为OpenAI的函数调用模式 21。一些社区项目,例如langchain-mcp-adapters​,旨在弥合这一差距,使得可以使用MCP服务器与LangChain代理进行交互,而LangChain又可以与OpenAI模型协同工作 11
  • Google Vertex AI: 类似于OpenAI,Google Vertex AI为其Gemini模型提供了函数调用能力 27。MCP的开放标准有可能被采用,以增强Gemini与外部数据源和工具的集成 2。值得注意的是,Vertex AI的模型库中包含了Anthropic的Claude模型,这暗示了MCP在Google Cloud AI生态系统中潜在的集成或共存 27。一些示例也展示了在Vertex AI上托管的LLMs使用MCP服务器的情况 21
  • Microsoft Azure AI: Azure AI在其OpenAI服务中也提供了函数调用功能 28。微软的Semantic Kernel SDK已经展示了使用mcpdotnet​库集成MCP工具的能力 29。这使得Azure AI模型能够利用MCP服务器来访问外部数据和功能 29

下表总结了主要LLM平台对MCP的支持情况:

功能/平台 Anthropic Claude OpenAI Google Vertex AI Microsoft Azure AI (通过 Semantic Kernel)
原生MCP支持 否 (通过函数调用间接支持) 否 (通过函数调用间接支持) 是 (通过 Semantic Kernel)
预构建MCP服务器 社区驱动的适配器 潜在 是 (通过mcpdotnet​)
函数调用对齐
SDK集成 是 (官方) LangChain 适配器 潜在 是 (mcpdotnet​)

模型上下文协议的常见用例

模型上下文协议在各种应用场景中都展现出巨大的潜力:

  • 增强AI驱动的编码助手: Cursor等代码编辑器集成了MCP,可以直接查询数据库,访问项目配置,并与Notion和GitHub等工具集成 1。MCP使得IDE能够连接到文件系统、版本控制、包管理器和文档,从而提供更丰富的上下文感知 4。AI编码代理可以使用MCP服务器来创建PR、分支、查找代码和执行其他开发相关的任务 3
  • 构建用于任务自动化和工作流程集成的智能代理: MCP支持开发能够代表用户执行任务的AI代理,这些代理可以在不同的工具和数据集之间保持上下文 4。例如,旅行计划助手可以通过MCP服务器查询日历、预订航班和发送电子邮件 4。代理可以自动化涉及多个工具和数据源的复杂工作流程,例如,查询Git仓库、更新工单、在Slack中记录结果 6
  • 将LLMs连接到各种数据源: MCP使得LLMs能够通过专用的服务器直接查询数据库、访问知识库和与云存储服务交互 3。存在许多预构建的服务器,用于连接常见的数据源,如Google Drive、Notion和各种数据库 2。这使得LLMs能够基于最新的和相关的信息来生成响应,减少幻觉 6
  • 实际应用示例: 如果AI拥有文件系统MCP服务器的访问权限,用户可以询问“我的下载文件夹中有多少个文件?” 9。在对Git仓库进行更改后,AI代理可以自动更新工单管理系统 6。一个AI驱动的分析平台可以自主发现并与多个数据库和可视化工具进行交互 4

高级概念和考虑因素

实施MCP时,需要考虑一些高级概念和最佳实践,以确保安全、可扩展和可维护的解决方案。这包括:

  • 安全最佳实践: 实施适当的授权和身份验证机制,以防止未经授权地访问外部资源 5。比如客户端必须遵循OAuth 2.0最佳实践安全地存储令牌,服务器应强制执行令牌过期和轮换 5。实施细粒度的、以身份为中心的访问控制和自动数据分类,以确保安全性和合规性 5。所有授权端点都必须通过HTTPS提供服务,以防止数据被拦截 5
  • 管理授权和身份验证: 可以使用API密钥、OAuth等多种方法来管理MCP服务器的授权和身份验证。选择哪种方法取决于具体的安全需求和所连接的数据源的类型。
  • 可扩展性和可维护性: 对于基于MCP的解决方案,需要考虑服务器和客户端的可扩展性。构建模块化和可重用的MCP服务器有助于提高可维护性。
  • MCP在促进开放AI生态系统中的作用: 作为一种开放标准,MCP有望促进不同AI模型和数据源之间的互操作性,从而推动更开放和协作的AI生态系统的发展 2

结论

模型上下文协议代表了AI集成领域的一个重要进步。通过提供一个标准化的、开放的框架,MCP简化了LLMs与外部数据和工具的连接,从而提高了AI应用的性能、灵活性和可维护性。虽然各大模型平台对MCP的支持程度有所不同,但其核心理念正在被广泛接受和采纳。随着MCP生态系统的不断成熟和发展,我们可以期待看到更多创新性的AI应用涌现,这些应用能够更智能、更高效地解决现实世界中的问题。

文章有AI辅助生成,请注意辨别。

参考文章:

Works cited
  1. docs.cursor.com, accessed March 14, 2025, [https://docs.cursor.com/context/model-context-protocol#: :text=The%20Model%20Context%20Protocol%20(MCP,and%20tools%20through%20standardized%20interfaces.](https://docs.cursor.com/context/model-context-protocol#​::text=The%20Model%20Context%20Protocol%20(MCP,and%20tools%20through%20standardized%20interfaces.)
  2. Introducing the Model Context Protocol - Anthropic, accessed March 14, 2025, https://www.anthropic.com/news/model-context-protocol
  3. Model Context Protocol - Cursor, accessed March 14, 2025, https://docs.cursor.com/context/model-context-protocol
  4. What is Model Context Protocol (MCP)? How it simplifies AI integrations compared to APIs, accessed March 14, 2025, https://norahsakal.com/blog/mcp-vs-api-model-context-protocol-explained/
  5. Everything You Need to Know About the Model Context Protocol (MCP) from Anthropic, accessed March 14, 2025, https://medium.com/@glennlenormand/everything-you-need-to-know-about-the-model-context-protocol-mcp-from-anthropic-84acdb3c1a2f
  6. What is the Model Context Protocol (MCP)? - WorkOS, accessed March 14, 2025, https://workos.com/blog/model-context-protocol
  7. Model Context Protocol: Introduction, accessed March 14, 2025, https://modelcontextprotocol.io/introduction
  8. The Model Context Protocol (MCP) by Anthropic: Origins ... - Wandb, accessed March 14, 2025, https://wandb.ai/onlineinference/mcp/reports/The-Model-Context-Protocol-MCP-by-Anthropic-Origins-functionality-and-impact--VmlldzoxMTY5NDI4MQ
  9. Model Context Protocol (MCP) Explained: How to Give AI Access to Your Files, Web Searches & More - YouTube, accessed March 14, 2025, https://www.youtube.com/watch?v=nNLshWCoe0o
  10. Model Context Protocol · GitHub, accessed March 14, 2025, https://github.com/modelcontextprotocol
  11. Using LangChain With Model Context Protocol (MCP) | by Cobus Greyling | Mar, 2025, accessed March 14, 2025, https://cobusgreyling.medium.com/using-langchain-with-model-context-protocol-mcp-e89b87ee3c4c
  12. modelcontextprotocol/python-sdk: The official Python SDK ... - GitHub, accessed March 14, 2025, https://github.com/modelcontextprotocol/python-sdk
  13. modelcontextprotocol/servers: Model Context Protocol ... - GitHub, accessed March 14, 2025, https://github.com/modelcontextprotocol/servers
  14. Anthropic's Model Context Protocol (MCP) is way bigger than most people think - Reddit, accessed March 14, 2025, https://www.reddit.com/r/ClaudeAI/comments/1gzv8b9/anthropics_model_context_protocol_mcp_is_way/
  15. Model Context Protocol: What I've Learned So Far - YouTube, accessed March 14, 2025, https://www.youtube.com/watch?v=xyVTbv209a4
  16. Building a Model Context Protocol (MCP) server for Discord - Speakeasy, accessed March 14, 2025, https://www.speakeasy.com/post/build-a-mcp-server-tutorial
  17. Get Started With The Model Context Protocol // 2-Minute Tutorial - YouTube, accessed March 14, 2025, https://www.youtube.com/watch?v=MC2BwMGFRx4
  18. Model Context Protocol (MCP Server) Python & Java - YouTube, accessed March 14, 2025, https://www.youtube.com/watch?v=EAkVaBDnTMw
  19. Building a Model Context Protocol (MCP) server - YouTube, accessed March 14, 2025, https://www.youtube.com/watch?v=kvDNeFmxftI
  20. The Model Context Protocol (MCP) Explained (and one cool code example.) - YouTube, accessed March 14, 2025, https://www.youtube.com/watch?v=5ZWeCKY5WZE
  21. Unlocking the Power of Anthropic Model Context Protocol: Integrate Google Gemini & Open LLMs - Searce, accessed March 14, 2025, https://blog.searce.com/unlocking-the-power-of-anthropic-model-context-protocol-integrate-google-gemini-open-llms-5366baa5c863
  22. Unlocking the Future of LLMs: Understanding Anthropic's Model Context Protocol (MCP), accessed March 14, 2025, https://medium.com/@nnai/unlocking-the-future-of-llms-understanding-anthropics-model-context-protocol-mcp-8e2cf9ddc61c
  23. I made MCP (Model Context Protocol) alternative solution, for OpenAI and all other LLMs, that is cheaper than Anthropic Claude - DEV Community, accessed March 14, 2025, https://dev.to/samchon/i-made-mcp-model-context-protocol-alternative-solution-for-openai-and-all-other-llms-that-is-i7f
  24. OpenAI's Agents SDK and Anthropic's Model Context Protocol (MCP) - PromptHub, accessed March 14, 2025, https://www.prompthub.us/blog/openais-agents-sdk-and-anthropics-model-context-protocol-mcp
  25. Model Context Protocol (MCP) vs OpenAI's “Work with Apps” | by Hariharan Eswaran, accessed March 14, 2025, https://medium.com/@hariharan.eswaran/model-context-protocol-mcp-vs-openais-work-with-apps-7e84f37b7a92
  26. Using the Model Context Protocol with Quarkus+LangChain4j, accessed March 14, 2025, https://quarkus.io/blog/quarkus-langchain4j-mcp/
  27. Overview of Generative AI on Vertex AI - Google Cloud, accessed March 14, 2025, https://cloud.google.com/vertex-ai/generative-ai/docs/overview
  28. Model Context Protocol (MCP) :: Spring AI Reference, accessed March 14, 2025, https://docs.spring.io/spring-ai/reference/api/mcp/mcp-overview.html
  29. Integrating Model Context Protocol Tools with Semantic Kernel: A Step-by-Step Guide, accessed March 14, 2025, https://devblogs.microsoft.com/semantic-kernel/integrating-model-context-protocol-tools-with-semantic-kernel-a-step-by-step-guide/
Logo

欢迎加入 MCP 技术社区!与志同道合者携手前行,一同解锁 MCP 技术的无限可能!

更多推荐