# Monday.com API MCP Server

A server implementation for the Model Context Protocol (MCP) that provides an interface to interact with Monday.com API.

? Claude Desktop Demo

https://github.com/user-attachments/assets/ed8d24e1-256b-4f6b-9d84-38e54a8703fd

Prerequisites

Before running the MCP server, make sure you have:

  1. Node v20 or higher installed
  2. NPM v5.2.0 or higher installed
  3. monday.com API key

⚙️ Usage

npx @mondaydotcomorg/monday-api-mcp -t abcd123

The Monday API token can also be provided via the monday_token environment variable.

Command Line Arguments

Argument Flags Description Required Default
Monday API Token --token, -t Monday.com API token (can also be provided via monday_token environment variable) Yes -
API Version --version, -v Monday.com API version No current
Read Only Mode --read-only, -ro Enable read-only mode No false
Dynamic API Tools --enable-dynamic-api-tools, -edat (Beta) Enable dynamic API tools (Mode that includes the whole API schema, not supported when using read-only mode) No false

? Claude Desktop Integration

{
  "mcpServers": {
    "monday-api-mcp": {
      "command": "npx",
      "args": [
        "@mondaydotcomorg/monday-api-mcp",
        "-t",
        "abcd123"
      ]
    }
  }
}

? Cursor Integration

Using command line arguments

{
  "mcpServers": {
    "monday-api-mcp": {
      "command": "npx",
      "args": [
        "@mondaydotcomorg/monday-api-mcp",
        "-t",
        "abcd123"
      ],
      "env": {}
    }
  }
}

Using environment variable

{
  "mcpServers": {
    "monday-api-mcp": {
      "command": "npx",
      "args": [
        "@mondaydotcomorg/monday-api-mcp"
      ],
      "env": {
        "monday_token": "abcd123"
      }
    }
  }
}

License

This project is licensed under the MIT License - see the LICENSE file for details.

[
  {
    "description": "Delete an item",
    "name": "delete_item",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "itemId": {
          "type": "number"
        }
      },
      "required": [
        "itemId"
      ],
      "type": "object"
    }
  },
  {
    "description": "Get items by board id and term",
    "name": "get_board_items_by_name",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "boardId": {
          "type": "number"
        },
        "term": {
          "type": "string"
        }
      },
      "required": [
        "boardId",
        "term"
      ],
      "type": "object"
    }
  },
  {
    "description": "Create a new item in a monday.com board",
    "name": "create_item",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "boardId": {
          "description": "The id of the board to which the new item will be added",
          "type": "number"
        },
        "columnValues": {
          "description": "A string containing the new column values for the item following this structure: {column_id: value,... you can change multiple columns at once, note that for status column you must use nested value with label as a key and for date column use date as key} - example: {text_column_id:New text, status_column_id:{label:Done}, date_column_id:{date:2023-05-25},dropdown_id:value, phone_id:123-456-7890, email_id:[email protected]}",
          "type": "string"
        },
        "groupId": {
          "description": "The id of the group id to which the new item will be added, if its not clearly specified, leave empty",
          "type": "string"
        },
        "name": {
          "description": "The name of the new item to be created, must be relevant to the users request",
          "type": "string"
        }
      },
      "required": [
        "boardId",
        "name",
        "columnValues"
      ],
      "type": "object"
    }
  },
  {
    "description": "Create a new update in a monday.com board",
    "name": "create_update",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "body": {
          "description": "The update to be created, must be relevant to the users request",
          "type": "string"
        },
        "itemId": {
          "description": "The id of the item to which the update will be added",
          "type": "number"
        }
      },
      "required": [
        "itemId",
        "body"
      ],
      "type": "object"
    }
  },
  {
    "description": "Get board schema (columns and groups) by board id",
    "name": "get_board_schema",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "boardId": {
          "description": "The id of the board to get the schema of",
          "type": "number"
        }
      },
      "required": [
        "boardId"
      ],
      "type": "object"
    }
  },
  {
    "description": "Get users, can be filtered by name or partial name",
    "name": "get_users_by_name",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "name": {
          "description": "The name or partial name of the user to get",
          "type": "string"
        }
      },
      "required": null,
      "type": "object"
    }
  },
  {
    "description": "Change the column values of an item in a monday.com board",
    "name": "change_item_column_values",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "boardId": {
          "description": "The ID of the board that contains the item to be updated",
          "type": "number"
        },
        "columnValues": {
          "description": "A string containing the new column values for the item following this structure: {column_id: value,... you can change multiple columns at once, note that for status column you must use nested value with label as a key and for date column use date as key} - example: {text_column_id:New text, status_column_id:{label:Done}, date_column_id:{date:2023-05-25}, phone_id:123-456-7890, email_id:[email protected]}",
          "type": "string"
        },
        "itemId": {
          "description": "The ID of the item to be updated",
          "type": "number"
        }
      },
      "required": [
        "boardId",
        "itemId",
        "columnValues"
      ],
      "type": "object"
    }
  },
  {
    "description": "Move an item to a group in a monday.com board",
    "name": "move_item_to_group",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "groupId": {
          "description": "The id of the group to which the item will be moved",
          "type": "string"
        },
        "itemId": {
          "description": "The id of the item to which the update will be added",
          "type": "number"
        }
      },
      "required": [
        "itemId",
        "groupId"
      ],
      "type": "object"
    }
  },
  {
    "description": "Create a monday.com board",
    "name": "create_board",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "boardDescription": {
          "description": "The description of the board to create",
          "type": "string"
        },
        "boardKind": {
          "default": "public",
          "description": "The kind of board to create",
          "enum": [
            "private",
            "public",
            "share"
          ],
          "type": "string"
        },
        "boardName": {
          "description": "The name of the board to create",
          "type": "string"
        },
        "workspaceId": {
          "description": "The ID of the workspace to create the board in",
          "type": "string"
        }
      },
      "required": [
        "boardName"
      ],
      "type": "object"
    }
  },
  {
    "description": "Create a new column in a monday.com board",
    "name": "create_column",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "boardId": {
          "description": "The id of the board to which the new column will be added",
          "type": "number"
        },
        "columnDescription": {
          "description": "The description of the column to be created",
          "type": "string"
        },
        "columnSettings": {
          "description": "The default values for the new column (relevant only for column type status or dropdown) when possible make the values relevant to the users request",
          "items": {
            "type": "string"
          },
          "type": "array"
        },
        "columnTitle": {
          "description": "The title of the column to be created",
          "type": "string"
        },
        "columnType": {
          "description": "The type of the column to be created",
          "enum": [
            "auto_number",
            "board_relation",
            "button",
            "checkbox",
            "color_picker",
            "country",
            "creation_log",
            "date",
            "dependency",
            "direct_doc",
            "doc",
            "dropdown",
            "email",
            "file",
            "formula",
            "group",
            "hour",
            "integration",
            "item_assignees",
            "item_id",
            "last_updated",
            "link",
            "location",
            "long_text",
            "mirror",
            "name",
            "numbers",
            "people",
            "person",
            "phone",
            "progress",
            "rating",
            "status",
            "subtasks",
            "tags",
            "team",
            "text",
            "time_tracking",
            "timeline",
            "unsupported",
            "vote",
            "week",
            "world_clock"
          ],
          "type": "string"
        }
      },
      "required": [
        "boardId",
        "columnType",
        "columnTitle"
      ],
      "type": "object"
    }
  },
  {
    "description": "Delete a column from a monday.com board",
    "name": "delete_column",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "boardId": {
          "description": "The id of the board to which the new column will be added",
          "type": "number"
        },
        "columnId": {
          "description": "The id of the column to be deleted",
          "type": "string"
        }
      },
      "required": [
        "boardId",
        "columnId"
      ],
      "type": "object"
    }
  },
  {
    "description": "Create a new custom activity in the Eu0026A app",
    "name": "create_custom_activity",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "color": {
          "description": "The color of the custom activity",
          "enum": [
            "BRINK_PINK",
            "CELTIC_BLUE",
            "CORNFLOWER_BLUE",
            "DINGY_DUNGEON",
            "GO_GREEN",
            "GRAY",
            "LIGHT_DEEP_PINK",
            "LIGHT_HOT_PINK",
            "MAYA_BLUE",
            "MEDIUM_TURQUOISE",
            "PARADISE_PINK",
            "PHILIPPINE_GREEN",
            "PHILIPPINE_YELLOW",
            "SLATE_BLUE",
            "VIVID_CERULEAN",
            "YANKEES_BLUE",
            "YELLOW_GREEN",
            "YELLOW_ORANGE"
          ],
          "type": "string"
        },
        "icon_id": {
          "description": "The icon ID of the custom activity",
          "enum": [
            "ASCENDING",
            "CAMERA",
            "CONFERENCE",
            "FLAG",
            "GIFT",
            "HEADPHONES",
            "HOMEKEYS",
            "LOCATION",
            "NOTEBOOK",
            "PAPERPLANE",
            "PLANE",
            "PLIERS",
            "TRIPOD",
            "TWOFLAGS",
            "UTENCILS"
          ],
          "type": "string"
        },
        "name": {
          "description": "The name of the custom activity",
          "type": "string"
        }
      },
      "required": [
        "color",
        "icon_id",
        "name"
      ],
      "type": "object"
    }
  },
  {
    "description": "Create a new timeline item in the Eu0026A app",
    "name": "create_timeline_item",
    "parameters": {
      "additionalProperties": false,
      "properties": {
        "content": {
          "description": "The content of the new timeline item",
          "type": "string"
        },
        "custom_activity_id": {
          "description": "The ID of the custom activity for the timeline item",
          "type": "string"
        },
        "end_timestamp": {
          "description": "The end time of the timeline item in ISO8601 format",
          "type": "string"
        },
        "item_id": {
          "description": "The ID of the item to create the new timeline item on",
          "type": "number"
        },
        "location": {
          "description": "The location to add to the new timeline item",
          "type": "string"
        },
        "phone": {
          "description": "The phone number to add to the new timeline item",
          "type": "string"
        },
        "start_timestamp": {
          "description": "The start time of the timeline item in ISO8601 format",
          "type": "string"
        },
        "summary": {
          "description": "The summary of the new timeline item (max 255 characters)",
          "type": "string"
        },
        "timestamp": {
          "description": "The creation time of the new timeline item in ISO8601 format (e.g., 2024-06-06T18:00:30Z)",
          "type": "string"
        },
        "title": {
          "description": "The title of the new timeline item",
          "type": "string"
        },
        "url": {
          "description": "The URL to add to the new timeline item",
          "type": "string"
        }
      },
      "required": [
        "item_id",
        "custom_activity_id",
        "title",
        "timestamp"
      ],
      "type": "object"
    }
  },
  {
    "description": "Get custom activities from the Eu0026A app",
    "name": "fetch_custom_activity",
    "parameters": {
      "additionalProperties": false,
      "properties": {},
      "required": null,
      "type": "object"
    }
  }
]