Atlas / MCP servers / jungjaehoon-lifegamez / MAMA

MAMABLOCK

mcp/jungjaehoon-lifegamez/mama

Local-first operating memory for AI coding agents - Claude Code, Codex, and any MCP client. Tracks decisions and their evolution. SQLite + on-device embeddings, no cloud.

Verdict
BLOCK
Grade
F
Trust score
39 /100
Exposed tools
17 12r · 5w · 0d
Transport
stdio
License
MIT
Stars
15
01

Overview

From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.

[](https://opensource.org/licenses/MIT) [](https://nodejs.org) [](https://jungjaehoon-lifegamez.github.io/MAMA/)

Documentation · Your first day · How it works · What you can connect · Security · Status

MAMA is a work agent that runs on your own computer. It follows the conversations, files and schedules in the tools you connect, keeps them as they were, and keeps a history of each piece of work: what changed, why, who did it and what the feedback was. You talk to it in your messenger. It answers from that history, sends you reports, and remembers how you want things done.

The same repository also gives Claude Code a development memory (decisions and checkpoints that survive a new session), and both are built on mama-core, a shared engine other products can use.

MAMA runs no hosted service. The record stays on your machine. Only the content a run needs leaves it, through the AI CLI you logged into and the services you connected.

Why

An assistant is only as useful as what it remembers, and memory kept on someone else's server disappears when the service changes. MAMA keeps the record of your work on your computer, in its original form, so today's model and a better one tomorrow can read the same history. You decide which sources to connect and what to hand over.

Principles

In order of importance.

  1. Never lose the record. Original text, time, source and every later change are kept, not

overwritten.

  1. Know why it changed. Each change to a piece of work names the message or file behind it.
  2. Act only where allowed. MAMA sends only to the owner destinations you configured, and its
Read from source at commit fb7af086c446OBSERVED · 2026-10-12
Advertisement
02

Connect

Built from this server's own package name, version and transport as found in its source — not copied from anyone's documentation, so it cannot drift against a page we do not control. Replace the environment placeholders with a token scoped to the least it needs.

claude-code
claude mcp add mama-os-ui --env CODE_ACT_TEST_SECRET=${CODE_ACT_TEST_SECRET} --env MAMA_AUTH_TOKEN=${MAMA_AUTH_TOKEN} --env MAMA_DISCORD_TOKEN=${MAMA_DISCORD_TOKEN} --env MAMA_SESSION_CREDENTIAL_PATH=${MAMA_SESSION_CREDENTIAL_PATH} -- npx -y @jungjaehoon/mama-os-ui
claude-desktop
{
  "mcpServers": {
    "mama-os-ui": {
      "command": "npx",
      "args": [
        "-y",
        "@jungjaehoon/mama-os-ui"
      ],
      "env": {
        "CODE_ACT_TEST_SECRET": "${CODE_ACT_TEST_SECRET}",
        "MAMA_AUTH_TOKEN": "${MAMA_AUTH_TOKEN}",
        "MAMA_DISCORD_TOKEN": "${MAMA_DISCORD_TOKEN}",
        "MAMA_SESSION_CREDENTIAL_PATH": "${MAMA_SESSION_CREDENTIAL_PATH}"
      }
    }
  }
}
03

Exposed tools (17)

12 read · 5 write · 0 destructive.

ToolRiskDescription
case_timeline_rangereadReturn a bounded, chronological timeline for a case. Includes decision, event, observation, and artifact memberships resolved through canonical case chains.
get_decisionreadRead one decision by id with every edge in and out: the relation, the other decision
ingest_conversationreadIngest a conversation into MAMA
late_toolreadMust not enter the snapshot
linkreadLink one decision to another after saving, with the reason you judged. Nothing is edited: a wrong link is corrected by linking to it (to = its edgeId from get_decision, relation contradicts), and both stay in the history. A decision that replaces another is saved with replaces.
list_decisionswriteList recent decisions in chronological order. Returns formatted list showing time, type (user/assistant), topic, preview, confidence, and status. Use this to see recent activity or find decisions by browsing. Use scopes to filter by project/channel.
load_checkpointreadLoad the latest active session checkpoint with narrative and links. Use this at the start of a new session to resume work seamlessly.
recall_decisionreadRecall exact-topic decision history without scopes, or semantic memory matches within supplied scopes. Explicit supersedes links are traversed; reusing a topic does not create a relationship.
report.readreadRead the board
savewriteSave to MAMA memory. Use type parameter to choose what to save. **type=
save_decisionwriteSave your architectural decisions, lessons learned, or insights to MAMA
searchreadSearch MAMA memory. Returns results ranked by semantic similarity. **With query** — Semantic search across decisions and checkpoints. Cross-lingual (Korean + English). Triggers:
search_decisions_and_contractsreadSearch decisions and contracts for PreToolUse hook injection.
source.readreadread one bounded source page
suggest_decisionreadAuto-suggest relevant past decisions based on user
synthetic_lookupwriteRun a synthetic lookup
updatewriteUpdate decision outcome after real-world validation. Triggers:
04

Trust audit

BLOCKgrade F · trust 39/100 Do not install this without reading the findings. The audit found something that could harm you or your machine.

LayerWhat it checksResult
L0Provenance & inventoryFAIL
L1Static analysis of the codeFAIL
L2Instruction surface (what it tells the agent)FAIL
L3Class-specific surfacePASS
L4Behavioural (sandbox)SKIPPED

What the source does

Filesystem
declared (5 observation(s))
Network
declared (4 observation(s))
Shell
declared (6 observation(s))
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHInventory / provenance · inv.suspicious_name · CWE-1104
packages/mama-core/db/migrations/087-mailbox-payload.sql
087-mailbox-payload.sql
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHInventory / provenance · inv.suspicious_name · CWE-1104
packages/mama-core/src/runtime/stimulus-payload.ts
stimulus-payload.ts
Why it matters. member named after an attack tool
Fix. remove or justify
HIGHCode injection · code.deserialize · CWE-78, CWE-94, CWE-95
packages/standalone/src/runtime/config.ts:574
parsed = yaml.load(readFileSync(path, 'utf8'));
Why it matters. deserialises untrusted bytes into live objects
Fix. use json or yaml.safe_load
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/mama-core/src/db-adapter/node-sqlite-adapter.ts:198
exec(sql: string): void;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/mama-core/src/db-adapter/node-sqlite-adapter.ts:251
exec(sql: string): void {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/mama-core/src/db-adapter/node-sqlite-adapter.ts:562
exec(sql: string): void {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/standalone/src/storage-sqlite.ts:46
exec(sql: string): void {
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
HIGHPrompt injection · prompt.tool_poisoning · CWE-94, CWE-1427
CHANGELOG.md:3728
- **Workflow Failure Feedback**: Conductor receives `[SYSTEM]` error message when plan validation or execution fails, enabling plan adjustment
Why it matters. a tool description carrying instructions to the agent
Fix. tool descriptions describe the tool; nothing else
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
packages/mama-core/src/db-adapter/MIGRATION-GUIDE.md:194
export MAMA_DATABASE_URL="postgresql://postgres:mama123@localhost:5432/mama_db"
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/standalone/tests/agent/codex-app-server-process.test.ts:2716
const secret = 'generated-header-secret';
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
packages/standalone/tests/cli/daemon-boot.test.ts:158
Object.assign(options.telegram, { token: 'fixture-obsolete-token' });
LOWInventory / provenance · inv.binary · CWE-1104
packages/standalone/tests/fixtures/file-delivery/result.xlsx
result.xlsx
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
LOWInventory / provenance · inv.hidden_file · CWE-1104
.coderabbit.yaml
.coderabbit.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.git-blame-ignore-revs
.git-blame-ignore-revs
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitleaks.toml
.gitleaks.toml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.gitmodules
.gitmodules
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.hidden_file · CWE-1104
.prettierignore
.prettierignore
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose
LOWInventory / provenance · inv.suspicious_name · CWE-1104
packages/mama-core/tests/runtime/mailbox-payload.test.ts
mailbox-payload.test.ts
Why it matters. member named after an attack tool
Fix. remove or justify
LOWCode injection · code.eval_exec · CWE-78, CWE-94, CWE-95
packages/mama-core/tests/unit/fts-literal-terms.test.ts:12
exec(sql: string): void;
Why it matters. evaluates text as code
Fix. remove; use a parser or a dispatch table
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/standalone/src/api/drive-delivery.ts:52
const md5 = createHash('md5');
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/standalone/src/connectors/framework/event-index.ts:133
const digest = createHash('sha1').update(`${sourceConnector}\0${sourceId}`, 'utf8').digest('hex');
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/standalone/src/runtime/turn-orders.ts:144
return createHash('sha1')
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
packages/standalone/tests/api/drive-delivery.test.ts:19
const md5 = createHash('md5').update(content).digest('hex');
LOWInsecure crypto · crypto.weak_hash · CWE-327, CWE-338
scripts/sync-check.js:45
return crypto.createHash('md5').update(content).digest('hex');
LOWFilesystem / path · fs.credential_store · CWE-22, CWE-59
packages/standalone/tests/api/viewer-security.test.ts:476
'/.aws/credentials',
Why it matters. touches a credential store

Gates applied: no_behavioural_pass.

Audited 2026-10-12 · audit v0.4.1 · source sha fb7af086c446full audit observations/trust-audit/mcp-server/jungjaehoon-lifegamez__mama.json · Report an issue / request a re-scan
05

Audit history

Every audit this server has had. A grade with a past is a grade somebody is still checking.

DateSourceVerdictGradeScoreChange
2026-10-12fb7af086c446BLOCKF39first audit
06

Questions

What is the @jungjaehoon/mama-os MCP server?

Local-first operating memory for AI coding agents - Claude Code, Codex, and any MCP client. Tracks decisions and their evolution. SQLite + on-device embeddings, no cloud.

What tools does @jungjaehoon/mama-os expose?

17 in total: 12 read-only, 5 that write, and 0 that can delete or overwrite. Every one is listed on this page with its risk.

Is @jungjaehoon/mama-os safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (39/100) and found 8 critical or high issues in the source. Each one is listed on this page with the file and line it is on.

What credentials does @jungjaehoon/mama-os need?

It reads CODE_ACT_TEST_SECRET, MAMA_AUTH_TOKEN, MAMA_DISCORD_TOKEN, MAMA_SESSION_CREDENTIAL_PATH, MAMA_SLACK_APP_TOKEN, MAMA_SLACK_TOKEN, MAMA_TELEGRAM_TOKEN, MAMA_TRELLO_KEY, TEST_SECRET, TRELLO_API_KEY and TRELLO_TOKEN from the environment. Give it a token scoped to the least it needs — an agent that can be talked into calling a tool can be talked into calling it with your credentials.

How does @jungjaehoon/mama-os run?

It speaks stdio, so it runs as a local process your client starts. It is published on npm as @jungjaehoon/mama-os-ui.

How current is this page?

The grade is for one exact copy of the source (fb7af086c446), read on 2026-10-12. The repository is watched and re-audited when it changes.

Advertisement