MCP · API

Connect Claude and other AI assistants

Taskgrove is an MCP server. Claude, or any client that speaks the Model Context Protocol, can read your boards and cards and — if you allow it — create, update, move and comment on cards. Scripts can do the same over a small REST API.

The two addresses

MCP server URL
https://taskgrove.app/mcp
REST API base
https://taskgrove.app/api/v1

Both accept the same credentials. There are two ways to get one: connect with OAuth (for a person using Claude), or create an API token (for a script, a CI job or a client that asks for a header).

Connect with OAuth (Claude custom connectors)

Nothing to copy but the URL, and no token to keep safe.

  1. In Claude, add a custom connector and give it the MCP server URL above. In Claude Code, run:
    claude mcp add --transport http taskgrove https://taskgrove.app/mcp
  2. Claude opens Taskgrove in your browser. Sign in if you need to.
  3. Check the approval screen, then approve. It shows the app’s name, the address it will send you back to, a workspace picker, and what the app will and will not be able to do with your role there. The app’s name is chosen by whoever registered it and is not verified, so check the address it sends you back to. If you do not recognise it, cancel.

Every app you have approved is listed under Your account → Connected apps, where you can disconnect it. Disconnecting ends the connection and every credential it was issued. The app’s access token lasts an hour and refreshes itself; if a connector suddenly asks you to reconnect, connect it again.

Connect with an API token

  1. Go to Settings → API tokens and choose New token. You need a verified email address and a workspace first.
  2. Give it a label you will recognise, pick when it expires (30 days, 90 days, a year, or no expiry) and decide whether it may write. Every token can read; writing is off unless you tick it.
  3. Copy the token. Taskgrove stores only a hash of it, so it is shown only once. The dialog also shows both addresses above.

In an MCP client

Send the token as a bearer header. For Claude Code, in .mcp.json:

{
  "mcpServers": {
    "taskgrove": {
      "type": "http",
      "url": "https://taskgrove.app/mcp",
      "headers": { "Authorization": "Bearer tg_YOUR_TOKEN" }
    }
  }
}

From a script

curl -H "Authorization: Bearer tg_YOUR_TOKEN" \
  https://taskgrove.app/api/v1/boards

A token is a password. Anyone holding it can do what it allows. Keep it out of files you commit, and revoke it from Settings → API tokens the moment it leaks.

One workspace, and no more than you can do

  • A connection reaches exactly one workspace. For a token, it is the workspace you created it in; for OAuth, the one you picked when you approved. No tool takes a workspace, and an id from another workspace simply does not resolve. To work in two workspaces, connect twice.
  • It can do no more than you can. Your role is re-checked on every request. If you are an observer, only the read tools work. If your role is lowered or you leave the workspace, the connection follows on its next request.
  • What stays in the app. Nothing here creates or deletes workspaces, boards or lists, manages members or invitations, or restores or permanently deletes anything.

The tools

10 tools. The read tools work with any connection; the write tools need write access, and a connection without it does not see them at all.

ToolNeedsWhat it does
list_boardsreadEvery board in the workspace, and which workspace this connection is bound to.
get_boardreadOne board: its lists, the cards in each, and its labels (the ids cards are tagged with).
find_cardsreadFind cards by a word or phrase in the title.
get_cardreadOne card in full: its description, checklist and recent comments.
create_cardwriteAdd a card to the bottom of a list, optionally with a description.
update_cardwriteChange a card's title, description, labels, assignees, priority, start or due date, or cover colour. A field you send replaces its current value.
move_cardwriteMove a card to another list, or to another position in its list.
comment_on_cardwritePost a comment on a card.
trash_cardwriteMove a card to Trash, where a person can restore it for 30 days.
create_labelwriteAdd a label to a board. A name that already exists returns that label instead of a duplicate. Labels cannot be deleted, only renamed by a person.

A trashed card waits in the workspace’s Trash for 30 days, where a person can restore it. Finished work belongs in a Done column: move it there with move_card.

The REST API

Every path is relative to https://taskgrove.app/api/v1 and takes the same bearer token.

RequestNeedsReturns
GET /workspacereadThe workspace this token is bound to.
GET /boardsreadThe boards in the workspace.
GET /boards/{boardId}readOne board with its lists and labels.
GET /boards/{boardId}/cards?listId={listId}readThe cards in one list. listId is required.
POST /boards/{boardId}/cardswriteCreate a card.
PATCH /boards/{boardId}/cards/{cardId}writeChange a card's fields.
POST /boards/{boardId}/cards/{cardId}/movewriteMove a card.

If it does not work

  • 401 with a token: the token expired or was revoked, or its owner is no longer in the workspace. Create a new one.
  • The write tools are missing: the connection has read access only, or your role in the workspace is observer.
  • Anything else: support@yalintech.com.

New to Taskgrove? Create your first board and come back to connect it.