暂时更新7节内容,剩余内容后续更新!!!
在这里插入图片描述

欢迎关注阿东玩AI

  1. 打造100% 本地 MCP客户端

MCP 客户端是 AI 应用程序(如 Cursor)中的一个组件,它通过模型上下文协议 (MCP) 建立与外部工具和数据源的标准化连接。

今天,让我们向您展示它是如何 100% 本地构建的。

技术栈:

  • LlamaIndex 构建由 MCP 驱动的代理。
  • Ollama 为 Deepseek-R1 提供本地服务。
  • LightningAI 用于开发和托管。

这是我们的工作流程:

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

代码可在以下 Studio 中找到:构建100% 本地 MCP 客户端。您可以通过复制以下环境运行它,无需任何安装。

在线构建演示:

https://www.youtube.com/watch?embeds_referring_euri=https%3A%2F%2Flightning.ai%2F&source_ve_path=Mjg2NjQsMTY0NTAz&v=SVACugFX_hM&feature=youtu.be

代码演练

本地 MCP 客户端实现

让我们来实现它吧!

构建 SQLite MCP 服务器

为了演示,我们使用两个工具构建了一个简单的 SQLite 服务器:

  • 添加数据
  • 获取数据

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

设置llm

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

定义系统提示符

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

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

定义代理

我们定义了一个函数,它使用适当的参数构建一个典型的 LlamaIndex 代理。

传递给代理的工具是 MCP 工具,LlamaIndex 将其包装为本机工具,以便我们轻松使用FunctionAgent

定义交互

我们将用户消息传递给我们的 FunctionAgent,并使用共享的 Context 进行内存、流工具调用,并返回其回复。

我们在这里管理所有的聊天记录和工具调用。

初始化 MCP 客户端和代理

启动 MCP 客户端,加载其工具,并将它们包装为 LlamaIndex 中函数调用代理的本机工具。

然后,将这些工具传递给代理并添加上下文管理器。

运行代理

最后,我们开始与代理交互并从 SQLite MCP 服务器访问工具。

如上图:

  • 当我们说“添加拉斐尔·纳达尔......”之类的话时,代理会理解意图,生成相应的 SQL INSERT命令,并将数据存储在数据库中。
  • 当我们说“获取数据”时,它会运行 SELECT 查询并检索数据。
  • 然后,它以可读的格式将结果呈现给用户。

就这样,我们已构建了 100% 本地 MCP 客户端!

  1. 由 MCP 驱动的 Agentic RAG

在下面的视频中,我们有一个 MCP 驱动的 Agentic RAG,它可以搜索矢量数据库并在需要时回退到网络搜索。

https://www.dailydoseofds.com/content/media/2025/04/Bright-data-Agentic-RAG-MCP.mp4

为了构建它,我们将使用:

  • Bright Data 可大规模抓取网页数据。
  • Qdrant 作为载体 DB。
  • Cursor 作为 MCP 客户端。
1) 启动 MCP 服务器

首先,我们定义一个具有主机 URL 和端口的 MCP 服务器。

2) Vector DB MCP 工具

通过 MCP 服务器公开的工具有两个要求:

  • 它必须用“工具”装饰器来装饰。
  • 它必须有一个清晰的文档字符串。

下面,我们有一个 MCP 工具来查询向量数据库。它存储了与机器学习相关的常见问题。

3)Web 搜索 MCP 工具

如果查询与机器学习无关,我们需要一个回退机制。

因此,我们借助 Bright Data 的 SERP API 进行网络搜索,从多个来源大规模抓取数据以获取相关上下文。

4) 将 MCP 服务器与 Cursor 集成

在我们的设置中,Cursor 是一个 MCP 主机/客户端,它使用 MCP 服务器公开的工具。

要集成 MCP 服务器,请转到设置 → MCP → 添加新的全局 MCP 服务器。

在 JSON 文件中,添加如下所示的内容👇

完成!您的本地 MCP 服务器已上线并连接到 Cursor 🚀!

它有两个 MCP 工具:

  • Bright Data 网络搜索工具可大规模抓取数据。
  • Vector DB搜索工具查询相关文档。

接下来我们与 MCP 服务器进行交互。

  • 当我们询问与 ML 相关的查询时,它会调用向量数据库工具。
  • 但是当我们提出一般查询时,它会调用 Bright Data 网络搜索工具从各种来源大规模收集网络数据。

当代理使用工具时,他们会遇到 IP 阻止、机器人流量、验证码解算器等问题。这会阻碍代理的执行。

为了解决这个问题,我们在这个演示中使用了 Bright Data。

在此处获取 API_KEY →

它可以让您:

  • 大规模抓取代理数据而不会受到阻碍。
  • 使用高级浏览器工具模拟用户行为。
  • 使用实时和历史网络数据构建 Agentic 应用程序。

在此 GitHub 仓库中查找代码: **MCP 实现仓库**。

  1. 构建基于 MCP 的财务分析师

技术栈:

  • CrewAI 用于多代理编排。
  • Ollama 将在当地为 DeepSeek-R1 LLM 提供服务。
  • Cursor 作为 MCP 主机。

系统概述:

  • 用户提交查询。
  • MCP 代理启动财务分析师团队。
  • 工作人员进行研究并创建可执行脚本。
  • 代理运行脚本来生成分析图。

代码演练

设置 LLM

我们将使用 Deepseek-R1 作为 LLM,并使用 Ollama 进行本地服务。

现在让我们来组建团队。

查询解析器代理

该代理接受自然语言查询并使用 Pydantic 提取结构化输出。

这保证了输入的干净和结构化,以便进一步处理!

代码编写代理

该代理编写 Python 代码,使用 Pandas、Matplotlib 和 Yahoo Finance 库来可视化股票数据。

代码执行器代理

该代理审查并执行生成的股票数据可视化 Python 代码。

它使用 CrewAI 的代码解释器工具在安全的沙盒环境中执行代码。

查看结果

一旦我们定义了代理商及其任务,我们就会成立并启动财务分析团队以获得下面显示的结果!

创建 MCP 服务器

现在,我们将财务分析师封装在 MCP 工具中,并添加另外两个工具来增强用户体验。

  • save_code -> 将生成的代码保存到本地目录
  • run_code_and_show_plot -> 执行代码并生成图表
将 MCP 服务器与 Cursor 集成

转到:文件 → 首选项 → 光标设置 → MCP → 添加新的全局 MCP 服务器。

在 JSON 文件中,添加如下所示的内容👇

完成了!我们的财务分析师 MCP 服务器已上线并连接到 Cursor!

您可以与它讨论股票数据,让它创建图表等。

  1. 由 MCP 驱动的语音Agent

今天,我们发布了另一个 MCP 演示,这是一个 MCP 驱动的语音代理,可以查询数据库并在需要时回退到网络搜索。

以下是技术栈:

我们走吧!

这是我们的工作流程:

  • 用户的语音查询通过AssemblyAI转录为文本。
  • 代理发现数据库和网络工具。
  • LLM 调用正确的工具,获取数据并生成响应。
  • 该应用程序通过文本转语音的方式提供响应。

让我们来实现它吧!

https://www.dailydoseofds.com/content/media/2025/06/assemblyAI-voice-agent.mp4

代码实现

初始化 Firecrawl 和 Supabase

我们实例化**Firecrawl以**启用网络搜索并启动我们的 MCP 服务器以向我们的代理公开 Supabase 工具。

定义网络搜索工具

我们使用 Firecrawl 搜索端点获取实时网页搜索结果。这为我们的代理提供了最新的在线信息。

获取 Supabase MCP 工具

我们通过 MCP 服务器列出我们的 Supabase 工具,并将它们每个包装为我们的代理的 LiveKit 工具。

构建代理

我们为代理设置了如何处理用户查询的指令。

我们还允许它访问之前定义的 Firecrawl 网络搜索和 Supabase 工具。

配置语音到响应流程
  • 我们使用 AssemblyAI Speech-to-Text 转录用户语音。
  • Qwen 3 LLM 由 Ollama 本地提供,调用正确的工具。
  • 通过 TTS 生成语音输出。
启动代理

我们连接到 LiveKit,以问候开始我们的会话,然后不断倾听和回应,直到用户停止。

完成了!我们基于 MCP 的语音代理已经准备就绪。

  • 如果查询与数据库相关,它会通过 MCP 工具查询 Supabase。
  • 否则,它会通过 Firecrawl 执行网络搜索。
  1. 构建 MCP 服务器以连接 200 多个数据源

组织数据无处不在 — Slack、Gmail、SQL、Drive 等等!

我们构建了一个可以连接200+个这样的数据源的MCP服务器,并且它是100%本地的。

我们的技术栈:

  • ** MindsDB**为我们的统一 MCP 服务器提供支持(GitHub 上 31k 颗星)。
  • Cursor 作为 MCP 主机。
  • Docker 自托管 MCP 服务器。

工作流程如下:

  • 用户提交查询
  • Agent 连接到 MindsDB MCP 服务器来查找工具
  • 代理根据用户查询选择合适的工具并调用它
  • 最后,它返回与上下文相关的响应

代码实现

Docker 设置

MindsDB 提供可以在 Docker 容器中运行的 Docker 镜像。

通过在终端中运行命令,使用 Docker 镜像在本地安装 MindsDB。

启动 MindsDB GUI

安装 Docker 镜像后,127.0.0.1:47334在浏览器中访问 MindsDB 编辑器。

通过此界面,您可以连接到 200 多个数据源并对它们运行 SQL 查询。

整合数据源

让我们通过将数据源连接到 MindsDB 来开始构建我们的联合查询引擎。

我们使用 Slack、Gmail、GitHub 和 Hacker News 作为我们的联合数据源。

将 MCP 服务器与 Cursor 集成

构建联合查询引擎后,让我们通过将数据源连接到 MindsDB 的 MCP 服务器来统一数据源。

转到:文件 → 首选项 → 光标设置 → MCP → 添加新的全局 MCP 服务器。

在 JSON 文件中,添加以下内容👇

完成了!我们的 MindsDB MCP 服务器已上线并连接到 Cursor!

MCP 服务器提供了两种工具:

  • list_databases:列出连接到 MindsDB 的所有数据源。
  • query:回答用户关于联合数据的查询。

除了 Claude 和 Cursor 之外,MindsDB MCP 服务器还可以与新的 OpenAI MCP 集成配合使用:

的用法list_databases如下所示。我们要求它列出所有可以访问的数据源,并检索我们之前连接的四个数据源:

下面是另一种用法,我们要求它列出可用的 Slack 频道。

虽然这很基础,但我们在顶部附带的视频中展示了更为复杂的用法。

  • 我们从 Hacker News 获取了信息。
  • 我们生成了所获取详细信息的格式良好的摘要,并将其作为消息发送给 Slack。
  • 我们要求 MCP 服务器从 Gmail 获取最新的电子邮件,它执行了以下操作:
  • 等等。

观看上面的视频来了解详细的演示。

您可以在 GitHub repo →

  1. 为 Claude Desktop 和 Cursor 构建共享内存

开发人员独立使用 Claude Desktop 和 Cursor,无需上下文共享或连接。

换句话说,Claude Desktop(一个 MCP 主机)无法看到您在 Cursor(另一个 MCP 主机)中所做的事情,反之亦然。

今天,我们将向您展示如何向 Claude Desktop 和 Cursor 添加通用内存层,以便您可以进行交叉操作而不会丢失上下文。

我们的技术栈:

工作流程如下:

  • 用户向 Cursor & Claude 提交查询。
  • 事实/信息使用 Graphiti MCP 存储在公共内存层中。
  • 如果任何交互中需要上下文,则会查询内存。
  • Graphiti 在多个主机之间共享内存。
Docker 设置

使用 Docker Compose 在本地部署 Graphiti MCP 服务器。此设置会使用服务器发送事件 (SSE) 传输启动 MCP 服务器。

上面的 Docker 设置包括一个 Neo4j 容器,它将数据库作为本地实例启动。

此配置允许您使用 Neo4j 浏览器预览查询和可视化知识图。

将 MCP 服务器连接到 Cursor

工具和服务器准备好后,让我们将其与 Cursor IDE 集成!

转到:文件 → 首选项 → 光标设置 → MCP → 添加新的全局 MCP 服务器。

在 JSON 文件中,添加如下所示的内容:

将 MCP 服务器与 Claude 连接起来

工具和服务器准备好后,让我们将其与我们的 Claude 桌面集成!

转到:文件 → 设置 → 开发人员 → 编辑配置。

在 JSON 文件中,添加如下所示的内容:

我们的 Graphiti MCP 服务器已上线并连接到 Cursor & Claude!

现在您可以与 Claude Desktop 聊天,共享事实/信息,将响应存储在内存中,并从 Cursor 中检索它们,反之亦然:

这样,您就可以通过单个 MCP 将 Claude 的见解直接传输到 Cursor 中。

总而言之,这里再次提供完整的工作流程供您参考。

  • 用户向 Cursor & Claude 提交查询。
  • 事实/信息存储在一个公共内存层中并从中检索。

内存层由 Graphiti MCP 提供支持。

虽然上述详细步骤应该对您有所帮助,但您可以在Graphiti MCP README 文件中找到详细的设置指南→

  1. MCP 驱动的 RAG 处理复杂文档

MCP 的可能性是无穷无尽的。

今天,让我们向您展示如何使用 MCP 为复杂文档的 RAG 应用程序提供支持。

为了给您提供更多视角,以下是我们的文档:

这是我们的技术栈:

工作原理如下:

  • 用户与 MCP 客户端(Cursor IDE)交互
  • 客户端连接到 MCP 服务器并选择一个工具。
  • 工具利用 GroundX 对文档进行高级搜索。
  • 客户端使用搜索结果来生成响应。

如果您想观看,我们在下面添加了一个视频:

实现细节

代码

现在,让我们深入研究代码!包含代码的 GitHub 仓库链接在本期稍后发布。

1)设置服务器

首先,我们使用 FastMCP 设置本地 MCP 服务器并提供一个名称。

2)创建GroundX客户端

GroundX 提供针对复杂现实世界文档的文档搜索和检索功能。您需要**在此获取并将**其存储在.env文件中。

完成后,请按照以下步骤设置客户端:

3)创建摄取工具

此工具用于将新文档引入知识库。

用户只需提供要摄取的文档的路径:

4)创建搜索工具

该工具利用 GroundX 的高级功能对复杂的真实世界文档进行搜索和检索。

实现方法如下:

5)启动服务器

使用标准输入/输出(stdio)作为传输机制启动 MCP 服务器:

6)连接到光标

在您的 Cursor IDE 中,请按照以下步骤操作:

  • 光标 → 设置 → 光标设置 → MCP

然后像这样添加并启动您的服务器:

完毕!

现在,您可以直接通过 Cursor IDE 与这些文档进行交互。

下面的视频演示了它的样子:

您可以**在此处测试→EyeLevel**

我们在所有复杂用例中使用 EyeLevel,因为他们构建了强大的企业级解析系统,可以直观地对相关内容进行分块并了解每个块中的内容,无论是文本、图像还是图表,如下所示:

{
  "target":"简单认识我",
  "selfInfo":{
       "genInfo":"大厂面试官,中科院硕士,从事数据闭环业务、RAG、Agent等,承担技术+平台的偏综合性角色。善于调研、总结和规划,善于统筹和协同,喜欢技术,喜欢阅读新技术和产品的文章与论文",
       "contactInfo":"abc061200x, v-adding disabled",
       "slogan":"简单、高效、做正确的事",
       "extInfo":"喜欢看电影、喜欢旅游、户外徒步、阅读和学习,不抽烟、不喝酒,无不良嗜好"
  } 
}
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐