mcp-kaneo
# 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
Scored across 11 tools
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.
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.
Eleven tools is well-scoped for a task-management server: it covers hierarchy traversal, task CRUD, subtask operations, and search without unnecessary duplication.
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.