by cbcoutinho
Enables Large Language Models to perform CRUD operations and browse data across multiple Nextcloud apps such as Notes, Calendar, Files (WebDAV), Contacts, Deck, and Tables.
The server acts as a bridge between LLMs (e.g., GPT, Gemini, Claude) and a Nextcloud instance, exposing tools for creating, reading, updating, and deleting resources within supported Nextcloud apps.
.env file (or any env file) with NEXTCLOUD_HOST, NEXTCLOUD_USERNAME, and NEXTCLOUD_PASSWORD.uv sync and start the server:
uv run python -m nextcloud_mcp_server.app --host 0.0.0.0 --port 8080
Use --enable-app to limit which Nextcloud apps are exposed.ghcr.io/cbcoutinho/nextcloud-mcp-server and launch:
docker run -p 8000:8000 --env-file .env ghcr.io/cbcoutinho/nextcloud-mcp-server:latest \
--transport streamable-http
uv run mcp dev (MCP Inspector) to explore tools and resources via a browser.streamable-http (recommended) and legacy SSE.--enable-app to reduce footprint or restrict functionality.nc://capabilities, notes://settings) for LLM discovery.Q: Which transport should I use?
A: streamable-http is the recommended modern transport. SSE is kept only for backward compatibility.
Q: Can I run the server without Docker?
A: Yes. Clone the repo, install Python 3.11+, run uv sync, and start the server with the CLI.
Q: How do I limit the exposed apps?
A: Use the --enable-app flag multiple times (e.g., --enable-app notes --enable-app calendar).
Q: Do I need a special Nextcloud account? A: Use any account that has an App Password generated in the Nextcloud security settings. Dedicated app passwords improve security.
Q: Is there support for Tasks? A: Tasks integration is not started yet (tracked in issue #73).
The Nextcloud MCP (Model Context Protocol) server allows Large Language Models (LLMs) like OpenAI's GPT, Google's Gemini, or Anthropic's Claude to interact with your Nextcloud instance. This enables automation of various Nextcloud actions, starting with the Notes API.
The server provides integration with multiple Nextcloud apps, enabling LLMs to interact with your Nextcloud data through a rich set of tools and resources.
| App | Support Status | Description |
|---|---|---|
| Notes | ✅ Full Support | Create, read, update, delete, and search notes. Handle attachments via WebDAV. |
| Calendar | ✅ Full Support | Complete calendar integration - create, update, delete events. Support for recurring events, reminders, attendees, and all-day events via CalDAV. |
| Tables | ⚠️ Row Operations | Read table schemas and perform CRUD operations on table rows. Table management not yet supported. |
| Files (WebDAV) | ✅ Full Support | Complete file system access - browse directories, read/write files, create/delete resources. |
| Contacts | ✅ Full Support | Create, read, update, and delete contacts and address books via CardDAV. |
| Deck | ✅ Full Support | Complete project management - boards, stacks, cards, labels, user assignments. Full CRUD operations and advanced features. |
| Tasks | ❌ Not Started | TBD |
Is there a Nextcloud app not present in this list that you'd like to be included? Feel free to open an issue, or contribute via a pull-request.
Resources provide read-only access to data for browsing and discovery. Unlike tools, resources are automatically listed by MCP clients and enable LLMs to explore your Nextcloud data structure.
| Resource | Description |
|---|---|
nc://capabilities |
Access Nextcloud server capabilities |
notes://settings |
Access Notes app settings |
nc://Notes/{note_id}/attachments/{attachment_filename} |
Access attachments for notes |
Tools are for actions and operations:
deck_create_card, deck_update_stackResources are for data browsing and discovery:
nc://Deck/boards/{board_id}, nc://Deck/boards/{board_id}/stacksClone the repository (if running from source):
git clone https://github.com/cbcoutinho/nextcloud-mcp-server.git
cd nextcloud-mcp-server
Install the package dependencies (if running via CLI):
uv sync
Run the CLI --help command to see all available options
$ uv run python -m nextcloud_mcp_server.app --help
Usage: python -m nextcloud_mcp_server.app [OPTIONS]
Options:
-h, --host TEXT [default: 127.0.0.1]
-p, --port INTEGER [default: 8000]
-w, --workers INTEGER
-r, --reload
-l, --log-level [critical|error|warning|info|debug|trace]
[default: info]
-t, --transport [sse|streamable-http]
[default: sse]
-e, --enable-app [notes|tables|webdav|calendar|contacts|deck]
Enable specific Nextcloud app APIs. Can be
specified multiple times. If not specified,
all apps are enabled.
--help Show this message and exit.
A pre-built Docker image is available: ghcr.io/cbcoutinho/nextcloud-mcp-server
The server requires credentials to connect to your Nextcloud instance. Create a file named .env (or any name you prefer) in the directory where you'll run the server, based on the env.sample file:
# .env
NEXTCLOUD_HOST=https://your.nextcloud.instance.com
NEXTCLOUD_USERNAME=your_nextcloud_username
NEXTCLOUD_PASSWORD=your_nextcloud_app_password_or_login_password
NEXTCLOUD_HOST: The full URL of your Nextcloud instance.NEXTCLOUD_USERNAME: Your Nextcloud username.NEXTCLOUD_PASSWORD: Important: It is highly recommended to use a dedicated Nextcloud App Password for security. You can generate one in your Nextcloud Security settings. Alternatively, you can use your regular login password, but this is less secure.The server supports two transport types for MCP communication:
The streamable-http transport is the recommended and modern transport type that provides improved streaming capabilities:
# Use streamable-http transport (recommended)
uv run python -m nextcloud_mcp_server.app --transport streamable-http
[!WARNING] ⚠️ Deprecated: SSE transport is deprecated and will be removed in a future version of the MCP spec. SSE will be supported for the foreseable future, but users are encouraged to switch to the new transport type. Please migrate to
streamable-http.
# SSE transport (deprecated - for backwards compatibility only)
uv run python -m nextcloud_mcp_server.app --transport sse
# Using SSE transport (default - deprecated)
docker run -p 127.0.0.1:8000:8000 --env-file .env --rm ghcr.io/cbcoutinho/nextcloud-mcp-server:latest
# Using streamable-http transport (recommended)
docker run -p 127.0.0.1:8000:8000 --env-file .env --rm ghcr.io/cbcoutinho/nextcloud-mcp-server:latest \
--transport streamable-http
Note: When using MCP clients, ensure your client supports the transport type you've configured on the server. Most modern MCP clients support streamable-http.
Ensure your environment variables are loaded, then run the server. You have several options:
nextcloud_mcp_server cli (recommended)# Load environment variables from your .env file
export $(grep -v '^#' .env | xargs)
# Run the app module directly with custom options
uv run python -m nextcloud_mcp_server.app --host 0.0.0.0 --port 8080 --log-level info
# Enable only specific Nextcloud app APIs
uv run python -m nextcloud_mcp_server.app --enable-app notes --enable-app calendar
# Enable only WebDAV for file operations
uv run python -m nextcloud_mcp_server.app --enable-app webdav
uvicornYou can also run the MCP server with uvicorn directly, which enables support
for all uvicorn arguments (e.g. --reload, --workers).
# Load environment variables from your .env file
export $(grep -v '^#' .env | xargs)
# Run with uvicorn using the --factory option
uv run uvicorn nextcloud_mcp_server.app:get_app --factory --reload --host 127.0.0.1 --port 8000
The server will start, typically listening on http://127.0.0.1:8000.
Host binding options:
--host 0.0.0.0 to bind to all interfaces--host 127.0.0.1 to bind only to localhost (default)See the full list of available uvicorn options and how to set them at https://www.uvicorn.org/settings/
By default, all supported Nextcloud app APIs are enabled. You can selectively enable only specific apps using the --enable-app option:
# Available apps: notes, tables, webdav, calendar, contacts, deck
# Enable all apps (default behavior)
uv run python -m nextcloud_mcp_server.app
# Enable only Notes and Calendar
uv run python -m nextcloud_mcp_server.app --enable-app notes --enable-app calendar
# Enable only WebDAV for file operations
uv run python -m nextcloud_mcp_server.app --enable-app webdav
# Enable multiple apps by repeating the option
uv run python -m nextcloud_mcp_server.app --enable-app notes --enable-app tables --enable-app contacts
This can be useful for:
Mount your environment file when running the container:
# Run with all apps enabled (default)
docker run -p 127.0.0.1:8000:8000 --env-file .env --rm ghcr.io/cbcoutinho/nextcloud-mcp-server:latest
# Run with only specific apps enabled
docker run -p 127.0.0.1:8000:8000 --env-file .env --rm ghcr.io/cbcoutinho/nextcloud-mcp-server:latest \
--enable-app notes --enable-app calendar
# Run with only WebDAV
docker run -p 127.0.0.1:8000:8000 --env-file .env --rm ghcr.io/cbcoutinho/nextcloud-mcp-server:latest \
--enable-app webdav
This will start the server and expose it on port 8000 of your local machine.
Once the server is running, you can connect to it using an MCP client like MCP Inspector. Once your MCP server is running, launch MCP Inspector as follows:
uv run mcp dev
You can then connect to and interact with the server's tools and resources through your browser.
Contributions are welcome! Please feel free to submit issues or pull requests on the GitHub repository.
This project is licensed under the AGPL-3.0 License. See the LICENSE file for details.
Please log in to share your review and rating for this MCP.
Explore related MCPs that share similar capabilities and solve comparable challenges
by activepieces
A self‑hosted, open‑source platform that provides a no‑code builder for creating, versioning, and running AI‑driven automation workflows. Pieces are TypeScript‑based plugins that become MCP servers, allowing direct consumption by large language models.
by Skyvern-AI
Automates browser‑based workflows by leveraging large language models and computer‑vision techniques, turning natural‑language prompts into fully functional web interactions without writing custom scripts.
by ahujasid
Enables Claude AI to control Blender for prompt‑assisted 3D modeling, scene creation, and manipulation via a socket‑based Model Context Protocol server.
by PipedreamHQ
Connect APIs quickly with a free, hosted integration platform that enables event‑driven automations across 1,000+ services and supports custom code in Node.js, Python, Go, or Bash.
by elie222
Organizes email inbox, drafts replies in the user's tone, tracks follow‑ups, and provides analytics to achieve inbox zero quickly.
by grab
Enables Cursor AI to read and programmatically modify Figma designs through a Model Context Protocol integration.
by CursorTouch
Enables AI agents to control the Windows operating system, performing file navigation, application launching, UI interaction, QA testing, and other automation tasks through a lightweight server.
by ahujasid
Enables Claude AI to control Ableton Live in real time, allowing AI‑driven creation, editing, and playback of tracks, clips, instruments, and effects through a socket‑based server.
by leonardsellem
Provides tools and resources to enable AI assistants to manage and execute n8n workflows via natural language commands.