具有本地MCP集成的n8n AI代理(Docker+npx)
此存储库包含一个n8n工作流,演示如何将模型上下文协议(MCP)与本地运行的n8n实例(通过Docker)集成,以使AI代理能够动态发现和使用外部工具,如web搜索,而无需持续安装服务器。
这种方法利用了 npx n8n凭据中的命令,用于动态运行MCP服务器。
关键概念
- n8n AI代理: n8n中的一个强大节点,可以使用大型语言模型(LLM)和可用工具推理、计划和执行任务。
- 模型上下文协议(MCP): 一种开放标准,旨在简化AI模型(如n8n AI Agent使用的模型)与外部工具、数据源或API之间的通信。它就像一个通用的翻译器。
npx方法: 允许从npm注册表运行Node.js包(如MCP服务器),而无需永久安装它们。我们在n8n的命令行凭据中利用了这一点。- Docker: 用于在本地隔离的容器环境中运行n8n。
目标
此工作流程的主要目标是展示:
- 使用必要的标志通过Docker在本地运行n8n(
N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE)已启用AI Agent工具使用。 - 安装和使用
n8n-nodes-mcp社区节点。 - 使用配置n8n凭据以动态运行MCP服务器(例如Brave Search)
npx. - 构建n8n AI Agent工作流,可以:
- 通过MCP发现可用工具(List Tools). - 根据用户查询和工具描述/模式智能地选择合适的工具。 - 通过MCP执行所选工具(Execute Tool)参数由AI模型确定。
先决条件
- Docker: 已安装并在本地计算机上运行。
- Node.js和npm: 建议用于潜在的故障排除和确保
npx可用。 - n8n基础知识: 熟悉创建工作流、添加节点和配置凭据。
- (可选)API密钥: 如果您计划使用需要身份验证的MCP服务器(如Brave Search),则需要相应的API密钥。
设置步骤
按照以下步骤运行环境和工作流:
步骤1:通过Docker在本地运行n8n(启用工具使用)
打开终端或命令提示符,运行以下Docker命令:
docker run -it --rm --name n8n -p 5678:5678 \
-v n8n_data:/home/node/.n8n \
-e N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true \
docker.n8n.io/n8nio/n8n-p 5678:5678:将集装箱的端口5678映射到本地计算机的端口5678。-v n8n_data:/home/node/.n8n:创建一个名为的Docker卷n8n_data保存n8n工作流和数据。-e N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true: 关键的旗帜! 此环境变量允许AI Agent节点将社区节点(如MCP客户端)视为可执行工具。--rm:容器停止时自动移除。-it:以交互方式运行容器。
等待n8n启动。您可以在浏览器中访问它,网址为 http://localhost:5678.
步骤2:安装n8n MCP社区节点
- 在n8n用户界面中(位于
http://localhost:5678),导航到 设置 > 社区节点. - 点击 安装.
- 进入
n8n-nodes-mcp在搜索框中。 - 阅读并同意与社区节点相关的风险。
- 点击 安装.
步骤3:配置MCP客户端凭据(使用 npx)
此示例使用Brave Search MCP服务器。您可以通过查找其他服务器的相应位置来调整此设置 npx 命令。
- 查找
npx用于所需MCP服务器的命令。对于勇敢的搜索:npx run -y @modelcontextprotocol/server-brave-search - 在n8n工作流画布中,添加 MCP客户端 node(来自社区节点部分)。
- 在节点参数中,单击下拉菜单 要连接的凭据 并选择 创建新凭据.
- 配置凭据:
- 使用以下方式连接: Command Line (STDIO) - 命令: npx - 论据: run -y @modelcontextprotocol/server-brave-search (或所选服务器的参数) - 环境: (可选,但对于经过身份验证的服务器是必需的) - 点击 添加环境变量. - 姓名: BRAVE_API_KEY (或服务器期望的变量名) - 价值: YOUR_BRAVE_SEARCH_API_KEY_HERE (*替换为您的实际密钥*) - 凭证名称: 给它一个描述性的名称(例如。, MCP Brave Search (npx))
- 点击 保存.
工作流程说明
将此存储库中提供的工作流JSON文件导入n8n实例。工作流由以下主要节点组成:
- 收到聊天消息时(聊天触发器): 当通过n8n聊天界面发送消息时,启动工作流。
- AI代理: 核心协调人。
- 聊天模式: 配置为使用LLM(例如Groq聊天模型、OpenAI等)。 - *确保在n8n中配置了相应的凭据*). - 内存: 已连接到a Simple Memory 节点,用于保留会话内的会话历史记录(会话ID从聊天触发器链接)。 - 系统提示: 指导人工智能如何表现,特别是如何通过MCP识别和使用工具:
You are a helpful assistant
1. Find all the tools available
2. From the work out which tool is best for the job based on the descriptions, and pass the name of that tool to the third step, and for other params to be passed when executing the tool take reference from the schema section of the tool.
3. Use executeTool, passing in the correct parameters, for executing the tool- MCP客户端工具(列表工具):
- 连接到AI代理 Tool 输出手柄。 - 使用 MCP Brave Search (npx) 凭证(在步骤3中创建)。 - 操作: List Tools。这允许AI代理询问“我可以使用哪些工具来使用此凭据?”。
- MCP客户端工具(执行工具):
- 还连接到AI代理 Tool 输出手柄。 - 使用相同 MCP Brave Search (npx) 凭据。 - 操作: Execute Tool. - 工具名称: 使用以下表达式动态设置 {{ $fromAI('tool', 'selected tool to execute') }} 以获取由AI代理决定的工具名称。 - 刀具参数: 吃起来 Defined automatically by the model这允许AI代理基于工具的模式(它从列表工具步骤中学习到)和用户的请求来确定必要的参数(如搜索查询)。
使用/测试
- 激活 导入的n8n工作流。
- 点击 聊天 n8n UI中的按钮(通常位于右下角)。
- 测试工具发现: 类型
What tools do you have?或list available toolsAI代理应与“列表工具”MCP节点交互,并使用可用的Brave搜索工具(例如。,brave_web_search,brave_local_search)、它们的描述和预期参数。 - 测试工具执行: 问一个需要网络搜索的问题,例如:
Tell me about the latest developments in the Model Context Protocol. - 观察:
- 聊天: AI Agent应使用Brave搜索工具收集的信息进行响应。 - n8n执行日志: 检查工作流执行情况。您应该看到AI Agent节点正在做出决策,并且“执行工具”MCP客户端节点正在被调用 tool 着手 brave_web_search 和 Tool_Parameters 包含您的查询。
故障排除/注意事项
N8N_COMMUNITY_PACKAGES_ALLOW_TOOL_USAGE=true: 确保在启动Docker容器时正确设置了此环境变量。没有它,AI代理就无法将MCP客户端节点用作工具。npx命令: 仔细检查npx您尝试运行的特定MCP服务器的命令和参数。确保包名称(@modelcontextprotocol/server-brave-search)是正确的。- API密钥: 验证任何必需的API密钥(如
BRAVE_API_KEY)已正确添加到 环境 n8n中MCP客户端凭据的部分,并且密钥本身有效。 - 防火墙: 确保本地计算机的防火墙允许
npx下载并运行包,如果MCP服务器需要访问外部API,则允许连接。 - 法学硕士证书: 确保AI Agent节点(例如Groq、OpenAI)中使用的聊天模型凭据配置正确且有效。
- Docker卷: 使用
-v n8n_data:/home/node/.n8n即使您停止并重新启动容器,volume也能确保您的工作得以保存。
结论
该工作流程展示了一种灵活有效的方法,可以使用模型上下文协议和 npx 执行方法。它通过避免许多常见实用程序对持久服务器设置的需求,降低了集成外部工具的障碍,使您的AI代理能够动态地与外部信息和服务交互。
