mcpField
M
MCP Nextcloud Calendar

MCP Nextcloud Calendar

Local
github.com/CheffromspaceProductivity8Updated 76w ago

About MCP Nextcloud Calendar

An MCP server that connects to Nextcloud Calendar for users managing calendars and events. It supports calendar and event operations, with categories and focus priorities for calendar organization.

Key features

  1. 01List and manage calendars
  2. 02List and manage events
  3. 03Set calendar categories and priorities
  4. 04Support HTTP and legacy HTTP+SSE

Use cases

  1. 01Review events within a date range
  2. 02Create or update calendar events
  3. 03Organize calendars by category and priority

MCP support

Exposes calendar and event management tools to MCP clients. Supports Streamable HTTP and legacy HTTP+SSE transports.

Configuration

Local server config is the same for every client. Copy it into your client’s MCP config file.

mcp.json · Universal config
{
"mcpServers": {
"nextcloud-calendar": {
"command": "npx",
"args": [
"-y",
"mcp-nextcloud-calendar"
]
}
}
}
Run commandnpx -y mcp-nextcloud-calendar

Local servers need a runtime on your machine (e.g. Node.js 18+). Config file locations differ by client; see your client’s docs.

Packages
npmmcp-nextcloud-calendar

Tools

No tool list yet

Local servers expose tools only once running on your machine, and the maintainer has not provided a tool list.

Details

From the project README

MCP Nextcloud Calendar

npm version License: ISC

A Model Context Protocol (MCP) server for Nextcloud Calendar integration.

Features

  • Fetch calendars from Nextcloud
  • ADHD-friendly organization features
  • MCP protocol support (Streamable HTTP and Legacy HTTP+SSE)

Usage

Using with npx

The easiest way to use this package is with npx:

npx mcp-nextcloud-calendar
Installation

For development or local installation:

# Install globally
npm install -g mcp-nextcloud-calendar

# Or install locally
npm install mcp-nextcloud-calendar
MCP Client Configuration

To use with an MCP client (like Claude), add this configuration to your MCP client settings:

{
  "mcpServers": {
    "nextcloud-calendar": {
      "command": "npx",
      "args": ["-y", "mcp-nextcloud-calendar"],
      "env": {
        "NEXTCLOUD_BASE_URL": "https://your-nextcloud-server.com",
        "NEXTCLOUD_USERNAME": "your-username",
        "NEXTCLOUD_APP_TOKEN": "your-app-token"
      }
    }
  }
}
Specifying a Version

You can pin to a specific version of the package:

{
  "mcpServers": {
    "nextcloud-calendar": {
      "command": "npx",
      "args": ["-y", "[email protected]"],
      "env": {
        "NEXTCLOUD_BASE_URL": "https://your-nextcloud-server.com",
        "NEXTCLOUD_USERNAME": "your-username",
        "NEXTCLOUD_APP_TOKEN": "your-app-token"
      }
    }
  }
}

Configuration

Environment Variables

The server uses these environment variables, with defaults where possible:

VariableDescriptionDefaultRequired
PORTServer port3001No
SERVER_NAMEMCP server identifiernextcloud-calendar-serverNo
NODE_ENVEnvironment (development/production)developmentNo
NEXTCLOUD_BASE_URLYour Nextcloud server URL-Yes
NEXTCLOUD_USERNAMEYour Nextcloud username-Yes
NEXTCLOUD_APP_TOKENYour Nextcloud app token-Yes
KEEP_ALIVE_INTERVALKeep-alive interval (ms)30000No
Development Setup

For local development:

  1. Clone the repository
  2. Install dependencies:
npm install
  1. Create a .env file in the project root:
cp .env.example .env
  1. Edit the .env file with your Nextcloud credentials.
Getting a Nextcloud App Token
  1. Log in to your Nextcloud instance
  2. Go to Settings → Security → App Passwords
  3. Create a new app password with a name like "MCP Calendar"
  4. Copy the generated token to your .env file

Development

# Build the project
npm run build

# Run in development mode
npm run dev

# Run tests
npm run test

# Run linting
npm run lint

# Format code
npm run format

API Endpoints

  • /mcp - Primary MCP endpoint (Streamable HTTP transport)
  • /sse and /messages - Legacy MCP endpoints (HTTP+SSE transport)
  • GET /health - Health check endpoint
  • GET /api/calendars - List all calendars

MCP Tools

The following MCP tools are registered and available to clients:

Calendar Management
ToolDescriptionParameters
listCalendarsRetrieves all accessible calendarsNone
createCalendarCreates a new calendardisplayName (required), color (optional), category (optional), focusPriority (optional)
updateCalendarUpdates an existing calendarid (required), displayName (optional), color (optional), category (optional), focusPriority (optional)
deleteCalendarDeletes a calendarid (required)

⚠️ Permission Warning: The updateCalendar and deleteCalendar tools may require special permissions in your Nextcloud instance. Calendar operations are subject to Nextcloud's permission system.

Event Management
ToolDescriptionParameters
listEventsRetrieves events for a calendarcalendarId (required), start (optional), end (optional)
getEventGets a specific eventcalendarId (required), eventId (required)
createEventCreates a new eventcalendarId (required), summary (required), start (required), end (required), description (optional), location (optional)
updateEventUpdates an existing eventcalendarId (required), eventId (required), [plus any event properties to update]
deleteEventDeletes an eventcalendarId (required), eventId (required)

Known Issues and Limitations

Note: This package is currently in early development (0.1.x). APIs and tools may change without notice in future releases.

  • The update and delete calendar operations may require specific permissions in your Nextcloud instance
  • Error handling for specific Nextcloud error codes is still being improved
  • Large calendars with many events may experience performance issues

Please report any issues on the GitHub repository.

License

ISC

ko-fi

Comments

Markdown supported

New to MCP?

From what the protocol is to installing your first server, these answers cover most first questions.

An open protocol that defines how AI applications connect to external tools and data in a uniform way. Clients talk to the model; MCP servers provide tools, resources and prompt templates. They exchange standard messages, so one server can be reused by many clients.