Skip to content

Latest commit

 

History

History
132 lines (120 loc) · 9.24 KB

File metadata and controls

132 lines (120 loc) · 9.24 KB

Nextcloud MCP Server — Development Progress

Current Phase: 3 — Groupware

Completed

  • Project scaffold: pyproject.toml, src layout, config, permissions, client (2026-03-20)

  • Permission model: read/write/destructive levels with decorator (2026-03-20)

  • HTTP client: WebDAV + OCS support with niquests (2026-03-20)

  • Files tools: list_directory, get_file, upload_file, create_directory, delete_file, move_file (2026-03-20)

  • Users tools: get_current_user, list_users, get_user (2026-03-20)

  • Unit tests: permissions, config (2026-03-20)

  • Integration tests: files lifecycle, users (2026-03-20)

  • CI pipeline: lint + unit tests + integration tests with real Nextcloud (2026-03-20)

  • Notifications tools: list_notifications, dismiss_notification, dismiss_all_notifications (2026-03-21)

  • Test suite overhaul: MCP tool-level integration tests (2026-03-21)

  • Talk tools: list_conversations, get_conversation, get_messages, get_participants, send_message, create_conversation, delete_message, leave_conversation (2026-03-22)

  • Talk polls: get_poll, create_poll, vote_poll, close_poll (2026-03-24)

  • Activity tools: get_activity (2026-03-24)

  • Comments tools: list_comments, add_comment, edit_comment, delete_comment (2026-03-24)

  • search_files tool via WebDAV SEARCH (2026-03-24)

  • User Status tools: get_user_status, set_user_status, clear_user_status (2026-03-25)

  • Users tools: create_user, delete_user (2026-03-25)

  • copy_file tool via WebDAV COPY (2026-03-25)

  • get_file returns MCP ImageContent for images (PNG, JPEG, GIF, WebP, BMP, SVG) (2026-03-25)

  • System Tags tools: list_tags, get_file_tags, create_tag, assign_tag, unassign_tag, delete_tag (2026-03-25)

  • Files Sharing tools: list_shares, get_share, create_share, update_share, delete_share (2026-03-26)

  • OCS error message extraction: surface Nextcloud error messages instead of generic HTTP codes (2026-03-27)

  • Announcement Center tools: list_announcements, create_announcement, delete_announcement (2026-03-27)

  • Files Trashbin tools: list_trash, restore_trash_item, empty_trash (2026-03-27)

  • Files Versions tools: list_versions, restore_version (2026-03-27)

  • Mail tools: list_mail_accounts, list_mailboxes, list_mail_messages, get_mail_message, send_mail (2026-03-28)

  • Collectives tools: list_collectives, get_collective_pages, get_collective_page (2026-03-29)

  • App Management tools: list_apps, get_app_info, enable_app, disable_app (2026-03-30)

  • User-permission integration tests: non-admin error handling validation (2026-03-30)

  • Calendar tools: list_calendars, get_events, get_event, create_event, update_event, delete_event (2026-03-30)

  • Contacts tools: list_addressbooks, get_contacts, get_contact, create_contact, update_contact, delete_contact (2026-03-31)

  • Tasks tools: list_task_lists, get_tasks, get_task, create_task, update_task, complete_task, delete_task (2026-04-08)

  • Unified Search tools: list_search_providers, unified_search (2026-04-12)

  • upload_file_binary tool: base64-encoded binary upload with MIME inference (2026-04-21)

  • upload_file_from_path tool: stream a local file to Nextcloud. Off by default; enabled via NEXTCLOUD_MCP_UPLOAD_ROOT, restricted to files inside that root (symlinks resolved) (2026-04-21)

  • File Reminders tools: get_file_reminder, set_file_reminder, remove_file_reminder (2026-04-22)

  • Forms tools: 25 tools covering forms, questions, options, shares, submissions CRUD + export (2026-04-23)

  • Circles (Teams) tools: 14 tools — list/CRUD circles, member add/remove/level, search, join/leave (2026-04-24)

  • Cospend tools: 16 tools — projects (7), members (4), bills (5) — shared expense tracking (2026-04-26)

  • Mail triage tools: move_mail_message, set_mail_message_flags, create_mail_tag, add_mail_message_tag, remove_mail_message_tag via the Mail app's JSON routes; tags in message output; Mail integration tests read from Dovecot (2026-09-15)

  • Talk threads: list_threads, get_thread, list_subscribed_threads, rename_thread, set_thread_notification_level; send_message starts or posts into a thread, get_messages filters by thread and marks thread messages (2026-09-18)

  • User admin tools: update_user (Nextcloud 34's multi-field PATCH, with a per-key fallback for a regular user's own account), set_user_enabled; Groups tools: list_groups, list_group_members, create_group, delete_group (2026-09-25)

  • Flow tools: list_flows, get_flow_options (from the settings page's initial state), create_flow, update_flow, delete_flow for user and global scope (2026-09-25)

  • Talk chat actions: edit_message, add_reaction, remove_reaction, get_reactions, mark_conversation_read, mark_conversation_unread, get_message_context, list_shared_items, search_mentions; message text shows mentions and shared objects instead of Talk's placeholders (2026-09-25)

  • Talk conversation settings, pins and reminders: set_conversation_preferences, pin_message, unpin_message, set_message_reminder, list_message_reminders, remove_message_reminder; list_conversations takes modified_since and reports important/sensitive/call-notification/pin state (2026-09-25)

  • Talk conversation management: update_conversation, add_participant, set_participant_role (owner on Talk 25), remove_participant, delete_conversation; create_conversation makes one-to-one conversations too (2026-09-25)

  • Talk tags, presets and preserve: list_conversation_tags, create/rename/delete_conversation_tag, set_conversation_tags, list_conversation_presets; create_conversation takes a preset and description, update_conversation preserves conversations on Talk 25 (2026-09-25)

  • Collectives page editing: update_collective_page (text, title, emoji), move_collective_page (also copy and to another collective), search_collective_pages, list_recent_collective_pages; create_collective_page takes content, delete_collective can delete the team (2026-09-25)

  • Collectives tags, attachments and public links: list/create/update/delete_collective_tag, set_collective_page_tags, list_collective_page_attachments, list_collective_shares, share_collective, update_collective_share, delete_collective_share (2026-09-25)

  • Received shares: list_shares takes shared_with_me (federated shares included), list_pending_shares, accept_share, decline_share; delete_share leaves a received share, federated ones too (2026-09-25)

  • Activity search: get_activity takes search, start, end and actor on Nextcloud 35 (refused on older servers, which would ignore them) and returns an empty page instead of failing at the end of the feed; list_activity_filters, get_activity_counts (2026-09-26)

  • search_files matches % and _ in the query literally instead of as database wildcards (2026-09-26)

  • update_circle_member_level explains when Circles cannot transfer ownership (SQLite or PostgreSQL before nextcloud/circles#2916) instead of passing on the database error (2026-09-26)

  • Team folders (Nextcloud 35 with the Team folders app): create_circle makes one only with team_folder=true; delete_circle, leave_circle and delete_collective(delete_team) refuse to delete a team folder and its files unless delete_team_folder=true (2026-09-29)

In Progress

Blocked

(none)

Next Up

  • Cospend follow-ups (Shares: 5 share types; Categories/Payment modes/Currencies; Statistics export). Weather Status (fully OCS, bundled). Tables, Polls, Notes, Deck, Bookmarks, Photos skipped — API not OCS or OCS incomplete.

Phases

Phase Focus Status
1 Core (Files, Users, Notifications, Activity) Complete
2 Communication (Talk, Announcements, Mail) Complete
3 Groupware (Calendar, Contacts, Tasks, Deck, Notes) In Progress
4 Collaboration (Collectives, Forms, Polls, Tables) Not Started
5 Storage & Search (Files Reminders, Unified Search done) In Progress
6 Media & Data Not Started
7 Advanced & Admin (App Management, etc.) In Progress

Test Coverage

Module Tools Tests
Files 10 166
Users 7 72
Groups 4 15
Notifications 3 11
Talk 8 57
Talk Polls 4 32
Talk Threads 5 78
Talk Chat 9 58
Talk Settings 6 41
Talk Admin 5 61
Talk Tags 6 20
Activity 3 65
Comments 4 29
User Status 3 19
Announcements 3 29
Trashbin 4 28
Versions 2 18
Shares 8 86
System Tags 6 22
Mail 10 102
Collectives 25 106
App Management 4 14
Calendar 6 44
Contacts 6 78
Tasks 7 51
Search 2 17
User Permissions — 25
Server — 8
Permissions — 34
Errors — 55
Client — 75
Config — 26
State — 2
File Helpers — 36
File Reminders 3 22
Forms 25 34
Circles 14 64
Cospend 16 41
Flow 5 58
Pagination — 28
Total 223 1827

The test counts are what pytest collects, recomputed with python scripts/sync_progress.py --write, which also fails when a test file is not assigned to a row.

Files shows 10, but one (upload_file_from_path) is only registered when NEXTCLOUD_MCP_UPLOAD_ROOT is configured. Default deployments expose 222 tools.