构建本地 MCP 客户端:包含完整的代码演练、说明
- AIGC
- 3天前
- 13热度
- 0评论
原文:https://blog.dailydoseofds.com/p/building-a-100-local-mcp-client
MCP 客户端是 AI 应用程序(如 Cursor)中的一个组件,它通过模型上下文协议 (MCP) 建立与外部工具和数据源的标准化连接。今天,让我们向您展示它是如何 100% 在本地构建的。技术栈:
- LlamaIndex 构建 MCP 支持的 Agent。
- Ollama 在本地为 Deepseek-R1 提供服务。
- 用于开发和托管的 LightningAI。
这是我们的工作流程:
- 用户提交查询。
- 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 客户端!