people-memory-mcp
Used as part of the local development stack with the Supabase CLI for running the PostgreSQL database locally.
Repository is distributed via GitHub, and Codex plugin packaging supports marketplace or team distribution.
Optional connector to enrich people records using Gmail data such as participants, signatures, organizations, and last interaction dates.
Imports Google Contacts exports to build the people graph with email/phone resolution and deduplication.
Stores the people graph in PostgreSQL, providing durable storage of people, organizations, relationships, facts, and interactions.
Uses Supabase for local/cloud PostgreSQL hosting, Auth, REST API, and browser UI, with row-level security protecting data access.
Imports WhatsApp chat exports to build the people graph, with optional self-hosted MCP bridge for ongoing enrichment.
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@people-memory-mcpsearch for Sarah Chen in my people graph and show her full profile"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
People Memory
Give your AI agent a private, durable memory of everyone you know.
People Memory is a personal people graph with an MCP server, PostgreSQL schema, optional REST API, browser UI, importers, and agent skills. It remembers people across conversations, retrieves someone as soon as you mention them, records durable facts, and asks before it merges ambiguous identities.
Your data stays in your PostgreSQL database. The repository contains no hosted service, telemetry, contact data, or credentials.
What it does
Maps people, organizations, relationships, affiliations, identifiers, facts, and interactions.
Gives Codex, Claude Code, and other MCP clients semantic tools plus guarded SQL.
Teaches the agent to look up names before answering and save durable facts during every chat.
Imports LinkedIn Connections, Google Contacts, and WhatsApp chat exports.
Can enrich records through connectors the user approves, including Gmail, Calendar, and Drive.
Runs fully local with Supabase CLI or in the cloud with any PostgreSQL database.
Recommends a free Supabase project because it includes Postgres, Auth, REST, and a local stack.
Includes a full-screen relationship graph and searchable directory.
Refuses uncertain merges and conflicting overwrites until the user decides.
Related MCP server: hippocampus-mcp
How it fits together
flowchart LR
Agent["Your existing agent"] --> MCP["People Memory MCP"]
MCP --> PG[("PostgreSQL")]
Agent --> Connectors["Optional Gmail / Calendar / Drive / WhatsApp connectors"]
Connectors --> MCP
UI["Private graph UI"] --> Supabase["Supabase Auth + REST"]
Supabase --> PG
API["Optional REST API"] --> PGThe MCP server provides live reads and controlled writes. The bundled skills provide the behavior: when to retrieve, what to remember, how to import, when to ask, and how to upgrade safely.
Quick start
Requirements: Python 3.11+, uv, Docker, and the
Supabase CLI.
git clone https://github.com/michelgrolet/people-memory-mcp.git
cd people-memory-mcp
uv sync --extra api --extra dev
supabase start
supabase db resetsupabase status prints the local database URL, API URL, and browser publishable key. Save the
database URL in ~/.config/people-memory/.env:
PEOPLE_MEMORY_DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:54322/postgres
PEOPLE_MEMORY_ENABLE_RAW_SQL=false
PEOPLE_MEMORY_DEFAULT_SOURCE=agentThe file is read automatically and should have mode 0600.
Set your owner email before using the UI:
update app_settings set value = 'you@example.com' where key = 'owner_email';Then configure the browser app:
cp web/config.example.js web/config.js
# add the API URL and publishable key printed by `supabase status`
python3 -m http.server 4173 --directory webOpen http://127.0.0.1:4173. Local signup emails appear in Supabase
Mailpit, whose URL is also printed by supabase status.
Connect an agent
The interactive wizard detects Codex and Claude Code:
uv run people-memory setupOr add the server directly.
Codex:
codex mcp add people-memory \
--env PEOPLE_MEMORY_ENV_FILE="$HOME/.config/people-memory/.env" \
-- uvx --from git+https://github.com/michelgrolet/people-memory-mcp people-memory-mcpClaude Code:
claude mcp add -s user people-memory \
-e PEOPLE_MEMORY_ENV_FILE="$HOME/.config/people-memory/.env" \
-- uvx --from git+https://github.com/michelgrolet/people-memory-mcp people-memory-mcpStart a new agent session after adding an MCP server. Install or invoke setup-people-memory from
the plugin to add the durable memory rule, choose imports, connect optional data sources, and verify
the complete flow.
Install the agent skills from a clone
Codex discovers skills in ~/.agents/skills; Claude Code uses ~/.claude/skills. Symlink every
People Memory skill so updates to the clone are picked up automatically:
mkdir -p "$HOME/.agents/skills"
for skill in "$PWD"/skills/*; do
ln -s "$skill" "$HOME/.agents/skills/$(basename "$skill")"
doneUse ~/.claude/skills instead for Claude Code. Restart the agent, then ask it to run
setup-people-memory. The repository is also packaged as a Codex plugin for marketplace or team
distribution.
MCP tools
Tool | Purpose |
| Search names, organizations, roles, cities, identifiers, summaries, and facts |
| Return a complete person record, or candidates when a name is ambiguous |
| Create or update a person without silent duplicate merges or overwrites |
| Save typed or free-form facts with source and confidence |
| Record a call, message, meeting, meal, or other dated interaction |
| Record how two people know each other |
| Find warm introduction paths into an organization |
| Find strong relationships that have gone quiet |
| Run one guarded |
| Run one guarded |
Raw SQL is disabled by default. If enabled, it rejects multiple statements, DDL, dangerous
functions, multiple data-changing operations, and UPDATE/DELETE without a WHERE clause.
read_query also runs inside a read-only transaction with a bounded result set.
Imports
Official exports are the safest default. They are inspectable and do not require sharing account passwords.
uv run people-memory import linkedin ~/Downloads/Connections.csv
uv run people-memory import google ~/Downloads/contacts.csv
uv run people-memory import whatsapp ~/Downloads/chat.txt --self-name "Your Name" --date-order dmyImports resolve email or phone first, then name. They fill missing values and never overwrite a
conflict silently. The import-contacts skill can inspect unfamiliar CSV columns and guide the user
through ambiguous matches.
Optional connectors
People Memory does not collect Gmail, Calendar, Drive, or WhatsApp credentials. The enrich-people
skill uses connectors already authorized in the user's agent. It asks which sources may be read,
limits the time range, shows what it plans to save, and marks every fact with its source.
Supported patterns include:
Gmail: participants, signatures, organizations, and last interaction dates.
Calendar: meetings, attendees, locations, and interaction dates.
Drive: user-selected documents that mention known people.
WhatsApp: official exports by default; a self-hosted MCP bridge is optional.
Browser agents: Codex in Chrome or Claude in Chrome can help configure Supabase and inspect the UI.
See docs/connectors.md for the permission and identity rules.
Hosted Supabase
Create a free Supabase project, then apply the checked-in migrations:
supabase login
supabase link --project-ref YOUR_PROJECT_REF
supabase db pushSet owner_email, enable the desired Auth providers, and deploy web/ to a static host. The browser
uses only the publishable key. Row-level security rejects every account except the configured owner.
The MCP server uses a direct PostgreSQL URL stored outside Git.
For an existing non-Supabase PostgreSQL database, apply only
supabase/migrations/20260803000000_core.sql and use the optional API for browser access.
Optional REST API
uv run --extra api people-memory api --host 127.0.0.1 --port 8765Set PEOPLE_MEMORY_API_TOKEN to require Authorization: Bearer .... Keep the API on loopback unless
you put it behind TLS, authentication, rate limits, and backups.
Skills
setup-people-memory: choose local/cloud deployment, configure an existing agent, select imports, offer approved connectors, start the UI, and verify the install.remember-people: retrieve on name mention and save durable human facts during conversation.import-contacts: import and deduplicate official exports.enrich-people: use approved Gmail, Calendar, Drive, browser, or WhatsApp connectors.maintain-people-memory: audit duplicates, conflicts, stale ties, and data quality.upgrade-people-memory: back up, migrate, upgrade the MCP/UI/skills, and verify data.
If the user does not already have an agent, the setup skill can create a minimal Codex or Claude Code
workspace from templates/ and connect People Memory to it.
Privacy and safety
This database contains third-party personal data. Treat it accordingly.
One database per person is the default design.
Hosted UI access is restricted with Supabase Auth and forced row-level security.
The browser publishable key is safe to expose only because RLS is enabled.
The service-role key and PostgreSQL password must never enter browser code or Git.
Connector access is opt-in per source. Imported and inferred facts keep provenance.
Delete archives a JSON snapshot in
deleted_recordsbefore cascading dependent rows.Back up before schema upgrades or bulk merges.
Read docs/privacy.md and SECURITY.md before exposing any component to the internet.
Development
uv sync --extra api --extra dev
uv run ruff check .
uv run pytest --cov=people_memory
supabase db resetThe project uses the current stable v2 line of the official MCP Python SDK and the latest Supabase migration workflow.
License
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Alicense-qualityAmaintenanceOpen-source MCP memory server providing persistent, cross-platform context for AI tools via a knowledge graph with encrypted storage.Last updated1813AGPL 3.0
- AlicenseAqualityAmaintenanceA personal memory MCP server that ingests AI agent conversation logs from multiple platforms into a searchable PostgreSQL+pgvector database, enabling cross-session recall of past reasoning and decisions.Last updated6MIT
- Alicense-qualityAmaintenanceMCP server providing persistent AI memory with four-tier retrieval (SQLite FTS5, graph, vector, LLM agent) to give AI assistants structured, long-term memory without RAG.Last updated1Apache 2.0
- Alicense-qualityDmaintenanceA privacy-first MCP server that acts as the universal memory and profile layer for AI agents, enabling profile management, skills, resume import, and team sync.Last updated4MIT
Related MCP Connectors
User-owned memory for AI agents, Copilot, Claude, IDEs, CLIs, and chat apps over remote MCP.
Person-owned, portable AI memory as a remote MCP server, readable and writable by any MCP client.
Analytical memory for AI agents: a real Postgres queried in plain English over MCP. One command.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/michelgrolet/people-memory-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server