Merge pull request #721 from jospoortvliet/claude/beautiful-dewdney-64e44b
feat: add Claude Desktop extension (.mcpb) for single-user stdio mode
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
*.mcpb
|
||||||
@@ -0,0 +1,62 @@
|
|||||||
|
{
|
||||||
|
"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-only",
|
||||||
|
"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}"
|
||||||
|
},
|
||||||
|
"platform_overrides": {
|
||||||
|
"win32": {
|
||||||
|
"command": "cmd",
|
||||||
|
"args": ["/c", "${__dirname}/run.cmd"]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"compatibility": {
|
||||||
|
"platforms": ["darwin", "linux", "win32"]
|
||||||
|
},
|
||||||
|
"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
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,27 @@
|
|||||||
|
@echo off
|
||||||
|
REM Locate uvx — tries common Windows install locations first, then PATH
|
||||||
|
|
||||||
|
for %%P in (
|
||||||
|
"%USERPROFILE%\.local\bin\uvx.exe"
|
||||||
|
"%USERPROFILE%\.cargo\bin\uvx.exe"
|
||||||
|
"%LOCALAPPDATA%\uv\bin\uvx.exe"
|
||||||
|
) do (
|
||||||
|
if exist %%P (
|
||||||
|
%%P nextcloud-mcp-server run --transport stdio
|
||||||
|
exit /b %errorlevel%
|
||||||
|
)
|
||||||
|
)
|
||||||
|
|
||||||
|
REM Fall back to uvx on PATH if found
|
||||||
|
where uvx >nul 2>&1
|
||||||
|
if %errorlevel% equ 0 (
|
||||||
|
uvx nextcloud-mcp-server run --transport stdio
|
||||||
|
exit /b %errorlevel%
|
||||||
|
)
|
||||||
|
|
||||||
|
REM uvx not found — print actionable error
|
||||||
|
echo Error: 'uvx' was not found in any expected location. >&2
|
||||||
|
echo Install uv (which provides uvx) from: https://docs.astral.sh/uv/getting-started/installation/ >&2
|
||||||
|
echo Windows: winget install astral-sh.uv >&2
|
||||||
|
echo or: powershell -c "irm https://astral.sh/uv/install.ps1 | iex" >&2
|
||||||
|
exit /b 1
|
||||||
+23
@@ -0,0 +1,23 @@
|
|||||||
|
#!/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 uvx on PATH if found
|
||||||
|
if command -v uvx > /dev/null 2>&1; then
|
||||||
|
exec uvx nextcloud-mcp-server run --transport stdio
|
||||||
|
fi
|
||||||
|
|
||||||
|
# uvx not found — print actionable error and exit
|
||||||
|
echo "Error: 'uvx' was not found in any expected location." >&2
|
||||||
|
echo "Install uv (which provides uvx) from: https://docs.astral.sh/uv/getting-started/installation/" >&2
|
||||||
|
echo " macOS/Linux: curl -LsSf https://astral.sh/uv/install.sh | sh" >&2
|
||||||
|
echo " Homebrew: brew install uv" >&2
|
||||||
|
exit 1
|
||||||
Reference in New Issue
Block a user