【AI N8N】关于我用N8N搭建自己的工作流,部署发布为MCP

前言

n8n是一款开源的ai工作流工具流工具,可以轻松diy自己想要的工作流,并封装成mcp

官方地址:https://github.com/n8n-io/n8n

但请注意,n8n的开源协议为仅作为企业内部或者个人使用等非商业性行为,不能使用n8n提供对外的服务


如果你希望对外使用,请你考虑使用Dify



部署

Node

Try n8n instantly with npx (requires Node.js):
立即使用 npx 试用 n8n(需要 Node.js):

npx n8n

Docker

Or deploy with Docker:
或使用 Docker 进行部署:

docker volume create n8n_data
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n

Access the editor at http://localhost:5678
http://localhost:5678 中访问编辑器

我们这里采用node的方式

问题

如果你遇到以下错误信息

Your Node.js version 18.16.0 is currently not supported by n8n.
  Please use a Node.js version that satisfies the following version range: >=20.19 <= 24.x

使用node安装n8n建议使用20.19版本以上的node


成功之后会自动运行启动

There is a deprecation related to your environment variables. Please take the recommended actions to update your configuration:
 - N8N_RUNNERS_ENABLED -> Running n8n without task runners is deprecated. Task runners will be turned on by default in a future version. Please set `N8N_RUNNERS_ENABLED=true` to enable task runners now and avoid potential issues in the future. Learn more: https://docs.n8n.io/hosting/configuration/task-runners/

[license SDK] Skipping renewal on init because renewal is not due yet or cert is not initialized
Version: 1.100.1

Editor is now accessible via:
http://localhost:5678

Press "o" to open in Browser.

使用

直接访问本地http://localhost:5678

然后输入邮箱密钥进入即可

接下来跳过并进入主界面

创建工作流

我们直接上手创建工作流,遇到的问题可以在实战中讲到

创建工作流

  1. 点击右上角create workflow创建一个工作流

这里我们的工作流以定时的从hacker news上面筛选我感兴趣的新闻,比整理成简报推送到个人邮箱中为例子

添加触发器

  1. 添加一个触发器

这里我们先选择手动触发

获取数据源

点击加号,这里我希望使用RSS的方式获取,右边搜索RSS,RSS是一种消息订阅机制


接着搜索hacker news的rss地址

它的作用就是通过热度进行新闻的筛选,当然你可以根据你的需要来使用其他rss消息

https://hnrss.org/newest?points=300

通过修改points的值就可以获取不同的数据,当points修改为20,就是说当前热度大于等于20的新闻数据

我们把url添加到rss reader插件中,然后点击测试

结果显示为有20条数据,这样就算成功了

然后我想要做的是打开link网页读取里面的内容,然后再交给ai去进行汇总总结


爬虫爬取数据

对大模型友好的爬虫工具,Firecrawl是一个非常好爬虫工具,但是n8n没有内置,这个时候就可以借助社区插件了

我们点击右下角三个点:

接着点击setting,保存我们当前的工作流,选择社区节点

下载Firecrawl,点击Browse进行搜索

第一个就是了:

复制名称 n8n-nodes-firecrawl,填到选项框中,打上对勾,开始下载

安装完成之后,我们需要重启n8n,先中断之前的,然后重新运行即可

然后回到网页,点击加号就能够搜索到Firecrawl了

我们需要的能力是爬取一个url并获得他的内容:

获取Firecrawl api凭证

我们需要先添加一个api凭证

去官方网址 :https://www.firecrawl.dev/

进来之后登录之后,右边有一个api key

拿到api key 填入到n8n中即可。

api key每个月都有免费额度,你也可以选择本地部署Firecrawl,这样就可以无限使用了

点击这个按钮,执行上一个节点,就是获取数据源,接着获取link节点

长按link,拖动到url中

这样就会循环爬取20条数据

补充限制

我们还可以补充限制爬取条数,在他们之间补充一个limit限制阀

这一步可以限制上一步的输出

接着我们测试一下爬虫数据

可以看到,加了限制节点,确实获取到了只有3条数据,并且爬虫节点循环的爬取完了所有的数据:

接入大模型整理数据

选择AI Agent

选择自定义提示词

拖拽data到prompt

添加一个选项,选择系统提示词

然后添加一个大模型来帮助我们

我们可以选择自己想要的大模型,依旧是补充相应的api key,这里我使用DeepSeek

https://platform.deepseek.com/top_up

配置完成之后,我们点击测试

这样就算成功了,我们可以点击右上角的固定按钮,把这个数据变成测试数据来使用,这样我们测试就不需要重新跑一遍工作流了。

合并数据

这里我想要将数据合并成为一个list,我们继续添加一个节点Aggregate

拖拽节点


测试一下,从3条数据合并成了一条


转换为html格式

我们添加一个markdown,将markdown转换为html

由于我们是一个list,因此我们需要补充换行符 {{ $json.output.join("\n\n") }}

结果也是成功的:

发送邮件

这里我们以qq邮箱为例子,去qq邮箱创建一个SMTP服务

密码就是你申请的smtp服务密钥

测试一下,已经成功了

修改为定时触发,自动执行工作流

删除最开始的手动触发,右上角点击新增一个节点,补充自动触发

修改为每4个小时执行一次,复杂的触发规则可以选择Cron

点击保存,点击启动执行

工作流持久化

数据库存储

我们启动n8n的时候,显示了一个文件夹的地址

打开可以发现

本质就是存放在sqlite数据库中,我们也可以选择其他数据库,确保工作流的持久化

下载本地

我们也可以选择下载

右上角有一个download,可以选择下载为json

My workflow.json

其他人拿到这个文件之后,可以选择 Import from File,导入工作流

http://n8n.io/workfilows/这里,有社区分享的其他人的工作流

n8n MCP

n8n既可以作为MCP Server ,也可以作为MCP Client。

同时支持两种协议,SSE和STDIO

我们这里创建一个新的工作流

聊天触发

我们选择 on Chat Messgae,也就是当有对话时触发

接着选择AI agent 使用deepseek,接着选择Tool

搜索MCP Client Tool

官方仅支持SSE协议的调用,我们使用百度地图的MCP server

来到百度开放平台获取ak

https://lbsyun.baidu.com/apiconsole/key

然后搜索百度地图mcp

https://lbs.baidu.com/faq/api?title=mcpserver/base

快速开始中有一个sse的服务

{
  "mcpServers": {
    "baidu-maps": {
      "url": "https://mcp.map.baidu.com/sse?ak=您的AK"
    }
  }
}

复制链接回到n8n,输入url即可

我们测试一下对话

结果可以看到调用到mcp服务以及使用大模型。

封装成mcp服务

我们将我们的workflow封装成mcp服务,提供给其他人使用

右上角点击+号,点击MCP Server Trigger

接着选择触发,调用n8n工作流

然后选择我们刚刚写的工作流,可以看到mcp server已经暴露出来了一个sse链接

这个时候当外部工具调用到这个链接的时候,就会自动触发刚才的工作流

重点:

这里我们给刚才的工作流再添加一个触发事件

配置一个变量名称

这一步是为了跟ai的变量名对应起来

最终是这样的结果:

然后修改Call n8n Workflow Tool,让ai自行决定调用工作流

到这里,就配置完成了,复制我们的sse地址,然后点击test workflow,这样就启动好了sse服务的监听

我们使用一个mcp客户端,来尝试n8n创建的mcp服务

我们使用Cherry studio:https://www.cherry-ai.com/download

填写我们的url即可

回到对话,选择我们的mcp服务,输入问题,可以看到成功调用了我们的mcp服务

总结

  • n8n在这里作为了mcp server给Cherry Studio 提供了地图服务

  • 同时又作为了mcp client使用了百度地图的mcp服务

  • 这种就是双向mcp的能力

  • sse链接中有两个,一个是测试的url,测试的url使用一次之后,就会自动停止监听,生产的url可以不断的监听使用

配置支持STDIO协议

还是来到社区节点

下载这个插件 n8n-nodes-mcp

替换之前的mcp client,因为官方默认是用的sse

选择下面的节点,上面的是官方的,下面的是社区的

选择stdio,重新命名

这个的功能就是列出所有可用的mcp服务

再新建一个服务,这个服务就是用于,让大模型自己选择使用哪个mcp服务

到这里,就支持了stdio协议的了

docker部署

使用这种方式就可以放在linux服务器上面运行了

安装docker

sudo curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun

https://blog.csdn.net/igrsol/article/details/136025857

部署n8n

docker volume create n8n_data    //创建挂载卷
docker run -it --rm --name n8n -p 5678:5678 -v n8n_data:/home/node/.n8n docker.n8n.io/n8nio/n8n
docker stop n8n

# 2. 删除容器
docker rm n8n

# 3. 删除镜像(先获取镜像ID)
docker images | grep n8nio/n8n
# 假设输出:swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/n8nio/n8n   latest-linuxarm64 a1b2c3d4e5f6

docker rmi a1b2c3d4e5f6

# 4. 删除卷
docker volume rm n8n_data

# 5. 验证清理结果
docker ps -a      # 应看不到 n8n 容器
docker images     # 应看不到 n8n 镜像
docker volume ls  # 应看不到 n8n_data 卷

这里修改命令

修改为-d,表示可以后台静默运行 -e N8N_SECURE_COOKIE=false ,可以让n8n使用http协议被访问到

接着尝试从其他地方拉取镜像,不然国内服务器无法下载

docker run -d \
  -e N8N_SECURE_COOKIE=false \
  --name n8n \
  -p 5678:5678 \
  -v n8n_data:/home/node/.n8n \
  swr.cn-north-4.myhuaweicloud.com/ddn-k8s/docker.io/n8nio/n8n:latest

然后记得开放5678端口的安全组,然后重启服务器

然后访问公网ip加5678端口即可

注意我的服务器上amd64的,下载镜像注意选择对应服务器的版本


https://docker.aityp.com/r/docker.io/n8nio/n8n



我们在启动的时候,也可以选择存放数据的数据库


https://docs.n8n.io/hosting/installation/docker/#using-with-postgresql


修改数据存储位置

docker run -it --rm \
 --name n8n \
 -p 5678:5678 \
 -e DB_TYPE=postgresdb \
 -e DB_POSTGRESDB_DATABASE=<POSTGRES_DATABASE> \
 -e DB_POSTGRESDB_HOST=<POSTGRES_HOST> \
 -e DB_POSTGRESDB_PORT=<POSTGRES_PORT> \
 -e DB_POSTGRESDB_USER=<POSTGRES_USER> \
 -e DB_POSTGRESDB_SCHEMA=<POSTGRES_SCHEMA> \
 -e DB_POSTGRESDB_PASSWORD=<POSTGRES_PASSWORD> \
 -v n8n_data:/home/node/.n8n \
 docker.n8n.io/n8nio/n8n

在运行的时候可以补充数据库环境变量,这样数据就会存储在指定的数据库中

### 关于 n8n 服务器部署的指南 #### 安装 Docker 和 Docker Compose 为了简化安装过程,推荐使用 Docker 来运行 n8n。以下是基于 Linux 系统的操作步骤: 1. **安装 Docker** 使用官方文档中的脚本自动完成安装: ```bash curl -fsSL https://get.docker.com | sh - systemctl start docker && systemctl enable docker ``` 2. **安装 Docker Compose** 下载并设置权限以使 `docker-compose` 可执行: ```bash sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose ``` #### 创建 n8n 配置文件 创建一个新的目录用于存储配置文件和服务定义。 ```bash mkdir ~/n8n-docker && cd ~/n8n-docker ``` 编辑 `docker-compose.yml` 文件如下所示: ```yaml version: '3' services: db: image: postgres:latest restart: always environment: POSTGRES_DB: n8n POSTGRES_USER: n8n_user POSTGRES_PASSWORD: your_password_here volumes: - ./data:/var/lib/postgresql/data redis: image: redis:alpine restart: always app: image: n8nio/n8n:latest ports: - "5678:5678" depends_on: - db - redis environment: N8N_BASIC_AUTH_ACTIVE: "true" N8N_BASIC_AUTH_USER: "admin" N8N_BASIC_AUTH_PASSWORD: "password" DB_TYPE: "postgresdb" DB_POSTGRESDB_HOST: "db" DB_POSTGRESDB_PORT: "5432" DB_POSTGRESDB_DATABASE: "n8n" DB_POSTGRESDB_USER: "n8n_user" DB_POSTGRESDB_PASSWORD: "your_password_here" REDIS_HOST: "redis" REDIS_PORT: "6379" restart: always ``` 启动服务: ```bash docker-compose up -d ``` 此时可以通过浏览器访问 `http://<server-ip>:5678` 登录到 n8n 的 Web UI 页面[^5]。 --- #### 自动化任务管理 如果希望进一步扩展功能,可以考虑集成其他工具来增强自动化能力。例如,通过 API Gateway 将多个微服务连接起来形成完整的业务流程链路[^6]。 --- #### 数据库迁移注意事项 当升级版本或者切换数据库引擎时,请务必先备份现有数据再进行操作。PostgreSQL 是目前最常使用的持久化解决方案之一,在性能和稳定性方面表现优异[^7]。 --- #### 常见问题排查 1. 如果无法成功登录界面,请确认环境变量中用户名密码是否匹配。 2. Redis 连接失败可能是因为网络隔离策略未开放相应端口。 3. PostgreSQL 初始化慢可能是由于磁盘 I/O 性能不足引起[^8]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

阿菜同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值