A side-by-side look at the AIquila — Nextcloud MCP Server and Kanboard MCP MCP servers: transport, auth, tools, quality signals, and the config to install either one in Claude, Cursor, Windsurf or VS Code.
Verdict: choose AIquila — Nextcloud MCP Server for workplace & productivity work as a local process; choose Kanboard MCP for workplace & productivity as a local process. You can also run both side by side in one mcpServers block.
list_files, read_file, write_file.KANBOARD_URL, KANBOARD_USERNAME, KANBOARD_API_TOKEN.add_project_user, attach_file_to_task, close_task.Rows where the two servers differ are marked.
| Spec | ||
|---|---|---|
| Category | Workplace & Productivity | Workplace & Productivity |
| Quality signal | 65/100 · Great | 61/100 · Good |
| Install command | Confirmed | Confirmed |
| Transport | Local subprocess (stdio) | Local subprocess (stdio) |
| Auth | Not declared | API key required |
| Pricing | Not declared | Free |
| Required env vars | None listed | KANBOARD_URLKANBOARD_USERNAMEKANBOARD_API_TOKEN |
| Verified owner | Community listing | Community listing |
| GitHub stars | 39 | 9 |
| Directory activity | 1 views 0 installs 0 upvotes | 5 views 0 installs 0 upvotes |
| Tools | 342 | 39 |
| Full listing | View AIquila — Nextcloud MCP Server | View Kanboard MCP |
list_filesList files and folders in a Nextcloud directoryread_fileRead the contents of a file from Nextcloudwrite_fileCreate or update a file in Nextcloud. File size is limited (default 1 GB, configurable via MCP_MAX_FILE_SIZE).create_folderCreate a folder in NextclouddeleteDelete a file or folder from Nextcloudmove_fileMove or rename a file or folder in Nextcloudcopy_fileCopy a file or folder in Nextcloudget_file_infoGet detailed file metadata from Nextcloud (name, size, mime type, modified date, permissions, etc.)search_filesSearch for files in Nextcloud by name pattern and/or mime typeget_file_contentRead file content from Nextcloud with mime type info. Returns text for text files, base64 for binary files (images, PDFs, etc.). Images are returned as MCP image content for Claude vision.analyze_imageAnalyze one or more images stored in Nextcloud using Claude vision. Ask questions about image content, extract text (OCR), describe visuals, compare images, or analyse documents. Supports up to 20 images for multi-image comparison.bulk_file_operationsExecute multiple file operations (move, copy, delete) sequentially in a single call. Returns per-item results.add_project_userAdd a user to a Kanboard project with the given role. Role defaults to 'project-member' if not specified. Use list_project_users to find user ids and list_projects to find project ids; to unlink a member use remove_project_user. Returns { user_id, project_id, role } on success.attach_file_to_taskUpload a file to a Kanboard task as an attachment. Provide either file_path (local file) or content_base64 (inline base64 content) — not both. project_id is resolved automatically from the task (no need to provide it). Maximum file size: 5 MB (5,242,880 bytes) — larger files return VALIDATION_ERROR before any HTTP request is made. Returns { file_id } on success.close_taskClose (archive) an active Kanboard task. The task is set inactive and leaves the active board but is preserved — this is NOT a delete. Reversible: restore it with reopen_task. To permanently remove a task instead, use delete_task. Returns { ok: true, task_id } on success.create_columnAdd a column to a Kanboard project board. Project resolved from explicit project_id/project_identifier or .kanboard.yaml. To reorder it use move_column, to rename or change its WIP limit use update_column, to remove it use delete_column. Returns { column_id } on success.create_commentCreate a comment on a Kanboard task. The comment author is automatically set to the authenticated user (via getMe() cache); do NOT pass user_id — it is injected server-side. To edit a comment's body use update_comment; to remove one use delete_comment. Returns { comment_id } on success.create_projectCreate a new Kanboard project. Requires a name (1–255 chars). Optionally provide a description, short identifier, owner user id, start_date / end_date (ISO 8601 string or epoch seconds), and email. After creating, adjust the board with create_column / create_swimlane, add members with add_project_user, and edit attributes with update_project. Returns { project_id } on success.create_subtaskCreate a subtask under an existing Kanboard task. Status: 0 = todo (default), 1 = in progress, 2 = done. To list a task's subtasks use list_subtasks; to edit one use update_subtask. Returns { subtask_id, task_id } on success.create_swimlaneAdd a swimlane to a Kanboard project. Project resolved from explicit project_id/project_identifier or .kanboard.yaml. To reorder it use move_swimlane, to rename it use update_swimlane, to remove it use delete_swimlane. Returns { swimlane_id } on success.create_taskCreate a new task in a Kanboard project. Project is resolved from explicit project_id or project_identifier, or from .kanboard.yaml. Optional fields (column_id, owner_id, category_id, swimlane_id) fall back to .kanboard.yaml defaults when not provided. To create many tasks at once use create_tasks_batch; to move the task afterward use move_task_position. Returns { task_id, project_id } on success.create_tasks_batchBulk-create tasks in a Kanboard project using a single JSON-RPC batch request. Accepts 1–100 tasks per call. Non-atomic: partial failure is possible — check failed[] for per-task errors. Optional fields (column_id, owner_id, category_id, swimlane_id) fall back to .kanboard.yaml defaults when not provided. Returns { created: [...], failed: [...] } — never throws on partial failure.delete_columnPermanently delete a Kanboard column from a project board. DESTRUCTIVE and irreversible — requires explicit `confirm: true`. To rename a column or change its WIP limit use update_column; to reorder it use move_column. Returns { ok: true, column_id } on success.delete_commentPermanently delete a Kanboard comment. DESTRUCTIVE and irreversible — requires explicit `confirm: true`. To edit a comment's text instead of deleting it use update_comment. Returns { ok: true, comment_id } on success.Paste either block (or both) into your client config, e.g. claude_desktop_config.json or ~/.cursor/mcp.json. We only show a config when the install command is confirmed.
{
"mcpServers": {
"aiquila-nextcloud-mcp-server": {
"command": "npx",
"args": [
"-y",
"aiquila-mcp"
]
}
}
}
{
"mcpServers": {
"ernestocorona-kanboard-mcp": {
"command": "npx",
"args": [
"-y",
"@ernestocorona/kanboard-mcp"
],
"env": {
"KANBOARD_URL": "YOUR_KANBOARD_URL_HERE",
"KANBOARD_USERNAME": "YOUR_KANBOARD_USERNAME_HERE",
"KANBOARD_API_TOKEN": "YOUR_KANBOARD_API_TOKEN_HERE"
}
}
}
}