Appwrite MCP server
Appwrite in any MCP client, through Memtro: Appwrite does not publish this server. Memtro's Appwrite connector reads Appwrite through its API with the credentials you connect, and one endpoint hands those tools, every other system you connect and Memtro's memory tools to Claude Code, Cursor, Claude Desktop or anything else that speaks Streamable HTTP, as you.
What the model can do
Appwrite backend, generically over the project's own data: databases, tables and their columns, rows with filters and ordering, users and storage files. Can create, change, replace, increment and delete rows, delete files, send email, SMS and push messages (or save them as drafts or schedule them) and delete messages, create topics, create, rename, relabel, block, unblock or delete users, run a function, create teams and add or remove team members.
Reads
appwrite_databasesDatabases in the Appwrite project: id, name, enabled.appwrite_tablesTables in an Appwrite database: id, name, enabled, whether row security is on.appwrite_columnsThe columns of an Appwrite table: key, type, required, array, default.appwrite_rowsRows of an Appwrite table, with filters (each {method, column, values}, e.g. {"method":"equal","column":"status","values":["open"]})…appwrite_rowOne Appwrite row by id.appwrite_usersUsers of the Appwrite project's app: name, email, status, labels, email verified, registered.appwrite_filesStorage buckets, or the files in one bucket: name, type, size, created.appwrite_topicsMessaging topics in the Appwrite project: id (a recipient for the send tools), name, description, and how many email, SMS and push subscribers.appwrite_messagesMessages sent, scheduled or drafted through Appwrite Messaging, newest first: id, type, status, email subject, recipient counts…appwrite_functionsFunctions in the Appwrite project: id (for appwrite_run_function), name, runtime, whether enabled and deployed, schedule and timeout.appwrite_team_membersMembers of one Appwrite team: membership id (for appwrite_remove_team_member), user id, name, email, roles, whether confirmed, and when joined.
Acts, when you ask
These change something in Appwrite. The model is told to use them only when you ask for exactly that, and each one is granted by name: per team on a shared connection, by the owner on a personal one.
appwrite_create_rowCreate a row in an Appwrite table, with the given column values.appwrite_update_rowChange columns of an existing Appwrite row.appwrite_upsert_rowCreate the row with this id, or REPLACE the existing one's data with what is given.appwrite_delete_rowPermanently delete an Appwrite row.appwrite_delete_filePermanently delete a file from an Appwrite storage bucket.appwrite_send_emailSend an email through the project's Appwrite Messaging email provider to the given topics, users, targets or addresses.appwrite_send_smsSend an SMS through the project's Appwrite Messaging SMS provider to the given topics, users or targets.appwrite_send_pushSend a push notification through the project's Appwrite Messaging push provider to the given topics, users or targets.appwrite_delete_messagePermanently delete an Appwrite message.appwrite_create_topicCreate a messaging topic in Appwrite, for users to subscribe to and messages to be sent to.appwrite_create_userCreate a user in the Appwrite project's app with an email, phone or name and no password…appwrite_update_user_statusBlock an Appwrite user (they can no longer sign in, and their id stays reserved) or unblock them.appwrite_update_user_nameChange an Appwrite user's display name.appwrite_update_user_labelsSet an Appwrite user's labels.appwrite_delete_userPermanently delete an Appwrite user and release their id, which can then be reused; their rows and files are not deleted with them.appwrite_run_functionRun an Appwrite function now (or at scheduled_at) with an optional request body, path and method.appwrite_create_teamCreate a team in the Appwrite project.appwrite_invite_team_memberAdd an existing user (by user id) or a person by email to an Appwrite team with the given roles.appwrite_remove_team_memberRemove a membership from an Appwrite team: the user loses whatever the team's access gave them.appwrite_increment_row_columnAdd to a number column of one Appwrite row, atomically (a negative value subtracts).
Connect it
First connect Appwrite on Dashboard → Connections, then add Memtro to your client once. The Appwrite tools appear alongside the tools of everything else you have connected; nothing is configured per connector.
Claude Code
The Memtro plugin registers the server and a skill for when to use it; the tools are then available in every session.
claude plugin marketplace add memtro-org/claude-memtro
claude plugin install memtro@memtro --config api_key=sk-memtro-...Cursor
Add the server to .cursor/mcp.json in the project, or to the global file under ~/.cursor/.
{
"mcpServers": {
"memtro": {
"url": "https://platform.memtro.com/api/mcp",
"headers": {
"Authorization": "Bearer sk-memtro-..."
}
}
}
}Claude Desktop
Create a personal API key on Dashboard → Profile → API keys. In Claude Desktop add an MCP server of type HTTP with URL https://platform.memtro.com/api/mcp and the header Authorization: Bearer sk-memtro-…
OpenCode
A remote server in opencode.json.
{
"mcp": {
"memtro": {
"type": "remote",
"url": "https://platform.memtro.com/api/mcp",
"headers": {
"Authorization": "Bearer sk-memtro-..."
}
}
}
}Pi
One command: pi mcp add memtro --url https://platform.memtro.com/api/mcp --bearer-token-env-var MEMTRO_API_KEY. Tools arrive as mcp__memtro__*. The pi-memtro extension registers it for you, alongside Memtro as the model.
Any other client
Add an MCP server of type HTTP (Streamable HTTP, stateless) at https://platform.memtro.com/api/mcp with the header Authorization: Bearer sk-memtro-.... Codex, Zed, Windsurf, Cline and the SDKs all take a remote server this way.
Who may use it
The key identifies the person, and the server offers that person the tools they may use everywhere else in Memtro. A shared Appwrite connection is used by the teams an administrator granted it to, tool by tool, on the Permissions page; a personal connection is used by its owner alone, and its tools that act stay off until the owner allows them. See Teams and permissions and Connectors.
Ask it like this
- › How many orders are still open in the shop database?
- › Which users signed up this week?
- › What columns does the tickets table have?
- › Set the status of order row a91f to shipped
- › Send a push to the beta-testers topic that version 2.3 is out
Questions
- Is this an official Appwrite MCP server?
- No. It is Memtro's MCP server with Memtro's Appwrite connector behind it: the connector reads Appwrite through its API with the credentials you connect on Dashboard → Connections, and Appwrite publishes nothing here. The same endpoint carries every other system you connect and Memtro's memory tools.
- What does it cost?
- Nothing on top of Memtro. One price per organisation by its number of users, from $50 a month for up to 10 users after a 7-day free trial, with every connector, the MCP server, jobs and memory included. You bring your own model keys.
- Can it change anything in Appwrite?
- Only when you ask, and only what it has been granted: create a row in an Appwrite table; change fields of an Appwrite row; create or replace an Appwrite row by id; delete an Appwrite row; delete a file from Appwrite storage; send an email through Appwrite Messaging; send an SMS through Appwrite Messaging; send a push notification through Appwrite Messaging; delete an Appwrite message (does not recall a sent one); create an Appwrite messaging topic; create an Appwrite user; block or unblock an Appwrite user; rename an Appwrite user; set an Appwrite user's labels; delete an Appwrite user; run an Appwrite function; create an Appwrite team; add a member to an Appwrite team; remove a member from an Appwrite team; increment a number column of an Appwrite row. Every other tool reads, searches or lists. An administrator grants each acting tool by name per team, and a personal connection acts only after its owner allows it.
- Which clients work?
- Any MCP client that speaks Streamable HTTP: Claude Code, Cursor, Claude Desktop, OpenCode, Codex, Zed, Windsurf, Cline and the Anthropic and OpenAI SDKs. There is no local process to run; the server is remote and authenticated with your key.