ocis-mcp-server
Health Warn
- License — License: Apache-2.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Fail
- rm -rf — Recursive force deletion command in .github/workflows/release.yml
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
MCP server exposing ownCloud Infinite Scale (oCIS) as 80 AI-accessible tools
oCIS MCP Server
A standalone Model Context Protocol (MCP) server written in Go that exposes ownCloud Infinite Scale as a set of 80+ AI-accessible tools. It enables AI assistants such as Claude, Ollama, and other MCP-compatible clients to manage oCIS users, groups, spaces, files, shares, and more through natural language, communicating exclusively over the public oCIS APIs (LibreGraph, WebDAV, OCS).
Getting Started
See the Getting Started Guide for a full walkthrough.
Quick Setup
# Build
make build
# Configure
export OCIS_URL=https://your-ocis-instance.example.com
export OCIS_ACCESS_TOKEN=your-token
# Run
./ocis-mcp-server
Docker
make docker-build
docker run -e OCIS_URL=... -e OCIS_ACCESS_TOKEN=... owncloud/ocis-mcp-server
Run Tests
make test
make lint
Documentation
Part of ownCloud Infinite Scale
This MCP server is an external integration for oCIS. It communicates over the public API surface and has no dependency on oCIS internals, allowing independent versioning and release cycles.
Tool Inventory
The server exposes 80 tools in 13 categories:
| Category | Tools | Examples |
|---|---|---|
| Users | 6 | ocis_list_users, ocis_create_user, ocis_get_me |
| Groups | 7 | ocis_list_groups, ocis_create_group, ocis_add_group_member |
| Spaces | 14 | ocis_list_spaces, ocis_create_space, ocis_invite_to_space |
| Files | 14 | ocis_list_files, ocis_upload_file, ocis_download_file, ocis_move_file |
| Shares | 11 | ocis_create_share, ocis_create_link, ocis_list_shared_by_me |
| Search | 2 | ocis_search, ocis_search_by_tag |
| Notifications | 2 | ocis_list_notifications, ocis_delete_notification |
| Settings | 3 | ocis_list_roles, ocis_assign_role |
| App Tokens | 3 | ocis_list_app_tokens, ocis_create_app_token |
| Admin | 4 | ocis_health_check, ocis_get_version, ocis_get_capabilities |
| Education | 5 | ocis_list_education_schools, ocis_create_education_user |
| OCM | 4 | ocis_ocm_create_share, ocis_ocm_list_received |
| Workflows | 5 | ocis_upload_and_share, ocis_create_project_space |
Authentication
App Tokens (recommended): Create in the oCIS web UI under Settings > Security > App tokens.
export OCIS_MCP_OCIS_URL="https://ocis.example.com"
export OCIS_MCP_APP_TOKEN_USER="admin"
export OCIS_MCP_APP_TOKEN_VALUE="<token>"
OIDC (alternative):
export OCIS_MCP_AUTH_MODE="oidc"
export OCIS_MCP_OIDC_ACCESS_TOKEN="<access-token>"
Key Environment Variables
| Variable | Required | Description |
|---|---|---|
OCIS_MCP_OCIS_URL |
Yes | Base URL of the oCIS instance |
OCIS_MCP_TRANSPORT |
No | stdio (default) or http |
OCIS_MCP_HTTP_ADDR |
No | Listen address for HTTP transport (default 127.0.0.1:8090) |
OCIS_MCP_HTTP_SECRET |
No* | Shared secret required as Authorization: Bearer <secret> on /mcp. *Required when the HTTP transport binds a non-loopback address. |
OCIS_MCP_LOG_LEVEL |
No | debug, info, warn, error |
Securing the HTTP transport
The HTTP transport runs every tool with the server's configured oCIS credential (often an
admin app token). The /mcp endpoint therefore controls the full tool inventory, so it must
not be reachable by untrusted callers.
- Authenticate callers. Set
OCIS_MCP_HTTP_SECRETto a long random value. The server then
requiresAuthorization: Bearer <secret>on every/mcprequest and rejects others with401. Configure your MCP client to send that header. - Non-loopback binds require a secret. When
OCIS_MCP_TRANSPORT=httpbinds a non-loopback
address (for example0.0.0.0:8090, a routable IP, or a bare:8090) and noOCIS_MCP_HTTP_SECRETis set, the server refuses to start. Binding the default127.0.0.1:8090without a secret is allowed but logs a warning, because any local process
could otherwise drive the tools. - Terminate TLS and restrict the network. Front the server with TLS (a reverse proxy) and
limit reachability with firewall / network policy; do not expose/mcpdirectly to the
internet. - Prefer
stdio(the default) for single-client, local use such as Claude Desktop — it has
no network listener. - There is no per-caller authorization.
OCIS_MCP_HTTP_SECRETgates access to the endpoint,
not to individual tools or accounts. Every caller who presents a valid bearer token gets the
full tool inventory running with the one oCIS credential configured on the server — if that
credential is an admin app token, every caller effectively has admin access. Do not put this
behind a gateway that forwards a shared secret to multiple end users unless you're comfortable
granting all of them that credential's privileges. - Credential rotation requires a restart. The configured app token or OIDC access token is
read once at startup; there is no hot-reload. If it expires or is revoked, every tool call
starts failing with an authentication error from oCIS until the process is restarted with a
fresh credential. Factor the resulting downtime into how short you make the app token's TTL.
MCP Resources and Prompts
5 read-only resources (ocis://capabilities, ocis://version, ocis://sharing-roles, ocis://drive-types, ocis://auth-mode) and 4 guided workflow prompts (ocis_onboard_user, ocis_migrate_files, ocis_audit_space, ocis_share_report).
Community & Support
Star this repo and Watch for release notifications!
Contributing
We welcome contributions! Please read the Contributing Guidelines
and our Code of Conduct before getting started.
Workflow
- Rebase Early, Rebase Often! We use a rebase workflow. Always rebase on the target branch before submitting a PR.
- Dependabot: Automated dependency updates are managed via Dependabot. Review and merge dependency PRs promptly.
- Signed Commits: All commits must be PGP/GPG signed. See GitHub's signing guide.
- DCO Sign-off: Every commit must carry a
Signed-off-byline:git commit -s -S -m "your commit message" - GitHub Actions Policy: Workflows may only use actions that are (a) owned by
owncloud, (b) created by GitHub (actions/*), or (c) verified in the GitHub Marketplace.
Security
Do not open a public GitHub issue for security vulnerabilities.
Report vulnerabilities at https://security.owncloud.com -- see SECURITY.md.
Bug bounty: YesWeHack ownCloud Program
License
This project is licensed under the Apache-2.0.
About the ownCloud OSPO
The Kiteworks Open Source Program Office, operating under
the ownCloud brand, launched on May 5, 2026, to steward the open source
ecosystem around ownCloud's products. The OSPO ensures transparent governance, license compliance,
community health, and sustainable collaboration between the open source community and
Kiteworks, which acquired ownCloud in 2023.
- OSPO Home: https://kiteworks.com/opensource
- GitHub: https://github.com/owncloud
- ownCloud: https://owncloud.com
For questions about the OSPO or licensing, contact [email protected].
License status: This repository is already licensed under Apache-2.0 -- the OSPO target license.
No migration is required.
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found