Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
160 changes: 155 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ through your browser. The first time you connect, your client opens an Appwrite
consent screen; approve the scopes and you're connected. There are no keys to
copy.

![How the Appwrite MCP server handles OAuth and scopes](docs/appwrite-mcp-flow.svg)
![How the Appwrite MCP server handles OAuth and scopes](docs/appwrite-mcp-flow.png)

## Connect your client

Expand All @@ -24,28 +24,38 @@ Pick your client below. Each adds the hosted Appwrite Cloud server.
claude mcp add --transport http appwrite https://mcp.appwrite.io/mcp
```

Then, inside a Claude Code session, run `/mcp`, select **appwrite**, and follow
the browser prompt to authenticate.

</details>

<details>
<summary><b>Claude Desktop</b></summary>

Go to **Settings → Connectors → Add custom connector** and paste
`https://mcp.appwrite.io/mcp`.
`https://mcp.appwrite.io/mcp`. Available on Pro and Max plans; on Team and
Enterprise plans only an organization Owner can add custom connectors.

On the free plan, bridge the remote server through stdio instead (requires
Node.js) by editing your config via **Settings → Developer → Edit Config**:
If you don't see that option (free plan, or a Team/Enterprise member), bridge
the remote server through stdio instead (requires Node.js). Go to **Settings → Developer → Local MCP servers**, click
**Edit Config**, and add:

```json
{
"mcpServers": {
"appwrite": {
"command": "npx",
"args": ["mcp-remote", "https://mcp.appwrite.io/mcp"]
"args": ["-y", "mcp-remote", "https://mcp.appwrite.io/mcp"]
}
}
}
```

Restart Claude Desktop; the server appears under **Local MCP servers** and a
browser window opens to authenticate.

![Appwrite server running under Local MCP servers in Claude Desktop](docs/images/claude-desktop-local-mcp-servers.png)

</details>

<details>
Expand All @@ -63,6 +73,11 @@ Edit `~/.cursor/mcp.json` (global) or `.cursor/mcp.json` (project).
}
```

Cursor prompts you to log in through the browser; the server then shows up
under **Settings → MCP** with its tools enabled.

![Appwrite server connected in Cursor's MCP settings](docs/images/cursor-mcp.png)

</details>

<details>
Expand Down Expand Up @@ -94,6 +109,18 @@ Edit `~/.codex/config.toml`.
url = "https://mcp.appwrite.io/mcp"
```

Then authenticate from the terminal:

```bash
codex mcp login appwrite
```

In the Codex GUI, you can instead add the server from the MCP settings —
set the URL to `https://mcp.appwrite.io/mcp` and leave the token and header
fields empty (authentication happens through the browser):

![Appwrite MCP server settings in the Codex GUI](docs/images/codex-mcp.png)

</details>

<details>
Expand Down Expand Up @@ -133,6 +160,129 @@ Edit `~/.codeium/windsurf/mcp_config.json`.

</details>

<details>
<summary><b>Gemini CLI</b></summary>

```bash
gemini mcp add --transport http appwrite https://mcp.appwrite.io/mcp
```

Or edit `~/.gemini/settings.json` (note the key is `httpUrl`, not `url`):

```json
{
"mcpServers": {
"appwrite": {
"httpUrl": "https://mcp.appwrite.io/mcp"
}
}
}
```

Gemini CLI opens the browser OAuth flow automatically on first connect. To
re-authenticate, run `/mcp auth appwrite` inside a session.

</details>

<details>
<summary><b>GitHub Copilot CLI</b></summary>

```bash
copilot mcp add --transport http appwrite https://mcp.appwrite.io/mcp
```

Or run `/mcp add` inside a session, or edit `~/.copilot/mcp-config.json`:

```json
{
"mcpServers": {
"appwrite": {
"type": "http",
"url": "https://mcp.appwrite.io/mcp"
}
}
}
```

A browser window opens to authenticate on first connect. Check status with
`/mcp`.

</details>

<details>
<summary><b>Zed</b></summary>

Go to **Settings → AI → MCP Servers → Add Server → Add Remote Server**, or add
to your `settings.json` (`zed: open settings`):

```json
{
"context_servers": {
"appwrite": {
"url": "https://mcp.appwrite.io/mcp"
}
}
}
```

Zed prompts you to authenticate through the browser on first connect.

</details>

<details>
<summary><b>Warp</b></summary>

Go to **Settings → Agents → MCP servers → + Add**, choose the URL-based
server type, and enter `https://mcp.appwrite.io/mcp`.

Warp opens a browser window to authenticate on first connect.

Comment thread
greptile-apps[bot] marked this conversation as resolved.
</details>

<details>
<summary><b>JetBrains AI Assistant / Junie</b></summary>

JetBrains IDEs don't yet support OAuth for remote MCP servers, so bridge
through stdio (requires Node.js). Go to **Settings → Tools → AI Assistant →
Model Context Protocol (MCP) → Add**, switch to the JSON view, and paste:

```json
{
"mcpServers": {
"appwrite": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.appwrite.io/mcp"]
}
}
}
```

A browser window opens to authenticate on first connect.

</details>

<details>
<summary><b>Cline</b></summary>

Cline doesn't yet support OAuth for remote MCP servers, so bridge through
stdio (requires Node.js). In the Cline panel, open the **MCP Servers** icon →
**Configure** tab → **Configure MCP Servers**, and add:

```json
{
"mcpServers": {
"appwrite": {
"command": "npx",
"args": ["-y", "mcp-remote", "https://mcp.appwrite.io/mcp"]
}
}
}
```

A browser window opens to authenticate on first connect.

</details>

## Self-hosted Appwrite

Running your own Appwrite instance? Run the MCP server locally over `stdio` and
Expand Down
Binary file modified docs/appwrite-mcp-flow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/claude-desktop-local-mcp-servers.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/codex-mcp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/cursor-mcp.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading