使用说明
Nextcloud MCP服务器
一个生产就绪的MCP服务器,将AI助手连接到Nextcloud实例。
使Claude、GPT和Gemini等大型语言模型能够通过安全的API与Nextcloud数据交互。创建笔记、管理日历、组织联系人、处理文件等等,所有这些都是通过自然语言对话完成的。
这是一个 专用独立MCP服务器 专为Claude Code和IDE等外部MCP客户端设计。它独立于Nextcloud(Docker、VM、Kubernetes或本地)运行,并在Nextcloud应用程序之间提供深度CRUD操作。
[!注意] 在Nextcloud中寻找AI功能? Nextcloud还提供 上下文代理,它为Assistant应用程序提供动力,并在Nextcloud中作为ExApp运行。看 docs/comparison-context-agent.md 以获取用例的详细比较。
快速入门(Docker)
要获得包括语义搜索在内的完整功能,请使用Docker运行:
# 1. Create a minimal configuration
cat > .env << EOF
NEXTCLOUD_HOST=https://your.nextcloud.instance.com
NEXTCLOUD_USERNAME=your_username
NEXTCLOUD_PASSWORD=your_app_password
EOF
# 2. Start the server
docker run -p 127.0.0.1:8000:8000 --env-file .env --rm \
ghcr.io/cbcoutinho/nextcloud-mcp-server:latest
# 3. Test the connection
curl http://127.0.0.1:8000/health/ready
# 4. Connect to the endpoint
http://127.0.0.1:8000/sse
# Or with --transport streamable-http
http://127.0.0.1:8000/mcp
Docker编写配置文件 (用于开发/测试):
docker compose --profile single-user up -d # Port 8000
docker compose --profile multi-user-basic up -d # Port 8003
docker compose --profile oauth up -d # Port 8001
docker compose --profile login-flow up -d # Port 8004
下一步:
- 连接您的MCP客户端(克劳德桌面、IDE、,
mcp dev等等) - 看 docs/installation.md 其他部署选项(本地、Kubernetes)
主要特点
- 90+MCP工具 -全面覆盖8个Nextcloud应用程序的API
- MCP资源 -用于浏览Nextcloud数据的结构化数据URI
- 语义搜索(实验) -可选矢量搜索笔记、文件、新闻项目和卡片(需要Qdrant+Ollama)
- 文档处理 -从PDF、DOCX、带有进度通知的图像中提取OCR和文本
- 灵活部署 -Docker、Kubernetes(Helm)、VM或本地安装
- 生产就绪认证 -使用应用程序密码的基本身份验证(推荐)或OAuth2/OIDC(实验)
- 多个传输 -SSE、HTTP和可流式传输的HTTP支持
支持的应用程序
| 应用程序 | 工具 | 功能 |
|---|---|---|
| 备注 | 7 | 全CRUD、关键字搜索、语义搜索 |
| 日历 | 20+ | 事件、待办事项(任务)、定期事件、与会者、可用性 |
| 联系人 | 8 | 完全支持CardDAV,地址簿 |
| 文件(WebDAV) | 12 | 文件系统访问、OCR/文档处理 |
| 甲板 | 15 | 板、堆、卡、标签、作业 |
| 食谱 | 13 | 配方管理,URL导入(schema.org) |
| 表格 | 5 | Nextcloud表上的行操作 |
| 共享 | 10+ | 创建和管理股份 |
| 语义搜索 | 2+ | 笔记、文件、新闻项目和卡片的矢量搜索(实验性、选择加入、需要基础设施) |
想看到另一个支持Nextcloud的应用程序吗? 打开一个问题 或者提交一个pull请求!
认证
[!重要] OAuth2/OIDC是实验性的 并且需要手动修补
user_oidc应用程序:
- 所需补丁:不记名代币支持(第1221期)
- 影响:如果没有补丁,大多数特定于应用程序的API都会失败,出现401个错误
- 推荐:在合并上游补丁之前,使用Basic Auth进行生产
看 docs/oauth-upstream-status.md 了解补丁状态和解决方法。
推荐: 使用特定于应用程序的密码的基本身份验证提供了安全的、生产就绪的身份验证。看 docs/authentication.md 有关设置详细信息和OAuth配置。
身份验证模式
服务器支持四种身份验证模式:
单用户(BasicAuth):
- 所有MCP客户端共享一组凭据
- 简单设置:环境变量中的用户名+应用程序密码
- 所有客户端都以同一用户身份访问Nextcloud
- 最适合:个人使用、开发、单用户部署
多用户(基本认证传递):
- MCP客户端通过授权标头发送凭据
- 服务器传递到Nextcloud(默认情况下为无状态)
- 后台操作的可选离线访问(
ENABLE_MULTI_USER_BASIC_AUTH=true) - 最适合:没有OAuth基础架构的多用户设置
多用户(OAuth):
- 每个MCP客户端都使用自己的Nextcloud帐户分别进行身份验证
- 每个用户的范围和权限(客户端只能看到他们授权的工具)
- 更安全:令牌过期,凭据从不与服务器共享
- 最适合:团队、多用户部署、多用户生产环境
- 需要:补丁
user_oidc应用程序(实验)
多用户(登录流v2):
- 使用Nextcloud的本地Login Flow v2获取每个用户的应用程序密码
- 无需OAuth补丁——与Nextcloud兼容
- 每个用户通过浏览器进行身份验证,服务器管理应用程序密码
- 最适合:无OAuth基础架构的多用户部署(
ENABLE_LOGIN_FLOW=true) - 实验:见 ADR-022 详见
看 docs/authentication.md 有关详细的设置说明。
语义搜索
服务器提供了一个实验性的RAG管道,以实现 语义搜索 使MCP客户端能够基于以下内容在Nextcloud中查找信息 意义 而不仅仅是关键字。它理解“神经网络”、“人工智能模型”和“深度学习”是语义相关的概念,而不是只在出现这些确切的单词时才匹配“机器学习”。
例子:
- 关键词搜索:查询“car”只找到包含“car”的笔记
- 语义搜索:查询“car”还可以找到关于“汽车”、“车辆”、“轿车”、“交通工具”的注释
这支持自然语言查询,并有助于在Nextcloud笔记中发现相关内容。
[!注意] 语义搜索是实验性的,可以选择加入:
- 默认情况下已禁用(
ENABLE_SEMANTIC_SEARCH=false)- 目前仅支持Notes应用程序(计划支持多应用程序)
- 需要额外的基础设施:矢量数据库+嵌入服务
- 答案生成(
nc_semantic_search_answer)需要MCP客户端采样支持看 docs/语义搜索架构.md 了解架构细节和 docs/configuration.md 有关设置说明。
文档
入门指南
特性
- 应用程序文档 -笔记、日历、联系人、WebDAV、甲板、食谱、表格
- 文档处理 -OCR和文本提取设置
- 语义搜索架构 -实验向量搜索(笔记、文件、新闻项目、卡片;选择加入)
- 矢量同步UI指南 -用于语义搜索可视化和测试的浏览器界面
高级主题
- OAuth架构 -OAuth的工作原理(实验)
- OAuth快速入门 -5分钟OAuth设置
- OAuth设置指南 -详细的OAuth配置
- 故障排除 -常见问题和解决方案
- 与上下文代理的比较 -何时使用每种方法
示例
创建笔记
AI: "Create a note called 'Meeting Notes' with today's agenda"
→ Uses nc_notes_create_note tool
进口食谱
AI: "Import the recipe from https://www.example.com/recipe/chocolate-cake"
→ Uses nc_cookbook_import_recipe tool with schema.org metadata extraction
安排会议
AI: "Schedule a team meeting for next Tuesday at 2pm"
→ Uses nc_calendar_create_event tool
管理文件
AI: "Create a folder called 'Project X' and move all PDFs there"
→ Uses nc_webdav_create_directory and nc_webdav_move tools
语义搜索(实验性,选择加入)
AI: "Find notes related to machine learning concepts"
→ Uses nc_semantic_search to find semantically similar notes (requires Qdrant + Ollama setup)
注: 对于人工智能生成的带有引用的答案,请使用 nc_semantic_search_answer (需要具有采样支持的MCP客户端)。
贡献
欢迎投稿!
安全
这个项目非常重视安全:
- 具有应用程序特定密码的生产就绪基本身份验证
- OAuth2/OIDC支持(实验性,需要上游补丁)
- 每用户访问令牌
- OAuth模式下没有凭据存储
- 定期安全评估
发现安全问题?请私下向维护人员报告。
许可证
该项目根据AGPL-3.0许可证获得许可。看 许可证 了解详情。