npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

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

  1. In jujugrowth: Settings → Developer → Generate API token (copy it — shown once).
  2. 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-mcp

Claude 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.

  1. 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 (its action + a note); this is how the plan learns the work shipped and stops re-listing it
    • request_site_advice — Pro: trigger a fresh website analysis
    • get_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 poll get_owner_decision until 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.com system-owner MCP or the unscoped operator MCP. Other site-scoped DEVAIs do not see or handle list_capability_gaps. The production API also enforces this: a scoped admin token for any non-JG site gets system_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 open in the business repo. Treat open GitHub issues as owner-filed work, mirror each issue you pick into TASKS.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).