mcp-task-manager
by zsomtor
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).
This server cannot be deployed
Maintenance
ActivityInactive
ResponsivenessNo issues