Crumbless MCP
Crumbless exposes a Model Context Protocol server so coding agents (Cursor, Claude, and others) can manage brands, posts, plans, Brand Kit, SEO/GEO, and blog — with the same OAuth login as the CLI.
stdio → cli/mcp/stdio.ts → /api/v1/* Quick start
Pick a transport: local stdio is simplest on your machine; remote HTTP is for cloud hosts.
These local examples require a configured app checkout, app and CLI dependencies, and Bun. Start the app with npm run dev from the repository root and wait for its ready message. Use its actual origin: http://localhost:5173 below is only an example, not an assumed running service. Run CLI commands from cli/. Set PUBLIC_APP_URL before login and every command, and set the same value in each separately launched MCP process's env configuration. Without this pin, local detection can fall back to production. The MCP listener on port 8787 is not the app origin. No hosted installer or published package is assumed.
Option A — Local stdio
Best for Cursor and other local agents.
- Use a local checkout of this repository with Bun and CLI dependencies available. The stdio entrypoint is cli/mcp/stdio.ts.
- Authenticate once:
export PUBLIC_APP_URL="http://localhost:5173" bun run cli.ts login - Add to Cursor MCP config (absolute path required when using Bun):
{ "mcpServers": { "crumbless": { "command": "bun", "args": ["run", "/absolute/path/to/crumbless-app/cli/mcp/stdio.ts"], "env": { "PUBLIC_APP_URL": "http://localhost:5173" } } } }If the binary is on PATH after install:
{ "mcpServers": { "crumbless": { "command": "crumbless-mcp", "env": { "PUBLIC_APP_URL": "http://localhost:5173" } } } } - Restart Cursor / reload MCP. Call list_brands, then work with a brand slug.
Session file (shared with the CLI): ~/.config/crumbless/session.json.
Option B — Remote HTTP
HTTP transport exists in the source, but a hosted Crumbless MCP service is not established here. Use local stdio, or an HTTP endpoint your operator has deployed and provided. Do not guess a service URL.
For an operator-provided HTTP endpoint, use its browser OAuth flow. REST API keys are not a substitute for an MCP OAuth session.
Option C — Local HTTP
export PUBLIC_APP_URL="http://localhost:5173"
bun run mcp:http http://localhost:8787/mcp · http://localhost:8787/health
Auth: Bearer or the local session file.
Auth rules
| Context | How you authenticate |
|---|---|
| Local stdio / local HTTP | Browser login tool or crumbless login → session file |
| Remote HTTP | For an operator-provided HTTP endpoint, use its browser OAuth flow. REST API keys are not a substitute for an MCP OAuth session. |
| Static API key | Not supported |
Protected resource metadata: GET /.well-known/oauth-protected-resource.
What to call first
list_brands— discover brand slugsget_dashboard— brand overviewlist_postswith status pending_user — approval queue- Prefer specific tools (approve_posts, edit_post, …) over chat for precise actions
Post and article ids accept short unambiguous prefixes from list results (same rule as the CLI).
Tool areas
| Area | Examples |
|---|---|
| Auth | login, logout, whoami, list_brands |
| Posts | list_posts, get_post, edit_post, approve_posts, regenerate_slide, make_video |
| Plans | get_plan, propose_plan, plan_week, produce_week |
| Brand Kit | get_studio, add_note, research_competitors |
| Web | get_seo, get_geo, generate_article, chat |
Troubleshooting
| Symptom | Likely cause | Fix |
|---|---|---|
| 401 on /mcp | Missing or invalid Bearer on remote | Login locally and pass the access token, or use stdio |
| Tools missing | MCP not connected in the host | Check the Cursor MCP panel and restart the host |
| Auth works in CLI but not MCP | Different machine / no session file | Run login in the MCP process environment |
Next
- Agent skill — install the Crumbless skill so agents know when and how to call MCP or the CLI
- CLI — terminal commands when MCP is not available
- API reference — REST endpoints the MCP and CLI call
- anomalia — historical upstream project, not a Crumbless installation source