返回市场
n8n-mcp-服务器发送事件

n8n-mcp-服务器发送事件

作者:jacob-dietle6 星标更新:2025-05-20

项目介绍

一键部署 n8n MCP 服务器

这是一个模型上下文协议(MCP)服务器,允许AI代理通过自然语言与n8n工作流进行交互。

部署

一键部署到Railway

在Railway上部署

注意: 点击按钮后,Railway会提示您配置必要的环境变量(见下文)。

Docker部署(手动/本地测试)

此仓库中的Dockerfile配置用于构建n8n-mcp-server并使用Supergateway运行它。

  1. 构建Docker镜像:

    docker build -t n8n-mcp-server-supergateway .
    
  2. 运行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_PASSWORD:n8n webhook节点的基本认证密码。默认值:somepassword`。
  • DEBUG:设置为true以从n8n-mcp-server和Supergateway获取详细的日志记录,或设置为false用于生产环境。默认值:false
  • PORT:应用程序监听的端口。Railway自动设置此值。Supergateway使用此变量。Dockerfile默认值为8080

生成n8n API密钥

  1. 在浏览器中打开您的n8n实例。
  2. 转到设置 > API(或根据您的n8n版本类似的路径)。
  3. 创建一个具有适当权限的新API密钥。
  4. 复制该密钥。

连接到服务器(客户端集成)

一旦n8n-mcp-server运行(例如,在Railway上部署或本地Docker中运行),它将通过Server-Sent Events(SSE)公开MCP接口。

Docker容器内的Supergateway实例(如Dockerfile中定义)通常使MCP服务器在以下位置可用:

  • SSE流: http://<server_address>:<port>/sse
  • 消息端点: http://<server_address>:<port>/message

(如果部署在Railway上,<server_address>:<port>将是您的公共Railway URL,例如https://my-n8n-mcp.up.railway.app

有几种方式AI代理或MCP客户端可以连接:

  1. 直接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端口。

  2. 在客户端侧使用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设置中:

    • 您的AI代理的MCP客户端运行npx -y supergateway --sse ...作为其命令。
    • 这个本地Supergateway连接到您的远程n8n-mcp-server的SSE端点。
    • 然后它通过stdio向您的AI代理呈现MCP接口。

提供的工具

服务器提供了以下工具(通过上面建立的MCP连接访问):

使用Webhooks

此MCP服务器支持通过n8n webhooks执行工作流。要使用此功能:

  1. 在n8n中创建一个由webhook触发的工作流。
  2. 在您的webhook节点上设置基本认证(可选,但推荐)。
  3. 使用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_USERNAMEN8N_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的话。

  1. 克隆仓库:

    git clone https://github.com/YOUR_USERNAME/YOUR_REPONAME.git # 替换为您的仓库URL
    cd YOUR_REPONAME
    
  2. 安装依赖项:

    npm install
    
  3. 构建服务器:

    npm run build
    

    这将在build目录中编译TypeScript到JavaScript。

  4. 配置环境变量: 在项目根目录创建一个.env文件(您可以复制.env.example),并填写您的n8n API详情(N8N_API_URLN8N_API_KEY等)和其他所需变量,如PORT(如果不是8080)或DEBUG

  5. 运行stdio MCP服务器:

    node build/index.js
    

    这将启动通过标准输入/输出(stdio)通信的n8n-mcp-server

  6. **通过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