Skip to main content
Glama
README.md
# mcp-kaneo

MCP server for Kaneo task management API. Lets your AI coding assistant manage tasks, projects, labels, and comments in Kaneo.

## Features

- **Tasks**: Create, read, update, delete tasks
- **Projects**: List and manage projects
- **Labels**: Create, update, delete labels; attach/detach from tasks
- **Comments**: Add and list comments on tasks
- **Search**: Search tasks, projects, and workspaces
- **Workspaces**: List workspaces and organizations
- **Task Relations**: Create subtask relations (links to Kaneo's native subtasks)

## Requirements

- [Node.js](https://nodejs.org/) v18 or later
- [Kaneo](https://kaneo.app/) account with API access

## Installation

### Using npx (recommended)

```bash
npx @fastman/mcp-kaneo
```

### Using npm

```bash
npm install -g @fastman/mcp-kaneo
npx @fastman/mcp-kaneo
```

## Configuration

### Environment Variables

| Variable | Required | Description |
|----------|----------|-------------|
| `KANEO_BASE_URL` | Yes | Kaneo API URL (e.g., `https://your-kaneo-instance.com/api`) |
| `KANEO_TOKEN` | Yes | Kaneo API token |
| `KANEO_TOOLSETS` | No | Comma-separated toolset names (default: `core`) |

### Toolsets

The server organizes tools into groups. By default only the `core` toolset is registered, keeping context size minimal.

| Toolset | Tools | Description |
|---------|-------|-------------|
| `core` | 11 | Task lifecycle, listing, search, subtasks |
| `collaboration` | 14 | Labels, comments, task relations |
| `admin` | 7 | Workspace and project CRUD |
| `legacy` | 6 | Field-specific task update tools (deprecated) |

**Configuration examples:**

```bash
# Default: core only (11 tools)
npx @fastman/mcp-kaneo

# Core + labels and comments
KANEO_TOOLSETS=core,collaboration npx @fastman/mcp-kaneo

# All non-legacy tools
KANEO_TOOLSETS=all npx @fastman/mcp-kaneo

# Everything including legacy field-specific updates
KANEO_TOOLSETS=all,legacy npx @fastman/mcp-kaneo
```

The `all` alias expands to `core,collaboration,admin` (excludes `legacy`).

### Codex

Add the server with the Codex CLI:

```bash
codex mcp add kaneo \
  --env KANEO_BASE_URL=https://your-kaneo-instance.com/api \
  --env KANEO_TOKEN=your-token \
  -- npx -y @fastman/mcp-kaneo
```

This stores the environment values in Codex's configuration. To keep the token
out of the configuration file, export the variables before starting Codex and
add the following to `~/.codex/config.toml` (or `.codex/config.toml` in a trusted
project):

```toml
[mcp_servers.kaneo]
command = "npx"
args = ["-y", "@fastman/mcp-kaneo"]
env_vars = ["KANEO_BASE_URL", "KANEO_TOKEN", "KANEO_TOOLSETS"]
```

For local development, build the project and replace the command and arguments:

```toml
[mcp_servers.kaneo]
command = "node"
args = ["/absolute/path/to/mcp-kaneo/dist/index.js"]
env_vars = ["KANEO_BASE_URL", "KANEO_TOKEN", "KANEO_TOOLSETS"]
```

Run `codex mcp list` to verify the configuration. In the Codex terminal UI, use
`/mcp` to confirm that the server is active and its tools are available.

### OpenCode

Add to your `~/.config/opencode/opencode.json`:

```json
{
  "mcp": {
    "kaneo": {
      "type": "local",
      "command": ["npx", "-y", "@fastman/mcp-kaneo"],
      "environment": {
        "KANEO_BASE_URL": "https://your-kaneo-instance.com/api",
        "KANEO_TOKEN": "${KANEO_TOKEN}"
      }
    }
  }
}
```

Or for local development:

```json
{
  "mcp": {
    "kaneo": {
      "type": "local",
      "command": ["node", "/path/to/mcp-kaneo/dist/index.js"],
      "environment": {
        "KANEO_BASE_URL": "https://your-kaneo-instance.com/api",
        "KANEO_TOKEN": "your-token"
      }
    }
  }
}
```

### Claude Code

```bash
claude mcp add kaneo --scope user npx @fastman/mcp-kaneo
```

### Cline

Add to your MCP settings:

```json
{
  "mcpServers": {
    "kaneo": {
      "command": "npx",
      "args": ["-y", "@fastman/mcp-kaneo"]
    }
  }
}
```

### Cursor

Go to `Cursor Settings` → `MCP` → `New MCP Server`:

```json
{
  "command": "npx",
  "args": ["-y", "@fastman/mcp-kaneo"]
}
```

## Tools

### Core (default)

- `list_workspaces` - List all accessible workspaces
- `list_projects` - List projects in a workspace
- `list_columns` - List columns in a project
- `list_tasks` - List tasks in a project with columns and pagination
- `search` - Search tasks, projects, or comments
- `get_task` - Get task details
- `create_task` - Create a new task
- `update_task` - Update one or more task fields (partial update)
- `delete_task` - Delete a task
- `create_subtask` - Create a subtask linked to a parent (inherits parent status by default)
- `list_subtasks` - List subtasks for a parent task

### Collaboration (`KANEO_TOOLSETS=collaboration`)

- `list_labels` - List workspace labels
- `create_label` - Create a new label
- `update_label` - Update label name/color
- `delete_label` - Delete a label
- `attach_label` - Attach label to task
- `detach_label` - Detach label from task
- `list_task_labels` - List labels on a task
- `add_comment` - Add comment to task
- `list_comments` - List comments on task
- `edit_comment` - Edit a comment
- `delete_comment` - Delete a comment
- `create_task_relation` - Create a relation between tasks
- `list_task_relations` - List all relations for a task
- `delete_task_relation` - Delete a task relation

### Admin (`KANEO_TOOLSETS=admin`)

- `get_workspace` - Get workspace details
- `update_workspace` - Update a workspace
- `delete_workspace` - Delete a workspace
- `get_project` - Get project details
- `create_project` - Create a new project
- `update_project` - Update a project
- `delete_project` - Delete a project

### Legacy (`KANEO_TOOLSETS=legacy`)

Field-specific task update tools preserved for migration. Use `update_task` instead.

- `update_task_title` - Update task title
- `update_task_description` - Update task description
- `update_task_status` - Update task status
- `update_task_priority` - Update task priority
- `update_task_assignee` - Update task assignee
- `update_task_due_date` - Update task due date

## Usage Examples

### Create a task

```
Create a task in kaneo called "Fix login bug" with high priority
```

### Update multiple fields

```
Update task #123: set priority to urgent and move to in-progress
```

### Create a subtask

```
Create a subtask "Fix the login validation" for parent task #123
```

### List subtasks

```
List all subtasks for task #123
```

### Add a label (requires collaboration toolset)

```
Create a label called "bug" with color #ef4444 and attach it to the task
```

### Update task status

```
Move the task "Fix login bug" to in-progress
```

## Development

```bash
# Install dependencies
npm install

# Build
npm run build

# Test
npm test

# Run locally
npm start
```

## License

MIT

TDQS

B3.4/5.0

Scored across 11 tools

Disambiguation4/5

Most tools have a clear resource+action split, and task CRUD operations are distinct. The only real ambiguity is between list_tasks and list_subtasks, since it is not stated whether project-level task listing includes subtasks.

Naming Consistency5/5

All tool names use snake_case with consistent list_/get_/create_/update_/delete_ prefixes. 'search' is the only bare verb, but it is a conventional and easily understood exception.

Tool Count5/5

Eleven tools is well-scoped for a task-management server: it covers hierarchy traversal, task CRUD, subtask operations, and search without unnecessary duplication.

Completeness4/5

The task lifecycle is complete with create, read, update, and delete, and the listing/search tools cover common lookup needs. The main gaps are the lack of explicit subtask update/delete operations and no create/update/delete for projects or columns, though these may be workable or out of scope.

Maintenance

ActivityMaintained
ResponsivenessNo issues