lema-mcp 0.7.0 → 0.8.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.
- package/README.md +48 -3
- package/package.json +5 -5
package/README.md
CHANGED
|
@@ -28,6 +28,34 @@ npx lema-mcp init # wire this repo for capture + enforcement (idempotent)
|
|
|
28
28
|
Then open the repo in your agent and ask *"why did we choose X?"* — or just let it
|
|
29
29
|
work, and watch it record decisions and get nudged off the ones you settled.
|
|
30
30
|
|
|
31
|
+
## Try it on React, Kubernetes, or Rust — no account
|
|
32
|
+
|
|
33
|
+
Before it knows *your* repo, `lema-mcp` can already answer **why a popular project
|
|
34
|
+
decided something** — over the recorded RFC/KEP decisions of React, Kubernetes,
|
|
35
|
+
and Rust, served from lema's public demo. No account, no token:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
npx lema-mcp try react # or: kubernetes · rust
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
That writes a **read-only** `lema-try` server to `.mcp.json` (it coexists with a
|
|
42
|
+
captured `lema` server — it doesn't touch your repo). Reload your agent's MCP
|
|
43
|
+
servers and ask:
|
|
44
|
+
|
|
45
|
+
> *"why did React adopt Hooks over mixins?"* — or, before you reach for a pattern,
|
|
46
|
+
> *"was a global event bus ever ruled out in Kubernetes?"*
|
|
47
|
+
|
|
48
|
+
You get **one synthesized, cited answer** — each `[n]` links to its GitHub source
|
|
49
|
+
(the RFC/PR) where available — and an honest **"no recorded ruling"** when the
|
|
50
|
+
record is silent, instead of a confident guess. Two tools light up (`public_ask`,
|
|
51
|
+
`why_not_public`); nothing local is registered. Ready for the same on *your own*
|
|
52
|
+
repo? `npx lema-mcp init` adds capture + enforcement.
|
|
53
|
+
|
|
54
|
+
Grounded only in recorded decisions; claims are **summarized, not verbatim**;
|
|
55
|
+
there are **no** relitigation/blast lenses (a cold import writes no
|
|
56
|
+
decision→decision edges) and no source-authored date. It's a curated three-repo
|
|
57
|
+
demo corpus, not analytics over your own graph.
|
|
58
|
+
|
|
31
59
|
## What never-reopen looks like
|
|
32
60
|
|
|
33
61
|
Your agent settles a choice and calls `record_decision` with the chosen option
|
|
@@ -153,9 +181,10 @@ regex), `--openspec-dir`, `--capture-file` (override the JSONL path), and
|
|
|
153
181
|
|
|
154
182
|
## The tools
|
|
155
183
|
|
|
156
|
-
Your agent calls these over MCP.
|
|
157
|
-
|
|
158
|
-
|
|
184
|
+
Your agent calls these over MCP. In the standard server **eight are always on**;
|
|
185
|
+
`search_docs` / `get_doc` also register in local mode once a markdown tree is
|
|
186
|
+
indexed. (The `npx lema-mcp try` public-demo server runs a public-only subset —
|
|
187
|
+
just `public_ask` / `why_not_public`.)
|
|
159
188
|
|
|
160
189
|
**Enforce + capture (the part read-only tools don't have):**
|
|
161
190
|
|
|
@@ -183,6 +212,17 @@ tree is indexed.
|
|
|
183
212
|
agent instructions, ADR/openspec full text) so the agent reads the sections that
|
|
184
213
|
matter instead of whole files.
|
|
185
214
|
|
|
215
|
+
**Public demo (no account — `npx lema-mcp try <repo>`):**
|
|
216
|
+
|
|
217
|
+
- **`public_ask`** — ask why **React / Kubernetes / Rust** made a decision; one
|
|
218
|
+
cited answer over their recorded RFC/KEP decisions, surfacing status and the
|
|
219
|
+
ruled-out alternatives, with an honest abstain when the record is silent.
|
|
220
|
+
Tokenless, over the public demo.
|
|
221
|
+
- **`why_not_public`** — before you propose a library / pattern / approach, check
|
|
222
|
+
whether one of those projects already ruled it out: a cited answer, or a plain
|
|
223
|
+
"no recorded decision against it" — which means *not on the record*, **not
|
|
224
|
+
*approved***.
|
|
225
|
+
|
|
186
226
|
```
|
|
187
227
|
> search_decisions "why did we choose an MCP-first architecture?"
|
|
188
228
|
```
|
|
@@ -217,6 +257,11 @@ it's a side benefit. The reason to run lema is never-reopen, above.
|
|
|
217
257
|
- **`demo`** — a ~30-second never-reopen walkthrough using the real capture +
|
|
218
258
|
enforce path against a throwaway temp dir that's deleted afterward. Nothing is
|
|
219
259
|
written to your repo. This is the fastest way to see the CLOSED behavior.
|
|
260
|
+
- **`try <react|kubernetes|rust>`** — wire a **read-only public-demo** server
|
|
261
|
+
(`lema-try` in `.mcp.json`, public mode) so your agent can ask why those
|
|
262
|
+
projects decided things, no account. Distinct from `init` (which sets up
|
|
263
|
+
capture for *your* repo); the two coexist. Reload your agent's MCP servers
|
|
264
|
+
afterward.
|
|
220
265
|
- **`guard`** — the PreToolUse hook body: reads the tool-call payload on stdin,
|
|
221
266
|
emits a never-reopen permission decision on stdout. Advisory, fail-open, always
|
|
222
267
|
exits 0. `init` installs it; you don't call it directly.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "lema-mcp",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.8.1",
|
|
4
4
|
"description": "Local, database-less MCP server that makes your repo's decisions — and what it ruled out — queryable by your coding agent, and lets the agent record new ones with enforced never-reopen.",
|
|
5
5
|
"bin": {
|
|
6
6
|
"lema-mcp": "bin/lema-mcp.js"
|
|
@@ -12,10 +12,10 @@
|
|
|
12
12
|
"prepack": "cp ../../README.md ./README.md && cp ../../LICENSE ./LICENSE"
|
|
13
13
|
},
|
|
14
14
|
"optionalDependencies": {
|
|
15
|
-
"lema-mcp-darwin-arm64": "0.
|
|
16
|
-
"lema-mcp-darwin-x64": "0.
|
|
17
|
-
"lema-mcp-linux-x64": "0.
|
|
18
|
-
"lema-mcp-linux-arm64": "0.
|
|
15
|
+
"lema-mcp-darwin-arm64": "0.8.1",
|
|
16
|
+
"lema-mcp-darwin-x64": "0.8.1",
|
|
17
|
+
"lema-mcp-linux-x64": "0.8.1",
|
|
18
|
+
"lema-mcp-linux-arm64": "0.8.1"
|
|
19
19
|
},
|
|
20
20
|
"engines": {
|
|
21
21
|
"node": ">=18"
|