nextcloud-dynamic-mcp-server
Dynamically exposes installed Nextcloud app APIs as MCP tools, enabling management of Nextcloud files, sharing, users, calendars, and more via the connected instance.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@nextcloud-dynamic-mcp-serverlist my shared files"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Dynamic MCP Server for Nextcloud
This server exposes a live Nextcloud instance as an MCP server - flexibile for all apps installed.
Instead of shipping a fixed tool list, it queries the Nextcloud ocs_api_viewer app at startup, reads the OpenAPI descriptions for installed apps, and turns those operations into MCP tools dynamically. The result is an MCP endpoint that reflects the APIs available on the connected Nextcloud instance.
What The Server Does
Connects to a Nextcloud instance defined by
NEXTCLOUD_URLUses server discovery credentials at startup and per-request credentials for tool execution
Reads installed app APIs from
NEXTCLOUD_URL/apps/ocs_api_viewerCreates MCP tools dynamically from the discovered OpenAPI operations
Proxies tool calls back to the real Nextcloud REST endpoints
Supports both
streamable-httpandstdioMCP transports
One built-in tool is always available:
nextcloud_discovery_status: returns the connected Nextcloud URL, auth mode, discovered apps, tool count, and last refresh/error state
Dynamic tools are named from the Nextcloud app id plus the OpenAPI operation id or path, for example:
files_sharing_get_shares
provisioning_api_create_user
dav_upcoming_events_get_eventsRelated MCP server: Public API MCP Server
Main Service Endpoints
GET /
Health and discovery endpoint. Returns:
server name
transport mode
MCP path
whether default credentials are configured
current discovery status
Example:
curl http://localhost:8000//mcp
Main MCP endpoint for streamable-http clients.
Point Codex, Claude Code, or any other MCP client at:
http://localhost:8000/mcpRequirements
Docker and Docker Compose
A reachable Nextcloud instance
The Nextcloud
ocs_api_viewerapp enabled on that instanceA Nextcloud username and app token with permission to access the APIs you want to expose
Configuration
The server is configured entirely with environment variables.
Variable | Default | Description |
|
| Base URL of the target Nextcloud instance |
| unset | Server-side username used only for startup discovery |
| unset | Server-side app token used only for startup discovery |
|
| Bind host for HTTP mode |
|
| Bind port for HTTP mode |
|
|
|
|
| Timeout for discovery and proxied requests |
|
| Python log level |
| unset | Set to |
Authentication Modes
The server supports two auth patterns:
Server-level discovery auth via
NEXTCLOUD_USERNAMEandNEXTCLOUD_APP_TOKENPer-request auth via MCP request headers:
X-Nextcloud-UsernameX-Nextcloud-AppToken
The server-level credentials are used only during startup discovery. Every actual tool call must provide the request headers, and the server does not fall back to the startup admin credentials for execution.
How To Start The Server
Update docker-compose.yml with your Nextcloud URL and credentials, then run:
docker compose up -d --buildThe server will be available at:
http://localhost:8000/
http://localhost:8000/mcpHow Discovery Works
At startup, the server:
Calls
GET /apps/ocs_api_viewer/appson the configured Nextcloud instanceLoads each app’s OpenAPI document from
GET /apps/ocs_api_viewer/apps/{appId}Builds an MCP input schema from the operation parameters and request body
Registers the operation as a callable MCP tool
Discovery uses the server's default NEXTCLOUD_USERNAME and NEXTCLOUD_APP_TOKEN.
Every tool execution uses only X-Nextcloud-Username and X-Nextcloud-AppToken. If those headers are missing, the tool call is rejected instead of falling back to the startup admin account.
If discovery fails, the server still starts and reports the error through nextcloud_discovery_status and GET /.
Client Configuration Examples
Codex
Codex can pass the Nextcloud credentials as HTTP headers:
codex mcp add nextcloud-live --url http://localhost:8000/mcpEquivalent ~/.codex/config.toml example:
[mcp_servers.nextcloud-live]
url = "http://localhost:8000/mcp"
http_headers = { X-Nextcloud-Username = "NEXTCLOUD_USERNAME", X-Nextcloud-AppToken = "NEXTCLOUD_APP_TOKEN" }Claude Code
CLI example:
claude mcp add --transport http nextcloud-live http://localhost:8000/mcpProject-scoped .mcp.json example using per-user credentials from environment variables:
{
"mcpServers": {
"nextcloud-live": {
"type": "http",
"url": "http://localhost:8000/mcp",
"headers": {
"X-Nextcloud-Username": "${NEXTCLOUD_USERNAME}",
"X-Nextcloud-AppToken": "${NEXTCLOUD_APP_TOKEN}"
}
}
}
}This is useful when you want one shared MCP server URL but each developer should authenticate to Nextcloud with their own account.
Example Smoke Checks
Check the HTTP health endpoint:
curl http://localhost:8000/If you are using Docker Compose:
docker compose logs -f mcpIn an MCP client, call:
nextcloud_discovery_status
Then verify that the discovered tool list includes operations from your enabled Nextcloud apps.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Rello/nextcloud-dynamic-mcp-server'
If you have feedback or need assistance with the MCP directory API, please join our Discord server