프로토타입 · 미리 보기: 공식 레지스트리의 모든 서버를 담고 있으며 30분마다 동기화해요. 리뷰와 계정 기능은 다음 단계에서 열려요.
PopNx MCPAI를 쓰는 사람을 위한 MCP 서버 · 쉬운 말로 설명해요

Lema MCP

제작자: lemahq버전 0.22.2i★ –i내 컴퓨터에서 실행
레지스트리 이름io.github.lemahq/lema-mcp

설치

개요

제작자가 쓴 설명(영어 원문)

Cited 'why was this decided?' answers for your repo and for React, Kubernetes, and Rust.

PopNx MCP의 세 기둥

이 세 가지는 절대 하나의 점수로 합치지 않아요. 의견, 측정, 인기는 서로 다른 것이니까요.

할 수 있는 일

이 서버는 아직 쉬운 말로 된 요약을 쓰지 못했어요. 아래는 레지스트리에서 읽어 온 사실이에요.

  • 연결 방식: 내 컴퓨터에서 실행
  • 전송 방식: stdio
  • 카테고리: 개발자 도구

설치

쓰고 있는 AI 앱을 고른 다음 설정을 복사하세요.

설치하기 전에

  • 기본 점검: 1개 중 1개 통과
  • 내 컴퓨터에서 내 사용자 계정의 권한(파일, 네트워크, 앱)으로 실행돼요.
  • 레지스트리에 입력해야 할 키가 나와 있지 않아요.

필요한 것

  • npmNode.js 설치(npx 명령어용)

어떤 앱을 쓰세요?

위에서 앱을 고르세요. 기억해 두었다가 다음부터는 버튼에 “…에 설치”라고 표시해요.

Claude Desktop → Settings → Developer → Edit Config를 열고 claude_desktop_config.json에 이 내용을 붙여 넣으세요

{
  "mcpServers": {
    "lema": {
      "command": "npx",
      "args": [
        "-y",
        "lema-mcp"
      ]
    }
  }
}

터미널에서 이 명령어를 실행하세요

claude mcp add lema -- npx -y lema-mcp

Cursor에서 열기

또는 설정을 직접 복사하기

프로젝트의 .cursor/mcp.json 또는 ~/.cursor/mcp.json에 붙여 넣으세요

{
  "mcpServers": {
    "lema": {
      "command": "npx",
      "args": [
        "-y",
        "lema-mcp"
      ]
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

VS Code에서 열기

또는 설정을 직접 복사하기

프로젝트의 .vscode/mcp.json에 붙여 넣으세요

{
  "servers": {
    "lema": {
      "type": "stdio",
      "command": "npx",
      "args": [
        "-y",
        "lema-mcp"
      ]
    }
  }
}

브라우저가 앱을 열지 물어본 다음, 앱이 설정을 보여 주고 확인을 요청해요. 키 값은 비워 두니 직접 입력하세요.

이 서버는 내 컴퓨터에서 실행되는데, ChatGPT는 인터넷에 있는 서버에만 연결할 수 있어요. 다른 앱을 고르세요.

선택한 앱은 이 기기의 쿠키에만 저장돼요. 계정은 필요 없어요.

이 설정은 제작자의 레지스트리 정보로 만들었어요. README와 다르면 README를 따르세요.

할 수 있는 일

내 컴퓨터에서 실행돼요. 설치하면 AI 앱에 도구 목록이 나타나요.

기본 점검i

누구나 볼 수 있는 정보를 점검했고, 코드는 읽지 않았어요. 해당하지 않는 항목은 개수에서 뺐어요. · 2026년 11월 7일 점검

  • ✓ 통과

    제작자와 저장소 일치

    레지스트리 이름이 GitHub 계정 lemahq 기준으로 확인되었고, 이 계정이 저장소를 소유하고 있어요

  • … 아직 점검 안 함

    계속 관리되고 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • … 아직 점검 안 함

    라이선스 있음

    아직 GitHub에서 이 저장소를 읽어 오지 않았어요

  • – 해당 없음

    엔드포인트 응답

    내 컴퓨터에서 실행되는 서버라 인터넷 엔드포인트가 없어요

  • – 해당 없음

    OAuth로 로그인

    내 컴퓨터에서 실행되며, 대신 로컬 설정을 사용해요

  • … 아직 점검 안 함

    도구 설명에 숨겨진 지시 없음

    내 컴퓨터에서 실행돼요. 도구 목록은 인터넷 엔드포인트가 있는 서버에서만 읽을 수 있어요

개발자 도구 카테고리의 다른 서버와 비교i

  • 이 카테고리의 다른 서버 4907개 중 0%보다 스타가 많아요
  • 이 카테고리의 다른 서버 4907개 중 30%보다 최근에 레지스트리에 공개됐어요
  • 기본 점검 결과가 이 카테고리의 다른 서버 4907개 중 100%와 같거나 더 좋아요

레지스트리에서 이 카테고리의 활성 서버 전체와 비교했어요. 스타는 게시자가 저장소를 소유한 경우에만 세요.

자주 묻는 질문

Lema MCP, 안전한가요?

해당하는 기본 점검 1개 중 1개를 통과했어요. 코드는 읽지 않았어요. 키나 토큰을 넣기 전에 서버가 어떤 권한을 요구하는지 확인하고, 꼭 필요한 권한만 있는 키를 쓰세요.

어떤 키나 코드가 필요한가요?

레지스트리에 필수 키가 나와 있지 않아요. 다만 처음 쓸 때 로그인을 요구하는 서버도 있어요.

내 컴퓨터에서 실행되나요, 클라우드에서 실행되나요?

내 컴퓨터에서 실행돼요. AI 앱이 필요할 때 실행하고, 데이터는 제작자의 서버를 거치지 않아요(서버 자체가 온라인 서비스를 호출하는 경우는 제외).

아직 관리되고 있나요?

GitHub 저장소는 마지막으로 – 변경됐고, 최신 버전(0.22.2)은 3개월 전 레지스트리에 올라왔어요.

어떤 앱에서 쓸 수 있나요?

Claude Desktop, Claude Code, Cursor, VS Code처럼 MCP를 지원하는 앱에서 쓸 수 있어요. 내 컴퓨터에 Node.js도 있어야 해요.

대신 쓸 수 있는 건 뭐가 있나요?

같은 카테고리에는: GitHub, Desktop Commander, Cloudflare MCP

대안

같은 카테고리에서 다른 제작자가 만든 서버예요. 스타 순으로 정렬했어요.

카드 보는 법:★ GitHub 스타i세 기둥: 리뷰 · 점검 · 사용 정도i업데이트 = 최신 버전을 레지스트리에 공개한 날i

GitHub

제작자: github

Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.

컴퓨터 또는 클라우드★ 34,245MIT4일 전 업데이트
설치

Desktop Commander

제작자: wonderwhy-er

MCP server for terminal commands, file operations, and process management

내 컴퓨터에서 실행★ 10,225MIT16일 전 업데이트
설치

Cloudflare MCP

제작자: cloudflare

Cloudflare MCP servers

클라우드에서 실행★ 4,446Apache-2.014개월 전 업데이트
설치

제작자의 README

README 열기

제작자의 저장소에서 쓰인 그대로 가져왔어요. PopNx MCP가 검토하거나 보증한 내용이 아니에요. HTML, 이미지, 스크립트는 제거했어요. 링크를 누르면 이 사이트를 벗어나요.

lema-mcp

Your coding agent can read the code. It can't read the _argument_ behind it. lema-mcp gives your agent the recorded *why* — and the alternatives a project already ruled out — cited to the source. For React, Kubernetes, and Rust out of the box, and for your own repo with one command.

A local MCP server. No account, no database, no network for your own repo — install it in 30 seconds and ask why a project decided something, or whether the approach you're about to take was already rejected.


❌ Without lema

  • The agent invents the why from training recall — fluently, and sometimes wrongly. The rationale lives in RFC / KEP / PR threads; it was never in the code.
  • It re-proposes the approach the maintainers already rejected two years ago — because a rejected alternative leaves *no trace* in the source.
  • Ask "was this ever ruled out?" and you get a confident guess, with no way to tell a real ruling from a hallucinated one.

✅ With lema

  • One cited answer from the project's actual recorded deliberation — every [n] links to the RFC / PR where the call was made.
  • A typed `ruled_out` verdict when a project already rejected your approach, with the recorded reason *and* a pointer to where the docs say to do it instead.
  • A typed `settled` verdict when your approach *is* the project's in-force recorded choice — the governing decision cited, with a docs pointer for the how.
  • An honest "no recorded ruling" when the record is silent — which means *unknown*, not *approved*. lema never fills the gap with a guess.

lema holds reasoning — why a decision was made, what was rejected — not API

syntax or code samples. For those, reach for a docs tool. lema is the right place

for *why*.


Try it in 30 seconds — no account

npx lema-mcp try react        # or: kubernetes · rust

That writes a read-only public server to your project's .mcp.json. Reload your agent's MCP servers (in Claude Code: /mcp) and try the flagship tool, `check_approach` — name a direction, get the recorded verdict:

> "Let's add a delayMs prop to Suspense to debounce the fallback."   (repo: react)

⛔ ruled_out — the React team considered and rejected this. " " [1] Where to look instead → https://react.dev/reference/react [1] reactjs/rfcs#212

"I'll add a global event bus for cross-component communication." (repo: react)

◦ no_recorded_ruling — React's public record doesn't settle this. (Unknown — not approved.)

Or just ask in plain language — *"why did React adopt Hooks over mixins?"* — and get one cited answer, with an honest abstain when the record is silent.

Covered today: React · Kubernetes · Rust, served from lema's public API (api.lema.sh). Tokenless. It's a curated three-project demo corpus — not analytics over a graph you own.


Install

No-account public demo (React's recorded decisions, zero setup):

If the Cursor button doesn't open an install prompt (common when the browser can't hand off the cursor:// deeplink), paste this into .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{

"mcpServers": { "lema": { "command": "npx", "args": ["-y", "lema-mcp@latest"], "env": { "LEMA_MCP_MODE": "public", "LEMA_PUBLIC_REPO": "react-rfcs" } } } }

That drops you into React's public record — ask *"why did React rule out X?"* and get a cited answer, no account. To wire your own repo for capture, or point the demo at Kubernetes or Rust, use the per-client setup below.

npx needs only Node — no Go toolchain, no account. Two commands cover both ways to use lema:

npx lema-mcp try react   # read-only: ask React/Kubernetes/Rust why + what's ruled out

npx lema-mcp init # your repo: decision capture + the never-reopen guard

Both are non-destructive and idempotent — they merge into existing config and re-running changes nothing. init and try share the same lema server key; the authed init server is a superset (it serves the public tools too), so the two coexist and try never downgrades it.

Claude Code

Easiest — let lema write the config and hooks for you:

npx lema-mcp init        # or: npx lema-mcp try react

Or add it by hand to .mcp.json (this gets the read + capture tools, but not the guard/nudge hooks that init installs):

{

"mcpServers": { "lema": { "command": "npx", "args": ["-y", "lema-mcp@latest"] } } }

</details>

Cursor

Add to .cursor/mcp.json (project) or ~/.cursor/mcp.json (global):

{

"mcpServers": { "lema": { "command": "npx", "args": ["-y", "lema-mcp@latest"] } } }

For the no-account public demo instead, add the env block:

{

"mcpServers": { "lema": { "command": "npx", "args": ["-y", "lema-mcp@latest"], "env": { "LEMA_MCP_MODE": "public", "LEMA_PUBLIC_REPO": "react-rfcs" } } } }

</details>

Claude Desktop

Settings → Developer → Edit Config, then add to mcpServers:

{

"mcpServers": { "lema": { "command": "npx", "args": ["-y", "lema-mcp@latest"], "env": { "LEMA_MCP_MODE": "public", "LEMA_PUBLIC_REPO": "react-rfcs" } } } }

</details>

Windsurf

Add to ~/.codeium/windsurf/mcp_config.json:

{

"mcpServers": { "lema": { "command": "npx", "args": ["-y", "lema-mcp@latest"] } } }

</details>

VS Code (GitHub Copilot)

Add to .vscode/mcp.json — note VS Code uses the servers key:

{

"servers": { "lema": { "command": "npx", "args": ["-y", "lema-mcp@latest"] } } }

</details>

Go install / pinned binary

go install github.com/lemahq/lema-mcp/cmd/lema-mcp@latest

For the public demo, set LEMA_MCP_MODE=public and LEMA_PUBLIC_REPO=react-rfcs (k8s-enhancements · rust-rfcs). The public API URL is baked into the binary.

The public config sets only LEMA_MCP_MODE + LEMA_PUBLIC_REPO (react-rfcs · k8s-enhancements · rust-rfcs) — the API URL is compiled in.

Hosted teams: sign in once; the repository resolves automatically

After you sign in to Lema, save one Organization-scoped credential outside your repositories. The normal setup contains identity credentials, not a copied workspace UUID:

# ~/.config/lema/credentials

LEMA_API_URL=https://api.lema.sh LEMA_API_TOKEN=lema_live_...

chmod 600 ~/.config/lema/credentials

npx lema-mcp@latest doctor context

Restart the coding agent after changing MCP configuration. From then on, Lema matches the checkout's verified Git remote to a Repository, finds its Project, and passes one immutable target receipt to every operation. Opening two repositories in parallel does not create a mutable “active repository,” and each user keeps their own Organization-scoped credential.

For multi-repo Projects, ambiguity recovery, repositories without a remote, worktrees, and compatibility overrides, read Target context: Projects, repositories, and Runs.


Two ways to use it

1. The public record — React, Kubernetes, Rust (read-only, no account)

Ask why a popular project decided something, or check whether a direction was already rejected, over its recorded RFC/KEP deliberation. This is the try server.

2. Your own repo — capture + never-reopen (local, no account)

Most "context" tools are read-only — a nicer way to grep your docs. lema reads too, but its real job is never-reopen:

  • Your agent settles a choice → it calls `record_decision` with the option it chose and the alternatives it rejected, with why each was killed (the part that never survives into the code).
  • Before anyone proposes a direction → `check_decided` returns the prior decision if that option is CLOSED.
  • On every edit, a PreToolUse guard hook (installed by init) reads the draft change and surfaces a CLOSED decision *before* the dead option gets re-proposed — enforced off both your captured decisions and the repo's own ADRs.

Decisions are captured to .lema/decisions.jsonl — a plain append-only file you commit, so your whole team's agents share the same memory through git. No key, no LLM call on our side: your agent forms the decision; lema stores it and serves it back.

What never-reopen looks like

Your agent reaches for an option you already killed — and it comes back CLOSED, with the original reason attached:

⛔ CLOSED — do not propose "SWR": no first-class mutation / cache

invalidation — we'd hand-roll it *(decided 2026-06-04 · "Data fetching for the

web app" · chose TanStack Query)*

So the agent surfaces the prior decision instead of re-litigating it. Supersede a decision and the *previously chosen* option goes CLOSED too — enforced both ways. (That's the real output of npx lema-mcp demo, run against a throwaway temp dir.)

The guard is advisory and fail-open: in its default context mode it injects that note as a non-blocking nudge — it never hard-blocks and never auto-approves an edit. LEMA_GUARD_MODE=ask prompts *you* on a strong match; off is a kill switch. Any error → it emits nothing and gets out of the way.


Available tools

Your agent calls these over MCP.

The public record (no account)
ToolWhat it does
`check_approach` ★Name an approach → a three-valued verdict: ruled_out (rejected, with the recorded why synthesized and cited), settled (it *is* the project's in-force recorded choice, the governing decision cited), or an honest no_recorded_ruling. Every verdict carries a pointer to where the docs cover the how. The one public door — it folds in the cited "why was this decided?" answer (the former why_decided) and the settled check.
Your own repo
ToolWhat it does
`record_decision`Capture a settled decision: the chosen option and the rejected alternatives (with why each was killed), plus rationale / refs / supersedes. Rejected and superseded options come back CLOSED. Append-only.
`check_decided`Adjudicate one proposed direction against decisions already CLOSED → typed verdict (ruled_out / not_ruled_out / incomplete / error), off both your capture store and the repo's ADRs.
`search_decisions`Natural-language query → the most relevant atomic claims (chosen / rejected / constraint / consequence) with their source ADR, under a token budget.

| `get_decision` · `list_decisions` · `get_decision_graph` | One decision's full body; th

앞부분만 보여 드려요. 나머지는 저장소에서 읽어 보세요

PopNx에게 묻기