jujugrowth-mcp 1.0.9 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +2 -2
- package/server.mjs +48 -7
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jujugrowth-mcp",
|
|
3
|
-
"version": "1.0
|
|
4
|
-
"description": "MCP server connecting your AI coding assistant (Claude, Cursor, Codex) to jujugrowth — pull recommendations and apply them in your repo.",
|
|
3
|
+
"version": "1.2.0",
|
|
4
|
+
"description": "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.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
7
7
|
"jujugrowth-mcp": "server.mjs"
|
package/server.mjs
CHANGED
|
@@ -71,6 +71,44 @@ const TOOLS = [
|
|
|
71
71
|
`/recommendations${a.tenantId ? `?tenantId=${encodeURIComponent(a.tenantId)}` : ""}`,
|
|
72
72
|
),
|
|
73
73
|
},
|
|
74
|
+
{
|
|
75
|
+
name: "list_plan_tasks",
|
|
76
|
+
description:
|
|
77
|
+
"List the dev-AI tasks from this site's LIVING MARKETING PLAN — the roadmap steps the plan assigned to the developer AI (changes to the business's own site/app/code; jujugrowth executes the 'autonomous' marketing steps itself). Each task has a ready-to-run `prompt`, plus why it matters, its priority, and the plan's north-star + strategy for context. This is your growth to-do list for the business: pull it, implement the highest-priority tasks in the repo (verify current state first; show a diff/PR), and the next plan regeneration reflects what you shipped via its evidence-grounded status. Pass `tenantId` to target a site; if more than one is connected and you omit it you get {needsSite:true,...} — ASK the user which site, then call again. Never pick a site for them.",
|
|
78
|
+
inputSchema: {
|
|
79
|
+
type: "object",
|
|
80
|
+
properties: {
|
|
81
|
+
tenantId: {
|
|
82
|
+
type: "string",
|
|
83
|
+
description: "the site (optional; required when more than one site is connected)",
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
additionalProperties: false,
|
|
87
|
+
},
|
|
88
|
+
run: async (a) =>
|
|
89
|
+
call("GET", `/plan-tasks${a.tenantId ? `?tenantId=${encodeURIComponent(a.tenantId)}` : ""}`),
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
name: "mark_plan_task_handled",
|
|
93
|
+
description:
|
|
94
|
+
"Report a marketing-plan dev-AI task DONE after you've shipped it in the repo. Pass the task's `action` (exactly as returned by list_plan_tasks) and a short `note` of what you changed. jujugrowth records it and the next plan regeneration marks that step done (and stops listing it). ALWAYS call this once a plan task is implemented — it's how the plan knows the work happened. Pass `tenantId` if your token spans more than one site.",
|
|
95
|
+
inputSchema: {
|
|
96
|
+
type: "object",
|
|
97
|
+
properties: {
|
|
98
|
+
tenantId: { type: "string", description: "the site (required only for multi-site tokens)" },
|
|
99
|
+
action: { type: "string", description: "the task's action text, exactly as listed" },
|
|
100
|
+
note: { type: "string", description: "1-3 sentences: what you implemented" },
|
|
101
|
+
},
|
|
102
|
+
required: ["action"],
|
|
103
|
+
additionalProperties: false,
|
|
104
|
+
},
|
|
105
|
+
run: async (a) =>
|
|
106
|
+
call("POST", "/plan-tasks/handled", {
|
|
107
|
+
action: a.action,
|
|
108
|
+
...(a.tenantId ? { tenantId: a.tenantId } : {}),
|
|
109
|
+
...(a.note ? { note: a.note } : {}),
|
|
110
|
+
}),
|
|
111
|
+
},
|
|
74
112
|
{
|
|
75
113
|
name: "get_recommendation",
|
|
76
114
|
description:
|
|
@@ -146,13 +184,16 @@ async function handle(msg) {
|
|
|
146
184
|
// Workflow the AI should follow unprompted (so the human never has to
|
|
147
185
|
// say "now mark it handled"). Surfaced to the model by MCP clients.
|
|
148
186
|
instructions:
|
|
149
|
-
`This server
|
|
150
|
-
"
|
|
151
|
-
"
|
|
152
|
-
"
|
|
153
|
-
"
|
|
154
|
-
"
|
|
155
|
-
"
|
|
187
|
+
`This server connects ${SITE_LABEL ? `the site "${SITE_LABEL}"` : "the user's site(s)"} growth work to your coding. Two task sources:\n` +
|
|
188
|
+
"• list_plan_tasks — the dev-AI steps of the business's LIVING MARKETING PLAN (the strategic roadmap). Start here: these are the prioritized site/app/code changes the growth plan needs (each has a ready-to-run prompt + the north-star for context).\n" +
|
|
189
|
+
"• list_recommendations — individual one-off growth recommendations.\n" +
|
|
190
|
+
"Standard loop:\n" +
|
|
191
|
+
"1) list_plan_tasks (and/or list_recommendations).\n" +
|
|
192
|
+
"2) get_recommendation for any rec you'll act on.\n" +
|
|
193
|
+
"3) Before changing anything, VERIFY current-state claims against the actual code — they can be stale; skip what's already done.\n" +
|
|
194
|
+
"4) Implement in the user's repo, scoped to wording/structure/SEO/tracking the plan asks for. Show a diff / open a PR for the user to review.\n" +
|
|
195
|
+
"5) ALWAYS report completion once shipped, don't wait to be told: mark_recommendation_handled for a recommendation, or mark_plan_task_handled (with the task's action + a note) for a plan task — that's how the plan learns the work happened and marks the step done.\n" +
|
|
196
|
+
"Campaigns and ad budgets are NOT here — those are owner decisions the jujugrowth system runs itself. This server is bound to ONE site; never act on another.",
|
|
156
197
|
},
|
|
157
198
|
});
|
|
158
199
|
}
|