这是一个模型上下文协议(MCP)服务器,允许AI代理通过自然语言与n8n工作流进行交互。
注意: 点击按钮后,Railway会提示您配置必要的环境变量(见下文)。
此仓库中的Dockerfile配置用于构建n8n-mcp-server并使用Supergateway运行它。
构建Docker镜像:
docker build -t n8n-mcp-server-supergateway .
运行Docker容器:
docker run --rm -it -p 8080:8080 \
-e PORT=8080 \
-e N8N_API_URL="YOUR_N8N_API_URL" \
-e N8N_API_KEY="YOUR_N8N_API_KEY" \
-e N8N_WEBHOOK_USERNAME="your_webhook_user" \
-e N8N_WEBHOOK_PASSWORD="your_webhook_password" \
-e DEBUG=true \
n8n-mcp-server-supergateway
使用您的实际n8n凭证替换占位符值。服务器可通过SSE在http://localhost:8080访问。Supergateway提供默认路径/sse用于事件流和/message用于发布消息。
服务器需要以下环境变量。当使用按钮部署到Railway时,您将被提示这些变量。对于本地Docker运行,请如上所示使用-e标志传递它们。
N8N_API_URL:您的n8n实例API URL(例如,https://n8n.example.com/api/v1)。必需。N8N_API_KEY:您的n8n API密钥。必需且作为机密处理。N8N_WEBHOOK_USERNAME:n8n webhook节点的基本认证用户名(如果您的工作流使用基本认证保护的webhook触发器)。默认值:anyname。:n8n webhook节点的基本认证密码。默认值:somepassword`。DEBUG:设置为true以从n8n-mcp-server和Supergateway获取详细的日志记录,或设置为false用于生产环境。默认值:false。PORT:应用程序监听的端口。Railway自动设置此值。Supergateway使用此变量。Dockerfile默认值为8080。一旦n8n-mcp-server运行(例如,在Railway上部署或本地Docker中运行),它将通过Server-Sent Events(SSE)公开MCP接口。
Docker容器内的Supergateway实例(如Dockerfile中定义)通常使MCP服务器在以下位置可用:
http://<server_address>:<port>/ssehttp://<server_address>:<port>/message(如果部署在Railway上,<server_address>:<port>将是您的公共Railway URL,例如https://my-n8n-mcp.up.railway.app)
有几种方式AI代理或MCP客户端可以连接:
直接SSE连接: 如果您的MCP客户端(例如,您的AI代理框架)原生支持通过SSE URL和消息端点连接到MCP服务器,请使用上述URL进行配置。
示例直接SSE的mcp.json配置:
{
"n8n_local_docker_sse": {
"url": "https://my-n8n-mcp.up.railway.app/sse",
"disabled": false,
"alwaysAllow": [
"mcp_n8n_docker_direct_list_workflows",
"mcp_n8n_docker_direct_get_workflow",
"mcp_n8n_docker_direct_create_workflow",
"mcp_n8n_docker_direct_update_workflow",
"mcp_n8n_docker_direct_delete_workflow",
"mcp_n8n_docker_direct_activate_workflow",
"m8n_docker_direct_deactivate_workflow",
"mcp_n8n_docker_direct_list_executions"
],
"timeout": 300
}
}
当您部署时添加您的变量,并确保在railway中暴露8080端口。
在客户端侧使用Supergateway(SSE到stdio桥接): 如果您的MCP客户端期望启动一个通过stdio(标准输入/输出)通信的本地命令,您可以在客户端机器上使用另一个本地Supergateway实例来将远程SSE连接桥接到stdio。
示例mcp.json或其他客户端配置:
{
"mcpServers": {
"n8n-remote-sse": {
"command": "npx",
"args": [
"-y",
"supergateway",
"--sse", "http://<server_address>:<port>", // 替换为您实际的服务器URL
"--outputTransport", "stdio",
"--logLevel", "info" // 可选:用于调试客户端上的Supergateway
],
"env": {
// Supergateway客户端可能需要的任何环境变量,通常在这种模式下不需要
},
"disabled": false
}
}
}
在这个客户端侧Supergateway设置中:
npx -y supergateway --sse ...作为其命令。n8n-mcp-server的SSE端点。服务器提供了以下工具(通过上面建立的MCP连接访问):
此MCP服务器支持通过n8n webhooks执行工作流。要使用此功能:
run_webhook工具触发工作流,只需传递工作流名称。示例(概念性的客户端代码):
// 假设'mcp.tools.run_webhook'在您的已连接MCP客户端实例上可用
const result = await mcp.tools.run_webhook({
workflowName: "hello-world", // 将调用 <n8n-url>/webhook/hello-world
data: {
prompt: "来自AI助手的问候!"
}
});
Webhook认证(如果使用)通过为服务器配置的N8N_WEBHOOK_USERNAME和N8N_WEBHOOK_PASSWORD环境变量处理。
workflow_list:列出所有工作流workflow_get:获取特定工作流的详细信息workflow_create:创建新的工作流workflow_update:更新现有工作流workflow_delete:删除工作流workflow_activate:激活工作流workflow_deactivate:停用工作流execution_run:通过API执行工作流
// 注意:run_webhook已经在上面列出,通常更推荐用于触发。execution_get:获取特定执行的详细信息execution_list:列出工作流的执行
// execution_stop可能在某些n8n版本或基础服务器中未实现。对于希望在Docker或类似Railway平台之外运行服务器的用户,您可以直接运行Node.js应用程序。这为您提供更多控制,但需要手动设置执行环境,以及可能的Supergateway,如果您需要SSE的话。
克隆仓库:
git clone https://github.com/YOUR_USERNAME/YOUR_REPONAME.git # 替换为您的仓库URL
cd YOUR_REPONAME
安装依赖项:
npm install
构建服务器:
npm run build
这将在build目录中编译TypeScript到JavaScript。
配置环境变量:
在项目根目录创建一个.env文件(您可以复制.env.example),并填写您的n8n API详情(N8N_API_URL,N8N_API_KEY等)和其他所需变量,如PORT(如果不是8080)或DEBUG。
运行stdio MCP服务器:
node build/index.js
这将启动通过标准输入/输出(stdio)通信的n8n-mcp-server。
**通过SSE暴露(可选,手动Supergateway设置): 如果您需要通过SSE访问此自托管服务器,您需要运行自己的Supergateway实例来包装上述stdio命令。例如:
npx -y supergateway --stdio "node build/index.js" --port 8080 # 根据需要添加其他Supergateway标志
确保在第4步中配置的环境变量在Supergateway启动node build/index.js进程时是可访问的。
这种方法比Docker或Railway部署更复杂,后者在容器内自动处理Supergateway集成。
基于此仓库:https://github.com/leonardsellem/n8n-mcp-server/
MIT