Skip to main content
Glama
Kikk79

MCP Make.com Server

by Kikk79
README.md
# MCP Make.com Server

A Model Context Protocol (MCP) server that provides **full access** to the Make.com API, including the ability to **create, modify, and delete scenarios** - not just run them.

## Features

| Feature | Support |
|---------|---------|
| List/Get Scenarios | Yes |
| **Create Scenarios** | **Yes** |
| **Update Scenarios (Blueprint)** | **Yes** |
| **Delete Scenarios** | **Yes** |
| Activate/Deactivate | Yes |
| Run Scenarios | Yes |
| Clone Scenarios | Yes |
| Get Blueprints | Yes |
| Connections Management | Yes |
| Webhooks Management | Yes |
| Data Stores CRUD | Yes |
| Teams/Organizations | Yes |

## Installation

```bash
git clone <repo>
cd mcp-make-server
npm install
npm run build
```

## Configuration

### Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `MAKE_API_TOKEN` | Yes | Your Make.com API token |
| `MAKE_ZONE` | No | API zone: `eu1`, `eu2`, `us1`, `us2` (default: `eu1`) |

### Get Your API Token

1. Go to Make.com > Profile > API
2. Create a new token with these scopes:
   - `scenarios:read`
   - `scenarios:write`
   - `scenarios:run`
   - `connections:read`
   - `hooks:read`
   - `datastores:read`
   - `datastores:write`
   - `teams:read`
   - `organizations:read`

### Claude Desktop Configuration

Add to `~/Library/Application Support/Claude/claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "make": {
      "command": "node",
      "args": ["/path/to/mcp-make-server/dist/index.js"],
      "env": {
        "MAKE_API_TOKEN": "your-api-token-here",
        "MAKE_ZONE": "eu1"
      }
    }
  }
}
```

### Cursor Configuration

Add to `.cursor/mcp.json`:

```json
{
  "mcpServers": {
    "make": {
      "command": "node",
      "args": ["/path/to/mcp-make-server/dist/index.js"],
      "env": {
        "MAKE_API_TOKEN": "your-api-token-here",
        "MAKE_ZONE": "eu1"
      }
    }
  }
}
```

## Available Tools

### Scenarios

| Tool | Description |
|------|-------------|
| `list_scenarios` | List all scenarios for a team/org |
| `get_scenario` | Get scenario details |
| `create_scenario` | Create a new scenario with blueprint |
| `update_scenario` | Update scenario name/blueprint/scheduling |
| `delete_scenario` | Delete a scenario |
| `activate_scenario` | Turn on a scenario |
| `deactivate_scenario` | Turn off a scenario |
| `run_scenario` | Execute a scenario |
| `clone_scenario` | Duplicate a scenario |
| `get_scenario_blueprint` | Get full flow definition |
| `get_scenario_logs` | Get execution history |

### Connections & Webhooks

| Tool | Description |
|------|-------------|
| `list_connections` | List API connections |
| `list_hooks` | List webhooks |

### Data Stores

| Tool | Description |
|------|-------------|
| `list_data_stores` | List data stores |
| `get_data_store` | Get data store details |
| `create_data_store` | Create new data store |
| `list_data_store_records` | List records |
| `create_data_store_record` | Add a record |

### Organization

| Tool | Description |
|------|-------------|
| `list_teams` | List teams in org |
| `list_organizations` | List all orgs |
| `get_current_user` | Get authenticated user |

## Example: Create a Scenario

```typescript
// Blueprint for a simple HTTP -> JSON scenario
const blueprint = JSON.stringify({
  name: "My New Scenario",
  flow: [
    {
      id: 1,
      module: "http:ActionGetFile",
      version: 3,
      mapper: {
        url: "https://api.example.com/data",
        method: "get"
      }
    },
    {
      id: 2,
      module: "json:ParseJSON",
      version: 1,
      mapper: {
        json: "{{1.data}}"
      }
    }
  ]
});

// Create with on-demand scheduling
create_scenario({
  teamId: 123,
  blueprint: blueprint,
  scheduling: '{"type":"on-demand"}'
});
```

## Make.com API Zones

| Zone | Region |
|------|--------|
| `eu1` | EU (Default) |
| `eu2` | EU |
| `us1` | US |
| `us2` | US |

## Development

```bash
# Run in development mode
npm run dev

# Build for production
npm run build

# Run production build
npm start
```

## License

MIT

TDQS

C2.9/5.0

Scored across 21 tools

Disambiguation5/5

Each tool targets a distinct resource and action (scenario lifecycle, data stores, teams, orgs, user, connections, hooks). The scenario tools are clearly differentiated by verb: get, list, create, update, delete, activate, deactivate, run, clone, get_blueprint, get_logs. No two tools appear to do the same thing.

Naming Consistency5/5

All tool names use snake_case with a consistent verb_noun pattern (e.g., list_scenarios, create_scenario, get_data_store). There are no mixed conventions or vague verbs. The pattern extends to compound resources like create_data_store_record and list_data_store_records.

Tool Count3/5

21 tools is on the heavy side for the server's scope, falling into the 16-25 borderline range. While most tools earn their place by covering distinct operations, the set could likely be consolidated without losing functionality. The count feels somewhat inflated for the core scenario and data store management tasks.

Completeness3/5

Scenario management is comprehensive (full CRUD plus activate, deactivate, run, clone, blueprint, logs). However, notable gaps exist: data stores and records lack update/delete operations, and connections and hooks are only listable with no create, update, or delete. These missing lifecycle operations will limit agents needing full management.