GetItDone MCP
Buat, perbarui, dan lacak tugas serta proyek di seluruh ruang kerja tim GetItDone Anda. Server jarak jauh dengan masuk OAuth.
Server MCP Terhosting
npx add-mcp 'https://app.nowgetitdone.com/api/mcp'Terpasang ke Claude Code, Codex, Cursor, dan lainnya
Dokumentasi
The remote GetItDone MCP server: connect Claude, ChatGPT, Cursor, VS Code, Gemini or any MCP client by sign-in or API key. Endpoint, setup, tool list.
GetItDone runs a remote Model Context Protocol (MCP) server, so AI assistants like Claude can list, create, update, and archive your tasks — with the same rich context the product itself has, including task images and extracted video frames.
Any MCP client that speaks remote servers can connect: no local install, no sidecar process. There are two ways to authenticate — pick whichever your client supports:
- Sign in (OAuth) — paste the server URL into the client, sign in to GetItDone, and approve access. No key to create or store. Works with every client in Connect your client.
- API key — send a
gid_key in a header. Best for scripts, CI, and clients that take a JSON config with headers.
Step-by-step for one assistant: Use GetItDone in Claude.
Endpoint
| URL | https://app.nowgetitdone.com/api/mcp |
| Transport | Streamable HTTP |
| Auth | OAuth 2.1 sign-in, or Authorization: Bearer <gid_ API key> |
Sign in with OAuth — no API key
The server implements the MCP authorization spec: an unauthenticated request gets a 401 pointing at https://app.nowgetitdone.com/.well-known/oauth-protected-resource, and clients register themselves (dynamic client registration) and sign you in with OAuth 2.1 + PKCE. In practice:
- Add
https://app.nowgetitdone.com/api/mcpas a remote MCP server in your client. - Your browser opens GetItDone — sign in if you are not already.
- The consent screen lists exactly what the assistant is asking for (for example Read tasks, Write tasks) and which workspaces it may use: only the workspace you are in by default, the ones you tick, or All my workspaces. Choose Allow access.
An app connected to several workspaces must say which one each call is for. Leaving a workspace also ends every connection's access to it. Apps you connected before this choice existed keep reaching all your workspaces until you disconnect and connect them again.
To disconnect later, open your profile in GetItDone → Connected Apps and revoke the app. Access tokens last 30 days by default, but every request checks that the connection is still approved, so revoking takes effect at once: the app cannot get new access, and a token it already holds is refused on its next request.
Get an API key
- Sign in at app.nowgetitdone.com.
- Go to Settings → API Keys (
app.nowgetitdone.com/settings/api-keys). - Create a key — keys start with
gid_and are shown once, so store them safely.
The same key authenticates the public /v1 REST API; test keys are prefixed gid_test_.
Connect your client
Buttons for Claude and ChatGPT open the directory listing; the others install directly or jump to the instructions.
GetItDone's MCP server is a hosted Streamable HTTP endpoint with OAuth 2.1 sign-in. There is nothing to install or run: point the client at the URL below and sign in to GetItDone when the browser opens. Every client that supports remote MCP servers with OAuth works; the ones below are the common ones.
https://app.nowgetitdone.com/api/mcp
Claude and Claude Desktop
- claude.ai / Claude Desktop: open GetItDone in the Claude connector directory and click Connect, then sign in. Manual alternative: Settings → Connectors → Add custom connector, paste the URL, then sign in. Step by step: Use GetItDone in Claude.
Claude Code
Claude Code, signing in (then run /mcp inside Claude Code and follow the browser sign-in):
claude mcp add --transport http getitdone https://app.nowgetitdone.com/api/mcp
Claude Code with an API key instead:
claude mcp add --transport http getitdone https://app.nowgetitdone.com/api/mcp \
--header "Authorization: Bearer gid_YOUR_API_KEY"
ChatGPT and Codex
- ChatGPT: one click: Open GetItDone in ChatGPT opens GetItDone's published ChatGPT app; choose Connect, then sign in. Manual: Settings → Apps & Connectors → Create (developer mode), name it GetItDone, paste the URL, authentication OAuth.
- Codex CLI: add to
~/.codex/config.toml:
[mcp_servers.getitdone]
url = "https://app.nowgetitdone.com/api/mcp"
Cursor and other JSON-config clients
One click: Add to Cursor. Or in .cursor/mcp.json (Cursor prompts for the OAuth sign-in on first use):
{
"mcpServers": {
"getitdone": {
"url": "https://app.nowgetitdone.com/api/mcp"
}
}
}
Any remote-MCP client that takes a JSON config can use an API key instead of signing in — add the header:
{
"mcpServers": {
"getitdone": {
"url": "https://app.nowgetitdone.com/api/mcp",
"headers": {
"Authorization": "Bearer gid_YOUR_API_KEY"
}
}
}
}
VS Code and GitHub Copilot
One click: Add to VS Code. Or run MCP: Add Server → HTTP and paste the URL, which writes to .vscode/mcp.json:
{
"servers": {
"getitdone": {
"type": "http",
"url": "https://app.nowgetitdone.com/api/mcp"
}
}
}
Google Antigravity
Install the plugin from the repository (or from the Antigravity Marketplace once listed):
agy plugin install https://github.com/DevinoSolutions/mcp-servers/antigravity-plugins/getitdone
Or add the server by hand in ~/.gemini/config/mcp_config.json (Antigravity requires the serverUrl key):
{
"mcpServers": {
"getitdone": {
"serverUrl": "https://app.nowgetitdone.com/api/mcp"
}
}
}
Gemini
- Gemini app: Settings → Connected apps → Custom apps → Add a custom app, paste the URL, then mention
@GetItDonein a chat. (Custom apps are currently limited to personal Google accounts in the US.) - Gemini CLI:
gemini extensions install https://github.com/DevinoSolutions/mcp-serversthen/mcp auth getitdone, or add{ "mcpServers": { "getitdone": { "httpUrl": "https://app.nowgetitdone.com/api/mcp" } } }to~/.gemini/settings.json.
Kiro
One click: Add to Kiro. Or in .kiro/settings/mcp.json:
{
"mcpServers": {
"getitdone": {
"url": "https://app.nowgetitdone.com/api/mcp"
}
}
}
Perplexity, Mistral Le Chat, Grok
- Perplexity (Pro, Max, Enterprise): Settings → Connectors → Custom connector, paste the URL, authentication OAuth.
- Mistral Le Chat (all plans): Intelligence → Connectors → Add Connector → Custom MCP Connector, paste the URL.
- Grok: grok.com → Connectors → New connector → Custom, paste the URL.
Other clients
- Replit: Add to Replit, or Integrations → Add MCP server.
- Devin, Windsurf, Zed, JetBrains Junie, Cline, OpenCode: add a remote (HTTP) MCP server with the URL above; each prompts for the OAuth sign-in on first use. Cline can also install it from the Cline marketplace entry using its
llms-install.md.
Tokens are scoped to what you approve on the consent screen; a tool you did not grant is never shown to the assistant. Revoke access at any time from your profile under Connected Apps — see Sign in with OAuth.
Tools
Everything an assistant needs to run a real task workflow — discovery, deep reads, and writes.
The server uses Code Mode. Its tool list (tools/list) has two tools, search_tools and execute_typescript, not one tool per operation. Your assistant calls search_tools to find the tools below, then runs a short TypeScript program through execute_typescript that calls them. Each call goes through the same scope checks as a direct call.
Each tool names the API scope a key must hold: without it search_tools never lists the tool and a call is refused.
list_workspaces— read ·workspaces:read— List the workspaces (organizations) this connection can use, with their ids: the workspaces the user chose when approving the connection, or every workspace they belong to for an API key. Pass a returned id asworkspaceIdon the other tools to target a specific workspace when there is more than one.list_projects— read ·projects:read— List the projects in the workspace with their ids — the same grouping the board shows down the side of the task list. Call this BEFORE filing work under a project: pass a returned id asprojectIdon create_task or update_task, or as a filter on list_tasks. Archived projects are left out unless you pass includeArchived: true, and every project says whether it is archived. Results are paged (limit, default 50, max 200): while nextCursor is not null, call again with cursor set to it and the same other arguments to get the rest. If the project the user named is not in this list it does not exist, so say so (or create it with create_project when the user asks for a new one) rather than inventing it or writing its name into a task.list_members— read ·members:read— List the members of the workspace with their userId, name, email and role. Pass a returned userId asassigneeUserIdon create_task or update_task to assign a task to that person, or on list_tasks to see what they own. Only members of the workspace can be assigned, so look the person up here rather than guessing an id.list_tasks— read ·tasks:read— List tasks in the workspace. Can filter by status, priority, project and owner/assignee (assigneeUserId, a userId from list_members). Returns the latest version of each task — including its owner (ownerUserId and ownerName), the projects it is filed under, whether it is currently BLOCKED and how many tasks it blocks — so you can tell what is actually actionable right now, where it belongs and who owns it. Results are paged, newest task first (limit, default 50, max 200): while nextCursor is not null, call again with cursor set to it and the same filters until it is null, or you will miss tasks.get_task_details— read ·tasks:read— Get the FULL content of a single task: its rich-text notes, every attachment (image, video, document) with short-lived URLs the AI can fetch to read the actual content, and its dependency chain — which tasks are blocking it and which tasks it blocks. Use this after list_tasks when you need to see what is inside a task or why it cannot be started. Identify the task by short ID (e.g. 123 for T-123) or task version ID.get_task_video_context— read ·tasks:read— Pull visual context from a task's videos: extracts a few evenly-spaced frames from any uploaded video (screen recording etc.) in the task's notes or attachments so you can understand what it shows, and surfaces any YouTube/Vimeo links found in the notes. Use when a task references a video/screen recording. Identify the task by short ID (e.g. 123 for T-123) or task version ID. Through Code Mode the assistant gets a summary (each video's frame count and extraction status, plus the video links), not the frame images.create_task— write ·tasks:write— Create a new task for the current user in their organization. Set a start date when the task cannot be worked on until a given day (defer-until). File it under a project by passing a project id from list_projects. Assign it to a workspace member by passing their userId from list_members asassigneeUserId(it is assigned to you when omitted). Set a recurrence to make it a repeating habit or routine ("every weekday", "every other Monday", "the 1st of each month", "every 3 days after I finish it") — each day is completed independently.update_task— write ·tasks:write— Update an existing task. You can update the name, status, priority, start date, due date, notes, story points, its project (pass a project id from list_projects to move it, or null to remove it from every project), its owner/assignee (pass a userId from list_members asassigneeUserId, or null to unassign), or its repeat schedule (pass a recurrence to start/replace it, or null to stop it repeating). Identify the task by its short ID (e.g. T-123) or task version ID.complete_task_occurrence— write ·tasks:write— Mark one DAY of a repeating task done. This is per-day: completing Monday leaves Tuesday untouched. The day can be in the PAST ("I brushed my teeth yesterday") or a scheduled FUTURE day finished early — neither breaks the chain, and neither is something a task-manager MCP normally lets you say. Identify the task by short ID (e.g. 123 for T-123) and the day as YYYY-MM-DD; omit the day for today.link_task_dependency— write ·tasks:write— Record that one task is BLOCKED BY another (finish-to-start), or remove that link. Use it whenever the user says one piece of work is waiting on, depends on, or is held up by another. The blocked task is then reported as blocked until every blocker is completed, so you can answer "what is blocking this?" with the real chain instead of a flat list. Identify both tasks by short ID (e.g. 123 for T-123); pass action "remove" to unlink. Links that would create a loop are rejected.archive_task— write ·tasks:write— Archive or unarchive a task. Archived tasks are hidden from the main task list. Identify the task by its short ID (e.g. T-123).create_project— write ·projects:write— Create a project in the workspace — a named grouping of tasks, shown down the side of the task list. Returns the new project id to pass asprojectIdon create_task, update_task or list_tasks. Project names are unique per workspace: if a project with that name already exists (archived or not) the call is refused and names the existing project and its id, so reuse it instead of creating a duplicate.update_project— write ·projects:write— Rename a project or change its description. Identify the project by its id from list_projects; pass description null to clear it. A name already used by another project in the workspace is refused.archive_project— write ·projects:write— Archive or unarchive a project. An archived project is hidden from project lists and pickers and no new task can be filed into it; the tasks already in it are left exactly as they are. Pass archived false to unarchive. Identify the project by its id from list_projects (pass includeArchived there to find an archived one).search_docs— read ·workspaces:read— Search the GetItDone developer documentation — REST API operations, error/problem codes, and guide pages — and return ranked results with their public URLs. Guide and error pages also return a Markdown-twin URL (the page URL plus '.md') the agent can fetch to read the full page as plain text. Use when you need to know how a /v1 endpoint works, what an error code means, or where a capability is documented.
Context other task tools don't give an AI
Most task-management MCP integrations stop at text and metadata. GetItDone treats the AI as a first-class user and hands it the same rich context a teammate would get:
- Full task contents, attachments included.
get_task_detailsreturns a task's rich-text notes plus every attachment — images, videos, documents — each with a short-lived URL the assistant can fetch to read the actual content, not just a filename. - Blocked-by chains the assistant can read and write.
list_tasksreports whether each task is currently blocked and how many tasks it blocks,get_task_detailsreturns the chain in both directions, andlink_task_dependencyrecords or removes a blocker — so "what can I actually start today?" is answered from the real graph, and a link that would create a loop is refused rather than stored. - Video-frame extraction, server-side.
get_task_video_contextsamples evenly-spaced frames from screen recordings and other videos attached to a task. Through Code Mode, which the server uses, the assistant receives a summary (how many frames each video gave and whether extraction worked), not the frame images. YouTube and Vimeo links in the notes are surfaced too.
Quotas
The MCP server works on every plan, including Free. MCP requests made with a gid_ API key count against the same workspace API-call quota as the REST API, one per request. Apps connected by signing in (OAuth), such as Claude, are not metered against that quota. The per-plan numbers are in Rate limits & quotas, and checkout is on the pricing page.
FAQ
What is the GetItDone MCP server?
It is a remote Model Context Protocol server at https://app.nowgetitdone.com/api/mcp. AI assistants use it to list, create, update, complete and archive your GetItDone tasks, and to read what is inside them: notes and attachments. There is nothing to install.
Which AI assistants can connect to GetItDone?
Any MCP client that supports remote servers over Streamable HTTP with OAuth sign-in: Claude (claude.ai, Claude Desktop and Claude Code), ChatGPT and Codex, Cursor, VS Code with GitHub Copilot, Google Antigravity, Gemini, Kiro, Perplexity, Mistral Le Chat, Grok, Replit, Windsurf, Zed, Cline and others. Clients that take a JSON config with headers can connect with an API key instead of signing in.
Do I need an API key to connect an AI assistant?
Not if your client can sign in. Claude and Claude Code use OAuth: you approve access on a GetItDone consent screen and never handle a key. Create a gid_ key under Settings → API Keys only for clients that take a JSON config with headers.
Is the GetItDone MCP server free?
Yes. It works on every plan, including Free. MCP requests made with a gid_ API key count against your workspace's API-call quota, the same quota as the REST API; apps connected by signing in are not metered.
Can an AI assistant delete my tasks?
No. There is no delete tool. With write access an assistant can create, update, complete, link and archive tasks, and an archived task can be unarchived.
What can an AI see in GetItDone that other task tools don't show it?
The contents of a task, not just its title: rich-text notes, every attachment through a short-lived URL, a summary of the frames extracted from screen recordings, and the blocked-by chain between tasks. See Context other task tools don't give an AI.
Read this page as Markdown — plain text for AI agents. Every guide at once: llms-full.txt.
[
Browser extension
Save any page, selection or screenshot as a GetItDone task from Chrome or Edge.
](https://nowgetitdone.com/docs/browser-extension)[
Use GetItDone in Claude
Connect Claude, Claude Desktop or Claude Code to your GetItDone tasks through the remote MCP server. Sign in with OAuth, no API key needed.