📱

Get Our Mobile App

Take your business learning on the go!

Download on the App StoreGet it on Google Play

AI Dev Tools Zoomcamp 3.2 - MCP Demo (Context7 + Airflow + Copilot)

DataTalksClub ⬛11:32

Transcription

本次演示,我们将使用 VS Code。在 VS Code 中,您可以安装任何我们想要的 MCP 服务器。MCP 服务器可以在扩展(extensions)选项卡下找到。如果您输入 MCP 并按回车键,它将列出 VS Code 中所有可用的 MCP 服务器。现在,我已经安装了一些著名的。Contact 7 playrite,我认为 GitHub 也在那里。所有已安装的服务器都可以在此工具(tools)选项卡下找到。顶部可以看到所有内置工具,底部可以看到我已安装的所有其他 MCP 工具。这些都是 MCP 工具。现在我可以先停止使用所有这些工具。然后,我将要做一些称为管道设计(pipeline design)的事情。管道设计基本上就是这个。要运行这个管道,我需要收集 YouTube 数据,然后将其摄入数据库。为此,我正在使用我的 Android 本地设置,并且我将使用 Copilot 来为我创建这个管道。所以,让我们看一眼 Airflow UI。本地用户名将是 admin,它还会创建一个密码。我们将为此使用一个名为 Context 7 MCP 服务器的东西。Context 7 MCP 服务器在查找库及其文档方面非常出色。所以,当您使用一个模型时,它只有特定时间段的文档。如果您想要最新的文档,您可以使用 Context 7。现在,这里有一些我已启用 Context 7 的其他工具。所以,我将首先向您展示不使用任何工具是什么样子。我将只启用内置工具,并且我没有启用任何其他 MCP 工具,不是 Context 7 或任何东西。我将要求我的 Copilot 根据 DAG 文件夹下的管道规范创建一个 DAG。默认情况下,它应该知道它应该放在 DAG 文件夹下。所以,它将继续创建这个。它已经创建了文件。它应该开始编写。由于我非常了解 Airflow,我可以看到其中存在一些问题。首先是这个操作符导入路径,因为在 Python 3.0 及更高版本中,所有这些导入路径都已更改。我注意到的第二件事是这个 duct DB 路径。这实际上是可以的,但最好将其放入一个变量中并引入它,并且这是一个绝对错误的设计模式,它应该来自连接,然后我注意到的另一件事是这个 get topic,这个 get topic 不应该来自变量,而是在 DAG 中有一个称为 trigger param 的概念,您可以将参数传递给 DAG,以便在运行时提示用户提供输入。我稍后会展示这一点,但现在让我们给出这些说明来正确地更改它。有几种方法可以给出说明。一种是直接在这里输入。但另一种我非常喜欢做的方式是创建一个 github um.instructions 文件。如果我右键单击然后重命名,这基本上是您的 go.github 存储库,github 文件夹,它位于每个 git 存储库下,在 instructions 下,您可以创建这个名为 copilot.instructions.mmd 的文件。您也可以在此处设置(settings)和聊天说明(chat instructions)下创建这个 instructions.mmd,或者您也可以生成开始聊天说明(start chat instructions),或者您可以直接创建这个文件。所以现在我将此仅应用于 dag/star.py 下的所有文件。在这里我提到使用 Context 7 的最新 Airflow 文档。编写工作流时使用 Airflow 最佳实践。将任务拆分成单独的块,在进行设计时执行此操作,并在每次更改后使用此命令测试您编写的 DAG,然后当出现错误时修复它。现在,除了这个,我还需要非常具体地说明我指的是哪些最佳实践。对吧?所以这个文件您不必再次注入到这里。它将自动添加到 dag/byte 下的所有文件中。现在我将转到我的 MCP 服务器启用 Context 7,然后我将回到我的这个,DAG 文件,然后我将要求它具体化。根据最新文档修复导入路径。第二点,从连接中读取 YouTube API 密钥。现在在 Airflow 的 admin 下的 connections 中,您可以看到有一个 YouTube API 连接 ID 是 YouTube API。第三点,获取触发器,用于 topic,不要使用任务。它正在使用一个任务来获取这个 topic,而是使用 trigger params 在触发 DAG 之前提示用户。让我们注入这个。现在您可以看到它默认使用了 copilot 说明。我没有明确指定它。但有一件事我注意到是它没有正确使用 Context 7,但它遵循了其余的说明。让我们看看这个东西是否已正确启用。这个已经启用,并且有库。好的,让我们看看会发生什么。现在它正在运行这个命令。现在它发现这里有一个名为 schedule interval 的错误。这也是一个旧的 Python 文档参考。在 DAG 下,它会转到这里。它将始终设置一个 schedule interval。那个已经修复了。现在让我们允许它运行这个。然后现在又有一个错误说 provide context 是 false。现在让我们。所以现在它在这个尝试的循环中。现在没有错误了。它说管道已准备好使用,因为没有错误,但导入路径实际上没有完成,因为存在向后兼容性。这些导入路径很棒。另一件事我注意到的是 base hook,这是您从中获取连接的地方,它已设置。让我们看看 trigger params 是否已正确设置。那个应该在这里。所以 trigger params 没有正确设置。我仍然可以说它是错误的。所以现在它正在调用 Context 7 库。让我们允许这个。现在正如您所见,它调用的第一个工具是获取该库,查看该库是否可用,查看该库是否与 Context 7 兼容,然后调用 3.0.6 版本,它正在查找 DAG 和 Python 操作符导入。这应该可以修复这个问题。所以现在它已经弄清楚了正确的导入路径。请按是。这里的 trigger param 看起来仍然是错误的。所以,让我们回到我们的聊天并保留历史记录。现在,在 trigger params 中,您可以看到当我选择这四行时,它只在这四行上操作。从最新文档中引用。我们不必明确说明,但在这一点上,明确说明更好。现在它正在使用 drag trigger paraphs,并且它获得了确切的文档,正如您所见,这是正在使用的确切文档。所以它使用这个方法。所以是的,那个已经修复了。是的,修复它。所以我们使用这种类型而不是使用这种类型。让我们保留这些更改,并可以看到更改已经存在。现在让我们检查一下我们的 DAG YouTube topic to duct tb 就在这里。让我们触发它。默认情况下,我正在传递这个 python。所以我们正在摄入所有 Python 主题。所以这是它的日志。它获取了 10 个视频。现在让我们做 duck dv space dot / youtube topic.duck dv。让我们做 show tables 来显示所有表。选择 star from YouTube videos,您可以看到这里有 10 行。所以这就是使用 MCP 服务器的简单管道的实现。当然,还有其他方法可以巩固您的提示,使其每次都能正常工作,但由于这是现场演示,我保持得非常原始。一个主要的建议是,每当您尝试使用 Copilot 或任何这些模型时,都要花时间完善您的管道设计,并以离散的方式非常非常清晰地编写您的说明,以便它能够工作。