MCP 课程文档

MCP 客户端

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

MCP 客户端

现在我们对模型上下文协议有了基本了解,我们可以探索 MCP 客户端在模型上下文协议生态系统中的重要作用。

在单元 1 的这一部分,我们将探讨 MCP 客户端在模型上下文协议生态系统中的重要作用。

在本节中,您将

  • 了解 MCP 客户端及其在 MCP 架构中的作用
  • 了解 MCP 客户端的关键职责
  • 探索主要的 MCP 客户端实现
  • 了解如何使用 Hugging Face 的 MCP 客户端实现
  • 查看 MCP 客户端使用的实际示例

在本页中,我们将展示如何使用 JSON 表示法以几种不同方式设置 MCP 客户端的示例。目前,我们将使用 示例,如 path/to/server.py 来表示 MCP 服务器的路径。在下一个单元中,我们将使用真实的 MCP 服务器来实现这一点。

目前,请专注于理解 MCP 客户端表示法。我们将在下一个单元中实现 MCP 服务器。

理解 MCP 客户端

MCP 客户端是关键组件,充当 AI 应用程序(主机)与 MCP 服务器提供的外部功能之间的桥梁。将主机视为您的主应用程序(如 AI 助手或 IDE),将客户端视为该主机内负责处理 MCP 通信的专门模块。

用户界面客户端

让我们从探索 MCP 可用的用户界面客户端开始。

聊天界面客户端

Anthropic 的 Claude Desktop 是最著名的 MCP 客户端之一,它提供了与各种 MCP 服务器的集成。

交互式开发客户端

Cursor 的 MCP 客户端实现通过与代码编辑功能的直接集成,实现了 AI 驱动的编码辅助。它支持多个 MCP 服务器连接,并在编码过程中提供实时工具调用,使其成为开发人员的强大工具。

Continue.dev 是另一个交互式开发客户端的例子,它支持 MCP 并从 VS Code 连接到 MCP 服务器。

配置 MCP 客户端

现在我们已经涵盖了 MCP 协议的核心内容,接下来我们来看看如何配置 MCP 服务器和客户端。

有效部署 MCP 服务器和客户端需要正确的配置。

MCP 规范仍在不断发展,因此配置方法也会随之演变。我们将重点介绍当前的最佳配置实践。

MCP 配置文件

MCP 主机使用配置文件来管理服务器连接。这些文件定义了哪些服务器可用以及如何连接到它们。

幸运的是,配置文件非常简单,易于理解,并且在主要的 MCP 主机中保持一致。

mcp.json 结构

MCP 的标准配置文件名为 mcp.json。以下是其基本结构

这是 mcp.json 的基本结构,可以传递给 Claude Desktop、Cursor 或 VS Code 等应用程序。

{
  "servers": [
    {
      "name": "Server Name",
      "transport": {
        "type": "stdio|sse",
        // Transport-specific configuration
      }
    }
  ]
}

在此示例中,我们有一个具有名称和传输类型的服务器。传输类型可以是 stdiosse

stdio 传输配置

对于使用 stdio 传输的本地服务器,配置包括启动服务器进程的命令和参数

{
  "servers": [
    {
      "name": "File Explorer",
      "transport": {
        "type": "stdio",
        "command": "python",
        "args": ["/path/to/file_explorer_server.py"] // This is an example, we'll use a real server in the next unit
      }
    }
  ]
}

这里,我们有一个名为“文件浏览器”的服务器,它是一个本地脚本。

HTTP+SSE 传输配置

对于使用 HTTP+SSE 传输的远程服务器,配置包括服务器 URL

{
  "servers": [
    {
      "name": "Remote API Server",
      "transport": {
        "type": "sse",
        "url": "https://example.com/mcp-server"
      }
    }
  ]
}

配置中的环境变量

可以使用 env 字段将环境变量传递给服务器进程。以下是如何在服务器代码中访问它们的方法

Python
JavaScript

在 Python 中,我们使用 os 模块访问环境变量

import os

# Access environment variables
github_token = os.environ.get("GITHUB_TOKEN")
if not github_token:
    raise ValueError("GITHUB_TOKEN environment variable is required")

# Use the token in your server code
def make_github_request():
    headers = {"Authorization": f"Bearer {github_token}"}
    # ... rest of your code

mcp.json 中的相应配置将如下所示

{
  "servers": [
    {
      "name": "GitHub API",
      "transport": {
        "type": "stdio",
        "command": "python",
        "args": ["/path/to/github_server.py"], // This is an example, we'll use a real server in the next unit
        "env": {
          "GITHUB_TOKEN": "your_github_token"
        }
      }
    }
  ]
}

配置示例

让我们看一些实际的配置场景

场景 1:本地服务器配置

在此场景中,我们有一个本地服务器,它是一个 Python 脚本,可以是一个文件浏览器或一个代码编辑器。

{
  "servers": [
    {
      "name": "File Explorer",
      "transport": {
        "type": "stdio",
        "command": "python",
        "args": ["/path/to/file_explorer_server.py"] // This is an example, we'll use a real server in the next unit
      }
    }
  ]
}

场景 2:远程服务器配置

在此场景中,我们有一个远程服务器,它是一个天气 API。

{
  "servers": [
    {
      "name": "Weather API",
      "transport": {
        "type": "sse",
        "url": "https://example.com/mcp-server" // This is an example, we'll use a real server in the next unit
      }
    }
  ]
}

正确的配置对于成功部署 MCP 集成至关重要。通过理解这些方面,您可以在 AI 应用程序和外部功能之间建立健壮可靠的连接。

在下一节中,我们将探索 Hugging Face Hub 上可用的 MCP 服务器生态系统,以及如何将您自己的服务器发布到那里。

微型代理客户端

现在,让我们探讨如何在代码中使用 MCP 客户端。

您还可以使用微型代理作为 MCP 客户端,直接从代码连接到 MCP 服务器。微型代理提供了一种简单的方法来创建可以使用 MCP 服务器工具的 AI 代理。

微型代理可以通过命令行环境运行 MCP 服务器。为此,我们需要安装 npm 并使用 npx 运行服务器。Python 和 JavaScript 都需要这些。

让我们使用 npm 安装 npx。如果您没有安装 npm,请查看 npm 文档

设置

首先,如果您没有安装 npx,则需要安装它。您可以使用以下命令进行安装

# install npx
npm install -g npx

然后,我们需要安装支持 MCP 的 huggingface_hub 包。这将允许我们运行 MCP 服务器和客户端。

pip install "huggingface_hub[mcp]>=0.32.0"

然后,我们需要登录到 Hugging Face Hub 才能访问 MCP 服务器。您可以使用 huggingface-cli 命令行工具完成此操作。您需要一个登录令牌才能执行此操作。

huggingface-cli login
Python
JavaScript

连接到 MCP 服务器

现在,让我们创建一个代理配置文件 agent.json

{
    "model": "Qwen/Qwen2.5-72B-Instruct",
    "provider": "nebius",
    "servers": [
        {
            "type": "stdio",
            "config": {
                "command": "npx",
                "args": ["@playwright/mcp@latest"]
            }
        }
    ]
}

在此配置中,我们正在使用 @playwright/mcp MCP 服务器。这是一个可以使用 Playwright 控制浏览器的 MCP 服务器。

现在您可以运行代理

tiny-agents run agent.json

在下面的视频中,我们运行代理并要求它在浏览器中打开一个新标签页。

以下示例展示了一个网络浏览代理,它配置为通过 Nebius 推理提供商使用 Qwen/Qwen2.5-72B-Instruct 模型,并且它配备了一个 Playwright MCP 服务器,使其能够使用网络浏览器!代理配置通过指定其在 tiny-agents/tiny-agents Hugging Face 数据集中的路径进行加载。

当您运行代理时,您将看到它加载,列出它从连接的 MCP 服务器中发现的工具。然后,它已准备好接收您的提示!

此演示中使用的提示

在 Brave 搜索上进行 HF 推理提供商的网络搜索并打开第一个结果,然后给我 Hugging Face 支持的推理提供商列表

下一步

现在您已经了解了 MCP 客户端,您可以

  • 探索特定的 MCP 服务器实现
  • 了解如何创建自定义 MCP 客户端
  • 深入研究高级 MCP 集成模式

让我们继续我们探索模型上下文协议世界的旅程!

< > 在 GitHub 上更新