Skip to main content
Glama
jee1
by jee1
README.md
# ๐Ÿง  Memento

<div align="center">
  <img src="static/logo.png" alt="Memento Logo" width="200" height="200">

  [๐Ÿ‡ฐ๐Ÿ‡ท ํ•œ๊ตญ์–ด](README.md) | [๐Ÿ‡บ๐Ÿ‡ธ English](README.en.md)

  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE)
</div>

---

LLM์€ ๋Œ€ํ™”๊ฐ€ ๋๋‚˜๋ฉด ๋ชจ๋“  ๊ฒƒ์„ ์žŠ์Šต๋‹ˆ๋‹ค. ์ด๋ฆ„๋„, ๊ฒฐ์ •๋„, ์ง€๋‚œ์ฃผ์— ์Œ“์ธ ๋งฅ๋ฝ๋„ ๋งˆ์ฐฌ๊ฐ€์ง€์ž…๋‹ˆ๋‹ค. ์ด๋Š” ๋ชจ๋ธ์˜ ํ•œ๊ณ„๊ฐ€ ์•„๋‹ˆ๋ผ **๊ธฐ์–ต ์ธํ”„๋ผ์˜ ๋ถ€์žฌ**์ž…๋‹ˆ๋‹ค.

Memento๋Š” ๊ทธ ์ธํ”„๋ผ์ž…๋‹ˆ๋‹ค. ๋‹จ์ˆœ ์ €์žฅ์†Œ๊ฐ€ ์•„๋‹ˆ๋ผ, ๊ธฐ์–ต์ด ์ƒ์„ฑยท๋ถ„๋ฅ˜ยท๊ฐ•ํ™”ยท๋ง๊ฐ๋˜๋Š” **MCP ๊ธฐ๋ฐ˜ ๊ธฐ์–ต ์šด์˜ ์ฒด์ œ**์ž…๋‹ˆ๋‹ค.

์ž‘์—…๊ธฐ์–ตยท์ผํ™”๊ธฐ์–ตยท์˜๋ฏธ๊ธฐ์–ตยท์ ˆ์ฐจ๊ธฐ์–ต์€ `remember`์˜ `type`์œผ๋กœ ๊ตฌ๋ถ„ํ•ฉ๋‹ˆ๋‹ค. ์“ฐ์ธ ๊ธฐ์–ต์€ ๊ฐ•ํ™”๋˜๊ณ , ์“ธ๋ชจ์—†์–ด์ง„ ๊ธฐ์–ต์€ ๋ง๊ฐ ์ •์ฑ…์œผ๋กœ ์ •๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ๋น„์Šทํ•œ ๊ธฐ์–ต์€ ๋ฒกํ„ฐ๋กœ ์—ฐ๊ฒฐ๋˜๋ฉฐ, ํ•ต์‹ฌ ๋งฅ๋ฝ์€ ์•ต์ปค๋กœ ๋‹ค์Œ ๋Œ€ํ™”์— ๋ฐ”๋กœ ๋ณต์›๋ฉ๋‹ˆ๋‹ค.

๋ชจ๋…ธ๋ ˆํฌยทํŒจํ‚ค์ง€ ๊ตฌ์กฐยท๋นŒ๋“œ ๋ช…๋ น์€ [AGENTS.md](AGENTS.md)๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.

## ๋น ๋ฅธ ์‹œ์ž‘

ํŒจํ‚ค์ง€ ๋งค๋‹ˆ์ €๋Š” **npm**๋งŒ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค (`pnpm`/`yarn`์€ ์ง€์›ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค).

์—ญํ• ์— ๋งž๋Š” **๊ธฐ๋ณธ ๊ฒฝ๋กœ ํ•˜๋‚˜**๋งŒ ๊ณ ๋ฅด์„ธ์š”. Dockerยท์†Œ์Šค ํด๋ก ยท๋‹ค์ค‘ ์—์ด์ „ํŠธ HTTPยท์›ํด๋ฆญ ์Šคํฌ๋ฆฝํŠธ๋Š” [INSTALL.md](INSTALL.md)์— ์žˆ์Šต๋‹ˆ๋‹ค.

### Claude Code โ†’ ํ”Œ๋Ÿฌ๊ทธ์ธ

```
/plugin marketplace add jee1/memento
/plugin install memento@memento
```

๊ธฐ์–ต DB๋Š” `${CLAUDE_PLUGIN_DATA}/memory.db`์— ๋‘์–ด ํ”Œ๋Ÿฌ๊ทธ์ธ ์—…๋ฐ์ดํŠธ ํ›„์—๋„ ์œ ์ง€๋ฉ๋‹ˆ๋‹ค. `/plugin` ํŒจ๋„์—์„œ `memento` MCP๊ฐ€ ์—ฐ๊ฒฐ๋๋Š”์ง€ ํ™•์ธํ•ด ์ฃผ์„ธ์š”.

### Cursorยท๊ธฐํƒ€ MCP โ†’ npx + mcp.json

```bash
npx memento-mcp-server@latest
```

```json
{
  "mcpServers": {
    "memento": {
      "command": "npx",
      "args": ["memento-mcp-server@latest"],
      "env": {
        "DB_PATH": "/absolute/path/to/data/memory.db"
      }
    }
  }
}
```

์„ค์ • ํŒŒ์ผ ์œ„์น˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. Cursor๋Š” `.cursor/mcp.json` ๋˜๋Š” `~/.cursor/mcp.json`์ž…๋‹ˆ๋‹ค. Claude DesktopยทClaude Code๋Š” [INSTALL.md](INSTALL.md)์™€ [Cursor MCP ์„ค์ • ๊ฐ€์ด๋“œ](docs/guides/ko/cursor-mcp-setup.md)๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.

์ž์ฃผ ์“ด๋‹ค๋ฉด `npm i -g memento-mcp-server`๋กœ ๊ธ€๋กœ๋ฒŒ ์„ค์น˜ํ•˜๋Š” ํŽธ์ด ๋‚ซ์Šต๋‹ˆ๋‹ค. ๊ณต์‹ MCP ๋ ˆ์ง€์ŠคํŠธ๋ฆฌ ์ด๋ฆ„์€ `io.github.jee1/memento-mcp-server`์ž…๋‹ˆ๋‹ค (`server.json`).

### ์šด์˜ยท์ž์ฒด ํ˜ธ์ŠคํŒ… โ†’ INSTALL.md

Docker, ์†Œ์Šค ๋นŒ๋“œ, HTTP MCP(๋‹ค์ค‘ ์—์ด์ „ํŠธ), ํ™˜๊ฒฝ ์˜ค๋ฒ„๋ ˆ์ด๋Š” [INSTALL.md](INSTALL.md)๋ฅผ ๋”ฐ๋ผ ์ฃผ์„ธ์š”.

## ๊ธฐ๋ณธ์œผ๋กœ ๋ณด์ด๋Š” ๋„๊ตฌ

์„œ๋ฒ„์—๋Š” ๋„๊ตฌ 22๊ฐœ๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ์ง€๋งŒ, `tools/list`์—๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ **`recall` ยท `remember` ยท `memory_injection` ยท `feedback` 4๊ฐœ๋งŒ** ๋…ธ์ถœ๋ฉ๋‹ˆ๋‹ค(v1.18+). ๋‚˜๋จธ์ง€๋Š” ๋“ฑ๋ก๋œ ์ฑ„ ํ˜ธ์ถœ์€ ๊ฐ€๋Šฅํ•˜๊ณ , ๋ชฉ๋ก์—์„œ๋งŒ ๋น ์ง‘๋‹ˆ๋‹ค. ์ „๋ถ€ ๋‚˜์—ดํ•˜๋ ค๋ฉด `MEMENTO_TOOLSET=full`์„ ์„ค์ •ํ•˜์„ธ์š”.

## ์‚ฌ์šฉ ์˜ˆ์‹œ

```typescript
await client.callTool({
  name: "remember",
  arguments: {
    content: "์‚ฌ์šฉ์ž๋Š” React Hook์„ ํ•™์Šตํ–ˆ์Šต๋‹ˆ๋‹ค. useState๋Š” ์ƒํƒœ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ , useEffect๋Š” ์‚ฌ์ด๋“œ ์ดํŽ™ํŠธ๋ฅผ ์ฒ˜๋ฆฌํ•ฉ๋‹ˆ๋‹ค.",
    type: "episodic",
    tags: ["react", "hooks", "javascript"],
    importance: 0.8
  }
});

const results = await client.callTool({
  name: "recall",
  arguments: {
    query: "React Hook์€ ์–ด๋–ป๊ฒŒ ์‚ฌ์šฉํ•˜๋‚˜์š”?",
    limit: 5
  }
});
```

๋” ๋งŽ์€ ์—ฐ๊ฒฐ ๋ฐฉ์‹(MCP SDK, `@jee1/memento-client`, ์™ธ๋ถ€ ๋น„์„œ SDK)์€ [docs/README.md](docs/README.md)์™€ [docs/integrations/](docs/integrations/README.md)๋ฅผ ์ฐธ๊ณ ํ•ด ์ฃผ์„ธ์š”.

## ํ•ต์‹ฌ ๊ธฐ๋Šฅ

- **4์ข… ๊ธฐ์–ต**: `working` ยท `episodic` ยท `semantic` ยท `procedural`
- **ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ๊ฒ€์ƒ‰**: FTS5 + ๋ฒกํ„ฐ, ํƒœ๊ทธ ํ•„ํ„ฐ
- **์‚ด์•„์žˆ๋Š” ๊ธฐ์–ต**: ๊ฐ•ํ™”ยท๋ง๊ฐยท์ด์›ƒ ํƒ์ƒ‰ยท์•ต์ปค
- **์ ˆ์ฐจ ๋ฒ„์ „**: `procedural_diff` / `procedural_rollback`
- **๊ทธ๋ž˜ํ”„ยท๋Œ€์‹œ๋ณด๋“œ**: HTTP ์„œ๋ฒ„ ๊ธฐ๋™ ํ›„ ์ „์ฒด ๊ด€๋ฆฌ ํ๋ฆ„์€ `/dashboard`์—์„œ ์—ฌ๋Š” ํŽธ์ด ๊ฐ€์žฅ ์•ˆ์ „ํ•˜๋ฉฐ, `/graph`๋ฅผ ์ง์ ‘ ์—ด์–ด๋„ ๋™์ผํ•œ `/auth/session` ๊ธฐ๋ฐ˜ ์žฌ์ธ์ฆ ํŒจ๋„๋กœ ์„ธ์…˜์„ ์‹œ์ž‘ํ•˜๊ฑฐ๋‚˜ ๋ณต๊ตฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ง๊ฐ TTLยท์ž„๋ฒ ๋”ฉยท๋ณด์•ˆ ๋“ฑ ์„ค์ •๊ฐ’์€ README์— ์ˆซ์ž๋ฅผ ๋‘์ง€ ์•Š์Šต๋‹ˆ๋‹ค. [env.example](env.example)๊ฐ€ ๊ธฐ์ค€์ž…๋‹ˆ๋‹ค.

## HTTP ๋ณด์•ˆ (๊ด€๋ฆฌ ์„œ๋ฒ„)

**HTTP ์„œ๋ฒ„๋Š” ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜๊ณผ ํ—ค๋” ๊ธฐ๋ฐ˜ ์‹ ๋ขฐ ๊ฒฝ๊ณ„๋ฅผ ๋ถ„๋ฆฌํ•ฉ๋‹ˆ๋‹ค.** `/auth/session`์€ ์ฟ ํ‚ค ๊ธฐ๋ฐ˜ ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜์„ ์‹œ์ž‘ํ•˜๊ณ , `/admin`๊ณผ `/api`๋Š” ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜์ด ํ•„์š”ํ•˜๋ฉฐ, `/api/v1/quality`, `/api/v1/maintenance`, `/tools`, `/mcp`๋Š” `Authorization: Bearer` ๋˜๋Š” `X-API-Key`๊ฐ€ ํ•„์š”ํ•ฉ๋‹ˆ๋‹ค. ์ž์„ธํ•œ ๋‚ด์šฉ: [docs/reference/ko/security.md](docs/reference/ko/security.md).

**HTTP ์ „์šฉ (MCP์— ์—†์Œ)**: `restore_anchors`, `migrate_embeddings`, `convert_episodic_to_semantic`, `get_meta_memory_stats` โ€” [HTTP ๊ด€๋ฆฌ API](docs/api/ko/api-reference.md) ์ฐธ์กฐ.

### ๐Ÿง  ํ•ต์‹ฌ ๋ฉ”๋ชจ๋ฆฌ ๊ด€๋ฆฌ (MCP ํด๋ผ์ด์–ธํŠธ)

> **์ฐธ๊ณ **: ๋„๊ตฌ 22๊ฐœ๊ฐ€ ๋“ฑ๋ก๋˜์–ด ์žˆ๊ณ , `tools/list`๋Š” ๊ธฐ๋ณธ 4๊ฐœ๋งŒ ๋…ธ์ถœํ•ฉ๋‹ˆ๋‹ค(`MEMENTO_TOOLSET=full`๋กœ ์ „์ฒด). ์šด์˜ยท๊ด€๋ฆฌ ๊ธฐ๋Šฅ์€ HTTP API๋กœ๋งŒ ์ œ๊ณตํ•ฉ๋‹ˆ๋‹ค.

## ๋ฌธ์„œ

- ๋ฌธ์„œ ํฌํ„ธ: [docs/README.md](docs/README.md)
- ์„ค์น˜: [INSTALL.md](INSTALL.md) ยท [INSTALL.en.md](INSTALL.en.md)
- ๊ธฐ์—ฌ์žยท์—์ด์ „ํŠธ: [AGENTS.md](AGENTS.md) ยท [CONTRIBUTING.md](CONTRIBUTING.md)
- API: [docs/api/ko/api-reference.md](docs/api/ko/api-reference.md)
- ๋ณด์•ˆ: [docs/reference/ko/security.md](docs/reference/ko/security.md)

## ๋กœ๋“œ๋งต (์š”์•ฝ)

- **M1 ๊ฐœ์ธ์šฉ (ํ˜„์žฌ)**: ๋กœ์ปฌ SQLite, MCP + HTTP ๊ด€๋ฆฌ API. **์ธ์ฆ**: ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜ + ํ—ค๋” ๊ธฐ๋ฐ˜ ๋ถ„๋ฆฌ ์‹ ๋ขฐ ๋ชจ๋ธ(`/auth/session` ์ฟ ํ‚ค ์„ธ์…˜, `/admin`ยท`/api` ๋ธŒ๋ผ์šฐ์ € ์„ธ์…˜ ์š”๊ตฌ, `/tools`ยท`/mcp`๋Š” Bearer/API-Key ์š”๊ตฌ).
- **M2 ํŒ€ (๊ณ„ํš)**: ๊ณต์œ  ๋ฐฑ์—”๋“œ, API Key, Docker
- **M3 ์กฐ์ง (๊ณ„ํš)**: PostgreSQL + pgvector, JWT

## ๊ธฐ์—ฌ ยท ๋ผ์ด์„ ์Šค ยท ์ง€์›

๊ธฐ์—ฌ๋Š” [CONTRIBUTING.md](CONTRIBUTING.md)๋ฅผ ๋”ฐ๋ผ ์ฃผ์„ธ์š”. ๋ผ์ด์„ ์Šค๋Š” [MIT](LICENSE)์ž…๋‹ˆ๋‹ค.

- ์ด์Šˆ: [GitHub Issues](https://github.com/jee1/memento/issues)
- ๋ฌธ์„œ: [docs/README.md](docs/README.md)