test-my-mcpserver
测试 (cè shì)
README
使用 MCP 服务器标准化 LLM 交互
模型上下文协议 (Model Context Protocol, MCP) 是一个开放协议,用于标准化应用程序如何向 LLM 提供上下文。换句话说,它为基于 LLM 的应用程序提供了一个统一的框架,用于连接到数据源、获取上下文、使用工具和执行标准提示。
<img src="./media/mcp_arch.png" width=600>
MCP 生态系统概述了三个特定组件:
-
MCP 服务器处理:工具可用性(公开可用的功能)、工具执行(在请求时运行这些功能)、作为资源的静态内容(提供可以引用的数据)、预设提示(用于常见任务的标准化模板)
-
客户端管理:与服务器的连接、LLM 集成、组件之间的消息传递
-
主机提供:前端界面、向用户展示 MCP 功能、整体生态系统的集成点
这种架构创建了一个模块化系统,不同的组件可以独立开发,同时保持互操作性。这让用户可以为不同的 LLM 相关功能创建 MCP 服务器,然后在各种受支持的应用程序中即插即用。通常用于集成服务 API 和工具,或连接到您自己机器上的本地数据源。
MCP 服务器组件
MCP 服务器通过公开通过明确定义的接口公开标准化功能,构成了协议的基础。主机和客户端可以使用协议标准连接到这些服务器,但如何向用户呈现这些功能仍然是灵活的,并且对开发人员开放。这意味着实际的实现和用户体验完全取决于开发人员 - 无论是通过命令行界面、图形应用程序还是嵌入在更大的系统中。
在本指南中,我们将重点构建一个具有核心功能的示例 MCP 服务器,以及一个简单的客户端实现来演示交互模式。首先,让我们回顾一下 MCP 服务器的主要组件:
<img src="./media/core_comp.png" width=600>
工具
工具是 LLM 可以调用以执行操作或检索信息的函数。每个工具都定义为:
{
name: string; // 工具的唯一标识符
description?: string; // 人类可读的描述
inputSchema: { // 工具参数的 JSON Schema
type: "object",
properties: { ... } // 工具特定的参数
}
}
工具允许 LLM 与外部系统交互、执行代码、查询数据库或执行计算。它们代表具有效果或计算新信息的操作。
资源
资源表示客户端应用程序可以访问的数据源。它们由 URI 标识,可以包括:
{
uri: string; // 资源的唯一标识符
name: string; // 人类可读的名称
description?: string; // 可选的描述
mimeType?: string; // 可选的 MIME 类型
}
资源可以是静态的(如配置文件)或动态的(如数据库记录或 API 响应)。它们为 LLM 提供上下文,而无需函数调用。
提示
提示是定义特定交互模式的可重用模板。它们允许服务器公开标准化的对话流程:
{
name: string; // 提示的唯一标识符
description?: string; // 人类可读的描述
arguments?: [ // 可选的参数列表
{
name: string; // 参数标识符
description?: string; // 参数描述
required?: boolean; // 参数是否必需
}
]
}
提示有助于为常见任务创建一致的、专门构建的交互,允许用户通过诸如斜杠命令之类的 UI 元素来调用它们。
注意:虽然工具是专门为 LLM 交互而设计的(类似于函数调用),但提示和资源在 MCP 生态系统中具有不同的用途。提示通常是用户控制的模板,可以通过诸如斜杠命令之类的 UI 元素直接调用,而资源是应用程序控制的数据源,可以在包含在 LLM 上下文中之前呈现给用户以供选择。
更多详细信息和其他功能可以在 MCP 官方文档 中找到。
设置我们的示例
我们的 MCP 服务器将突出显示工具、资源和提示。核心概念是创建一个简单的知识库聊天机器人流程,它将具有以下功能:
- 让 LLM 使用工具查询向量数据库以获取 RAG 响应
- 让用户选择现有资源以提供上下文
- 让用户执行标准提示以进行更复杂的分析工作流程
<img src="./media/mcp_plan.png" width=600>
上面的图表是在 mcp_server.py 中实现的,并在 client.py 中有一个相应的简单 CLI 客户端。
作为一个有用的资源,请查看 MCP 的服务器列表,以获取官方集成和社区制作的服务器。
设置和安装
- 克隆存储库
git clone https://github.com/ALucek/quick-mcp-example.git
cd quick-mcp-example
- 创建 ChromaDB 数据库
按照 MCP_setup.ipynb 中的说明创建向量数据库并将 PDF 嵌入其中。
- 创建虚拟环境并安装软件包
# 使用 uv (推荐)
uv venv
source .venv/bin/activate # 在 macOS/Linux 上
# OR
.venv\Scripts\activate # 在 Windows 上
# 安装依赖项
uv sync
- 运行客户端和服务器
python client.py mcp_server.py
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。