N8n 与 OpenClaw 集成部署文档
基于 MCP 协议实现 AI Agent 与工作流自动化平台的数据集成
目录
📋 目录
部署概述
架构图
┌─────────────┐ MCP ┌─────────────┐ SQL ┌─────────────┐
│ OpenClaw │ ═══════════> │ n8n │ ═══════════> │ PostgreSQL │
│ (AI) │ Protocol │ (Workflow) │ Query │ (Data) │
└─────────────┘ └─────────────┘ └─────────────┘
│
│ HTTP
▼
┌─────────────┐
│ Webhook │
│ (备选) │
└─────────────┘技术栈
| 组件 | 版本 | 用途 |
|---|---|---|
| n8n | 2.12.3 | 工作流自动化平台 |
| PostgreSQL | 18.3 | 数据持久化存储 |
| OpenClaw | latest | AI Agent 平台 |
| MCP | 1.0.2 | 模型上下文协议 |
n8n 部署配置
1. 目录结构
~/docker/n8n/
├── docker-compose.yml # Docker Compose 配置
├── data/ # n8n 应用数据
│ ├── config # 配置文件
│ ├── database.sqlite # SQLite 数据(如使用)
│ └── ... # 其他数据
└── postgres_data/ # PostgreSQL 数据
└── data/ # 数据库文件2. Docker Compose 配置
services:
n8n:
image: docker.1ms.run/n8nio/n8n:2.12.3
container_name: n8n
restart: always
ports:
- "5678:5678"
environment:
# PostgreSQL 数据库配置
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=n8n
- DB_POSTGRESDB_USER=n8n
- DB_POSTGRESDB_PASSWORD=xxx
# n8n 认证配置
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin@localhost
- N8N_BASIC_AUTH_PASSWORD=xxx
- N8N_ENCRYPTION_KEY=xxx
- GENERIC_TIMEZONE=Asia/Shanghai
- N8N_LOG_LEVEL=info
- N8N_SECURE_COOKIE=false
depends_on:
- postgres
volumes:
- ./data:/home/node/.n8n
postgres:
image: docker.1ms.run/library/postgres:18.3
container_name: n8n-postgres
restart: always
environment:
- POSTGRES_USER=n8n
- POSTGRES_PASSWORD=xxx
- POSTGRES_DB=n8n
volumes:
- ./postgres_data:/var/lib/postgresql3. 启动命令
# 进入目录
cd ~/docker/n8n
# 启动服务
docker-compose up -d
# 查看状态
docker-compose ps
# 查看日志
docker-compose logs -f4. 访问信息
| 项目 | 值 |
|---|---|
| 访问地址 | http://localhost:5678 |
| 用户名 | admin@localhost |
| 密码 | xxx |
数据库配置
1. 数据库表结构
conversations 表(会话表)
CREATE TABLE conversations (
id UUID PRIMARY KEY DEFAULT gen_random_uuid(),
session_key VARCHAR(255) NOT NULL,
user_id VARCHAR(255),
user_name VARCHAR(100),
channel VARCHAR(50),
started_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
ended_at TIMESTAMP,
summary TEXT,
metadata JSONB,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_conversations_session_key ON conversations(session_key);
CREATE INDEX idx_conversations_user_id ON conversations(user_id);messages 表(消息表)
CREATE TABLE messages (
id SERIAL PRIMARY KEY,
conversation_id UUID NOT NULL REFERENCES conversations(id) ON DELETE CASCADE,
role VARCHAR(20) NOT NULL CHECK (role IN ('user', 'assistant', 'system')),
content TEXT NOT NULL,
timestamp TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
tokens_used INTEGER,
model VARCHAR(100),
tool_calls JSONB,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_messages_conversation_id ON messages(conversation_id);memories 表(长期记忆表)
CREATE TABLE memories (
id SERIAL PRIMARY KEY,
user_id VARCHAR(255) NOT NULL,
memory_type VARCHAR(50),
content TEXT NOT NULL,
source_conversation_id UUID REFERENCES conversations(id),
confidence FLOAT DEFAULT 1.0,
last_accessed TIMESTAMP,
access_count INTEGER DEFAULT 0,
created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP,
updated_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
CREATE INDEX idx_memories_user_id ON memories(user_id);
CREATE INDEX idx_memories_type ON memories(memory_type);2. 数据库连接信息
| 项目 | 值 |
|---|---|
| Host | postgres(Docker 服务名) |
| Port | 5432 |
| Database | n8n |
| User | n8n |
| Password | xxx |
OpenClaw MCP 集成
1. MCP 配置
编辑 ~/.openclaw/config.json:
2. 获取工作流 ID
- 在 n8n 中打开工作流
- 查看浏览器 URL:
http://localhost:5678/workflow/WORKFLOW-ID - 复制
WORKFLOW-ID部分 - MCP URL 格式:
http://localhost:5678/mcp/WORKFLOW-ID
3. 重启 OpenClaw
openclaw gateway restart4. 测试连接
在 OpenClaw 中发送:
使用 n8n 保存会话数据
session_key: test-001
user_name: 测试用户
channel: webchat
summary: 测试 MCP 连接使用说明
场景 1:保存会话数据
OpenClaw 指令:
使用 n8n 保存会话数据
session_key: xxx
user_name: xxx
channel: xxx
summary: xxxn8n 工作流:
- MCP Server Trigger 接收请求
- Postgres Tool 插入 conversations 表
- 返回成功响应
场景 2:查询历史会话
OpenClaw 指令:
查询用户 xxx 的历史会话n8n 工作流:
- MCP Server Trigger 接收请求
- Postgres Tool 执行 SELECT 查询
- 返回查询结果
场景 3:保存长期记忆
OpenClaw 指令:
保存记忆:用户偏好 xxxn8n 工作流:
- MCP Server Trigger 接收请求
- Postgres Tool 插入 memories 表
- 返回成功响应
故障排查
问题 1:MCP 连接失败
现象:
Error: Server not initialized解决方案:
- 检查 n8n 是否正常运行:
docker-compose ps - 检查 MCP URL 是否正确
- 尝试改用 Webhook 方案
问题 2:数据库连接失败
现象:
Error: connect ECONNREFUSED postgres:5432解决方案:
- 检查 PostgreSQL 容器状态
- 确认数据库配置正确
- 检查网络连接
问题 3:认证失败
现象:
Error: Invalid credentials解决方案:
- 确认用户名格式为邮箱:
admin@localhost - 检查密码是否正确
- 重置密码并重启容器
附录
A. 常用命令
# 启动服务
cd ~/docker/n8n && docker-compose up -d
# 停止服务
cd ~/docker/n8n && docker-compose down
# 查看日志
cd ~/docker/n8n && docker-compose logs -f
# 重启 OpenClaw
openclaw gateway restart
# 查看 OpenClaw 状态
openclaw status
# 备份数据库
docker exec n8n-postgres pg_dump -U n8n n8n > backup.sql
# 进入数据库
docker exec -it n8n-postgres psql -U n8n -d n8nB. 参考链接
C. 版本信息
| 组件 | 版本 | 更新时间 |
|---|---|---|
| n8n | 2.12.3 | 2026-03-20 |
| PostgreSQL | 18.3 | 2026-03-20 |
| OpenClaw | latest | 2026-03-20 |
| MCP Server | 1.0.2 | 2026-03-20 |
备注
- 敏感信息(密码、密钥)已使用
xxx代替 - 实际部署时请替换为真实值
- 建议定期备份数据库
- 生产环境请使用 HTTPS 和强密码
文档维护:wuhming 最后更新:2026-03-21 01:00