Skip to main content
Glama
andrewlwn77

n8n-workflow-downloader-mcp

by andrewlwn77
README.md
# n8n Workflow Downloader MCP Server

[![npm version](https://badge.fury.io/js/n8n-workflow-downloader-mcp.svg)](https://badge.fury.io/js/n8n-workflow-downloader-mcp)

An MCP (Model Context Protocol) server that enables AI agents to download n8n workflows from URLs.

## Features

- Download n8n workflows from URLs like `https://n8n.io/workflows/3442`
- Returns the complete workflow JSON structure
- Includes metadata (workflow ID, name, URL)
- Handles errors gracefully

## Installation

### As a global npm package

```bash
npm install -g n8n-workflow-downloader-mcp
```

### For development

```bash
git clone https://github.com/andrewlwn77/n8n-workflow-downloader-mcp.git
cd n8n-workflow-downloader-mcp
npm install
npm run build
```

## Usage

### With Claude Desktop or other MCP clients

Add to your MCP configuration:

#### Using npx (recommended):

```json
{
  "mcpServers": {
    "n8n-workflow-downloader": {
      "command": "npx",
      "args": ["n8n-workflow-downloader-mcp"],
      "transport": {
        "type": "stdio"
      },
      "env": {
        "PUPPETEER_EXECUTABLE_PATH": "/opt/google/chrome/google-chrome"
      }
    }
  }
}
```

#### If installed globally via npm:

```json
{
  "mcpServers": {
    "n8n-workflow-downloader": {
      "command": "n8n-workflow-downloader",
      "transport": {
        "type": "stdio"
      },
      "env": {
        "PUPPETEER_EXECUTABLE_PATH": "/opt/google/chrome/google-chrome"
      }
    }
  }
}
```

#### If installed locally or from source:

```json
{
  "mcpServers": {
    "n8n-workflow-downloader": {
      "command": "node",
      "args": ["./path/to/build/index.js"],
      "transport": {
        "type": "stdio"
      },
      "env": {
        "PUPPETEER_EXECUTABLE_PATH": "/opt/google/chrome/google-chrome"
      }
    }
  }
}
```

### Environment Variables

- `PUPPETEER_EXECUTABLE_PATH` (optional): Path to Chrome/Chromium executable
  - If not set, Puppeteer will use its bundled Chromium
  - Useful for systems with Chrome installed in non-standard locations
  - Example: `/opt/google/chrome/google-chrome`, `/usr/bin/chromium-browser`

### Available Tools

#### `download_n8n_workflow`

Downloads an n8n workflow from a given URL.

**Input:**
- `url` (string, required): The n8n workflow URL (e.g., https://n8n.io/workflows/3442)

**Output:**
- `workflow`: The complete n8n workflow JSON object
- `metadata`: Object containing:
  - `id`: The workflow ID
  - `name`: The workflow name
  - `url`: The original URL

**Example usage in Claude:**
```
Please download the n8n workflow from https://n8n.io/workflows/3442
```

## Development

```bash
# Install dependencies
npm install

# Build TypeScript
npm run build

# Watch mode for development
npm run dev

# Run tests
npm test

# Run specific test suites
npm run test:unit        # Unit tests only
npm run test:integration # Integration tests only

# Run tests in watch mode
npm run test:watch

# Generate test coverage report
npm run test:coverage

# Test the server manually (for debugging/development)
node test-server.js
```

## Testing

The project includes comprehensive test coverage:

- **Unit Tests** (`tests/unit/`): Test individual modules in isolation
  - Downloader module validation and error handling
  - URL parsing and validation
  - Mock puppeteer interactions

- **Integration Tests** (`tests/integration/`): Test the complete MCP server
  - Server initialization
  - Tool listing and discovery
  - End-to-end workflow download simulation
  - Error handling and validation

Run `npm test` to execute all tests, or use the specific test commands listed above.

### Manual Testing

The `test-server.js` script provides a quick way to manually test the MCP server:
- Initializes the server
- Lists available tools
- Demonstrates a tool call
- Shows real-time server output

This is useful for debugging and development, complementing the automated test suite.

## Technical Details

- Uses Puppeteer to automate the workflow download process
- Intercepts clipboard operations to capture workflow JSON
- Built with TypeScript and the official MCP SDK
- Implements stdio transport for local communication
- Supports custom Chrome/Chromium executable paths via `PUPPETEER_EXECUTABLE_PATH`

## Requirements

- Node.js 16+
- Chrome/Chromium (for Puppeteer)

TDQS

A3.8/5.0

Scored across 1 tool

Disambiguation5/5

With only one tool, there is no possibility of confusion between tools. The tool's purpose is clearly described.

Naming Consistency5/5

The single tool name follows a consistent verb_noun pattern ('download_n8n_workflow'), which is clear and predictable.

Tool Count3/5

One tool feels thin for a server, but it is appropriate for the narrow purpose of downloading n8n workflows. The count is borderline but not unreasonable.

Completeness5/5

The tool fully covers the server's stated purpose of downloading a workflow from a URL. There are no obvious missing operations for this narrow domain.

Maintenance

ActivityInactive
ResponsivenessNo issues