关于 Standardizing LLM Interaction with MCP Servers
这是一个简洁的 MCP 服务与客户端示例实现,演示 Tools、Resources 和 Prompts 的用法。适合希望学习 MCP 基本组件和 LLM 交互方式的开发者。
主要功能
- 01示例 MCP 服务实现
- 02简单的命令行客户端
- 03Tool 调用用于查询向量数据库
- 04Resource 选择以提供上下文
- 05Prompt 模板用于分析类工作流
适用场景
- 01学习 MCP 服务的基本组件
- 02构建基于 ChromaDB 的知识库问答示例
- 03了解客户端与服务之间的交互模式
MCP 相关
该项目包含 MCP 服务 mcp_server.py 和命令行客户端 client.py,服务端暴露 Tools、Resources 和 Prompts 三类能力。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
使用 MCP 服务标准化大模型交互
模型上下文协议(Model Context Protocol,简称 MCP)是一项开放协议,用于标准化应用程序向大模型提供上下文的方式。换句话说,它为基于大模型的应用程序提供了一个统一框架,用于连接数据源、获取上下文、使用工具并执行标准提示词。
MCP 生态系统包含三个特定组件:
-
MCP 服务负责:工具可用性(公开可用的函数)、工具执行(在收到请求时运行这些函数)、作为资源的静态内容(提供可供引用的数据)、预设提示词(用于常见任务的标准化模板)
-
客户端负责管理:与服务的连接、大模型集成、组件间的消息传递
-
主机提供:前端界面、向用户展示 MCP 功能、整个生态系统的集成点
这种架构创建了一个模块化系统,不同组件可以独立开发,同时保持互操作性。这样一来,用户就可以针对不同的大模型相关功能创建 MCP 服务,并在各种受支持的应用程序中即插即用。MCP 常用于集成服务 API 和工具,或连接到自己设备上的本地数据源。
MCP 服务组件
MCP 服务通过定义明确的接口公开标准化功能,构成了该协议的基础。主机和客户端随后可以使用协议标准连接到这些服务,但如何向用户呈现这些功能仍然灵活开放,由开发者决定。这意味着具体实现和用户体验完全取决于开发者——无论是通过命令行界面、图形应用程序,还是嵌入更大型的系统中。
在本指南中,我们将重点介绍如何构建一个具备核心功能的示例 MCP 服务,并实现一个简单的客户端来演示交互模式。首先,让我们了解 MCP 服务的主要组件:
工具
工具是大模型可以调用以执行操作或检索信息的函数。每个工具都由以下内容定义:
{
name: string; // Unique identifier for the tool
description?: string; // Human-readable description
inputSchema: { // JSON Schema for the tool's parameters
type: "object",
properties: { ... } // Tool-specific parameters
}
}
工具允许大模型与外部系统交互、执行代码、查询数据库或进行计算。它们代表会产生影响或计算出新信息的操作。
资源
资源代表客户端应用程序可以访问的数据源。它们通过 URI 标识,可以包括:
{
uri: string; // Unique identifier for the resource
name: string; // Human-readable name
description?: string; // Optional description
mimeType?: string; // Optional MIME type
}
资源可以是静态的(例如配置文件),也可以是动态的(例如数据库记录或 API 响应)。它们无需调用函数即可向大模型提供上下文。
提示词
提示词是定义特定交互模式的可复用模板。它们使服务能够公开标准化的对话流程:
{
name: string; // Unique identifier for the prompt
description?: string; // Human-readable description
arguments?: [ // Optional list of arguments
{
name: string; // Argument identifier
description?: string; // Argument description
required?: boolean; // Whether argument is required
}
]
}
提示词有助于为常见任务创建一致、专用的交互方式,用户可以通过斜杠命令等 UI 元素调用它们。
注意:工具专为大模型交互而设计(类似于函数调用),而提示词和资源在 MCP 生态系统中承担不同的用途。提示词通常是由用户控制的模板,可通过斜杠命令等 UI 元素直接调用;资源则是由应用程序控制的数据源,可先呈现给用户以供选择,再纳入大模型上下文。
更多详情和其他功能,请参阅 MCP 官方文档
设置我们的示例
我们的 MCP 服务将展示工具、资源和提示词。核心概念是创建一个简单的知识库聊天机器人流程,实现以下功能:
- 让大模型使用工具查询向量数据库,以提供 RAG 响应
- 让用户选择现有资源以提供上下文
- 让用户执行标准提示词,以完成更复杂的分析工作流
上图展示的内容已在 mcp_server.py 中实现,并提供了对应的简单命令行客户端 client.py。
如需参考资料,请查看 MCP 的服务列表,其中包含官方集成和社区制作的服务。
设置与安装
- 克隆仓库
git clone https://github.com/ALucek/quick-mcp-example.git
cd quick-mcp-example
- 创建 ChromaDB 数据库
按照 MCP_setup.ipynb 中的说明创建向量数据库,并将 PDF 嵌入其中。
- 创建虚拟环境并安装软件包
# Using uv (recommended)
uv venv
source .venv/bin/activate # On macOS/Linux
# OR
.venv\Scripts\activate # On Windows
# Install dependencies
uv sync
- 运行客户端和服务端
python client.py mcp_server.py
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。