nextcloud-mcp-server

MCP.Pizza Chef: cbcoutinho

Nextcloud is self-hosted storage many people use instead of Google Drive or Dropbox. This connects the notes in it to an assistant, so you can ask what you wrote, add a new note, or tidy an old one by asking. It works with Claude, ChatGPT, and Gemini among others. You need your own Nextcloud to point it at, and someone comfortable running a small program to set it up the first time.

Files/PDF
Notes
Writing

Use This MCP server To

Search my notes for something I half remember Add a note without opening Nextcloud Update an existing note by describing the change Get a summary of everything I wrote this week Clean up or reword an old note Delete notes I no longer need

README

Nextcloud MCP Server

Docker Image

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.

Features

Currently, the server primarily interacts with the Nextcloud Notes API, providing tools and resources to manage notes.

Available Tools

  • nc_notes_create_note: Create a new note.
  • nc_notes_update_note: Update an existing note by ID.
  • nc_notes_delete_note: Delete a note by ID.

Available Resources

  • notes://{note_id}: Access a specific note by its ID.
  • notes://all: Access all notes.
  • notes://settings: Access note settings.
  • nc://capabilities: Access Nextcloud server capabilities.

Installation

Prerequisites

  • Python 3.8+
  • Access to a Nextcloud instance

Local Installation

  1. Clone the repository (if running from source):
    git clone https://github.com/cbcoutinho/nextcloud-mcp-server.git
    cd nextcloud-mcp-server
  2. Install the package (if running as a library):
    poetry install

Docker

A pre-built Docker image is available: ghcr.io/cbcoutinho/nextcloud-mcp-server

Configuration

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.

Running the Server

Locally

Ensure your environment variables are loaded, then run the server using mcp run:

# Load environment variables from your .env file
export $(grep -v '^#' .env | xargs)

# Run the server
mcp run --transport sse nextcloud_mcp_server.server:mcp

The server will start, typically listening on http://0.0.0.0:8000.

Using Docker

Mount your environment file when running the container:

docker run -p 127.0.0.1:8000:8000 --env-file .env --rm ghcr.io/cbcoutinho/nextcloud-mcp-server:latest

This will start the server and expose it on port 8000 of your local machine.

Usage

Once the server is running, you can connect to it using an MCP client like uvx. Add the server to your uvx configuration:

uvx mcp add nextcloud-mcp http://localhost:8000 --default-transport sse

You can then interact with the server's tools and resources through your LLM interface connected to uvx.

References:

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests on the GitHub repository.

License

This project is licensed under the MIT License. See the LICENSE file for details.

nextcloud-mcp-server FAQ

Can I use this to search my own notes?
Yes — you can ask about anything stored in Nextcloud Notes and get an answer without opening the app.
Do I need my own Nextcloud?
Yes, it connects to an instance you already run; it does not provide storage of its own.
Which assistants can use it?
It is built to work with any that support this kind of connection, including Claude, ChatGPT, and Gemini.
Can it create and change notes or only read them?
It can create, update, and delete notes as well as read them, so you can dictate changes rather than typing them.
How hard is setup?
You run it with Docker or a Python tool and point it at your server, so some technical comfort is needed.