TaskFlow is a small task manager built on Appwrite. It ships a remote MCP server, hosted as an Appwrite Function, so AI tools like Claude Code can read and manage a user's tasks with the user's permission.
The interesting part is the auth. TaskFlow's Appwrite project acts as the OAuth2 server: AI clients register themselves, users approve access on a consent screen TaskFlow 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 "Turn your app into an MCP server".
apps/taskflow The TaskFlow web app (TanStack Start): tasks, sign-in,
the OAuth2 consent screen, and a connected apps page.
functions/taskflow-mcp The MCP server, deployed as an Appwrite Function.
scripts One-time database provisioning.
-
Create an Appwrite project and copy
.env.exampleto.envwith your endpoint, project ID, an API key (scopes:sessions.write,users.read,apps.read,databases.read,databases.write,tables.read,tables.write), and a random session secret. -
Install and provision the database:
pnpm install pnpm provision
-
In the Console, open Auth > OAuth2 server, enable the server, set the authorization URL to
http://localhost:4100/oauth/consent, and add thetasks.readandtasks.writescopes. -
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):appwrite login appwrite push site --site-id taskflow appwrite push function --function-id taskflow-mcp --activate
-
Update the OAuth2 server's authorization URL to
https://<SITE_DOMAIN>/oauth/consent. -
Connect from Claude Code, using the function's domain from the deploy output:
claude mcp add --transport http taskflow https://<FUNCTION_DOMAIN>/mcp
Run
/mcpinside Claude Code and pick Authenticate. Sign in as a TaskFlow user, approve access, and ask Claude about your tasks.
The deployed result of this repository: the app at taskflow.appwrite.network and the MCP server at https://taskflow-mcp.appwrite.network/mcp. Create an account, connect Claude Code with the command above, and manage your tasks from the conversation.