monday.com MCP server
Boards, groups, items and updates in the monday.com workspaces your API token can see.
How it connects
New to MCP? What is an MCP server?
- Runs on
- Statio's runtime
- Connects with
- Credentials you paste in once: API Token
- May connect to
api.monday.com- Category
- Productivity
What it does
This server reads and edits monday.com work management: boards, items and subitems, updates, docs, forms, dashboards, automations, AI columns and account-level object schemas. It is @mondaydotcomorg/monday-api-mcp, monday.com's own package, published from the mondaycom/mcp repository and built on its agent toolkit. Statio runs version 3.3.1 with your personal API token, and every call goes to monday's GraphQL API at api.monday.com as you.
monday.com also hosts the same toolkit at https://mcp.monday.com/mcp, with OAuth sign-in through its Monday MCP marketplace app. That is a separate connection that monday runs, not the one this page sets up.
Tools
Version 3.3.1 lists 84 tools when it starts with no flags, which is how Statio runs it. Every tool carries annotations. The last column follows the read-only hint, and 31 of the 84 set it. Those 31 are exactly what the server keeps in read-only mode.
Items
| Tool | What it does | Reads or changes |
|---|---|---|
get_board_items_page | A page of a board's items, with optional column values and descriptions. | Reads |
create_item | Creates one item or subitem, or duplicates an existing item. | Changes |
create_items | Creates up to 20 items in one call. | Changes |
change_item_column_values | Sets column values on one item. | Changes |
update_items | Sets column values on up to 40 items in one call. | Changes |
move_item_to_group | Moves an item to another group on the same board. | Changes |
delete_item | Deletes an item. Marked destructive. | Changes |
undo_action | Reverses an earlier action on a board, such as a column change, delete, archive, move or duplicate, by its action record ID. Marked destructive. | Changes |
Updates and notifications
| Tool | What it does | Reads or changes |
|---|---|---|
get_updates | Updates (comments and posts) on up to 25 items, or on a board. | Reads |
create_update | Posts an update on an item, optionally mentioning users, teams or boards. | Changes |
create_updates | Posts up to 40 updates in one call. | Changes |
create_update_in_monday | Posts an update, then tells the agent to call the internal board-data tool. A second version of create_update. | Changes |
delete_update | Deletes an update. Marked destructive. | Changes |
create_notification | Sends a user a notification in the bell, and optionally by email. | Changes |
Boards, columns, groups and views
| Tool | What it does | Reads or changes |
|---|---|---|
get_board_schema | A board's columns and groups, with IDs and types. | Reads |
get_board_info | Board metadata, structure, owners and configuration. | Reads |
get_full_board_data | Full board data for monday's UI components. Its description tells agents never to call it. | Reads |
get_board_activity | Activity log for up to the last 90 days, filterable by item or user. | Reads |
board_insights | Filters, groups and aggregates a board's column data. | Reads |
link_board_items_workflow | Returns monday's instructions for linking items across boards. | Reads |
get_column_type_info | The schema for one column type. | Reads |
create_board | Creates a board. | Changes |
use_template | Creates boards in a workspace from a template, in the background. | Changes |
check_template_status | Status of a use_template run. | Reads |
create_group | Adds a group to a board. | Changes |
create_column | Adds a column to a board. | Changes |
update_column | Changes a column's title, description or settings. | Changes |
delete_column | Deletes a column and every value in it. The description calls it irreversible. | Changes |
create_view | Adds a saved view (tab) to a board. | Changes |
update_view | Changes a view's name, filters or sort. | Changes |
create_view_table | Adds a table view with column and group-by settings. | Changes |
update_view_table | Changes a table view. | Changes |
Workspaces, folders, users and search
| Tool | What it does | Reads or changes |
|---|---|---|
list_workspaces | Workspaces available to you. | Reads |
workspace_info | The boards, docs and folders in a workspace. | Reads |
search | Searches boards, docs, folders, workspaces, updates, items, timeline items and dashboards. | Reads |
get_user_context | Your user and account, and your relevant boards, docs and workspaces. | Reads |
list_users_and_teams | Users and teams in the account. | Reads |
create_workspace | Creates a workspace. | Changes |
update_workspace | Changes a workspace. | Changes |
create_folder | Creates a folder in a workspace. | Changes |
update_folder | Changes a folder. | Changes |
move_object | Moves a folder, board or overview, including to another workspace. | Changes |
Docs and files
| Tool | What it does | Reads or changes |
|---|---|---|
read_docs | Docs with their markdown content, or a doc's version history. | Reads |
create_doc | Creates a doc in a workspace or on an item. | Changes |
add_content_to_doc | Appends markdown to a doc. | Changes |
update_doc | Renames a doc and edits, creates or deletes its blocks. Marked destructive. | Changes |
get_assets | File metadata, including a public URL valid for one hour. | Reads |
fetch_file_content | Extracts the text of a file in a files column: text, Word, PDF, Excel and images. | Reads |
update_assets_on_item | Sets a file or doc column to a list of files, docs or links. | Changes |
get_asset_upload_url | Starts a file upload and returns a presigned URL. | Changes |
finalize_asset_upload | Finishes an upload and creates the file in monday. | Changes |
Forms
| Tool | What it does | Reads or changes |
|---|---|---|
get_form | A form's pages, questions and settings by its token. | Reads |
create_form | Creates a form and a board to hold its responses. | Changes |
update_form | Changes a form's settings. | Changes |
form_questions_editor | Creates, updates or deletes a question on a form. Marked destructive. | Changes |
create_form_submission | Submits a response to a form. | Changes |
Dashboards and widgets
| Tool | What it does | Reads or changes |
|---|---|---|
all_widgets_schema | The schema of every widget type. | Reads |
create_dashboard | Creates a dashboard over one or more boards. | Changes |
create_widget | Adds a widget to a dashboard or board view. | Changes |
Automations and AI columns
| Tool | What it does | Reads or changes |
|---|---|---|
list_automations | A board's automations and their state. | Reads |
get_automation_runs | Automation run history, with errors. | Reads |
get_automation_statistics | Success and failure counts for automation runs. | Reads |
create_automation | Creates an automation on a board from a plain-language description. | Changes |
manage_automations | Activates, deactivates or permanently deletes an automation. Marked destructive. | Changes |
configure_ai_column | Adds AI to a column: categorize, summarize, translate, extract and more, optionally run on existing items. | Changes |
remove_ai_from_column | Turns AI off on a column. Marked destructive. | Changes |
Object schemas
| Tool | What it does | Reads or changes |
|---|---|---|
get_object_schemas | Account-level object schemas, which define boards' columns. | Reads |
create_object_schema | Creates an account-level object schema. | Changes |
update_object_schema | Changes an object schema. | Changes |
manage_object_schema_columns | Creates or updates schema columns. Changes reach every connected board. | Changes |
set_object_schema_column_active_state | Turns a schema column on or off. | Changes |
manage_object_schema_board_connection | Connects a board to a schema, or detaches it. | Changes |
delete_object_schema_columns | Permanently deletes schema columns. Marked destructive. | Changes |
delete_object_schema | Deletes a schema with no boards connected. Marked destructive. | Changes |
Raw GraphQL
| Tool | What it does | Reads or changes |
|---|---|---|
all_api_read | Runs any GraphQL query against monday's API. Mutations are rejected before sending. | Reads |
all_api_write | Runs any GraphQL mutation: create, update or delete anything the API allows. Marked destructive. | Changes |
Other
| Tool | What it does | Reads or changes |
|---|---|---|
get_monday_dev_sprints_boards | Finds monday dev sprints boards and their task boards. | Reads |
get_sprints_metadata | The sprints on a sprints board. | Reads |
get_sprint_summary | Summary and analysis of one sprint. | Reads |
fetch_custom_activity | Custom activities in the E&A app. | Reads |
create_custom_activity | Creates a custom activity in the E&A app. | Changes |
create_timeline_item | Adds a timeline item to an item in the E&A app. | Changes |
get_monday_knowledge | Asks monday's help center or developer docs a question and returns an AI-written answer. | Reads |
submit_bug_or_feature_request | Files feedback about monday.com or the server. Its description tells the agent to call it without being asked. | Reads |
Set it up
Both setups need a personal API token. In monday.com, click your profile picture, then Developers, then API token > Show. Account admins can also find it under Administration > Connections > Personal API token. monday's authentication docs say personal tokens "mirror all permission levels set in the monday.com UI" and carry every scope, so the token can do whatever you can do in the browser. Regenerate in the same place invalidates the old token at once.
Claude Code, directly:
claude mcp add monday -e MONDAY_TOKEN=your-token -- npx -y @mondaydotcomorg/monday-api-mcp@3.3.1Cursor, directly, in ~/.cursor/mcp.json or .cursor/mcp.json:
{
"mcpServers": {
"monday": {
"command": "npx",
"args": ["-y", "@mondaydotcomorg/monday-api-mcp@3.3.1"],
"env": {
"MONDAY_TOKEN": "${env:MONDAY_TOKEN}"
}
}
}
}The variable is MONDAY_TOKEN. The package README's monday_token example is out of date in 3.3.1, which reads every setting from MONDAY_ plus the setting's name in capitals.
To run it read-only, add --read-only true to the args, or set MONDAY_READONLYMODE=true. The value matters. The argument parser only reads a flag that has a value after it, so a bare --read-only, as monday's own README writes it, leaves all 84 tools in place. With the value set, the server lists the 31 read tools and nothing else. all_api_read stays, and all_api_write goes.
The client tutorials, How to add MCP servers to Claude Code and How to set up MCP servers in Cursor, explain config scopes and how to keep the token out of files you commit.
Through Statio: install monday.com from the catalog, paste the token under the server's Credentials, and grant tools under Permissions. A new server has no grants, so nobody can call it until you add some. The desktop app then writes your client configs. The manual entry is the local proxy URL with the server name from your dashboard, http://127.0.0.1:7777/monday/mcp, added in Claude Code with claude mcp add --transport http monday <url> or as a "url" in Cursor. Statio's image starts the server without read-only mode, so all 84 tools are there and your grants decide which an agent sees. Tools missing after that? Start a fresh session, then work through How to debug an MCP server that won't connect.
What to hold back
Start with the token. It is you, with every scope, in every workspace you can open. If an agent should only work on one team's boards, make a monday user for it, add that user only where it belongs, and use its token.
all_api_write is the tool to keep from every agent. It runs any mutation the GraphQL API accepts, so a grant on it covers every delete and admin change the named tools would have shown you separately, plus ones they don't have. Per-tool grants stop meaning much once an agent holds it. all_api_read is the read-side version. It can reach anything your token can see, including account and user data no named tool returns, so give it only to an agent you want exploring the account.
The deletes are scattered: delete_item, delete_update, delete_column, delete_object_schema, delete_object_schema_columns, the delete action in manage_automations and form_questions_editor, and block deletes inside update_doc. delete_column removes every value in the column, on every item. undo_action is also marked destructive, because it reverses changes on a board whoever made them.
Some writes act on people. create_notification sends a bell notification and optionally an email to any user, from your account. create_update and create_updates notify anyone they mention. An agent that posts 40 updates in one call reaches 40 item owners.
Some writes keep running after the session. create_automation and configure_ai_column change what happens to every future item on the board, and configure_ai_column can run over existing items too. The account-level schema tools change the columns of every board connected to a schema. Workspace, folder and move_object changes rearrange where everyone finds their work. A task agent needs none of these.
get_assets returns a public link to a private file, valid for an hour. On its own that is a read. Next to any tool that sends text out, on this server or another, it is a way to share a file nobody meant to share.
Item names, updates, docs and attached files are written by whoever has access, and form responses by whoever has the form link. fetch_file_content tells the agent to read attached files without being asked. Any of that text can carry instructions aimed at the agent, and an agent holding the read tools and the batch writes together is the setup where that changes your boards.
Leave out submit_bug_or_feature_request too. It is marked read-only, but its description tells the agent to file reports about your session whenever things go wrong, and no agent's job needs it.
With Statio you grant each tool separately, so a status-report agent can hold get_board_items_page, get_updates and board_insights while a triage agent also gets create_item and change_item_column_values. MCP permissions covers how grants and denies combine.
Questions
@mondaydotcomorg/monday-api-mcp is published by monday.com from its mondaycom/mcp repository. monday also hosts the same tools at https://mcp.monday.com/mcp, which signs in with OAuth through the Monday MCP marketplace app instead of a pasted token.--read-only true or set MONDAY_READONLYMODE=true, and the server lists only its 31 read tools. A bare --read-only with nothing after it is ignored in 3.3.1. Through Statio, granting only the read tools gives the same result.all_api_write can send any mutation the API accepts, so keep it from agents if deletes matter to you.What Statio adds
- You choose which of its tools each agent may call. A tool you hold back is removed from that agent's tool list, and a call to it is refused.
- The credentials stay encrypted in Statio, so they never sit in an agent config file.
- Every call is recorded with the agent that made it, when, how long it took and whether it succeeded.
- The outbound list above is enforced outside the server's container, so it cannot reach any other host.
Lock down your first tool in minutes.
Three MCP servers, one of them hosted, and 10,000 calls a month, free and without a card. If you outgrow it the next plan is $19.
Two steps: create your account, then install the desktop app on each machine that runs an AI client.
- Keys encrypted at rest, never handed to an agent
- Cancel anytime, nothing is deleted
- How Statio handles credentials