jujugrowth-mcp
v1.14.28
Published
MCP server connecting your AI coding assistant (Claude, Cursor, Codex) to jujugrowth — pull your living marketing plan's dev tasks + recommendations and apply them in your repo.
Readme
@jujugrowth/mcp
A dependency-free MCP (Model Context Protocol) stdio server that connects your dev-AI — Claude Desktop, Claude Code, or Cursor — directly to jujugrowth. Your AI pulls recommendations and their implementable briefs, makes the changes in your own repo (where you review them via git), and marks them handled — no copy-paste.
jujugrowth stays read-only to your systems: this server only reads recommendations and writes status back to jujugrowth.
Setup
- In jujugrowth: Settings → Developer → Generate API token (copy it — shown once).
- Add it to your AI tool (path-free via npx — no local install):
Claude Code:
claude mcp add jujugrowth --scope user \
--env JUJUGROWTH_TOKEN=jgt_your_token_here \
-- npx -y jujugrowth-mcpClaude Desktop (claude_desktop_config.json) / Cursor (.cursor/mcp.json):
{
"mcpServers": {
"jujugrowth": {
"command": "npx",
"args": ["-y", "jujugrowth-mcp"],
"env": { "JUJUGROWTH_TOKEN": "jgt_your_token_here" }
}
}
}The jujugrowth Settings → Developer panel generates the token and shows these commands pre-filled.
Restart the client. First use: your AI will ask to approve the jujugrowth tools the first time it calls them — approve them. (In Claude Code, if it's in "don't ask"/deny mode it silently refuses — toggle the permission mode or run
/allowed-tools, then approve once.)You'll have these tools:
list_plan_tasks— the dev steps of the business's living marketing plan (start here; each carries a ready-to-run prompt)list_recommendations— open recommendations (one site if the token is scoped)get_recommendation— the full brief for one (implement it in your repo)mark_recommendation_handled— mark a rec done (with a note of what you changed)mark_plan_task_handled— report a plan task done (itsaction+ a note); this is how the plan learns the work shipped and stops re-listing itrequest_site_advice— Pro: trigger a fresh website analysisget_brand_asset— derive a favicon set / og:image / clean logo from the business's OWN real logo (never fabricated). Returns each file as a data URI plus the exact<head>tags; if there's no usable logo it says so honestly (available:false) so you ask the owner instead of inventing artwork.list_owner_questions— the OPEN questions the strategist has for the OWNER (real-world business facts only the owner knows — which event is a real sale, what currency the store transacts in). Not code tasks: surface these to the owner.answer_owner_question— submit the owner's answer to one (born-safe: it records the fact as permanent business knowledge, changing no money/campaign state).request_owner_decision/get_owner_decision— when you hit a fix that needs the owner's call (a real trade-off, a risky migration, two reasonable paths), raise a GO/NO-GO here instead of guessing or asking in the shell. The owner answers in the jujugrowth UI with a decision and a written reason; you pollget_owner_decisionuntil it's answered, then honor it. The MCP is the only channel to reach the owner.
(Campaigns/ad briefs aren't here by design — those are owner budget decisions, handled in the jujugrowth web UI, not dev-AI work.)
Capability gaps are not site-maintenance work. They are the JG system's own build backlog and are exposed only to the
jujugrowth.comsystem-owner MCP or the unscoped operator MCP. Other site-scoped DEVAIs do not see or handlelist_capability_gaps. The production API also enforces this: a scoped admin token for any non-JG site getssystem_owner_only, even if a client-side tool override tries to force the call.The dev-AI worklist is not just MCP tasks. After checking the MCP worklists, run
gh issue list --state openin the business repo. Treat open GitHub issues as owner-filed work, mirror each issue you pick intoTASKS.md, comment that it is in progress, and keep developing from the highest-priority unblocked issue when MCP plan tasks/recommendations are empty. Empty MCP lists are not permission to idle while GitHub issues remain open.
A token can be scoped to one business; the server then announces itself as
jujugrowth (yoursite.com) and only ever touches that site. Generate scoped
tokens in jujugrowth → Settings → Developer (one per business/repo).
Prompts to get started
Open your AI in your site's project and try:
- See the work: "List my jujugrowth recommendations and summarize each in one line."
- Implement one: "Get the full brief for the most impactful recommendation, verify it against the code, then implement it here — show me a diff before committing. Mark it handled when it's in."
- Fresh analysis (Pro): "Ask jujugrowth to run a fresh website analysis for this site, then list the new recommendations."
- Hands-off: "Pull my open jujugrowth recommendations, implement the website/SEO ones in this repo (skip GA4-console or business-judgment items — flag those for me), open a PR, and mark each handled with a note."
The server also onboards your AI on connect: it states the full working method
(read-before-changing, fix roots not symptoms, no hardcoded judgment, ship
end-to-end, write copy like a human), how to use the tools (the list → get →
verify → implement → report loop), how to update or close a rec/plan task, and
that any question for the owner goes through the MCP (request_owner_decision),
never the shell. Every MCP tells the AI to check its runtime version against the
published jujugrowth-mcp npm version before trusting worklist instructions.
Only the jujugrowth.com system-owner MCP or the unscoped operator MCP is allowed
to fix, version, push, or publish the MCP package. Other site-scoped DEVAIs must
stop and report a stale MCP/runtime; they must not switch into the jujugrowth repo
or touch packages/mcp. At the start of an MCP run, and again when the AI chooses
a concrete item, it tells the AI to use the host chat/thread rename tool (Codex:
set_thread_title) so humans can see the devAI scope and active work from the
sidebar. At close-out, it tells the AI to choose exactly one follow-up path for
the devAI scope: a fresh continuation chat/thread or a heartbeat, never both. If
it creates a continuation chat with the compact source of truth, the old chat
must stop and must not create or update a heartbeat. Only when no continuation
was created and no actionable work remains should it schedule one single-use
follow-up for about 30 minutes later to re-check the same MCP worklists when the
host has an automation, reminder, heartbeat, or scheduled-task tool. For Codex,
use or update one automation_update heartbeat with COUNT=1. Never create a
recurring schedule, duplicate recheck automations, or leave more than one chat or
heartbeat working the same devAI scope in parallel. If the host cannot schedule,
the AI must say so and include a visible next-check line in the final report
instead.
Requires Node ≥ 22. Optional env JUJUGROWTH_API (defaults to https://jujugrowth.com).
