Kanban AI
Remote MCP for Kanban AI boards—manage projects, tasks, and comments from AI tools.
What can you do with Kanban AI?
- AI project breakdown and sprint-aware task generation
- Drag-and-drop kanban with priorities, types, due dates, and comments
- Mobile-first board: status tabs + single scroll list, in-flow quick-add, drawer nav, overlay AI assistant
- In-board AI assistant (and
@kanbanreplies on task threads) - Project members (cloud) or local seeded collaborator for sharing tests
- Dark / light mode
- Optional remote MCP so coding agents manage the same board
Install
Add this to your client's MCP configuration (Claude Desktop: claude_desktop_config.json; Cursor: .cursor/mcp.json; VS Code and others use the same "mcpServers" shape).
claude mcp add --transport http kanban-ai 'https://kanbanai.dev/api/mcp' --header 'Authorization: <Supabase access token for the signed-in Kanban AI user. Format: Bearer <access_token>. Obtain from the in-app Connect page (/connect) or GET /api/mcp-setup.>' --header 'X-Supabase-Access-Token: <Alternative to Authorization when your MCP client cannot send a Bearer header. Same Supabase access token value.>' --header 'X-MCP-API-Key: <Shared deployment secret when MCP_API_SECRET is configured on the host (production uses this). Obtain from the in-app Connect page or GET /api/mcp-setup.>'
{
"mcpServers": {
"kanban-ai": {
"type": "http",
"url": "https://kanbanai.dev/api/mcp",
"headers": {
"Authorization": "<Supabase access token for the signed-in Kanban AI user. Format: Bearer <access_token>. Obtain from the in-app Connect page (/connect) or GET /api/mcp-setup.>",
"X-Supabase-Access-Token": "<Alternative to Authorization when your MCP client cannot send a Bearer header. Same Supabase access token value.>",
"X-MCP-API-Key": "<Shared deployment secret when MCP_API_SECRET is configured on the host (production uses this). Obtain from the in-app Connect page or GET /api/mcp-setup.>"
}
}
}
}
Documentation
From the project's README on GitHub, refreshed weekly. Links open on GitHub.
Contents
Kanban AI
Open-source AI kanban for side projects. Plan with AI, manage a board in the browser, and (optionally) drive the same board from Cursor or Claude via MCP.
Try the hosted app: kanbanai.dev · Docs: kanbanai.dev/docs · Release updates: kanbanai.dev/docs/release-updates
Most people cloning this repo want the local app. That path is first below.
Run locally (recommended)
No Supabase account, no sign-in. One SQLite database under .local/ (gitignored). Vite serves the UI; a small local API on port 3000 handles data and OpenAI.
Requirements: Node.js 18+, npm, and an OpenAI API key for AI features.
git clone https://github.com/orholam/kanban_ai.git
cd kanban_ai/frontend
npm install
cp env.local.example .env.local
Edit .env.local:
VITE_LOCAL_MODE=true
OPENAI_API_KEY=sk-...
Do not prefix the OpenAI key with VITE_ — that would expose it in the browser.
npm run dev:local
Open **http://localhost:5173**.
What works in local mode
| Feature | Local |
|---|---|
| Kanban board, sprints, tasks, comments | Yes |
| AI project builder (chat + live workspace) + board assistant | Yes (needs OPENAI_API_KEY) |
| Project members (invite by email) | Yes — invite collaborator@dev.invalid to try (seeded) |
| Cloud auth / account / hosted analytics / feedback | No (needs Supabase) |
Remote MCP (/api/mcp) | No — use a hosted deploy or vercel dev with Supabase |
First run applies frontend/scripts/local-schema.sql. Vite proxies /api to the local process (frontend/vite.config.ts).
Useful scripts
| Command | What it does |
|---|---|
npm run dev:local | Local SQLite API + Vite (default for contributors) |
npm start | Vite only (pair with Supabase / vercel dev) |
npm run build | Production build + static SEO prerender (unique HTML per public route; skip with SKIP_PRERENDER=1) |
npm run build:no-prerender | Faster local production build |
Optional: Supabase (cloud auth + sync)
Use this when you want real accounts, multi-device sync, or the hosted MCP server.
- In
frontend/.env.local, setVITE_SUPABASE_URLandVITE_SUPABASE_ANON_KEY, and removeVITE_LOCAL_MODE(or set it to anything other thantrue). - Keep
OPENAI_API_KEYfor/api/openai. - From
frontend/, run two terminals:npx vercel dev --listen 3000thennpm start. UI: **http://localhost:5173**.
Deploy on Vercel
Set OPENAI_API_KEY (and Supabase / MCP vars below) in the Vercel project. The OpenAI key is read only on the server — never put it in VITE_* client env.
frontend/vercel.json pins "buildCommand": "npm run build". Leave it there: Vercel's Vite preset otherwise runs bare vite build and silently skips the SEO prerender, which makes every public URL serve the homepage shell and canonical. See frontend/SEO_SETUP.md. AdSense recovery work (crawlable copy, ads off docs) is logged in docs/adsense-approval-log.md.
Ads
Ads are served by TinyAdz/Apitiny via the script tag at the bottom of frontend/index.html (site id + data-test-mode). Two things are easy to break:
- Ad placements. TinyAdz auto-places inline ads by matching CSS class chains it scraped from the landing page, so any other page gets no inventory. Add
<AdSlot />(frontend/src/components/AdSlot.tsx) where an ad belongs — it renders ata-ad-containerdiv that TinyAdz fills. Currently used on blog posts and both landing variants (not on docs — seedocs/adsense-approval-log.md). - The visitor-engagement gate. TinyAdz renders nothing until it sees a window
scroll,mousemove, ortouchmove. Because every route scrolls inside a nestedoverflow-y-autoelement,windownever emitsscrollon its own, sofrontend/src/lib/nestedScrollBridge.tsre-broadcasts nested scrolls onto the window frommain.tsx. Without it, visitors who only wheel-scroll see zero ads and register zero views.
To preview demo ads locally, set data-test-mode="true" in frontend/index.html.
MCP (Cursor, Claude, other agents)
On a hosted deployment, Kanban AI exposes a remote MCP server at /api/mcp for listing, creating, and updating projects, tasks, and comments. Permanent deletion stays in the signed-in web app.
- End users: sign in → Connect AI (
/connect) → copy the generated config into Cursor or Claude Desktop. Config uses a long-lived personal MCP key (kai_…) so you do not need to reconnect hourly. - Operators: before Connect AI can issue
kai_…keys in production, applysupabase/migrations/20260714120000_mcp_api_keys.sqlon the Kanban Supabase project (mruhzlixrwsgwqaodviy). Run./scripts/apply-mcp-api-keys-migration.shfor the SQL editor link, orsupabase db pushafter linking that project. - Operators: see
docs/MCP_REGISTRY.mdand the env table below. - Discovery:
/.well-known/mcp-server· OpenAPI:/openapi/mcp.json· AI index:/llms.txt
| Variable | Purpose |
|---|---|
SUPABASE_URL | Same as VITE_SUPABASE_URL |
SUPABASE_ANON_KEY | Same as VITE_SUPABASE_ANON_KEY |
SUPABASE_SERVICE_ROLE_KEY | MCP analytics, member invites, personal MCP keys |
MCP_API_SECRET | Shared secret for X-MCP-API-Key (also used to encrypt personal keys at rest) |
MCP_KEY_ENCRYPTION_SECRET | Optional dedicated secret for encrypting personal MCP keys (falls back to MCP_API_SECRET / service role) |
OPENAI_API_KEY | In-app AI (optional for MCP CRUD tools) |
Tools (8): list_projects, get_board, create_project, update_project, create_task, update_task, list_task_comments, add_task_comment. Permanent deletion of projects, tasks, and comments stays in the signed-in web app so agents cannot wipe boards. Unauthenticated MCP calls return 401 with WWW-Authenticate: Bearer. Authenticated traffic is rate-limited (RateLimit headers; 120 req/min).
Features
- AI project breakdown and sprint-aware task generation
- Drag-and-drop kanban with priorities, types, due dates, and comments
- Mobile-first board: status tabs + single scroll list, in-flow quick-add, drawer nav, overlay AI assistant
- In-board AI assistant (and
@kanbanreplies on task threads) - Project members (cloud) or local seeded collaborator for sharing tests
- Dark / light mode
- Optional remote MCP so coding agents manage the same board
Tech stack
React 18, TypeScript, Vite, Tailwind CSS · Local: SQLite API · Hosted: Supabase + Vercel · AI: OpenAI · MCP: mcp-handler
Project layout
frontend/
├── api/ # Vercel serverless (OpenAI, MCP, feedback, invites)
├── scripts/ # Local schema, prerender, etc.
├── src/
│ ├── components/
│ ├── pages/
│ ├── lib/
│ └── ...
├── public/ # Static assets, llms.txt, OpenAPI, .well-known
└── package.json
Contributing
- Fork and clone
- Use Run locally above
- Branch, commit, open a PR
Issues and ideas: GitHub Issues
License
MIT — see LICENSE.
Frequently asked questions
What is Kanban AI?
Remote MCP for Kanban AI boards—manage projects, tasks, and comments from AI tools.
How do I install Kanban AI?
It runs as a remote server. In Claude Code: claude mcp add --transport http kanban-ai 'https://kanbanai.dev/api/mcp' --header 'Authorization: <Supabase access token for the signed-in Kanban AI user. Format: Bearer <access_token>. Obtain from the in-app Connect page (/connect) or GET /api/mcp-setup.>' --header 'X-Supabase-Access-Token: <Alternative to Authorization when your MCP client cannot send a Bearer header. Same Supabase access token value.>' --header 'X-MCP-API-Key: <Shared deployment secret when MCP_API_SECRET is configured on the host (production uses this). Obtain from the in-app Connect page or GET /api/mcp-setup.>'. For other clients, paste the JSON configuration from this page into their MCP settings.
Does Kanban AI need an API key?
Yes. It expects Authorization, X-Supabase-Access-Token, X-MCP-API-Key, which you set in its configuration.
Is Kanban AI open source?
Its code is public on GitHub, but the repository does not declare a standard license.
Who maintains Kanban AI?
It is published by orholam. AI.tn lists it but does not maintain or endorse it.
From the official MCP Registry. Listing is not an endorsement: review a server's code and permissions before giving it access to your data.