nextcloud-mcp-connector
Provides tools for interacting with Nextcloud files, calendar, notes, Deck, and contacts, including searching, reading, listing, and creating (create-only, never overwrite) resources, as well as unified search across providers.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@nextcloud-mcp-connectorSearch my files for the quarterly report"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
MCP Connector for Nextcloud
A curated MCP server that connects your Nextcloud (files, calendar, notes, Deck, contacts, Tables, Talk and Mail) to AI assistants such as Claude, Cursor, ChatGPT or your own agents. Installed as a Nextcloud ExApp, it is its own OAuth 2.1 authorization server as well.
Findling + Nextcloud MCP Connector = the retrieval layer for your own RAG. Findling makes the content of your documents searchable, scans included. The connector hands those hits to any MCP client, with exactly the rights of the asking user; measured in tests/integration/test_content_hit_fidelity.py. You bring the model, and no content leaves your server.
What it does
21 tools across nine app families: files, calendar, notes, Deck, contacts, Tables, Talk, Mail and cloud wide search
OAuth 2.1 to the MCP authorization specification: dynamic client registration, PKCE S256, audience bound tokens, refresh rotation with reuse detection and immediate revocation. Claude.ai and ChatGPT are given one URL and never see a password or an app password
Every request runs with the rights of the signed in user, so Nextcloud permissions apply unchanged and the assistant never sees more than you do
Per user management: every account pauses or resumes its own access and disconnects a single assistant, on this app's connections page under Settings, Security, MCP Connector
prepare_contextbundles a search, the coming week of events, the waiting Talk conversations and the unread mail counts into one call, each source with its own time budgetA deliberately small tool set, so this server fits next to your other MCP servers even in clients with a hard tool limit
No cron, no indexing, no telemetry, no copy of your data, and no credential is ever logged
Related MCP server: Nextcloud CalDAV MCP Server
What this server cannot do
No deleting: no tool issues a DELETE against files, events, notes, cards or contacts
No overwriting: writes are create-only, and
files_uploadrefuses an existing path with a clear error instead of replacing itNo moving and no renaming, no share changes and no permission changes
Mail is strictly read only: no sending, no draft, no move, no flag, no delete, and no attachment download
No admin access: the server acts as one user and inherits exactly that user's permissions
No full text search inside file contents unless a search app such as Findling is installed
That is a design constraint and not a promise of good behaviour: a contract test reads the modules and fails on the first destructive call, tests/contract/test_no_destructive_calls.py.
Tools
read means the tool only reads, create-only means it can create new objects but never modifies or removes existing ones. The table is not maintained by hand: a contract test reads the live registry and fails if a name or a level disagrees with it.
Tool | Permission | What it does |
| read | Files and folders by name via WebDAV search; contents are not indexed |
| read | The direct children of a folder, with size and modification time |
| read | The content of one file |
| create-only | A new file; an existing path is refused, never overwritten |
| read | Events in an explicit time range, with an explicit time zone |
| create-only | A new event; existing events are never changed |
| read | Notes by title and content, via the Nextcloud notes search provider |
| read | One note |
| create-only | A new note; existing notes are never changed |
| read | Deck boards, stacks and cards |
| create-only | A new card in a stack; existing cards are never changed |
| read | Tables: the tables, the columns of one, or its rows |
| create-only | A row addressed by column titles; existing rows are never changed |
| read | Talk conversations and the history of one; reading leaves no trace |
| create-only | One message into a conversation; never edited or deleted, switchable off instance wide |
| read | Mail accounts, their mailboxes and message envelopes; strictly read only |
| read | Address book contacts |
| read | The Nextcloud unified search across providers, permission aware |
| read | Files, notes, cards, the next week of events, waiting Talk conversations and unread mail counts in one call |
| read | OpenAI compatible search entry point, delegates to unified search |
| read | OpenAI compatible fetch, resolves an id to a file, note, card, event, mail, Talk message or table |
search and fetch exist because the ChatGPT connector profile requires exactly these two
names and schemas. They are thin wrappers over the tools above, not a second implementation.
An answer of unified_search, with both honest cases in it: a hit whose id the read tools
resolve, and a provider whose entries stay a URL instead of an invented id. A provider that
fails or stalls is named under degraded, so a partial answer is visibly partial. Notes,
Deck, Tables, Talk and Mail are optional apps; the tool list stays the same everywhere and a
missing app is answered in one sentence, never with an empty result.
{"query":"budget","count":2,"results":[{"id":"file:4711","title":"Budget 2026.md","url":"https://cloud.example.org/index.php/f/4711","provider":"files","kind":"file"},{"id":"url:https://cloud.example.org/index.php/call/abc123","title":"Khaled","url":"https://cloud.example.org/index.php/call/abc123","provider":"talk-conversations","kind":"url","resolvable":false}]}Security
This server holds private data, it takes in untrusted content (a mail or a Talk message
is written by somebody else, and for a mail that somebody needs no account on your instance),
and it has an outgoing channel, talk_send. Those three together are what Simon Willison
calls the lethal trifecta, and a
language model does not reliably separate data from instructions. So talk_send sits behind
the administration switch NC_MCP_TALK_SEND, which closes the outgoing channel for the whole
instance while reading stays untouched, and Mail adds reach with deliberately no way out of its
own. Neither makes prompt injection impossible. The long form, with every countermeasure and
the honest remainder, is in docs/privacy.md. The switches sit under
Settings, Administration, Security:

Installation
Listed in the Nextcloud App Store as MCP Connector and installed as an ExApp: enable AppAPI, register a deploy daemon, then deploy and enable the app. Nextcloud 32 to 34. On 34.0.3 the apps management interface does this for you, on earlier versions occ is the reliable path. The walkthrough with the exact commands and the pitfalls that actually happen: docs/exapp-install.md.

Clients
Claude.ai and ChatGPT connect over OAuth with one URL. Claude Desktop, Claude Code, Cursor and other local clients run the same server over stdio, with a Nextcloud app password:
uv tool install nextcloud-mcp-connector
export NC_MCP_URL=https://cloud.example.com
export NC_MCP_USER=alice
export NC_MCP_APP_PASSWORD=xxxxx-xxxxx-xxxxx-xxxxx-xxxxx
nc-mcpThe same server speaks Streamable HTTP for remote clients, on POST /mcp, where
NC_MCP_ALLOWED_HOSTS is required in practice. Setup step by step, every environment variable
and the three errors that actually happen: docs/client-setup.md. OAuth
for administrators: docs/oauth-setup.md. Automation platforms are
clients too, with one OAuth connection per person: docs/n8n-setup.md.

Privacy
Every call goes to your Nextcloud and returns: nothing runs in the background, no result is cached, no index is kept. In the HTTP modes the credentials travel per request and are never stored. Questions users ask: docs/faq.md.
Enterprise
The audit log is part of this app and not of an add-on. With it on, every tool call is written
down with the account it ran for, the tool, the time, the calling app and the outcome, and
never a parameter value or any part of a result. It is off by default, an administrator
switches it on in the admin settings of this app, and the entries are read with
occ mcp_connector:audit:read. Every entry is hash chained to the one before it, and
occ mcp_connector:audit:verify walks the chains and names the first place one of them is
broken.
Planned, but not available yet, are group policies and sign in through the identity provider your organisation already runs.
Request a quote: admin@infranode.dev
Development
uv sync
uv run pytest
uv run ruff check .
uv run ruff format --check .uv run pytest starts nothing and needs nothing. uv run pytest -m matrix starts the HTTP
server as a subprocess, uv run pytest -m integration needs the local test Nextcloud from
compose.test.yml.
App id, package names and repository name are frozen, see docs/app-id-freeze.md.
Licence
AGPL-3.0-or-later, see LICENSE. Donations: PayPal and Stripe.
This server cannot be deployed
Maintenance
Related MCP Connectors
Hosted MCP server connecting claude.ai, ChatGPT and other AI apps to your own computer
MCP server for AI dialogue using various LLM models via AceDataCloud
Nifty's MCP server — exposes tasks, projects, messages, and files as tools for AI agents.
Cloud-hosted MCP server for durable AI memory
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceAn MCP server with real AI capabilities (OpenAI/Anthropic) for natural language understanding, multi-step planning, and autonomous task execution, enabling intelligent file analysis, weather-based planning, and more.205 npmISC
- FlicenseNot gradedqualityDmaintenanceAn MCP server that lets Claude create calendar events and tasks in Nextcloud via CalDAV.-
- FlicenseNot gradedqualityDmaintenanceExposes a live Nextcloud instance as an MCP server by dynamically creating tools from OpenAPI definitions of installed apps. Enables natural language interaction with Nextcloud apps like files sharing, provisioning, and calendar management.6-
- FlicenseBqualityDmaintenanceMCP server integrating Nextcloud services (tasks, calendar, notes, email, files, Deck) for AI assistant interaction.201-