Server data from the Official MCP Registry
Remote MCP for Kanban AI boards—manage projects, tasks, and comments from AI tools.
About
Remote MCP for Kanban AI boards—manage projects, tasks, and comments from AI tools.
Remote endpoints: streamable-http: https://kanbanai.dev/api/mcp
Security Report
Valid MCP server (1 strong, 1 medium validity signals). No known CVEs in dependencies. Imported from the Official MCP Registry.
Endpoint verified · Requires authentication · 1 issue found
Security scores are indicators to help you make informed decisions, not guarantees. Always review permissions before connecting any MCP server.
Permissions Required
This plugin requests these system permissions. Most are normal for its category.
How to Connect
Remote Plugin
No local installation needed. Your AI client connects to the remote endpoint directly.
Add this to your MCP configuration to connect:
{
"mcpServers": {
"io-github-orholam-kanban-ai": {
"url": "https://kanbanai.dev/api/mcp"
}
}
}Documentation
View on GitHubFrom the project's GitHub README.
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 with the same board operations as the 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: list_projects, get_board, create_project, update_project, delete_project, create_task, update_task, delete_task, list_task_comments, add_task_comment, delete_task_comment.
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.
Reviews
No reviews yet
Be the first to review this server!
More Developer Tools MCP Servers
Fetch
Freeby Modelcontextprotocol · Developer Tools
Web content fetching and conversion for efficient LLM usage
Git
Freeby Modelcontextprotocol · Developer Tools
Read, search, and manipulate Git repositories programmatically
Toleno
Freeby Toleno · Developer Tools
Toleno Network MCP Server — Manage your Toleno mining account with Claude AI using natural language.
mcp-creator-python
Freeby mcp-marketplace · Developer Tools
Create, build, and publish Python MCP servers to PyPI — conversationally.
MarkItDown
Freeby Microsoft · Content & Media
Convert files (PDF, Word, Excel, images, audio) to Markdown for LLM consumption
MCP Marketplace
Freeby mcp-marketplace · Developer Tools
Search and install MCP servers from inside your AI client.
