Atlas / MCP servers / jonathan-politzki / Jean Memory

Jean MemoryBLOCK

mcp/jonathan-politzki/jean-memory

next-generation AI memory infrastructure (powered by mem0 and graphiti)

Verdict
BLOCK
Grade
F
Trust score
38 /100
Exposed tools
33 28r · 5w · 0d
Transport
stdio · streamable-http
License
Apache-2.0
Stars
172
01

Overview

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

Jean Memory

AI Memory across your applications in 5 lines of code.

Website · Dashboard · SDK & API Docs · Report an Issue

Quick Start: Add Memory to Your App in 5 Minutes

Integrate a powerful memory layer into your application with our easy-to-use SDKs.

React: Add a Full Chat UI

Drop a complete, context-aware chat component into your React app.

// 1. Install the SDK
// npm install @jeanmemory/react

// 2. Add the provider and chat component
import { JeanProvider, JeanChat } from '@jeanmemory/react';

function MyApp() {
return (



);
}

Python: Power Your Backend Agent

Add a context layer to your Python backend or AI agent.

# 1. Install the SDK
# pip install jeanmemory

# 2. Get context before calling your LLM
from jeanmemory import JeanClient

jean = JeanClient(api_key="YOUR_API_KEY")

# Get user_token from your frontend OAuth flow
context = jean.get_context(
user_token="USER_TOKEN_FROM_FRONTEND",
message="What was our last conversation about?"
).text

Node.js: Enhance Your JavaScript Backend

Integrate memory into your Next.js, Express, or other Node.js services.

// 1. Install the SDK
// npm install @jeanmemory/node

// 2. Get context in your API route
import { JeanClient } from '@jeanmemory/node';

const jean = new JeanClient({ apiKey: "YOUR_API_KEY" });

// Get userToken from your frontend OAuth flow
const context = await jean.getContext({
user_token: userToken,
message: "What was our l
Read from source at commit 6c59a7f0de30OBSERVED · 2026-10-07
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 test-app --env ADMIN_SECRET_KEY=${ADMIN_SECRET_KEY} --env ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY} --env APIFY_TOKEN=${APIFY_TOKEN} --env GEMINI_API_KEY=${GEMINI_API_KEY} -- npx -y [email protected]
claude-desktop
{
  "mcpServers": {
    "test-app": {
      "command": "npx",
      "args": [
        "-y",
        "[email protected]"
      ],
      "env": {
        "ADMIN_SECRET_KEY": "${ADMIN_SECRET_KEY}",
        "ANTHROPIC_API_KEY": "${ANTHROPIC_API_KEY}",
        "APIFY_TOKEN": "${APIFY_TOKEN}",
        "GEMINI_API_KEY": "${GEMINI_API_KEY}"
      }
    }
  }
}
03

Exposed tools (33)

28 read · 5 write · 0 destructive.

ToolRiskDescription
ChatGPTreadDeep research memories
ClaudewriteOne-Click Install
ClinereadCommand line interface tool
CursorreadAI-powered code editor
EnconvoreadEnvironment configuration tool
NotionreadConnected workspace for notes & projects
ObsidianreadPowerful knowledge base application
RooCodereadCode review and collaboration
SMSreadText your memories
SubstackreadFor writers for substack
WindsurfreadAI-powered code editor
WitsyreadSmart productivity assistant
XreadSocial media
add_memorieswriteManually store specific information
analyze_task_conflictsread
ask_memoryreadSimple questions about your stored memories
check_agent_statusread
claim_file_lockread
create_task_distributionwrite
debug_get_qdrant_payloadread
deep_memory_queryreadComplex analysis across all memories
get_context_by_depthread
get_context_directread
get_document_statusread
jean_memoryread🌟 PRIMARY TOOL for all conversational interactions. Intelligently engineers context for the user\
jean_memory_v2read
list_memoriesreadBrowse through stored memories
search_memoryreadQuick keyword search through your memories
setup_multi_agent_coordinationread
simple_testread
store_documentwrite⚡ FAST document upload. Store large documents (markdown, code, essays) in background. Returns immediately with job ID for status tracking. Perfect for entire files that would slow down chat.
sync_progresswrite
test_connectionread
04

Trust audit

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

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

What the source does

Filesystem
declared (8 observation(s))
Network
declared (15 observation(s))
Shell
none-observed
Dependencies
not all pinned
Secrets in source
found

Findings (25)

HIGHNetwork egress · net.tls_off · CWE-200, CWE-319
openmemory/api/app/integrations/substack_scraper.py:59
async with httpx.AsyncClient(follow_redirects=True, verify=False) as client:
Why it matters. certificate verification is disabled
Fix. leave verification on
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
openmemory/api/.env.example:21
DATABASE_URL=postgresql://jean_memory:memory_password@localhost:5432/jean_memory_db
HIGHHard-coded secrets · secret.db_uri · CWE-798, CWE-321
openmemory/api/app/settings.py:215
return f"postgresql://{self.PGVECTOR_USER}:{self.PGVECTOR_PASSWORD}@{self.PGVECTOR_HOST}:{self.PGVECTOR_PORT}/{self.PGVECTOR_DATABASE}"
MEDIUMInventory / provenance · inv.binary · CWE-1104
openmemory/api/app/static/jean-memory-claude.dxt
jean-memory-claude.dxt
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
openmemory/api/app/static/jean-memory-http-v2.dxt
jean-memory-http-v2.dxt
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
openmemory/api/app/static/jean-memory-legacy.dxt
jean-memory-legacy.dxt
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
openmemory/api/app/static/jean-memory.dxt
jean-memory.dxt
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInventory / provenance · inv.binary · CWE-1104
openmemory/ui/public/images/chorus.avif
chorus.avif
Why it matters. a compiled or binary member cannot be reviewed from source
Fix. ship source, or explain the binary in the README
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
openmemory/api/app/oauth_simple_new.py:415
logger.info(f"🔄 SDK OAuth completion with Supabase session for API key: {api_key[:12]}...")
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
openmemory/api/app/routers/sdk_demo.py:64
logger.info(f"🔍 SDK VALIDATE: Validating API key format (starts with jean_sk_: {api_key.startswith('jean_sk_')})")
MEDIUMInformation disclosure · disclose.log_secret · CWE-209, CWE-532
openmemory/ui/app/api/chat/gemini/route.ts:90
console.log('GEMINI_API_KEY found, length:', apiKey.length);
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
openmemory/api/app/oauth_simple_new.py:296
callback_url = f"/oauth/callback?oauth_session={oauth_session}&flow=mcp_oauth"
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
openmemory/api/app/oauth_simple_new.py:297
return RedirectResponse(url=callback_url)
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
openmemory/api/app/oauth_simple_new.py:314
callback_url = f"/oauth/callback?oauth_session={most_recent_session}&flow=mcp_oauth"
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
openmemory/api/app/oauth_simple_new.py:315
return RedirectResponse(url=callback_url)
MEDIUMNetwork egress · net.beacon_words · CWE-200, CWE-319
openmemory/ui/docs-mintlify/generated/docs.ts:622
auth_url = jean.get_auth_url(callback_url="http://localhost:8000/callback")
MEDIUMNetwork egress · net.raw_ip · CWE-200, CWE-319
openmemory/api/.env.example:41
UVICORN_TIMEOUT_KEEP_ALIVE=75 SUPABASE_URL=http://127.0.0.1:54321
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
docs/archive/DATABASE_MIGRATION_CHECKLIST.md:30
value: "postgres://postgres:[email protected]:6543/postgres?pool_mode=transaction"
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
docs/archive/LOCAL_DEVELOPMENT.md:157
psql postgresql://postgres:postgres@localhost:54322/postgres
MEDIUMHard-coded secrets · secret.db_uri · CWE-798, CWE-321
docs/archive/LOCAL_DEVELOPMENT_SETUP.md:52
DATABASE_URL=postgresql://postgres:postgres@localhost:54322/postgres
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
sdk/react/README.md:18
<JeanProvider apiKey="your-jean-memory-api-key">
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
sdk/react/README.md:45
<JeanProvider apiKey="jean_sk_test_demo_key_for_ui_testing">
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
sdk/react/README.md:91
<JeanProvider apiKey="your-jean-memory-api-key">
MEDIUMHard-coded secrets · secret.generic · CWE-798, CWE-321
sdk/react/README.md:105
apiKey="your-jean-memory-api-key"
LOWInventory / provenance · inv.hidden_file · CWE-1104
.pre-commit-config.yaml
.pre-commit-config.yaml
Why it matters. hidden member outside the usual dotfiles
Fix. review its purpose

Gates applied: no_behavioural_pass.

Audited 2026-10-07 · audit v0.4.1 · source sha 6c59a7f0de30full audit observations/trust-audit/mcp-server/jonathan-politzki__jean-memory.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-076c59a7f0de30BLOCKF38first audit
06

Questions

What is the Jean Memory MCP server?

next-generation AI memory infrastructure (powered by mem0 and graphiti)

What tools does Jean Memory expose?

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

Is Jean Memory safe to connect to an agent?

No — not without reading the findings first. The audit graded it F (38/100) and found 3 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 Jean Memory need?

It reads ADMIN_SECRET_KEY, ANTHROPIC_API_KEY, APIFY_TOKEN, GEMINI_API_KEY, GOOGLE_API_KEY, GOOGLE_CLIENT_SECRET, JEAN_API_KEY, JEAN_API_TOKEN, JEAN_MEMORY_API_KEY, JWT_SECRET_KEY, LOOPS_API_KEY and NEO4J_PASSWORD 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 Jean Memory run?

It speaks stdio and streamable-http, so it runs as a local process your client starts. It is published on npm as test-app at 0.1.0.

How current is this page?

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

Advertisement