Nextcloud MCP server
Production-ready community MCP server for Nextcloud: files, notes, calendar, contacts, tables, deck, talk, and more across 110+ tools.
nextcloud-mcp-server is a production-ready, well-maintained community MCP server that connects an agent to a Nextcloud instance — the open-source, self-hostable productivity and file-storage platform. It is a dedicated standalone server that runs independently of Nextcloud (Docker, Kubernetes, a VM, or locally) and provides deep CRUD coverage across more than ten Nextcloud apps through 110+ tools, so an LLM like Claude, GPT, or Gemini can work with your real files and data in place.
Files are handled over WebDAV (list, read, write, copy, move, delete, search by name or type, and favorites, with OCR/document processing). Notes get full CRUD plus keyword and attachment support; Calendar covers events, recurring events, attendees, availability, and todos/tasks; Contacts brings full CardDAV address-book management; Tables supports row operations; Deck offers boards, stacks, cards, labels, assignments, comments, and attachments; Talk reads conversations and sends messages; Collectives manages collaborative wiki pages; plus Cookbook recipes and News feeds. An experimental, opt-in semantic search adds vector-powered retrieval across notes, files, news, and deck cards. It runs over stdio with uvx (uvx nextcloud-mcp-server run --transport stdio) or as a Docker container, and authenticates with your NEXTCLOUD_HOST, NEXTCLOUD_USERNAME, and a Nextcloud app password. A tag-based exclusion feature can hide sensitive files from the file tools. It is AGPL-3.0 licensed.
Quick install
Copy-paste configs are provided for all 8 supported clients. Pick your client below.
Available tools
| Tool | Description |
|---|---|
| nc_notes_create_note | Create a new note. |
| nc_notes_update_note | Update an existing note. |
| nc_notes_append_content | Append content to an existing note. |
| nc_notes_search_notes | Search notes by keyword. |
| nc_notes_get_note | Get a note by ID. |
| nc_notes_get_attachment | Get an attachment from a note. |
| nc_notes_delete_note | Delete a note. |
| nc_calendar_list_calendars | List the user's calendars. |
| nc_calendar_create_event | Create a calendar event. |
| nc_calendar_list_events | List events in a calendar. |
| nc_calendar_get_event | Get a calendar event by ID. |
| nc_calendar_update_event | Update a calendar event. |
| nc_calendar_delete_event | Delete a calendar event. |
| nc_calendar_create_meeting | Create a meeting event with attendees. |
| nc_calendar_get_upcoming_events | Get upcoming events across calendars. |
| nc_calendar_find_availability | Find available time slots. |
| nc_calendar_bulk_operations | Perform bulk operations on calendar events. |
| nc_calendar_manage_calendar | Create, update, or delete a calendar. |
| nc_calendar_list_todos | List todos (tasks). |
| nc_calendar_create_todo | Create a todo (task). |
| nc_calendar_update_todo | Update a todo (task). |
| nc_calendar_delete_todo | Delete a todo (task). |
| nc_calendar_search_todos | Search todos (tasks). |
| nc_contacts_list_addressbooks | List the user's address books. |
| nc_contacts_list_contacts | List contacts in an address book. |
| nc_contacts_search_contacts | Search contacts. |
| nc_contacts_create_addressbook | Create an address book. |
| nc_contacts_delete_addressbook | Delete an address book. |
| nc_contacts_create_contact | Create a contact. |
| nc_contacts_delete_contact | Delete a contact. |
| nc_contacts_update_contact | Update a contact. |
| nc_webdav_list_directory | List the contents of a directory over WebDAV. |
| nc_webdav_read_file | Read a file's contents over WebDAV. |
| nc_webdav_write_file | Write a file over WebDAV. |
| nc_webdav_create_directory | Create a directory over WebDAV. |
| nc_webdav_delete_resource | Delete a file or directory over WebDAV. |
| nc_webdav_move_resource | Move a file or directory over WebDAV. |
| nc_webdav_copy_resource | Copy a file or directory over WebDAV. |
| nc_webdav_search_files | Search files over WebDAV. |
| nc_webdav_find_by_name | Find files by name. |
| nc_webdav_find_by_type | Find files by type. |
| nc_webdav_list_favorites | List favorited files. |
| deck_get_boards | List Deck boards. |
| deck_get_board | Get a Deck board by ID. |
| deck_get_stacks | List the stacks on a board. |
| deck_get_stack | Get a stack by ID. |
| deck_get_archived_stacks | List archived stacks on a board. |
| deck_get_cards | List the cards in a stack. |
| deck_get_board_overview | Get an overview of a board's stacks and cards. |
| deck_get_card | Get a card by ID. |
| deck_get_labels | List the labels on a board. |
| deck_get_label | Get a label by ID. |
| deck_create_board | Create a board. |
| deck_create_stack | Create a stack on a board. |
| deck_update_stack | Update a stack. |
| deck_delete_stack | Delete a stack. |
| deck_create_card | Create a card in a stack. |
| deck_update_card | Update a card. |
| deck_delete_card | Delete a card. |
| deck_archive_card | Archive a card. |
| deck_unarchive_card | Unarchive a card. |
| deck_reorder_card | Reorder a card within or across stacks. |
| deck_create_label | Create a label on a board. |
| deck_update_label | Update a label. |
| deck_delete_label | Delete a label. |
| deck_assign_label_to_card | Assign a label to a card. |
| deck_remove_label_from_card | Remove a label from a card. |
| deck_assign_user_to_card | Assign a user to a card. |
| deck_unassign_user_from_card | Unassign a user from a card. |
| deck_get_card_comments | List the comments on a card. |
| deck_create_card_comment | Add a comment to a card. |
| deck_update_card_comment | Update a card comment. |
| deck_delete_card_comment | Delete a card comment. |
| deck_attach_file | Attach a file to a card. |
| deck_attach_note | Attach a note to a card. |
| deck_list_attachments | List a card's attachments. |
| deck_delete_attachment | Delete an attachment from a card. |
| nc_tables_list_tables | List Nextcloud Tables. |
| nc_tables_get_schema | Get the schema (columns) of a table. |
| nc_tables_read_table | Read rows from a table. |
| nc_tables_insert_row | Insert a row into a table. |
| nc_tables_update_row | Update a row in a table. |
| nc_tables_delete_row | Delete a row from a table. |
| nc_share_create | Create a share for a file or folder. |
| nc_share_delete | Delete a share. |
| nc_share_get | Get a share by ID. |
| nc_share_list | List shares. |
| nc_share_update | Update a share's permissions or settings. |
| nc_cookbook_import_recipe | Import a recipe from a URL. |
| nc_cookbook_list_recipes | List recipes. |
| nc_cookbook_get_recipe | Get a recipe by ID. |
| nc_cookbook_create_recipe | Create a recipe. |
| nc_cookbook_update_recipe | Update a recipe. |
| nc_cookbook_delete_recipe | Delete a recipe. |
| nc_cookbook_search_recipes | Search recipes. |
| nc_cookbook_list_categories | List recipe categories. |
| nc_cookbook_get_recipes_in_category | List the recipes in a category. |
| nc_cookbook_list_keywords | List recipe keywords. |
| nc_cookbook_get_recipes_with_keywords | List recipes matching keywords. |
| nc_cookbook_set_config | Set Cookbook configuration. |
| nc_cookbook_reindex | Reindex the recipe collection. |
| nc_news_list_folders | List News folders. |
| nc_news_list_feeds | List News feeds. |
| nc_news_list_items | List News items. |
| nc_news_get_item | Get a News item by ID. |
| nc_news_get_starred_items | List starred News items. |
| nc_news_get_unread_items | List unread News items. |
| nc_news_get_feed_health | Check the health of News feeds. |
| nc_news_get_status | Get News app status. |
| talk_list_conversations | List Talk conversations. |
| talk_get_conversation | Get a Talk conversation by token. |
| talk_get_messages | Get messages from a Talk conversation. |
| talk_list_participants | List the participants in a Talk conversation. |
| talk_send_message | Send a message to a Talk conversation. |
| talk_mark_as_read | Mark a Talk conversation as read. |
| collectives_get_collectives | List collectives. |
| collectives_get_pages | List the pages in a collective. |
| collectives_get_page | Get a page by ID. |
| collectives_search_pages | Search pages across collectives. |
| collectives_get_tags | List tags in a collective. |
| collectives_get_trashed_pages | List trashed pages. |
| collectives_get_trashed_collectives | List trashed collectives. |
| collectives_create_collective | Create a collective. |
| collectives_set_collective_emoji | Set a collective's emoji. |
| collectives_trash_collective | Move a collective to the trash. |
| collectives_delete_collective | Permanently delete a collective. |
| collectives_restore_collective | Restore a collective from the trash. |
| collectives_create_page | Create a page in a collective. |
| collectives_move_page | Move a page within a collective. |
| collectives_trash_page | Move a page to the trash. |
| collectives_restore_page | Restore a page from the trash. |
| collectives_set_page_emoji | Set a page's emoji. |
| collectives_create_tag | Create a tag in a collective. |
| collectives_assign_tag | Assign a tag to a page. |
| collectives_remove_tag | Remove a tag from a page. |
| nc_semantic_search | Vector-powered semantic search across notes, files, news, and deck cards (experimental, opt-in). |
| nc_semantic_search_answer | Answer a question using semantic search over your Nextcloud content (experimental, opt-in). |
| nc_get_vector_sync_status | Get the status of the semantic-search vector sync job. |
Required configuration
- NEXTCLOUD_HOSTRequired
Base URL of your Nextcloud instance. Required.
- NEXTCLOUD_USERNAMERequired
Nextcloud username. Required.
- NEXTCLOUD_PASSWORDRequired
Nextcloud app password. Required.
- ENABLE_SEMANTIC_SEARCHOptional
Enable experimental vector-based semantic search (requires a vector database and embedding service). Defaults to false. Optional.
- EXCLUDED_TAGSOptional
Nextcloud system tag used to hide sensitive files and folders from the file tools. Optional.
What you can do with it
Work with company documents in place
The agent searches WebDAV for the right file, reads it into context, summarizes a folder, and writes a generated report back to the correct location — all against your real Nextcloud files without anyone shuttling documents around.
Run your Nextcloud workspace from chat
Ask the agent to add a calendar event, file a Deck card, jot a note, or update a Tables row; it uses the per-app tools to keep your self-hosted productivity suite up to date end to end.
FAQ
- Is it free?
- Yes. The MCP server is open source (AGPL-3.0) and free to run, and Nextcloud itself is free and open source. There is no per-call cost; you run it against your own Nextcloud instance.
- Does it support remote/OAuth?
- It is a standalone server you run over stdio (uvx) or as a Docker/Kubernetes deployment, authenticating to Nextcloud with a username and app password. Newer versions add OAuth/login-flow deployment modes for multi-user setups; the simplest single-user path uses an app password.
- How many tools does it expose?
- 110+ tools across more than ten Nextcloud apps — Files (WebDAV), Notes, Calendar, Contacts, Tables, Deck, Talk, Collectives, Cookbook, News, and Sharing — plus an experimental, opt-in semantic search.