n8n工作流管理服务器

一个为AI助手提供完整n8n工作流、执行、凭证等程序化访问的模型上下文协议(MCP)服务器。

  • by kingler
  • JavaScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 kingler/n8n-mcp-server

使用说明

n8n MCP服务器

一个全面的模型上下文协议(MCP)服务器,为AI助手提供对n8n工作流、执行、凭据等的完全编程访问。

🚀 特性

完成n8n API覆盖范围

  • 工作流管理:创建、读取、更新、删除、激活、停用工作流
  • 执行管理:列表、获取、删除、触发、重试、停止执行
  • 凭据管理:创建、读取、更新、删除、测试凭据
  • 标签管理:创建、列出、删除标签
  • 用户管理:列出并获取用户信息
  • 变量管理:创建、读取、更新、删除变量
  • 文件上传:将文件上传到n8n(如果支持)
  • 健康监测:检查API连接和运行状况

高级功能

  • 全面的错误处理:详细的错误代码和消息
  • 记录系统:基于Winston的日志记录,具有多个级别和类别
  • 输入验证:对所有输入进行基于Zod的模式验证
  • 重试逻辑:暂时性故障的自动重试
  • 速率限制:内置速率限制处理
  • 类型安全:具有严格类型的完全TypeScript支持

📋 先决条件

  • Node.js 18.0.0或更高版本
  • 具有API访问权限的n8n实例
  • n8n API密钥

🛠️ 安装

  1. 克隆存储库

    git clone https://github.com/your-org/n8n-mcp-server.git
    cd n8n-mcp-server
    
  2. 安装依赖项

    npm install
    
  3. 配置环境变量

    cp .env.example .env
    

    编辑 .env 使用n8n配置:

    N8N_API_URL=http://localhost:5678/api/v1
    N8N_API_KEY=your-api-key-here
    LOG_LEVEL=info
    NODE_ENV=development
    
  4. 构建项目

    npm run build
    

🚀 用法

启动服务器

npm start

发展模式

npm run dev

测试

npm test
npm run test:coverage

🔌 MCP客户端配置

要将此MCP服务器与Claude Desktop或其他MCP客户端一起使用,请添加以下配置:

Claude桌面配置

添加到您的Claude Desktop配置文件中:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/claude/claude_desktop_config.json
{
  "mcpServers": {
    "n8n": {
      "command": "node",
      "args": ["/path/to/n8n-mcp-server/start.js"],
      "env": {
        "N8N_API_URL": "http://localhost:5678/api/v1",
        "N8N_API_KEY": "your-n8n-api-key",
        "LOG_LEVEL": "info"
      }
    }
  }
}

配置选项

MCP服务器在客户端配置中接受以下环境变量:

变量 描述 必填 示例
N8N_API_URL n8n API基础URL 是 http://localhost:5678/api/v1
N8N_API_KEY n8n用于身份验证的API密钥 是 n8n_api_1234567890abcdef
N8N_WEBHOOK_USERNAME webhook身份验证的用户名 否 webhook-user
N8N_WEBHOOK_PASSWORD webhook身份验证密码 否 webhook-pass
LOG_LEVEL 日志记录级别 否 info, debug, error
API_TIMEOUT API请求超时(以毫秒为单位) 否 30000
API_RETRY_ATTEMPTS 失败请求的重试次数 否 3
API_RETRY_DELAY 重试之间的延迟(毫秒) 否 1000

获取n8n API密钥

  1. 登录您的n8n实例
  2. 首选 设置 → API
  3. 生成新的API密钥
  4. 复制密钥并将其添加到MCP客户端配置中

验证连接

配置后,MCP客户端应能够:

  1. 列出n8n服务器上的可用工具
  2. 执行工作流操作
  3. 管理凭据和执行

您可以通过让AI助手列出可用的n8n工作流或检查API连接状态来验证连接。

📚 可用工具

工作流工具

工具 说明 参数
list_workflows 列出所有具有过滤功能的工作流 active, limit, offset, tags, search
get_workflow 按ID获取特定工作流 workflowId
create_workflow 创建新工作流 name, nodes, connections, settings, tags
update_workflow 更新现有工作流 workflowId, name, nodes, connections, settings, tags
delete_workflow 删除工作流 workflowId
activate_workflow 激活工作流 workflowId
deactivate_workflow 停用工作流 workflowId
update_workflow_tags 更新工作流标签 workflowId, tags
transfer_workflow 转移工作流所有权 workflowId, userId

执行工具

工具 说明 参数
list_executions 使用筛选列出执行情况 workflowId, status, limit, offset, since, until
get_execution 获得具体执行 executionId
delete_execution 删除执行 executionId
trigger_execution 手动触发工作流 workflowId, data
retry_execution 重试失败的执行 executionId
stop_execution 停止运行执行 executionId

凭证工具

工具 说明 参数
list_credentials 列出所有凭据 type
get_credential 获取特定凭证 credentialId
create_credential 创建新凭据 name, type, data, nodesAccess
update_credential 更新凭据 credentialId, name, data, nodesAccess
delete_credential 删除凭据 credentialId
test_credential 测试证书 credentialId
transfer_credential 转移凭证所有权 credentialId, userId

管理工具

工具 说明 参数
list_tags 列出所有标签 无
create_tag 创建新标签 name
delete_tag 删除标签 tagId
list_users 列出所有用户 无
get_user 获取特定用户 userId
list_variables 列出所有变量 无
create_variable 创建新变量 key, value
update_variable 更新变量 variableId, key, value
delete_variable 删除变量 variableId

实用工具

工具 说明 参数
upload_file 将文件上传到n8n filename, content, mimeType
check_connectivity 检查API连接 无
get_health_status 获取API运行状况 无

🔧 配置

环境变量

变量 描述 必填 默认
N8N_API_URL n8n API基础URL 是 -
N8N_API_KEY n8n API密钥 是 -
N8N_WEBHOOK_USERNAME Webhook 用户名
N8N_WEBHOOK_PASSWORD Webhook 密码 没有 -
LOG_LEVEL 日志记录级别 否 info
PORT 服务器端口 否 -
NODE_ENV 环境 否 development
API_TIMEOUT API超时(ms) 否 30000
API_RETRY_ATTEMPTS 重试尝试 否 3
API_RETRY_DELAY 重试延迟(毫秒) 否 1000

日志记录级别

  • error:只有错误消息
  • warn:警告和错误消息
  • info:信息、警告和错误消息
  • debug:调试、信息、警告和错误消息
  • verbose:所有消息

🏗️ 项目结构

n8n-mcp-server/
├── src/
│   ├── api/
│   │   └── n8n-client.ts          # n8n API client
│   ├── config/
│   │   ├── environment.ts         # Environment configuration
│   │   └── server.ts              # Server configuration
│   ├── errors/
│   │   ├── error-codes.ts         # Error code definitions
│   │   └── index.ts               # Error handling utilities
│   ├── tools/
│   │   ├── base-handler.ts        # Base tool handler classes
│   │   ├── workflow/              # Workflow tool handlers
│   │   ├── execution/             # Execution tool handlers
│   │   ├── credentials/           # Credential tool handlers
│   │   └── upload/                # Upload tool handlers
│   ├── types/
│   │   └── index.ts               # Type definitions
│   ├── utils/
│   │   └── logger.ts              # Logging utilities
│   └── index.ts                   # Main entry point
├── tests/
│   ├── unit/                      # Unit tests
│   ├── integration/               # Integration tests
│   ├── fixtures/                  # Test fixtures
│   └── mocks/                     # Test mocks
├── build/                         # Compiled JavaScript
├── logs/                          # Log files
├── templates/                     # Workflow templates
├── package.json
├── tsconfig.json
├── jest.config.js
└── README.md

🧪 测试

运行测试

# Run all tests
npm test

# Run tests in watch mode
npm run test:watch

# Run tests with coverage
npm run test:coverage

# Run specific test file
npm test -- --testNamePattern="list_workflows"

测试结构

  • 单元测试:测试单个函数和类
  • 集成测试:测试API交互和工具处理程序
  • 夹具:测试数据和模拟响应
  • 模拟考试:外部依赖关系的模拟实现

📝 api参考

n8n涵盖的API终点

工作流

  • GET /workflows -列出工作流
  • GET /workflows/{id} -获取工作流
  • POST /workflows -创建工作流
  • PUT /workflows/{id} -更新工作流程
  • DELETE /workflows/{id} -删除工作流
  • POST /workflows/{id}/activate -激活工作流
  • POST /workflows/{id}/deactivate -停用工作流
  • POST /workflows/{id}/tags -更新工作流标签
  • POST /workflows/{id}/transfer -转移工作流所有权

执行

  • GET /executions -列出执行情况
  • GET /executions/{id} -执行
  • DELETE /executions/{id} -删除执行
  • POST /executions -触发器执行
  • POST /executions/{id}/retry -重试执行
  • POST /executions/{id}/stop -停止执行

凭证

  • GET /credentials -列出凭据
  • GET /credentials/{id} -获取凭证
  • POST /credentials -创建凭据
  • PUT /credentials/{id} -更新凭据
  • DELETE /credentials/{id} -删除凭据
  • POST /credentials/{id}/test -测试证书
  • POST /credentials/{id}/transfer -转移凭证所有权

标签

  • GET /tags -列表标签
  • GET /tags/{id} -获取标签
  • POST /tags -创建标签
  • PUT /tags/{id} -更新标签
  • DELETE /tags/{id} -删除标签

用户

  • GET /users -列出用户
  • GET /users/{id} -获取用户

变量

  • GET /variables -列出变量
  • GET /variables/{id} -获取变量
  • POST /variables -创建变量
  • PUT /variables/{id} -更新变量
  • DELETE /variables/{id} -删除变量

🔒 安全

  • API密钥安全地存储在环境变量中
  • 所有API请求都经过身份验证
  • 输入验证可防止注入攻击
  • 错误消息不会暴露敏感信息
  • 日志记录不包括敏感数据

🚀 部署

Docker部署

FROM node:18-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .
RUN npm run build

EXPOSE 3000

CMD ["npm", "start"]

环境特定配置

发展

NODE_ENV=development
LOG_LEVEL=debug

生产

NODE_ENV=production
LOG_LEVEL=info

测试

NODE_ENV=test
LOG_LEVEL=error

🤝 贡献

  1. 分叉存储库
  2. 创建要素分支(git checkout -b feature/amazing-feature)
  3. 提交您的更改(git commit -m 'Add amazing feature')
  4. 推到分支(git push origin feature/amazing-feature)
  5. 打开拉取请求

开发指南

  • 遵循TypeScript的最佳实践
  • 编写全面的测试
  • 为所有公共API添加JSDoc注释
  • 遵循现有代码样式
  • 更新新功能的文档

📄 许可证

此项目根据MIT许可证获得许可-请参阅 许可证 文件以获取详细信息。

🆘 支持

🙏 致谢

📊 状态