构建本地 MCP 客户端:包含完整的代码演练、说明

原文:blog.dailydoseofds.com/

 

MCP 客户端是 AI 应用程序(如 Cursor)中的一个组件,它通过模型上下文协议 (MCP) 建立与外部工具和数据源的标准化连接。今天,让我们向您展示它是如何 100% 在本地构建的。技术栈:

这是我们的工作流程:

  • 用户提交查询。
  • Agent 连接到 MCP 服务器以发现工具。
  • 根据查询,代理调用正确的工具并获取上下文
  • Agent 返回上下文感知响应。

构建 SQLite MCP Server

在这个演示中,我们构建了一个简单的 SQLite 服务器,其中包含两个工具:

  • 添加数据
  • 获取数据

这样做是为了让事情变得简单,但我们正在构建的客户端可以连接到任何 MCP 服务器。

设置 LLM

我们将使用通过 Ollama 提供的本地 Deepseek-R1 作为 MCP 驱动的代理的 LLM。

定义system prompt

我们定义了代理的指导说明,以便在回答用户查询之前使用工具。

请随意调整它以满足您的要求。

定义Agent

我们定义了一个函数,该函数使用其适当的参数构建一个典型的 LlamaIndex Agent。

传递给代理的工具是 MCP 工具,LlamaIndex 将其包装为本机工具,可供我们的 .FunctionAgent

定义Agent交互

我们将用户消息传递给具有共享 Context 的 FunctionAgent 以获取内存,流式传输工具调用,并返回其回复。我们在这里管理所有聊天记录和工具调用。

初始化 MCP 客户端和Agent

启动 MCP 客户端,加载其工具,并将它们包装为 LlamaIndex 中函数调用代理的本机工具。
然后,将这些工具传递给代理并添加上下文管理器。

运行Agent

最后,我们开始与我们的Agent交互,并从我们的 SQLite MCP 服务器访问这些工具。

如上图:

  • 当我们说“添加 Rafael Nadal...”之类的内容时,代理会理解意图,生成相应的 SQL 命令,并将数据存储在数据库中。INSERT
  • 当我们说 “fetch data” 时,它会运行 SELECT 查询并检索数据。
  • 然后,它以可读格式将结果返回给用户。

好了,我们已经建立了 100% 的本地 MCP 客户端!