Connect an AI agent with MCP
Let an assistant list, create, change, move and comment on tasks using the same key and the same scopes.
Model Context Protocol is how an AI assistant connects to outside tools. KyroTask runs an MCP server inside the application, so there is nothing extra to deploy.
Address and key
The MCP server is a single HTTP endpoint at https://kyrotask.com/api/v1/mcp. It authenticates with the same kt_live_ API key you would use for the REST API, sent in the X-Api-Key header. The scopes on that key are the agent’s limits: give it a read-only key and it cannot change anything, no matter what it is asked to do.
Claude Code
One command adds it — put your own key in place of kt_live_…:
claude mcp add --transport http kyrotask https://kyrotask.com/api/v1/mcp --header "X-Api-Key: kt_live_…"Then claude mcp list should show the server as Connected. This is the client we have checked against the real server. The Connection guide in settings prints the same command with your workspace’s address, and the new-key window prints it with the key already in it.
If the list says Failed to connect and mentions OAuth or “Dynamic Client Registration”, the key is the problem: KyroTask does not use OAuth, and a refused key sends the client looking for it. Check the key with Test connection in settings, or with a request to /api/v1/me.
Other clients
In a client that can add a remote (HTTP) MCP server, enter the address above and send the key in an X-Api-Key header. We only describe the settings of a client we have actually connected.
The tools it exposes
list_projects— list the projects in the organization, one page at a time (optionallylimit,cursor). Needsread:projects.get_project— one project with its board columns; a column’sisDonesays whether tasks in it count as finished (projectId). Needsread:projects.list_members— who can be assigned tasks in a project:idandname, no e-mail addresses (projectId). Needsread:projects.list_tasks— list the tasks in a project, one page at a time (projectId; optionallylimit,cursor). Needsread:tasks. A list tool answers{ items, nextCursor }, and the agent asks for the next page by sendingnextCursorback ascursor.get_task— one task as it is now, with itsversion(taskId). Needsread:tasks.create_task— create a task in a project (projectId,title; optionallydescription,priority,dueDate,assigneeIdandboardColumnId— without a column it lands in the first one). Needswrite:tasks.update_task— change a task’s title, description, priority, due date or assignee; only what is sent changes (taskId; with the optionalversion, nothing is written if somebody changed the task since). Needswrite:tasks.move_task— move a task to another column (taskId,columnId; optionallyposition). Needswrite:tasks.add_comment— add a comment to a task (taskId,content). Needswrite:tasks.
There is no tool that completes a task: the agent moves it with move_task into a column whose isDone is true. The tool descriptions tell the agent so.