feat: add Claude Desktop extension (.mcpb) for single-user stdio mode
Adds a `mcpb/` directory containing a Claude Desktop Extension bundle
that lets users install nextcloud-mcp-server from Claude Desktop without
needing HTTPS — the extension uses stdio transport (already supported via
`nextcloud_mcp_server/stdio.py`) so no network connection or TLS is
required.
Bundle contents:
- `manifest.json` — extension metadata, user_config fields for
NEXTCLOUD_HOST, NEXTCLOUD_USERNAME, and NEXTCLOUD_PASSWORD (sensitive,
stored in OS keychain)
- `run.sh` — shell wrapper that locates `uvx` across common install
paths (official uv installer at ~/.local/bin, Homebrew at
/opt/homebrew/bin, etc.) since Claude Desktop uses a restricted PATH
- `.gitignore` — excludes the built *.mcpb artifact
Build the distributable with:
npm install -g @anthropic-ai/mcpb
cd mcpb && mcpb pack
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 4.6
parent
d766f3c014
commit
165ec492aa
@@ -0,0 +1 @@
|
||||
*.mcpb
|
||||
@@ -0,0 +1,53 @@
|
||||
{
|
||||
"manifest_version": "0.2",
|
||||
"name": "nextcloud-mcp",
|
||||
"version": "0.72.4",
|
||||
"display_name": "Nextcloud MCP",
|
||||
"description": "Access your Nextcloud instance (Notes, Calendar, Contacts, Files, Deck, Tables) from Claude Desktop.",
|
||||
"long_description": "Connects Claude Desktop to your Nextcloud server via stdio transport. Supports Notes, Calendar (CalDAV), Contacts (CardDAV), Files (WebDAV), Deck, Tables, and Cookbook. Requires uv (https://docs.astral.sh/uv/) to be installed.",
|
||||
"author": {
|
||||
"name": "nextcloud-mcp-server contributors"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/cbcoutinho/nextcloud-mcp-server"
|
||||
},
|
||||
"homepage": "https://github.com/cbcoutinho/nextcloud-mcp-server",
|
||||
"license": "AGPL-3.0",
|
||||
"keywords": ["nextcloud", "notes", "calendar", "contacts", "files", "deck"],
|
||||
"server": {
|
||||
"type": "python",
|
||||
"entry_point": ".",
|
||||
"mcp_config": {
|
||||
"command": "/bin/sh",
|
||||
"args": ["${__dirname}/run.sh"],
|
||||
"env": {
|
||||
"NEXTCLOUD_HOST": "${user_config.nextcloud_host}",
|
||||
"NEXTCLOUD_USERNAME": "${user_config.nextcloud_username}",
|
||||
"NEXTCLOUD_PASSWORD": "${user_config.nextcloud_password}"
|
||||
}
|
||||
}
|
||||
},
|
||||
"tools_generated": true,
|
||||
"user_config": {
|
||||
"nextcloud_host": {
|
||||
"type": "string",
|
||||
"title": "Nextcloud URL",
|
||||
"description": "Your Nextcloud instance URL, e.g. https://cloud.example.com",
|
||||
"required": true
|
||||
},
|
||||
"nextcloud_username": {
|
||||
"type": "string",
|
||||
"title": "Username",
|
||||
"description": "Your Nextcloud username",
|
||||
"required": true
|
||||
},
|
||||
"nextcloud_password": {
|
||||
"type": "string",
|
||||
"title": "App Password",
|
||||
"description": "A Nextcloud app password (Settings \u2192 Security \u2192 App passwords). Stored securely in the OS keychain.",
|
||||
"sensitive": true,
|
||||
"required": true
|
||||
}
|
||||
}
|
||||
}
|
||||
+14
@@ -0,0 +1,14 @@
|
||||
#!/bin/sh
|
||||
# Locate uvx — tries the official uv installer location first, then Homebrew, then PATH
|
||||
for candidate in \
|
||||
"$HOME/.local/bin/uvx" \
|
||||
"/opt/homebrew/bin/uvx" \
|
||||
"/usr/local/bin/uvx" \
|
||||
"/home/linuxbrew/.linuxbrew/bin/uvx"; do
|
||||
if [ -x "$candidate" ]; then
|
||||
exec "$candidate" nextcloud-mcp-server run --transport stdio
|
||||
fi
|
||||
done
|
||||
|
||||
# Fall back to whatever is in PATH
|
||||
exec uvx nextcloud-mcp-server run --transport stdio
|
||||
Reference in New Issue
Block a user