strategy-mcp 0.0.0-stage → 0.2.1

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.
Files changed (4) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +180 -2
  3. package/index.js +140 -0
  4. package/package.json +51 -4
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Strategy MCP contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,3 +1,181 @@
1
- # Temporary Holding Version
1
+ # Strategy MCP
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ [![npm version](https://img.shields.io/npm/v/strategy-mcp.svg)](https://www.npmjs.com/package/strategy-mcp)
4
+ [![npm downloads](https://img.shields.io/npm/dm/strategy-mcp.svg)](https://www.npmjs.com/package/strategy-mcp)
5
+ [![license](https://img.shields.io/npm/l/strategy-mcp.svg)](https://github.com/Ritterbeckaj/strategy-mcp/blob/main/LICENSE)
6
+ [![node](https://img.shields.io/node/v/strategy-mcp.svg)](https://www.npmjs.com/package/strategy-mcp)
7
+
8
+ ```bash
9
+ npx -y strategy-mcp
10
+ ```
11
+
12
+ Deterministic strategic-planning frameworks as a local MCP server. Runs anywhere
13
+ Node 18+ runs, makes **zero network calls**, and needs **no API keys**.
14
+
15
+ Four tools are free and MIT-licensed in this repo. Eight more (twelve total) ship
16
+ as [StrategyBrain Pro](#strategybrain-pro).
17
+
18
+ ```
19
+ swot_analysis marketing_mix lean_canvas decision_matrix ← free (this repo)
20
+ ```
21
+
22
+ ## Free tools (MIT)
23
+
24
+ | Tool | What it actually returns |
25
+ |---|---|
26
+ | `swot_analysis` | S/W/O/T, then **S-O / W-O / S-T / W-T cross-mapping** and 3–5 offensive + defensive actions. Not just the four quadrants. |
27
+ | `marketing_mix` | The 4Ps — product, price, place, promotion — plus the one-line pitch that connects them. |
28
+ | `lean_canvas` | One-page business model: problem → segments → UVP → solution → channels → revenue → costs → metrics → unfair advantage. |
29
+ | `decision_matrix` | Options scored against weighted criteria, ranked, with the margin between winner and runner-up. |
30
+
31
+ Every tool is a pure function of its input. Same input, same output, no model
32
+ call, no drift between runs, nothing sent anywhere.
33
+
34
+ ## Install
35
+
36
+ **Requirements:** Node 18 or newer. Nothing to clone, no absolute paths.
37
+
38
+ The server is on npm, so `npx` fetches and runs it:
39
+
40
+ ```bash
41
+ npx -y strategy-mcp
42
+ ```
43
+
44
+ That speaks MCP over stdio and waits for a client. Or install it once, globally:
45
+
46
+ ```bash
47
+ npm install -g strategy-mcp
48
+ strategy-mcp
49
+ ```
50
+
51
+ Prefer the source? Same four tools:
52
+
53
+ ```bash
54
+ git clone https://github.com/Ritterbeckaj/strategy-mcp.git
55
+ cd strategy-mcp && npm install
56
+ ```
57
+
58
+ ### OpenCode
59
+
60
+ `~/.config/opencode/opencode.json`:
61
+
62
+ ```json
63
+ {
64
+ "mcp": {
65
+ "servers": {
66
+ "strategy": {
67
+ "type": "local",
68
+ "command": ["npx", "-y", "strategy-mcp@latest"]
69
+ }
70
+ }
71
+ }
72
+ }
73
+ ```
74
+
75
+ Installed globally instead? `"command": ["strategy-mcp"]`.
76
+
77
+ ### Claude Code
78
+
79
+ ```bash
80
+ claude mcp add strategy -- npx -y strategy-mcp@latest
81
+ ```
82
+
83
+ ### Claude Desktop / Cursor
84
+
85
+ Claude Desktop — `claude_desktop_config.json`
86
+ (macOS: `~/Library/Application Support/Claude/`, Windows: `%APPDATA%\Claude\`).
87
+ Cursor — `~/.cursor/mcp.json`. Same shape:
88
+
89
+ ```json
90
+ {
91
+ "mcpServers": {
92
+ "strategy": {
93
+ "command": "npx",
94
+ "args": ["-y", "strategy-mcp@latest"]
95
+ }
96
+ }
97
+ }
98
+ ```
99
+
100
+ Building from a local clone instead? Point `command` at `node` and `args` at the
101
+ absolute path of `index.js`.
102
+
103
+ Restart the client. The four tools appear as `swot_analysis`, `marketing_mix`,
104
+ `lean_canvas`, `decision_matrix`.
105
+
106
+ Then just ask:
107
+
108
+ > "Run a SWOT on my print-on-demand merch line and tell me which threat actually kills it."
109
+
110
+ ## Or use the hosted servers (no install)
111
+
112
+ The same tools — plus FactCheck and LeadGen — run as remote MCP endpoints over
113
+ Streamable HTTP. Useful when you can't install anything locally:
114
+
115
+ | Server | Endpoint | Tools |
116
+ |---|---|---|
117
+ | StrategyBrain | `https://strategybrain-mcp.factcheck-mcp-worker.workers.dev/mcp` | 12 |
118
+ | FactCheck | `https://factcheck-mcp.factcheck-mcp-worker.workers.dev/mcp` | 7 (6 + `get_usage`) |
119
+ | LeadGen | `https://leadgen-mcp.factcheck-mcp-worker.workers.dev/mcp` | 6 |
120
+
121
+ Header on every request:
122
+
123
+ ```
124
+ x-api-key: oc_trial_5a4900841684ff7d265ba3028bcb1fcc
125
+ ```
126
+
127
+ That's a **shared public demo key: 100 calls/day across all users**. Fine for
128
+ testing whether it works in your client. If you need a real quota, buy a pack
129
+ and you get your own key.
130
+
131
+ ## What touches the network
132
+
133
+ READMEs in this category tend to say "fully offline" and stop there. Enumerated
134
+ instead:
135
+
136
+ | Pack | Tools | Network |
137
+ |---|---|---|
138
+ | StrategyBrain (free 4 here + Pro's 8) | 12 | **none** |
139
+ | Monetize MCP | 8 | **none** |
140
+ | FactCheck MCP | 6 | 4 tools → Wikipedia, Semantic Scholar, optional Google Fact Check. `cross_verify` and `anti_hallucination_protocol` are local. |
141
+ | LeadGen MCP | 6 | 2 tools → DuckDuckGo, plus the page you point it at. `qualify_lead`, `save_lead`, `list_leads`, `draft_outreach` are local. |
142
+
143
+ **26 of the 32 tools on sale make zero network calls.** Six do, and they call
144
+ free, keyless, read-only public endpoints — no account, no billing, nothing
145
+ written. `GOOGLE_FACTCHECK_API_KEY` is optional; without it the server degrades
146
+ to Wikipedia + Semantic Scholar. When a network call fails, the tool returns
147
+ `UNVERIFIED` rather than inventing a result.
148
+
149
+ ## StrategyBrain Pro
150
+
151
+ The other eight frameworks, same offline/no-key design:
152
+
153
+ `porter_five_forces` · `pestle_analysis` · `ansoff_matrix` · `jobs_to_be_done` ·
154
+ `tam_sam_som` · `okr_plan` · `roadmap_plan` · `brainstorm_session`
155
+
156
+ **[$12 — StrategyBrain Pro](https://ritterbeck.gumroad.com/l/strategybrain-pro)** ·
157
+ **[$29 with a 30-minute setup call](https://ritterbeck.gumroad.com/l/strategybrain-pro)**
158
+ · 30-day refund if it isn't useful.
159
+
160
+ Free entry point: **[Monetize MCP — 8 tools, $0+](https://ritterbeck.gumroad.com/l/monetize-mcp)**.
161
+ Test the install before paying for anything.
162
+
163
+ Full set — all four packs, 33 tools:
164
+ **[The MCP Toolkit](https://ritterbeck.gumroad.com/mcp-bundle)** ($29, or $79 with setup).
165
+
166
+ ## Why open-core
167
+
168
+ The four tools here are the ones that survive being used on their own. The Pro
169
+ pack funds maintenance and the next batch. If the free tools earn it, buy Pro.
170
+ If they don't, you've lost nothing but a `npm install`.
171
+
172
+ ## Publishing your own
173
+
174
+ MIT — fork it, rename it in `package.json` and in the `McpServer` constructor,
175
+ `npm publish`. If you fork, pick your own package name: `strategy-mcp` is taken
176
+ (as of v0.2.0, by this project).
177
+
178
+ ## License
179
+
180
+ MIT — see [LICENSE](LICENSE). The Pro tools are proprietary and are not in this
181
+ repository.
package/index.js ADDED
@@ -0,0 +1,140 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Strategy MCP — open-core edition (MIT).
4
+ *
5
+ * Free core tools: swot_analysis, marketing_mix, lean_canvas, decision_matrix.
6
+ *
7
+ * Pro (8 more frameworks: Porter's Five Forces, PESTLE, Ansoff, Jobs-to-be-Done,
8
+ * TAM/SAM/SOM, OKR, brainstorm_session, roadmap_plan) is available at:
9
+ * https://ritterbeck.gumroad.com (StrategyBrain Pro)
10
+ * The Pro pack is proprietary and not part of this repository.
11
+ */
12
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
13
+ import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
14
+ import { z } from "zod";
15
+
16
+ const server = new McpServer({ name: "strategy-mcp", version: "0.2.0" });
17
+
18
+ server.tool(
19
+ "swot_analysis",
20
+ "Run a SWOT analysis: strengths, weaknesses, opportunities, threats, then derive 3-5 offensive and defensive strategic actions.",
21
+ {
22
+ subject: z.string().describe("What is being analyzed (business, product line, niche, campaign)"),
23
+ strengths: z.array(z.string()).optional(),
24
+ weaknesses: z.array(z.string()).optional(),
25
+ opportunities: z.array(z.string()).optional(),
26
+ threats: z.array(z.string()).optional(),
27
+ },
28
+ async ({ subject, strengths = [], weaknesses = [], opportunities = [], threats = [] }) => {
29
+ const view = {
30
+ type: "SWOT",
31
+ subject,
32
+ internal: { strengths, weaknesses },
33
+ external: { opportunities, threats },
34
+ cross_mapping: [
35
+ "S-O (attack): use which strength to seize which opportunity?",
36
+ "W-O (build): what weakness blocks an opportunity, and how to fix it?",
37
+ "S-T (defend): which strength mitigates which threat?",
38
+ "W-T (survive): what risk must be neutralized first?",
39
+ ],
40
+ output: ["3-5 offensive actions (SO/WO)", "3-5 defensive actions (ST/WT)", "1 top priority per quadrant"],
41
+ };
42
+ return json(view);
43
+ }
44
+ );
45
+
46
+ server.tool(
47
+ "lean_canvas",
48
+ "One-page business model (9 blocks). Provide any 2+ blocks; the template guides completion of the rest.",
49
+ {
50
+ name: z.string().describe("Venture / product name"),
51
+ problem: z.string().optional(),
52
+ solution: z.string().optional(),
53
+ key_metrics: z.string().optional(),
54
+ unique_value_proposition: z.string().optional(),
55
+ unfair_advantage: z.string().optional(),
56
+ channels: z.string().optional(),
57
+ customer_segments: z.string().optional(),
58
+ cost_structure: z.string().optional(),
59
+ revenue_streams: z.string().optional(),
60
+ },
61
+ async (a) => {
62
+ const view = {
63
+ type: "Lean Canvas",
64
+ name: a.name,
65
+ canvas: {
66
+ problem: a.problem ?? "Top 1-3 problems",
67
+ solution: a.solution ?? "Minimal feature set per problem",
68
+ key_metrics: a.key_metrics ?? "3 numbers that prove traction",
69
+ unique_value_proposition: a.unique_value_proposition ?? "Single clear message: why buy",
70
+ unfair_advantage: a.unfair_advantage ?? "What cannot be copied/bought",
71
+ channels: a.channels ?? "How you reach customers",
72
+ customer_segments: a.customer_segments ?? "Who pays (early adopters first)",
73
+ cost_structure: a.cost_structure ?? "Fixed + variable costs",
74
+ revenue_streams: a.revenue_streams ?? "Pricing + revenue model",
75
+ },
76
+ output: ["Fill every gap", "Flag the riskiest assumption per block", "Design 1 experiment to de-risk the top assumption"],
77
+ };
78
+ return json(view);
79
+ }
80
+ );
81
+
82
+ server.tool(
83
+ "decision_matrix",
84
+ "Score options against weighted criteria to pick objectively. Pass equal-length arrays or leave blank for template.",
85
+ {
86
+ question: z.string().describe("The decision to make"),
87
+ options: z.array(z.string()).optional(),
88
+ criteria: z.array(z.string()).optional(),
89
+ weights: z.array(z.number()).optional().describe("Must sum to 1.0; same length as criteria"),
90
+ },
91
+ async ({ question, options = [], criteria = [], weights = [] }) => {
92
+ const view = {
93
+ type: "Decision matrix",
94
+ question,
95
+ table: options.length ? { options, criteria, weights } : {
96
+ hint: "Fill: options (2-6), criteria (3-6), weights summing to 1.0",
97
+ sample: { options: ["Option A", "Option B"], criteria: ["Cost", "Speed", "Impact"], weights: [0.4, 0.3, 0.3] },
98
+ },
99
+ scoring: "Score each option 1-10 per criterion; total = SUM(score * weight). Highest wins; document why.",
100
+ output: ["Weighted totals per option", "Sensitivity: swap top-2 weights and recheck", "One decision + contingency"],
101
+ };
102
+ return json(view);
103
+ }
104
+ );
105
+
106
+ server.tool(
107
+ "marketing_mix",
108
+ "4P plan: Product, Price, Place (channels), Promotion, plus the pitch line.",
109
+ {
110
+ product: z.string(),
111
+ target_customer: z.string().optional(),
112
+ product_offer: z.string().optional(),
113
+ price: z.string().optional(),
114
+ place: z.string().optional(),
115
+ promotion: z.string().optional(),
116
+ },
117
+ async ({ product, ...p }) => {
118
+ const view = {
119
+ type: "Marketing mix (4Ps)",
120
+ product,
121
+ mix: {
122
+ product_offer: p.product_offer ?? "Features, benefits, packaging, variants",
123
+ price: p.price ?? "List price, anchor, discounts, perceived value",
124
+ place: p.place ?? "Channels: store, marketplace, social, email, POD platform",
125
+ promotion: p.promotion ?? "Hooks per channel + launch sequence (7 days)",
126
+ },
127
+ target_customer: p.target_customer ?? "Define 1 persona: who, what problem, where they hang out",
128
+ output: ["One-sentence pitch", "Launch sequence day-by-day", "3 test creatives to A/B in week 1"],
129
+ };
130
+ return json(view);
131
+ }
132
+ );
133
+
134
+
135
+ function json(v) {
136
+ return { content: [{ type: "text", text: JSON.stringify(v, null, 2) }] };
137
+ }
138
+
139
+ const transport = new StdioServerTransport();
140
+ await server.connect(transport);
package/package.json CHANGED
@@ -1,6 +1,53 @@
1
1
  {
2
2
  "name": "strategy-mcp",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.2.1",
4
+ "description": "Deterministic strategic-planning frameworks (SWOT, 4Ps, Lean Canvas, decision matrix) as a local MCP server. No API keys, no network calls. Pro unlocks 8 more frameworks.",
5
+ "type": "module",
6
+ "main": "index.js",
7
+ "bin": {
8
+ "strategy-mcp": "index.js"
9
+ },
10
+ "files": [
11
+ "index.js",
12
+ "README.md",
13
+ "LICENSE"
14
+ ],
15
+ "license": "MIT",
16
+ "author": "Ritterbeckaj",
17
+ "repository": {
18
+ "type": "git",
19
+ "url": "git+https://github.com/Ritterbeckaj/strategy-mcp.git"
20
+ },
21
+ "homepage": "https://ritterbeck.gumroad.com/l/strategybrain-pro",
22
+ "bugs": {
23
+ "url": "https://github.com/Ritterbeckaj/strategy-mcp/issues"
24
+ },
25
+ "engines": {
26
+ "node": ">=18"
27
+ },
28
+ "keywords": [
29
+ "mcp",
30
+ "model-context-protocol",
31
+ "mcp-server",
32
+ "claude",
33
+ "claude-desktop",
34
+ "cursor",
35
+ "opencode",
36
+ "strategy",
37
+ "swot",
38
+ "lean-canvas",
39
+ "okr",
40
+ "business-planning",
41
+ "offline",
42
+ "no-api-key"
43
+ ],
44
+ "dependencies": {
45
+ "@modelcontextprotocol/sdk": "^1.12.0",
46
+ "zod": "^3.24.0"
47
+ },
48
+ "scripts": {
49
+ "start": "node index.js",
50
+ "smoke": "node scripts/smoke.mjs",
51
+ "prepublishOnly": "node --check index.js && node scripts/smoke.mjs"
52
+ }
53
+ }