The full upstream README, mirrored here for reference. Install config, tool schemas, adoption signals, and an original overview live on the Kernal MCP listing page.
Open-source knowledge graph for professionals. Auto-extracts entities and relationships from natural conversation via MCP.
Talk to Claude naturally about your meetings, calls, and interactions. Kernal stores people, organizations, topics, and relationships — building a knowledge graph you own.
Everything you need to run Kernal locally on your own machine:
init, serve, status, exportThis is a fully functional knowledge graph you can run yourself, for free, forever.
For teams and professionals who want more, Andes offers:
The open-source core is the engine. Andes wraps it with infrastructure, UX, and support.
This creates a SQLite database at ~/.kernal/kernal.db and prints the config to add to Claude Desktop.
Add to your claude_desktop_config.json:
Restart Claude Desktop. Then talk naturally:
"I had lunch with Jonas Lindberg from Nordvik Energy today. He's their VP of Digital. We discussed their cloud migration — targeting Q3."
Claude extracts Jonas, Nordvik Energy, the cloud migration topic, and stores them via Kernal's write tools. Then ask:
Kernal uses an LLM-driven extraction pattern:
kernal_remember with the raw textkernal_add_person, kernal_add_org, kernal_add_activity, etc.)The MCP server is a clean data store. The LLM is the brain.
| Tool | Description |
|---|---|
kernal_remember | Store raw text, get extraction instructions and existing entity list for dedup |
kernal_add_person | Create or update a person (auto-deduplicates by fuzzy name match) |
kernal_add_org | Create or update an organization (auto-deduplicates) |
kernal_add_activity | Log an interaction with participant and org linking |
kernal_add_action | Create a follow-up or task, optionally assigned to a person |
kernal_link | Create a relationship between any two entities (person, org, or topic) |
| Tool | Description |
|---|---|
kernal_recall | Search the knowledge base by keyword across all entity types |
kernal_people | List/search contacts — filter by name, org, role |
kernal_orgs | List/search organizations — filter by type, industry |
kernal_activities | Recent interactions — filter by type, person, date |
kernal_actions | Open follow-ups — filter by status, owner, due date |
kernal_context | Full briefing on a person or org — timeline, network, topics |
| Tool | Description |
|---|---|
kernal_correct | Update fields, delete entities, merge duplicates, or reset the database |
From a single paragraph like "Had coffee with Sofia Andersen from Arctura Tech. She's their VP of Sales. We discussed their expansion into APAC. I need to send her the partner proposal by Friday.", Claude will call:
kernal_add_person — Sofia Andersen, VP of Sales, at Arctura Techkernal_add_org — Arctura Techkernal_add_activity — Coffee meeting, today, participants: [Sofia Andersen], orgs: [Arctura Tech]kernal_add_action — "Send partner proposal to Sofia", due Friday, owner: Sofia Andersenkernal_link — Sofia → works_at → Arctura TechEach call is a deliberate, structured decision by the LLM — not a regex guess.
The repo includes a React dashboard (dashboard/) with four views:
Natural language command bar routes queries to views ("Show me my network" → graph).
Kernal stores 6 entity types connected by a generic relationship graph:
All entities can link to any other entity via the relationships table, enabling queries like:
crypto.timingSafeEqual)A Dockerfile is included. Environment variables:
| Variable | Default | Description |
|---|---|---|
KERNAL_DB_PATH | ~/.kernal/kernal.db | SQLite database path |
KERNAL_API_KEY | (required for cloud) | API key for authentication |
KERNAL_CORS_ORIGIN | http://localhost:5174 | Allowed CORS origins (comma-separated) |
KERNAL_RATE_LIMIT | 120 | Max requests per minute per IP |
PORT | 3001 | Server port |
Creates 12 contacts, 18 orgs, 19 activities with 123 relationships — a realistic professional services scenario.
MIT