一、MCP 是什么?一个通俗的比喻

在深入技术细节前,我们先建立一个直觉。你可以把 MCP(Model Context Protocol) 想象成 “AI应用的USB接口”。当我们给电脑接U盘、键盘、摄像头时,我们不需要为每个设备安装不同的驱动,只需插上USB口。MCP 的目标与此类似:它为大语言模型(LLM) 定义了一套标准的“接口协议”,使得 LLM 能够安全、标准化地连接并使用各种外部工具、数据源和服务。

简而言之,MCP 是一个开放协议,它规范了 “AI应用(客户端)”“外部资源/工具(服务器)” 之间的通信语言和交互流程。这解决了 LLM 在实际应用中遇到的一个核心痛点:每个外部服务(如数据库、API、文件系统)都需要定制化的集成代码,导致开发复杂、生态割裂。

二、为什么需要 MCP?LLM 的“手和脚”

大语言模型本身是强大的“大脑”,擅长理解、推理和生成文本,但它缺少与真实世界交互的“手和脚”——也就是调用工具获取实时上下文的能力。在没有MCP之前,让一个AI助手查询今天的天气,你可能需要:

  1. 在应用层硬编码调用天气API的逻辑。
  2. 为不同的模型(GPT、Claude等)分别适配函数调用(Function Calling)格式。
  3. 管理API密钥、处理网络错误等繁重工作。

MCP 试图解决这种混乱局面。它带来的核心价值包括:

三、MCP 的核心架构与角色

MCP 的运作遵循一个清晰的 客户端-服务器(Client-Server) 模型,其中引入了 Host 这个关键角色。我们可以用一个实际例子来理解:假设你在使用一个集成MCP的AI聊天应用(如Claude Desktop)来查询本地的日程文件。

在这个例子中,流程是:你在聊天应用(Host)中说“帮我看看明天有什么安排”,应用内的LLM判断需要访问本地日程文件,于是通过对应的MCP客户端向 filesystem 服务器发起请求,服务器读取指定路径的日程文件并返回内容,最终由LLM整理后回答你。

四、如何实现一个简单的 MCP 服务器(以Python为例)

实现一个MCP服务器,就是遵循协议规范,将你的工具或资源“注册”并暴露出来。Python SDK 提供了简洁的语法。下面是一个极其简单的示例,它创建了一个提供“当前时间”工具的MCP服务器:

# 一个最简单的MCP服务器示例
import datetime
from mcp.server import Server
from mcp.types import Tool, TextContent

# 1. 创建服务器实例
server = Server("time-server")

# 2. 定义并注册一个“工具”
@server.tool()
async def get_current_time() -> str:
    """获取当前服务器的系统时间。这是一个简单的工具示例。"""
    current_time = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
    return f"当前时间是:{current_time}"

# 3. 主程序入口,启动服务器
if __name__ == "__main__":
    import asyncio
    from mcp.server.stdio import stdio_server

    async def main():
        async with stdio_server() as (read_stream, write_stream):
            await server.run(
                read_stream,
                write_stream,
                server.create_initialization_options()
            )

    asyncio.run(main())

关键点解析

  1. 我们使用 Server 类创建了一个服务器实例。
  2. 通过 @server.tool() 装饰器,将一个普通的Python异步函数 get_current_time 注册为一个MCP工具。装饰器会自动解析函数名、文档字符串(作为工具描述)和类型注解。
  3. 服务器通过 标准输入输出(stdio) 与客户端通信,这是一种简单且跨平台的本地通信方式。运行这个脚本,它就会作为一个独立的进程,等待MCP客户端的连接和调用。

五、关键概念详解:工具、资源与提示

理解MCP,需要厘清它向LLM暴露的三种核心能力:

六、总结与展望

MCP 协议的核心思想是为AI与外部世界的交互建立一套 “协议层”,这与HTTP为万维网建立通信标准、USB为外设建立连接标准异曲同工。它并非要取代现有的函数调用(Function Calling)机制,而是将其标准化、生态化

目前,MCP 主要由 Anthropic 推动,已在其产品 Claude Desktop 中集成。随着更多开发者加入生态,编写出各种功能的MCP服务器(如查询数据库的、操作云服务的、浏览网页的),我们正在见证一个 “AI工具开放市场” 的雏形。对于开发者而言,现在学习并实践MCP,就是为下一代AI原生应用的开发打下基础。

提示:MCP 仍在快速演进中。本文所述概念基于当前协议版本,建议在实践时参考 MCP 官方 GitHub 仓库 的最新规范和示例,以获取最准确的信息。