模型上下文协议(Model Context Protocol,MCP) 是一个开放协议,它统一了应用程序向大语言模型(LLM)提供上下文的方式。简单来说,它为基于 LLM 的应用程序提供了一个统一的框架,用于连接数据源、获取上下文信息、使用工具以及执行标准提示语句。
MCP 生态系统定义了三个关键组件:
这种架构构建了一个模块化系统,允许不同组件独立开发,同时保持互操作性。这使用户能够构建针对不同 LLM 相关功能的 MCP 服务器,并在各种支持的应用程序中实现即插即用。MCP 常用于集成功能 API 和工具,或连接到本地数据源。
git clone https://github.com/ALucek/quick-mcp-example.git
cd quick-mcp-example
按照 MCP_setup.ipynb 中的说明,创建向量数据库并嵌入一个 PDF 文档。
# 使用 uv(推荐)
uv venv
source .venv/bin/activate # macOS/Linux
# 或者
.venv\Scripts\activate # Windows
# 安装依赖项
uv sync
python client.py mcp_server.py
{
name: string; // 工具的唯一标识符
description?: string; // 人类可读的描述
inputSchema: { // 工具参数的 JSON 模式
type: "object",
properties: { ... } // 工具特定参数
}
}
工具允许 LLM 与外部系统交互、执行代码、查询数据库或进行计算。它们代表具有效果或生成新信息的操作。
{
uri: string; // 资源的唯一标识符
name: string; // 人类可读的名称
description?: string; // 可选描述
mimeType?: string; // 可选 MIME 类型
}
资源可以是静态内容或动态生成的内容。MCP 支持多种数据格式,包括文本文件、PDF 文档和 JSON 数据。
MCP 服务器通过定义明确的接口公开标准化功能,构成了协议的基础。主机和客户端可以通过协议标准连接到这些服务器,但如何向用户呈现这些功能仍然灵活且完全由开发者决定。也就是说,实际的实现和用户体验可以完全根据开发者的意愿进行设计——无论是命令行界面、图形化应用程序还是嵌入在更大的系统中。
在此指南中,我们将重点构建一个示例 MCP 服务器,包含核心功能,并附带一个简单的客户端实现来演示交互模式。首先,让我们概述 MCP 服务器的主要组件:
工具是 LLM 可以调用的功能,用于执行操作或检索信息。每个工具的定义如下:
{
name: string; // 工具的唯一标识符
description?: string; // 人类可读的描述
inputSchema: { // 工具参数的 JSON 模式
type: "object",
properties: { ... } // 工具特定参数
}
}
工具允许 LLM 与外部系统交互、执行代码、查询数据库或进行计算。它们代表具有效果或生成新信息的操作。
资源表示可以被客户端应用程序访问的数据源。它们通过唯一标识符进行识别,包括:
{
uri: string; // 资源的唯一标识符
name: string; // 人类可读的名称
description?: string; // 可选描述
mimeType?: string; // 可选 MIME 类型
}
资源可以是静态内容或动态生成的内容。MCP 支持多种数据格式,包括文本文件、PDF 文档和 JSON 数据。
提示符定义了 LLM 的行为模式。它们允许客户端指定如何与 LLM 交互,例如:
通过 MCP,客户端可以灵活地配置 LLM 的行为,以满足具体应用场景的需求。
通过以上步骤,您可以快速搭建一个基于 MCP 协议的 LLM 交互系统。更多详细信息,请参考相关文档和示例代码。