# mondaydotcom-mcp-server

A Model Context Protocol server that provides read and write access to Monday.com workspaces. This server enables LLMs to inspect board schemas, then read and write items.

## Usage

To use this server with the Claude Desktop app, add the following configuration to the "mcpServers" section of your `claude_desktop_config.json`:

```json
{
  "mcpServers": {
    "monday": {
      "command": "npx",
      "args": [
        "-y",
        "mondaydotcom-mcp-server",
        "api_token_xyz123"
      ]
    }
  }
}
```

Replace `api_token_xyz123` with your Monday.com API token. Your token should have appropriate read and write permissions for the boards you want to access.

## Components

### Tools

#### list_boards

Lists boards from your Monday.com workspace
- Input parameters:
  - workspaceId (string, optional): Filter boards by workspace
  - maxResults (number, optional): Maximum number of boards to return. Defaults to 100.

#### search_items

Search for items containing specific text
- Input parameters:
  - boardId (string, required): The ID of the board to query
  - searchTerm (string, required): Text to search for in items
  - columnIds (array, optional): Specific column IDs to search in
  - maxResults (number, optional): Maximum number of items to return. Defaults to 100.

#### list_workspaces

Lists all accessible Monday.com workspaces
- No input parameters required
- Returns workspace ID, name, and kind

#### list_groups

Lists all groups in a specific board
- Input parameters:
  - boardId (string, required): The ID of the board

#### get_item

Gets a specific item by ID
- Input parameters:
  - boardId (string, required): The ID of the board
  - itemId (string, required): The ID of the item to retrieve

#### create_item

Creates a new item in a board
- Input parameters:
  - boardId (string, required): The ID of the board
  - groupId (string, optional): The ID of the group
  - columnValues (object, required): The columns and values for the new item

#### update_items

Updates one or more items in a board
- Input parameters:
  - boardId (string, required): The ID of the board
  - items (array, required): Array of objects containing item ID and column values to update

#### delete_items

Deletes one or more items from a board
- Input parameters:
  - boardId (string, required): The ID of the board
  - itemIds (array, required): Array of item IDs to delete

#### create_board

Creates a new board in a workspace
- Input parameters:
  - workspaceId (string, required): The ID of the workspace
  - name (string, required): Name of the new board
  - description (string, optional): Description of the board
  - columns (array, required): Array of column definitions (title, type, settings)

#### update_board

Updates a board's name or description
- Input parameters:
  - boardId (string, required): The ID of the board
  - name (string, optional): New name for the board
  - description (string, optional): New description for the board

#### create_column

Creates a new column in a board
- Input parameters:
  - boardId (string, required): The ID of the board
  - title (string, required): Title of the new column
  - type (string, required): Type of the column
  - settings (object, optional): Column-specific settings

#### update_column

Updates a column's title or settings
- Input parameters:
  - boardId (string, required): The ID of the board
  - columnId (string, required): The ID of the column
  - title (string, optional): New title for the column
  - settings (object, optional): New settings for the column

## Resources

The server provides schema information for Monday.com boards:

### Board Schemas (monday://<boardId>/schema)
- JSON schema information for each board
- Includes:
  - Board id and name
  - Board description
  - Column definitions (ID, title, type, settings)
  - Group definitions (ID, title, color)
- Automatically discovered from Monday.com's GraphQL API

## Contributing

Pull requests are welcomed on GitHub! To get started:

1. Install Git and Node.js
2. Clone the repository
3. Install dependencies with `npm install`
4. Run `npm run test` to run tests
5. Build with `npm run build`

You can use `npm run build:watch` to automatically build after editing `src/index.ts`. This means you can hit save, reload Claude Desktop (with Ctrl/Cmd+R), and the changes apply.

## Releases

Versions follow the semantic versioning spec.

To release:

1. Use `npm version <major | minor | patch>` to bump the version
2. Run `git push --follow-tags` to push with tags
3. Wait for GitHub Actions to publish to the NPM registry.