Skip to main content
Glama
README.md
# mcp-task-manager

MCP (Model Context Protocol) server that wraps the personal task manager REST API, so Claude (Claude Code / Cowork / claude.ai) can read and manage tasks.

Two transports, same tools:

- **stdio** (`dist/index.js`) — for local Claude Code on the server
- **streamable HTTP** (`api/mcp.ts`) — serverless function for Vercel, endpoint `/mcp`

## Tools

`get_categories`, `get_tasks`, `get_task`, `add_task`, `add_subtask`, `update_task`, `complete_task`, `reopen_task`, `delete_task`

Field conventions: `priority`/`effort` ∈ `Low|Medium|High`; `due_date` = `YYYY-MM-DD`; `reminder_at` = `YYYY-MM-DDTHH:MM` (server local time, triggers a Telegram message).

## Environment variables

| Variable | Value |
| --- | --- |
| `TASKS_API_URL` | Base URL of the task manager API, e.g. `https://<tunnel>.trycloudflare.com/api`. Defaults to `http://localhost:3131/api`. |
| `TASKS_API_KEY` | API key; sent as `Authorization: Bearer <key>` on every call. |

## Local build & stdio registration

```bash
npm install
npm run build     # tsc → dist/
```

Claude Code config (`~/.claude.json` → `mcpServers`):

```json
{
  "mcpServers": {
    "task-manager": {
      "command": "node",
      "args": ["/home/zsomb/Scripts/Personal/mcp-task-manager/dist/index.js"],
      "env": { "TASKS_API_KEY": "<key from task-manager/.env>" }
    }
  }
}
```

## Deploy to Vercel

1. Push this repo to GitHub:

   ```bash
   git remote add origin git@github.com:<you>/mcp-task-manager.git
   git push -u origin main
   ```

2. On [vercel.com](https://vercel.com): **Add New → Project → Import** the GitHub repo. Framework preset: **Other**. No build settings needed (functions compile automatically).

3. Project → **Settings → Environment Variables**, add for Production:
   - `TASKS_API_URL` = `https://<tunnel>.trycloudflare.com/api`
   - `TASKS_API_KEY` = the key from the task manager `.env`

4. Deploy. The MCP endpoint will be:

   ```
   https://<project-name>.vercel.app/mcp
   ```

   (`vercel.json` rewrites `/mcp` → the `api/mcp` function; stateless streamable HTTP, JSON responses.)

⚠️ The trycloudflare quick-tunnel URL changes every time the tunnel restarts — after a server reboot, run `tunnel-url` on the server and update `TASKS_API_URL` in Vercel (then redeploy).

Maintenance

ActivityInactive
ResponsivenessNo issues