Yalp MCP Server
MCP server for Yalp — manage todos and lists from Cursor, Claude, and other MCP clients.
Ask AI about Yalp MCP Server
Powered by Claude · Grounded in docs
I know everything about Yalp MCP Server. Ask me about installation, configuration, usage, or troubleshooting.
0/500
Reviews
Documentation
Yalp
Yalp is a minimalist AI-assisted todo app built with a Turborepo monorepo, Electron, and a Supabase backend. It also exposes an MCP server so AI coding tools can create and manage todos directly.
macOS app is live
Yalp now ships as a native macOS desktop app in addition to the web app.
- Download from the app/website download entry points (DMG artifact built from
apps/desktop). - Desktop and web use the same account and stay in sync.
- The desktop shell opens the Yalp web experience in a dedicated native window.
Claude Web × uzak MCP: Yalp, Claude Web özel connector için OAuth 2.1 (PKCE) ve MCP metadata uçlarını sunar; rehber ve env için bkz. docs/claude-web-mcp-compliance.md. Stdio istemcileri yalp_ API anahtarını kullanmaya devam eder.
The web app (apps/web) uses Next.js 15, Tailwind CSS v4, and HeroUI v3 (@heroui/react, @heroui/styles).
- Local dev:
pnpm dev:web - Production build:
pnpm --filter web build
Desktop app (Electron)
- Dev (web + desktop):
pnpm dev:desktop - Build macOS DMG:
pnpm --filter desktop build:mac - Release macOS DMG (notarization zorunlu):
pnpm --filter desktop build:mac:release - Verify macOS artifacts:
pnpm --filter desktop verify:mac:artifacts - App bundle identifier:
com.yalp.app
Notes:
- macOS helper app metadata is post-processed during packaging to reduce duplicate app-name surfacing in Spotlight/App search.
- If old app builds are installed locally, remove stale copies before validating the final install UX.
- Production DMG dagitiminda imzalama + notarization olmadan yayin yapmayin; aksi halde kullanicilar "is damaged and can't be opened" uyarisiyla karsilasabilir.
CI release guardrails (GitHub Actions)
- Workflow:
.github/workflows/macos-desktop-release.yml - Trigger: manuel (
workflow_dispatch) veyav*tag push. - Builds are gated by notarization + artifact verification before release assets are uploaded.
- Optional workflow inputs:
release_tag,auto_publish,prerelease. -alpha/-beta/-rctags are published as pre-release and not marked aslatest.
Required GitHub Secrets:
CSC_LINK,CSC_KEY_PASSWORD- Notarization credentials (use one set):
APPLE_ID+APPLE_APP_SPECIFIC_PASSWORD+APPLE_TEAM_ID, orAPPLE_API_KEY+APPLE_API_KEY_ID+APPLE_API_ISSUER
Web typography: Headings use Open Runde (next/font/local, OFL — app/fonts/open-runde/); body, descriptions, and buttons use Inter (next/font/google). Configuration: apps/web/app/fonts.ts, apps/web/app/globals.css.
Supabase setup (one-time)
- Create a new project in the Supabase dashboard.
- In the SQL editor, run migrations in
supabase/migrations/in order (including0012_oauth_mcp.sqlfor Claude Web OAuth). - In Project Settings → API, copy:
- Project URL
anonpublic keyservice_rolesecret key
- Copy the repo root
.env.exampletoapps/web/.env.local, then fill in secrets (Next.js reads env files fromapps/web/only).
Public URL (NEXT_PUBLIC_SITE_URL)
Production canonical domain is https://yalp.work. Set NEXT_PUBLIC_SITE_URL to that value in Vercel Production once DNS and SSL are live. Local dev usually sets NEXT_PUBLIC_SITE_URL=http://localhost:3001 so metadata and redirects match the dev server.
After changing domains, update: Vercel project domains and env, Supabase Auth redirect URLs and Site URL, Stripe webhook endpoint URL, MCP / Cursor configs that embed the API base URL, and any marketing or llms.txt mirrors outside this repo.
Rebranding checklist (Flowdo → Yalp)
If you previously used Flowdo naming or env vars: use only YALP_* env vars (see .env.example). API keys must use the yalp_ prefix — revoke old keys in the app and create new ones if needed. Electron appId is now com.yalp.app; existing installs may need a fresh build. Supabase migration filename changed to 0001_init_yalp.sql — already-applied databases should not re-run SQL; new environments use the new file.
