- Built-in HTTP endpoint — every Kaneo instance exposes
/api/mcpout of the box. No extra setup, no extra process. - Stdio package (
@kaneo/mcp) — a local stdio server for clients that prefer stdio transport.
Built-in HTTP endpoint
Every Kaneo API instance ships with a Streamable HTTP MCP endpoint. This is the recommended approach for self-hosted deployments. Point your MCP client at:/.well-known/oauth-protected-resource/api/mcp/.well-known/oauth-authorization-server/api
Stdio package
The@kaneo/mcp package runs a local stdio MCP server and authenticates with Kaneo using device authorization. Use this when your MCP client requires stdio transport.
Prerequisites
- Node.js 20 or newer
- A running Kaneo API
- Access to the Kaneo web app to approve device login
kaneo-cli and kaneo-mcp as device auth client IDs.
Install and register
Use the recommended interactive installer:- Cursor (user-wide)
- Cursor (project-level)
- Claude Desktop
- Custom JSON config path
--help to see all available targets and flags:
Point to a self-hosted instance
When generating config, pass your Kaneo base URL:| Variable | Description |
|---|---|
KANEO_API_URL | Kaneo API origin. Default: http://localhost:1337. Do not include /api. |
KANEO_MCP_CLIENT_ID | Device auth client ID. Default: kaneo-mcp. |
KANEO_MCP_CLIENT_ID, make sure it is included in DEVICE_AUTH_CLIENT_IDS.
Authentication flow
On the first tool call that needs Kaneo access, the MCP server:- Requests a device code from Kaneo
- Prints a verification URL and user code
- Opens the browser when possible
- Polls until you approve sign-in
- Stores credentials in
~/.config/kaneo-mcp/credentials.json
Available tools
Both the HTTP endpoint and stdio package expose the same tools:- Session:
whoami,list_workspaces - Projects:
list_projects,get_project,create_project,update_project - Tasks:
list_tasks,get_task,create_task,update_task,move_task,update_task_status - Comments:
list_task_comments,create_task_comment - Labels:
list_workspace_labels,create_label,attach_label_to_task,detach_label_from_task