Nextcloud Task MCP Server
Manages tasks (VTODOs) in a self-hosted Nextcloud instance over CalDAV, allowing creation, listing, updating, completing, and deleting tasks.
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 Task MCP ServerCreate a task to buy groceries due tomorrow"
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.
Ask in plain language, and your own Nextcloud changes. No copy-paste, no third-party calendar service: the data stays on your server and the tools talk to it over standard CalDAV and the Notes REST API.
Community project, not affiliated with or endorsed by Nextcloud GmbH. Formerly
nextcloud-task-mcp.
What you can say
You say | What happens |
"Add a high-priority task: finish the Q4 report by Thursday 5pm, remind me 2 hours before." |
|
"Add a weekly team sync, Mondays 10:00." |
|
"Block Thursday 9-11 for the report." |
|
"What does my Thursday look like?" |
|
"Start a note for the Q4 report, then update just the status section." |
|
What Claude wrote shows up in the normal Nextcloud apps, immediately:
Related MCP server: Google Tasks MCP Server
Features
Tasks (VTODO): priorities, tags, reminders, subtasks, recurrence with exception dates, four-state status, batch update/delete/move.
Calendars and events (VEVENT): recurring events, attendees and RSVP, free/busy, sharing, ICS import/export, birthdays, batch operations, trash bin.
Timeboxing: turn a task into a calendar block and keep both linked.
Notes: create, search, append, replace a passage or a single Markdown section.
Combined day agenda: events and due tasks together.
Safe by default: OAuth 2.1 with a password consent page,
https://enforced for Nextcloud, clean error messages instead of stack traces.51 tools in total, documented in the tool reference.
Compatibility
Client | Status |
Claude (claude.ai web) as a custom connector | Supported, connector and consent flow tested against claude.ai |
Claude mobile and Cowork | Use the same connector as web; not tested separately |
Claude Desktop via | Documented in the deployment guide |
Other MCP clients and model providers | Not tested yet, planned |
The server speaks standard Streamable HTTP MCP with OAuth 2.1 (Dynamic Client
Registration + PKCE), so other clients may work. The OAuth redirect allow-list
defaults to claude.ai and claude.com; other clients need
MCP_OAUTH_ALLOWED_REDIRECT_DOMAINS set. Reports from other clients are welcome.
Quick start
Requires Python 3.10+ and a Nextcloud with the Calendar/Tasks and Notes apps.
uv tool install nextcloud-organizer-mcp # or: pipx install nextcloud-organizer-mcpCreate an app password under Settings → Security → Devices & sessions (never your account password), then set:
export NEXTCLOUD_BASE_URL=https://cloud.example.com
export NEXTCLOUD_USERNAME=your-username
export NEXTCLOUD_APP_PASSWORD=your-app-password
export PUBLIC_BASE_URL=https://your-host.ts.net # the URL clients use
export MCP_OAUTH_PASSWORD=a-long-random-password # required unless localnextcloud-organizer-mcp # listens on 127.0.0.1:8000, path /mcpFrom a checkout instead: uv sync && cp .env.example .env, edit .env, then
uv run nextcloud-organizer-mcp. Every setting is documented in
.env.example. NEXTCLOUD_BASE_URL must be https:// unless it
points at a local address.
Then expose the server (the deployment guide uses Tailscale
Funnel for TLS) and add it in Claude under Settings → Connectors → Add custom
connector with the URL <PUBLIC_BASE_URL>/mcp. Leave Client ID and Secret blank
and enter your MCP_OAUTH_PASSWORD on the consent page that opens. Details:
Authentication.
How it works
Claude ── HTTPS + OAuth 2.1 ──► your server (this project) ── CalDAV / Notes API ──► NextcloudOne CalDAV connection is opened at startup and reused for every request.
No tool or CalDAV logic runs until a request carries a valid access token.
The server binds to a local HTTP port and does not handle TLS itself.
Timestamps use
MCP_DEFAULT_TIMEZONE(defaultEurope/Berlin); naive inputs are interpreted in it.
Documentation
Deployment guide — Ubuntu LXC + Tailscale + systemd + Claude connector setup
Authentication — OAuth model, consent page, local security patches
Tool reference — all tools with parameters, examples and error messages
Architecture — module layout, request flow, design decisions
Contributing — dev setup, checks, branches (
mainreleased,devactive)Changelog · Security policy
License
This server cannot be deployed
Maintenance
Related MCP Connectors
Manage tasks, Focus Zone, notes, projects, and task history from compatible AI assistants.
Create and manage MeisterTask projects, tasks, and notes from your AI assistant.
Manage Superlist tasks and lists in plain language from any MCP-compatible AI agent.
Local-first task manager: create, edit, and complete tasks, projects, and checklists via MCP.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables task management through natural language with full CRUD operations including add, list, update, complete, and delete tasks with JSON persistence.-
- AlicenseNot gradedqualityAmaintenanceEnables AI assistants to manage Google Tasks through natural language interactions. Supports creating, updating, deleting, searching, and listing tasks with secure OAuth2 authentication.130 npm10MIT
- AlicenseBqualityDmaintenanceEnables interaction with Vikunja task management instances through natural language. Supports comprehensive project and task operations including CRUD, assignments, labels, comments, relations, and attachments.3349 npm2MIT
- FlicenseCqualityDmaintenanceEnables managing todo lists and tasks through natural language, supporting creation, status changes, and deletion.7-