A Model Context Protocol (MCP) server for Nextcloud Calendar integration.
The easiest way to use this package is with npx:
npx mcp-nextcloud-calendar
For development or local installation:
## Install globally
npm install -g mcp-nextcloud-calendar
## Or install locally
npm install mcp-nextcloud-calendar
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"
}
}
}
}
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"
}
}
}
}
The server uses these environment variables, with defaults where possible:
| Variable | Description | Default | Required |
|---|---|---|---|
| PORT | Server port | 3001 | No |
| SERVER_NAME | MCP server identifier | nextcloud-calendar-server | No |
| NODE_ENV | Environment (development/production) | development | No |
| NEXTCLOUD_BASE_URL | Your Nextcloud server URL | - | Yes |
| NEXTCLOUD_USERNAME | Your Nextcloud username | - | Yes |
| NEXTCLOUD_APP_TOKEN | Your Nextcloud app token | - | Yes |
| KEEP_ALIVE_INTERVAL | Keep-alive interval (ms) | 30000 | No |
For local development:
npm install
.env file in the project root:cp .env.example .env
.env file with your Nextcloud credentials..env file## 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
/mcp - Primary MCP endpoint (Streamable HTTP transport)/sse and /messages - Legacy MCP endpoints (HTTP+SSE transport)GET /health - Health check endpointGET /api/calendars - List all calendarsThe following MCP tools are registered and available to clients:
| Tool | Description | Parameters |
|---|---|---|
listCalendars |
Retrieves all accessible calendars | None |
createCalendar |
Creates a new calendar | displayName (required), color (optional), category (optional), focusPriority (optional) |
updateCalendar |
Updates an existing calendar | id (required), displayName (optional), color (optional), category (optional), focusPriority (optional) |
deleteCalendar |
Deletes a calendar | id (required) |
⚠️ Permission Warning: The
updateCalendaranddeleteCalendartools may require special permissions in your Nextcloud instance. Calendar operations are subject to Nextcloud’s permission system.
| Tool | Description | Parameters |
|---|---|---|
listEvents |
Retrieves events for a calendar | calendarId (required), start (optional), end (optional) |
getEvent |
Gets a specific event | calendarId (required), eventId (required) |
createEvent |
Creates a new event | calendarId (required), summary (required), start (required), end (required), description (optional), location (optional) |
updateEvent |
Updates an existing event | calendarId (required), eventId (required), [plus any event properties to update] |
deleteEvent |
Deletes an event | calendarId (required), eventId (required) |
Note: This package is currently in early development (0.1.x). APIs and tools may change without notice in future releases.
Please report any issues on the GitHub repository.
ISC