Skip to content

Repository files navigation

Recall: a memory MCP server on Appwrite Functions

Recall is a small personal-memory app built on Appwrite. It ships a remote MCP server, hosted as an Appwrite Function, so AI tools like Claude Code can save and search a user's memories with the user's permission.

Memories are stored in an Appwrite VectorsDB database: each memory is embedded with the all-minilm model and retrieved by meaning with a cosine-similarity query. Auth runs on the project's OAuth2 server: AI clients register themselves, users approve access on a consent screen Recall hosts, and the MCP server verifies the tokens the project issues. No API keys are handed out, and users can disconnect a tool at any time.

Companion repository for the Appwrite blog tutorial "Build a memory MCP server on Appwrite".

Layout

apps/recall            The Recall web app (TanStack Start): memory dashboard,
                       email sign-in, the OAuth2 consent screen, and a
                       connected apps page.
functions/memory-mcp   The MCP server, deployed as an Appwrite Function.

Setup

  1. Create an Appwrite project.

  2. In the Console, create a VectorsDB database with ID recall, then a collection with ID memories using the all-minilm (384) embedding model, and add an hnsw_cosine index on the embeddings field.

  3. Create an API key with the scopes sessions.write, users.read, apps.read, databases.read, collections.read, collections.write, documents.read, documents.write, and embeddings.write.

  4. Copy .env.example to .env with your endpoint, project ID, the API key, and a random session secret.

  5. In the Console, open Auth > OAuth2 server, enable the server, set the authorization URL to http://localhost:4200/oauth/consent, and add the memories.read and memories.write scopes.

  6. Deploy the web app and the MCP server (uses the Appwrite CLI), then set the site's variables in the Console (same values as .env):

    pnpm install
    appwrite login
    appwrite push site --site-id recall
    appwrite push function --function-id memory-mcp --activate
  7. Update the OAuth2 server's authorization URL to https://<SITE_DOMAIN>/oauth/consent.

  8. Connect from Claude Code, using the function's domain from the deploy output:

    claude mcp add --transport http recall https://<FUNCTION_DOMAIN>/mcp

    Run /mcp inside Claude Code and pick Authenticate. Sign in as a Recall user, approve access, and ask Claude to remember something.

Live demo

The deployed result of this repository: the app at recall.appwrite.network and the MCP server at https://recall-mcp.appwrite.network/mcp. Create an account, connect Claude Code with the command above, and ask it to remember things.

About

Recall: a memory MCP server on Appwrite Functions, backed by VectorsDB and the OAuth2 server

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages