这是一个用于Nextcloud日历集成的Model Context Protocol (MCP)服务器。
最简单的方式是通过npx来使用这个包:
npx mcp-nextcloud-calendar
对于开发或本地安装:
# 全局安装
npm install -g mcp-nextcloud-calendar
# 或者本地安装
npm install mcp-nextcloud-calendar
要与MCP客户端(如Claude)一起使用,请在您的MCP客户端设置中添加以下配置:
{
"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"
}
}
}
}
您可以指定一个特定版本的包:
{
"mcpServers": {
"nextcloud-calendar": {
"command": "npx",
"args": ["-y", "mcp-nextcloud-calendar@0.1.0"],
"env": {
"NEXTCLOUD_BASE_URL": "https://your-nextcloud-server.com",
"NEXTCLOUD_USERNAME": "your-username",
"NEXTCLOUD_APP_TOKEN": "your-app-token"
}
}
}
}
服务器使用这些环境变量,其中可能有默认值:
| 变量 | 描述 | 默认值 | 是否必需 |
|---|---|---|---|
| PORT | 服务器端口 | 3001 | 否 |
| SERVER_NAME | MCP服务器标识符 | nextcloud-calendar-server | 否 |
| NODE_ENV | 环境(开发/生产) | development | 否 |
| NEXTCLOUD_BASE_URL | 您的Nextcloud服务器URL | - | 是 |
| NEXTCLOUD_USERNAME | 您的Nextcloud用户名 | - | 是 |
| NEXTCLOUD_APP_TOKEN | 您的Nextcloud应用令牌 | - | 是 |
| KEEP_ALIVE_INTERVAL | 保持活动间隔(毫秒) | 30000 | 否 |
对于本地开发:
npm install
.env文件:cp .env.example .env
.env文件。.env文件中# 构建项目
npm run build
# 开发模式运行
npm run dev
# 运行测试
npm run test
# 运行代码检查
npm run lint
# 格式化代码
npm run format
/mcp - 主要的MCP端点(流式HTTP传输)/sse 和 /messages - 传统的MCP端点(HTTP+SSE传输)GET /health - 健康检查端点GET /api/calendars - 列出所有日历以下MCP工具已注册并可供客户端使用:
| 工具 | 描述 | 参数 |
|---|---|---|
listCalendars | 获取所有可访问的日历 | 无 |
createCalendar | 创建新的日历 | displayName(必需),color(可选),category(可选),focusPriority(可选) |
updateCalendar | 更新现有的日历 | id(必需),displayName(可选),color(可选),category(可选),focusPriority(可选) |
deleteCalendar | 删除日历 | id(必需) |
⚠️ 权限警告:
updateCalendar和deleteCalendar工具可能需要您Nextcloud实例中的特殊权限。日历操作受Nextcloud权限系统约束。
| 工具 | 描述 | 参数 |
|---|---|---|
listEvents | 获取日历中的事件 | calendarId(必需),start(可选),end(可选) |
getEvent | 获取特定事件 | calendarId(必需),eventId(必需) |
createEvent | 创建新的事件 | calendarId(必需),summary(必需),start(必需),end(必需),description(可选),location(可选) |
updateEvent | 更新现有事件 | calendarId(必需),eventId(必需),[加上要更新的任何事件属性] |
deleteEvent | 删除事件 | calendarId(必需),eventId(必需) |
注意:此包目前处于早期开发阶段(0.1.x)。未来的发布可能会更改API和工具,且不另行通知。
请在GitHub存储库中报告任何问题。
ISC