Skip to main content
Glama
ataliarf

monday-graphql-mcp

by ataliarf
README.md
# monday-graphql-mcp

An MCP server that helps developers build on the monday.com GraphQL API — query validation, column value formats, error explanations, live schema introspection, and code scaffolding, all from your AI assistant.

## Tools

| Tool | API Key Required | Description |
|---|---|---|
| `column_value_format` | No | Exact read/write JSON format for any column type |
| `explain_error` | No | Decode API errors and get a fix suggestion |
| `scaffold` | No | Boilerplate code for integrations, webhooks, OAuth, and apps |
| `validate_query` | Optional | Syntax check, complexity estimate, and lint warnings |
| `get_schema` | Yes | Live schema introspection, filterable by keyword |
| `run_query` | Yes | Execute a query or mutation against the API |

## Setup

### 1. Install and build

```bash
git clone <repo-url> monday-graphql-mcp
cd monday-graphql-mcp
npm install
npm run build
```

### 2. Add to Claude Code

Add this to your `~/.claude/settings.json` under `mcpServers`:

```json
{
  "mcpServers": {
    "monday-graphql-mcp": {
      "command": "node",
      "args": ["/path/to/monday-graphql-mcp/dist/index.js"],
      "env": {
        "MONDAY_API_KEY": "your_api_key_here"
      }
    }
  }
}
```

Get your API key: **monday.com → Avatar → Administration → API**.

Restart Claude Code after updating the config.

### 3. Use without a key

`column_value_format`, `explain_error`, and `scaffold` work immediately with no API key.

---

## Usage Examples

### Get the exact format for a column type

```
How do I write a people column value?
→ uses column_value_format({ column_type: "people" })
```

```json
{
  "personsAndTeams": [{ "id": 12345678, "kind": "person" }]
}
```

### Decode an API error

```
I'm getting "ColumnValueException: invalid value" — what's wrong?
→ uses explain_error({ error: "...", query: "..." })
```

### Validate a query before running it

```graphql
query {
  boards(ids: [123]) {
    items_page(limit: 500) {
      items {
        id
        name
        column_values { id text value }
        subitems { id name }
      }
    }
  }
}
```

```
→ validate_query flags:
  - Estimated complexity: ~4200 (HIGH — likely to hit limits)
  - limit: 500 is the hard cap, but combined with subitems + all column_values this is expensive
  - Fetching all column_values without ids filter — add ids: ["col1"] to reduce complexity
  - Fetching subitems + column_values together — consider two separate queries
```

### Generate boilerplate

```
Scaffold a TypeScript webhook listener for monday.com
→ uses scaffold({ type: "webhook-listener", language: "typescript" })
```

Scaffold types: `api-client`, `webhook-listener`, `oauth-flow`, `integration`, `board-view`, `dashboard-widget`  
Languages: `typescript`, `javascript`, `python`

### Fetch the live schema

```
Show me the monday.com schema for item-related types
→ uses get_schema({ filter: "item" })
```

### Run a query

```graphql
query {
  me {
    id
    name
    email
  }
}
```

```
→ uses run_query({ query: "..." })
```

---

## Supported Column Types

`text` · `long_text` · `numbers` · `status` · `people` · `date` · `timeline` · `checkbox` · `dropdown` · `link` · `email` · `phone` · `rating` · `country` · `board_relation` · `dependency` · `tags` · `hour` · `week` · `world_clock` · `color_picker` · `location` · `formula` · `mirror` · `auto_number` · `creation_log` · `last_updated` · `item_id` · `vote` · `files` · `subtasks`

---

## Development

```bash
npm run dev      # run with tsx (no build step)
npm run build    # compile TypeScript to dist/
npm start        # run compiled output
```

The server communicates over stdin/stdout using the MCP protocol — it's designed to be launched by an MCP host (Claude Code, Claude Desktop, etc.), not run directly in a terminal.

TDQS

A3.9/5.0

Scored across 6 tools

Disambiguation5/5

Each tool targets a distinct use case: schema retrieval, query execution, query validation, column formatting, error explanation, and scaffolding. There is minimal conceptual overlap between them, and the descriptions make the boundaries clear.

Naming Consistency4/5

Most tools use a clear verb_noun pattern (get_schema, validate_query, run_query, explain_error, scaffold), but column_value_format deviates by being a noun phrase rather than an action-oriented name. This is a minor inconsistency and does not prevent readability.

Tool Count5/5

Six tools is a well-scoped set. Each tool addresses a distinct part of the monday.com GraphQL development workflow, and none feel redundant or unnecessary.

Completeness5/5

The set covers the full developer workflow: retrieving schema, validating queries, executing queries, understanding column value formats, troubleshooting errors, and generating boilerplate code. Since run_query handles arbitrary GraphQL operations, there are no obvious dead ends.

Maintenance

ActivityMaintained
ResponsivenessNo issues