TaskFlow
README.md
# TaskFlow: an MCP server powered by the Appwrite OAuth2 server
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".
## Layout
```
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.
```
## Setup
1. Create an Appwrite project and copy `.env.example` to `.env` with 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.
2. Install and provision the database:
```bash
pnpm install
pnpm provision
```
3. In the Console, open **Auth > OAuth2 server**, enable the server, set the authorization URL to `http://localhost:4100/oauth/consent`, and add the `tasks.read` and `tasks.write` scopes.
4. Deploy the web app and the MCP server (uses the [Appwrite CLI](https://appwrite.io/docs/tooling/command-line/installation)), then set the site's variables in the Console (same values as `.env`):
```bash
appwrite login
appwrite push site --site-id taskflow
appwrite push function --function-id taskflow-mcp --activate
```
5. Update the OAuth2 server's authorization URL to `https://<SITE_DOMAIN>/oauth/consent`.
6. Connect from Claude Code, using the function's domain from the deploy output:
```bash
claude mcp add --transport http taskflow https://<FUNCTION_DOMAIN>/mcp
```
Run `/mcp` inside Claude Code and pick **Authenticate**. Sign in as a TaskFlow user, approve access, and ask Claude about your tasks.
## Live demo
The deployed result of this repository: the app at [taskflow.appwrite.network](https://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.
This server cannot be deployed
Maintenance
ActivitySlowing
ResponsivenessNo issues