Compare commits
2 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
faa4d961cc | ||
|
|
52458e05b2 |
3 changed files with 231 additions and 92 deletions
209
README.md
209
README.md
|
|
@ -1,61 +1,30 @@
|
|||
# Lean Experiment MCP Server
|
||||
# Lean Experiment MCP Server 🧪
|
||||
|
||||
A Model Context Protocol (MCP) server for running Lean Startup experiments. Define hypotheses, track observations, and make data-driven decisions — all from within your agent workflow.
|
||||
> **Turn your agent from a builder into a validator.** Define hypotheses, track real-world observations, and make data-driven persevere/pivot/kill decisions — without leaving your agent workflow.
|
||||
|
||||
A [Model Context Protocol](https://modelcontextprotocol.io) server that brings Lean Startup methodology to AI agents. Stop building things nobody wants. Start running experiments.
|
||||
|
||||
---
|
||||
|
||||
## Why This Exists
|
||||
|
||||
Agents need to validate ideas before building. This MCP server gives agents the same Lean Startup tooling that human startups use: hypothesis definition, metric tracking, and explicit persevere/pivot/kill decisions.
|
||||
AI agents are incredible builders — but they're terrible at knowing *what* to build. They'll happily code for hours on an idea with zero validation.
|
||||
|
||||
## Tools
|
||||
This MCP server fixes that. It gives your agents the same tooling that YC startups use:
|
||||
- **Hypothesis-first thinking** — "If we do X, then Y will happen because Z"
|
||||
- **Metric tracking over time** — observations with context, not one-shot guesses
|
||||
- **Explicit kill criteria** — know when to stop before you waste a month
|
||||
|
||||
### `define_experiment`
|
||||
Create a new experiment with hypothesis, success criteria, and kill criteria.
|
||||
Built by an agent, for agents. Dogfooded daily in the [ScobleClaw](https://os.scoble.me/forgejo/marcus/scobleclaw) department network.
|
||||
|
||||
```json
|
||||
{
|
||||
"name": "MCP Server Adoption Test",
|
||||
"hypothesis": "If I publish a free MCP server, 50+ agents will install it in 30 days because the registry has 180k users",
|
||||
"success_criteria": "50+ stars/downloads in 30 days, 5+ issues opened",
|
||||
"kill_criteria": "Zero engagement after 14 days",
|
||||
"duration_days": 30
|
||||
}
|
||||
```
|
||||
---
|
||||
|
||||
### `record_observation`
|
||||
Log a data point for an active experiment.
|
||||
## Quick Start
|
||||
|
||||
```json
|
||||
{
|
||||
"experiment_id": "exp_...",
|
||||
"metric": "github_stars",
|
||||
"value": 12,
|
||||
"notes": "Posted on HN, got 3 upvotes"
|
||||
}
|
||||
```
|
||||
### One-line install (npx — no download needed)
|
||||
|
||||
### `get_experiment_status`
|
||||
Get full status with metrics summary, days remaining, and observations.
|
||||
Add to your MCP client config:
|
||||
|
||||
### `list_experiments`
|
||||
List all experiments with status, day count, and observation count.
|
||||
|
||||
### `make_decision`
|
||||
Make a decision: **persevere**, **pivot**, or **kill**.
|
||||
|
||||
```json
|
||||
{
|
||||
"experiment_id": "exp_...",
|
||||
"decision": "kill",
|
||||
"reason": "Zero installs after 14 days. Hypothesis invalidated."
|
||||
}
|
||||
```
|
||||
|
||||
### `update_experiment`
|
||||
Update notes or extend duration.
|
||||
|
||||
## Installation
|
||||
|
||||
### Via npx (no install)
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
|
|
@ -67,23 +36,149 @@ Update notes or extend duration.
|
|||
}
|
||||
```
|
||||
|
||||
### Via npm
|
||||
That's it. Your agent now has 6 tools for running experiments.
|
||||
|
||||
### Or install globally
|
||||
|
||||
```bash
|
||||
npm install -g lean-experiment-mcp
|
||||
```
|
||||
|
||||
## Data Storage
|
||||
---
|
||||
|
||||
All experiments stored in `~/.lean-experiments/experiments.db` (SQLite).
|
||||
## Tools Reference
|
||||
|
||||
## Example Workflow
|
||||
### `define_experiment` — Start something measurable
|
||||
|
||||
1. **Define:** `define_experiment` with hypothesis and success/kill criteria
|
||||
2. **Ship:** Build the thing, publish it
|
||||
3. **Record:** Every few days, log metrics with `record_observation`
|
||||
4. **Decide:** At the end, use `make_decision` to persevere, pivot, or kill
|
||||
5. **Learn:** Review all experiments with `list_experiments`
|
||||
```json
|
||||
{
|
||||
"name": "Cold Email Subject Line Test",
|
||||
"hypothesis": "If we use problem-focused subject lines instead of product-focused ones, we'll get 2x reply rates because prospects care about their pain, not our solution",
|
||||
"success_criteria": "25%+ reply rate on 40 emails (vs 10% baseline)",
|
||||
"kill_criteria": "Reply rate below 5% after 20 emails",
|
||||
"duration_days": 14
|
||||
}
|
||||
```
|
||||
|
||||
Returns an `experiment_id`. Everything else references it.
|
||||
|
||||
### `record_observation` — Log what actually happened
|
||||
|
||||
```json
|
||||
{
|
||||
"experiment_id": "exp_abc123",
|
||||
"metric": "reply_rate_percent",
|
||||
"value": 18.5,
|
||||
"notes": "Sent 10 emails with problem-focused subject lines. 2 replies. One asked for a demo."
|
||||
}
|
||||
```
|
||||
|
||||
Call this whenever you have a new data point. Multiple observations per metric builds a time series.
|
||||
|
||||
### `get_experiment_status` — Where are we?
|
||||
|
||||
Shows days elapsed, all metrics with totals/latest values, observation count, and whether the experiment is on track vs. approaching kill criteria.
|
||||
|
||||
### `list_experiments` — See everything at once
|
||||
|
||||
Filter by `active`, `completed`, `killed`, or `all`. Quick dashboard of every experiment running.
|
||||
|
||||
### `make_decision` — Call it
|
||||
|
||||
```json
|
||||
{
|
||||
"experiment_id": "exp_abc123",
|
||||
"decision": "persevere",
|
||||
"reason": "Reply rate trending up (10% → 18% → 24%). Early signal of PMF. Extend to 40 emails."
|
||||
}
|
||||
```
|
||||
|
||||
Valid decisions: `persevere`, `pivot`, `kill`. Each requires a reason — gut feelings don't count.
|
||||
|
||||
### `update_experiment` — Adjust on the fly
|
||||
|
||||
Change notes, extend duration, or add context as you learn.
|
||||
|
||||
---
|
||||
|
||||
## Real Example: How We Use It
|
||||
|
||||
Here's a live experiment tracking the adoption of *this very server*:
|
||||
|
||||
```
|
||||
Experiment: MCP Server Adoption Test (Day 0/14)
|
||||
Hypothesis: Publishing on Forgejo + ClawHub → 10+ installs in 14 days
|
||||
because the MCP ecosystem has 180k+ users
|
||||
|
||||
Metrics so far:
|
||||
• build_status = 1 (server compiles and runs)
|
||||
• mcp_registered = 1 (dogfooding in OpenClaw)
|
||||
• distribution_status = 0 (blocked, needs human auth)
|
||||
• forgejo_views = 1 (public repo is live)
|
||||
|
||||
Decision: PERSEVERE (kill criteria not triggered, Day 0)
|
||||
```
|
||||
|
||||
We also track a PageZero landing page demand experiment and a Speckl cold email outreach experiment. Same six tools, different hypotheses.
|
||||
|
||||
---
|
||||
|
||||
## The Workflow
|
||||
|
||||
```
|
||||
1. DEFINE → "If we build X, then Y because Z"
|
||||
2. SHIP → Build the smallest thing that can generate data
|
||||
3. RECORD → Log every meaningful observation
|
||||
4. DECIDE → Persevere, pivot, or kill — based on data
|
||||
5. LEARN → Update your playbook with what worked
|
||||
```
|
||||
|
||||
No step takes more than one agent turn. The loop is designed to run continuously.
|
||||
|
||||
---
|
||||
|
||||
## Architecture
|
||||
|
||||
- **Runtime:** Node.js 22+ (uses built-in `node:sqlite`)
|
||||
- **Storage:** SQLite at `~/.lean-experiments/experiments.db`
|
||||
- **Protocol:** MCP stdio transport
|
||||
- **Dependencies:** Only `@modelcontextprotocol/sdk`
|
||||
- **Cost to run:** $0 — no API keys, no cloud services, no bills
|
||||
|
||||
Data stays on your machine. Experiments persist across sessions. Export the SQLite file to backup or share results.
|
||||
|
||||
---
|
||||
|
||||
## Why Not Just Use a Spreadsheet?
|
||||
|
||||
Because your agent can't write to a spreadsheet during a conversation. This server plugs directly into the tool-calling loop — your agent defines experiments, records observations, and makes decisions *in the same turn* as the work itself.
|
||||
|
||||
Spreadsheets are for after the fact. This is for during the work.
|
||||
|
||||
---
|
||||
|
||||
## Status
|
||||
|
||||
**v1.0.0** — Stable. In active use across two live experiments. Six tools, all tested, all documented.
|
||||
|
||||
Roadmap (when adoption validates the concept):
|
||||
- Experiment templates (pre-built hypotheses for common agent use cases)
|
||||
- Export to CSV/JSON for human review
|
||||
- Multi-agent experiment coordination
|
||||
- Web dashboard for visual tracking
|
||||
|
||||
---
|
||||
|
||||
## Contribute
|
||||
|
||||
Found a bug? Have an idea? Open an issue or PR:
|
||||
|
||||
→ https://os.scoble.me/forgejo/marcus/lean-experiment-mcp
|
||||
|
||||
Mirror coming to Codeberg/GitHub for broader discoverability.
|
||||
|
||||
---
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
MIT — use it, fork it, ship it. Just run experiments first.
|
||||
|
|
|
|||
52
SKILL.md
52
SKILL.md
|
|
@ -1,20 +1,19 @@
|
|||
---
|
||||
name: lean-experiment
|
||||
description: Run Lean Startup experiments from within OpenClaw. Define hypotheses, track observations, and make data-driven persevere/pivot/kill decisions.
|
||||
version: 1.0.0
|
||||
author: Marcus (PageZero)
|
||||
tags: [mcp, lean-startup, experiment, hypothesis, validation]
|
||||
---
|
||||
# Lean Experiment MCP Server
|
||||
|
||||
# Lean Experiment Skill
|
||||
Run Lean Startup experiments inside your agent workflow. Define hypotheses, track observations, make data-driven persevere/pivot/kill decisions.
|
||||
|
||||
## Purpose
|
||||
Track business experiments using Lean Startup methodology without leaving your agent workflow.
|
||||
## What It Does
|
||||
|
||||
## Installation
|
||||
Gives AI agents 6 tools for running experiments:
|
||||
- `define_experiment` — create hypothesis-driven experiments with success/kill criteria
|
||||
- `record_observation` — log metric data points with context
|
||||
- `get_experiment_status` — see days elapsed, metrics, on-track vs kill-approaching
|
||||
- `list_experiments` — dashboard of all experiments
|
||||
- `make_decision` — persevere, pivot, or kill based on data
|
||||
- `update_experiment` — adjust notes or duration
|
||||
|
||||
## Quick Install
|
||||
|
||||
### Option 1: npx (no install)
|
||||
Add to your `claude_desktop_config.json` or OpenClaw MCP config:
|
||||
```json
|
||||
{
|
||||
"mcpServers": {
|
||||
|
|
@ -26,28 +25,11 @@ Add to your `claude_desktop_config.json` or OpenClaw MCP config:
|
|||
}
|
||||
```
|
||||
|
||||
### Option 2: Local build
|
||||
```bash
|
||||
git clone https://github.com/marcus/lean-experiment-mcp.git
|
||||
cd lean-experiment-mcp
|
||||
npm install && npm run build
|
||||
```
|
||||
## Why Use It
|
||||
|
||||
## Tools
|
||||
Most agents build without validation. This forces hypothesis-first thinking — the same methodology YC startups use. Data stays local (SQLite), zero cost, no API keys.
|
||||
|
||||
- `define_experiment` — Create experiment with hypothesis, success criteria, kill criteria
|
||||
- `record_observation` — Log metrics over time
|
||||
- `get_experiment_status` — View current progress
|
||||
- `list_experiments` — See all experiments
|
||||
- `make_decision` — Persevere, pivot, or kill
|
||||
Built by an agent, dogfooded daily across the ScobleClaw Ventures workspace.
|
||||
|
||||
## Example Workflow
|
||||
|
||||
1. Define: "If I build X, then Y will happen because Z"
|
||||
2. Ship: Build the minimum viable thing
|
||||
3. Record: Log metrics every few days
|
||||
4. Decide: Based on data, not gut feeling
|
||||
5. Learn: Update your playbook
|
||||
|
||||
## License
|
||||
MIT
|
||||
**Repo:** https://os.scoble.me/forgejo/marcus/lean-experiment-mcp
|
||||
**License:** MIT
|
||||
|
|
|
|||
62
server.json
Normal file
62
server.json
Normal file
|
|
@ -0,0 +1,62 @@
|
|||
{
|
||||
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-12-11/server.schema.json",
|
||||
"name": "io.github.sscoble/lean-experiment-mcp",
|
||||
"description": "MCP server for running Lean Startup experiments — define hypotheses, track real-world observations, and make data-driven persevere/pivot/kill decisions. Built by an agent, for agents.",
|
||||
"title": "Lean Experiment MCP Server",
|
||||
"websiteUrl": "https://os.scoble.me/forgejo/marcus/lean-experiment-mcp",
|
||||
"repository": {
|
||||
"url": "https://os.scoble.me/forgejo/marcus/lean-experiment-mcp",
|
||||
"source": "forgejo"
|
||||
},
|
||||
"version": "1.0.0",
|
||||
"packages": [
|
||||
{
|
||||
"registryType": "npm",
|
||||
"registryBaseUrl": "https://registry.npmjs.org",
|
||||
"identifier": "lean-experiment-mcp",
|
||||
"version": "1.0.0",
|
||||
"transport": {
|
||||
"type": "stdio"
|
||||
}
|
||||
}
|
||||
],
|
||||
"tools": [
|
||||
{
|
||||
"name": "define_experiment",
|
||||
"description": "Define a new Lean Startup experiment with hypothesis, success criteria, and kill criteria"
|
||||
},
|
||||
{
|
||||
"name": "record_observation",
|
||||
"description": "Record a data point or observation for an active experiment"
|
||||
},
|
||||
{
|
||||
"name": "get_experiment_status",
|
||||
"description": "Get current status of an experiment including days remaining, observations, and recommendation"
|
||||
},
|
||||
{
|
||||
"name": "list_experiments",
|
||||
"description": "List all experiments with their current status"
|
||||
},
|
||||
{
|
||||
"name": "make_decision",
|
||||
"description": "Make a decision on an experiment: persevere, pivot, or kill"
|
||||
},
|
||||
{
|
||||
"name": "update_experiment",
|
||||
"description": "Update experiment notes or extend duration"
|
||||
}
|
||||
],
|
||||
"categories": ["developer-tools", "ai-agents", "productivity"],
|
||||
"license": "MIT",
|
||||
"runtime": "node",
|
||||
"_meta": {
|
||||
"io.modelcontextprotocol.registry/publisher-provided": {
|
||||
"tool": "manual",
|
||||
"version": "1.0.0",
|
||||
"build_info": {
|
||||
"timestamp": "2026-05-04T08:00:00Z",
|
||||
"note": "Published from ScobleClaw Ventures workspace. Pending npm publish + official registry submission."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue