The design solves a real problem: Appwrite's API is enormous — hundreds of methods — and registering them all would overwhelm a client's tool list. So the model sees a search-and-call surface, and the catalog is queried at runtime, sized to what your authentication actually permits: the full console control plane over OAuth, or the project-key-safe subset over an API key. The hosted Cloud path is the low-friction option, browser OAuth with no keys to copy; writes are gated behind an explicit `confirm_write` and per-route scopes, so read stays separated from mutate.
An MCP server for Appwrite that exposes its API to a model. Rather than registering hundreds of tools, it boots a small operator-style surface — get context, search tools, call tool — while the full Appwrite catalog stays internal and is searched at runtime. A hosted server handles OAuth in the browser; a self-hosted path runs locally with a project API key.
- A workspace summary — project and readable services with an API key, or account, organization and discovered projects over OAuth — `appwrite_get_context`
- The internal Appwrite catalog searched at runtime — `appwrite_search_tools`
- A catalog tool invoked, with mutating calls requiring `confirm_write=true` — `appwrite_call_tool`
- Semantic search over Appwrite's docs when the docs index and an OpenAI key are present — `appwrite_search_docs`
- An authentication-aware catalog: hosted OAuth registers 38 services and 981 methods including console control-plane services; API-key stdio registers the 647 project-key-compatible methods across 26 services
- Large outputs stored as an MCP resource and returned as preview text plus a URI
For Appwrite Cloud, no keys to copy — connect a client such as Claude Code with `claude mcp add --transport http appwrite https://mcp.appwrite.io/` and authenticate through the browser; clients without OAuth support bridge through `npx -y mcp-remote`. For self-hosted Appwrite, run locally over stdio with `uvx mcp-server-appwrite` and set `APPWRITE_PROJECT_ID`, `APPWRITE_API_KEY` and `APPWRITE_ENDPOINT`. The pyproject names the package `mcp-server-appwrite`. Writes through the hidden mutating tools always require `confirm_write=true`, and access stays gated per-route by the scopes granted to the OAuth token.
One command — claude mcp add --transport http appwrite https://mcp.appwrite.io/
