Integrations
Enables querying a vector database for RAG (Retrieval Augmented Generation) responses, allowing the LLM to retrieve information from stored knowledge base documents.
Implements tools for executing code and performing calculations, allowing the LLM to run Python functions to retrieve or process information.
标准化 LLM 与 MCP 服务器的交互
模型上下文协议 (MCP) 是一个开放协议,它规范了应用程序向 LLM 提供上下文的方式。换句话说,它为基于 LLM 的应用程序提供了一个统一的框架,用于连接数据源、获取上下文、使用工具以及执行标准提示。
MCP 生态系统概述了三个具体组成部分:
- MCP 服务器处理:工具可用性(公开可用的功能)、工具执行(在请求时运行这些功能)、静态内容作为资源(提供可引用的数据)、预设提示(常见任务的标准化模板)
- 客户端管理:与服务器的连接、LLM 集成、组件之间的消息传递
- 主机提供:前端接口、向用户展示 MCP 功能、整个生态系统的集成点
该架构创建了一个模块化系统,不同的组件可以独立开发,同时保持互操作性。这使得用户可以为不同的 LLM 相关功能创建 MCP 服务器,并在各种受支持的应用程序上实现即插即用。它通常用于集成服务 API 和工具,或连接到您自己机器上的本地数据源。
MCP 服务器组件
MCP 服务器通过定义明确的接口提供标准化功能,构成了该协议的基础。主机和客户端可以使用协议标准连接到这些服务器,但这些功能如何呈现给用户仍然灵活且对开发者开放。这意味着实际的实现和用户体验完全取决于开发者——无论是通过命令行界面、图形应用程序,还是嵌入到更大的系统中。
在本指南中,我们将重点构建一个具有核心功能的示例 MCP 服务器,并实现一个简单的客户端来演示交互模式。首先,我们来了解一下 MCP 服务器的主要组件:
工具
工具是 LLM 可以调用来执行操作或检索信息的函数。每个工具的定义如下:
工具允许 LLM 与外部系统交互、执行代码、查询数据库或进行计算。它们表示产生影响或计算新信息的操作。
资源
资源表示客户端应用程序可以访问的数据源。它们由 URI 标识,可以包括:
资源可以是静态的(例如配置文件),也可以是动态的(例如数据库记录或 API 响应)。它们为 LLM 提供上下文,而无需函数调用。
提示
提示符是定义特定交互模式的可重复使用模板。它们允许服务器公开标准化的对话流程:
提示有助于为常见任务创建一致的、专用的交互,允许用户通过斜线命令等 UI 元素调用它们。
注意:虽然工具是专门为 LLM 交互而设计的(类似于函数调用),但在 MCP 生态系统中,提示和资源的作用不同。提示通常是用户控制的模板,可以通过斜杠命令等 UI 元素直接调用;而资源是应用程序控制的数据源,可以在纳入 LLM 上下文之前呈现给用户选择。
更多详细信息和附加功能请参阅MCP 官方文档
设置我们的示例
我们的 MCP 服务器将重点介绍工具、资源和提示。其核心概念是创建一个简单的知识库聊天机器人流程,该流程将具有以下功能:
- 让 LLM 使用工具查询矢量数据库以获取 RAG 响应
- 让用户选择现有资源来提供上下文
- 让用户执行更复杂的分析工作流程的标准提示
上图是mcp_server.py中的实现,并在client.py中有一个相应的简单 CLI 客户端。
作为有用的资源,请查看MCP 的服务器列表以获取官方集成和社区制作的服务器。
设置和安装
- 克隆 Repo
- 创建 ChromaDB 数据库
按照MCP_setup.ipynb中的说明创建矢量数据库并将 pdf 嵌入其中。
- 创建虚拟环境并安装包
- 运行客户端和服务器