Builds a graph-native knowledge graph by automatically extracting entities and relationships from natural conversations via MCP.
Also known as pintomatic/kernal, kernal
- Stars
- 2
- Tools
- 13
- Downloads, 30 days
- —
- Latest version
- 0.2.1
- Last commit
- Oct 24, 2026
- License
- MIT
What is Kernal MCP?
Kernal builds a graph-native knowledge graph by automatically extracting entities and relationships from natural conversations via MCP. It exposes 13 tools, such as kernal_remember, kernal_add_person, kernal_add_org.
Summary generated from the project's README
About Kernal MCP server
Kernal is an open-source knowledge graph designed for professionals to capture and organize information from natural conversations. It works by connecting to an MCP client like Claude Desktop, allowing the LLM to act as the intelligence layer that extracts entities and relationships from your text. The system uses a local-first approach with a SQLite database, ensuring your data stays on your machine unless you choose to use the managed Andes cloud service.
The server provides 13 specialized tools for managing your data, including ingestion, CRUD, and query capabilities. You can use tools like kernal_add_person, kernal_add_org, and kernal_add_activity to build your network, or use kernal_recall and kernal_context to retrieve briefings. It features entity resolution using fuzzy matching and Levenshtein distance to prevent duplicate entries. Developers can manage the server via a CLI with commands such as init, serve, status, and export, while a React dashboard provides visual representations like a network graph and activity timeline.
What you can do with it
- 1Extract meeting detailsTell the AI about a recent interaction to automatically log people, organizations, and topics into your graph.
- 2Visualize professional networksUse the dashboard to see the connections between different people and organizations through an interactive graph.
Written from the project's README. Every use case is checked against a quote from it.
How to install Kernal MCP
Formats verified 10 Nov 2026Add to CursorAdd to GooseInstall Kernal MCP in Claude Code
$ claude mcp add kernal -- npx -y kernal-mcpInstall Kernal MCP in Cursor
~/.cursor/mcp.json
{
"mcpServers": {
"kernal": {
"command": "npx",
"args": [
"-y",
"kernal-mcp"
]
}
}
}Install Kernal MCP in VS Code
.vscode/mcp.json
{
"servers": {
"kernal": {
"type": "stdio",
"command": "npx",
"args": [
"-y",
"kernal-mcp"
]
}
}
}Install Kernal MCP in VS Code CLI
$ code --add-mcp '{"name":"kernal","type":"stdio","command":"npx","args":["-y","kernal-mcp"]}'Install Kernal MCP in Claude Desktop
claude_desktop_config.json
{
"mcpServers": {
"kernal": {
"command": "npx",
"args": [
"-y",
"kernal-mcp"
]
}
}
}Install Kernal MCP in Codex
$ codex mcp add kernal -- npx -y kernal-mcpInstall Kernal MCP in Codex config.toml
~/.codex/config.toml
[mcp_servers.kernal] command = "npx" args = ["-y", "kernal-mcp"]
Install Kernal MCP in Gemini CLI
$ gemini mcp add -s user kernal npx -- -y kernal-mcpInstall Kernal MCP in Gemini settings.json
~/.gemini/settings.json
{
"mcpServers": {
"kernal": {
"command": "npx",
"args": [
"-y",
"kernal-mcp"
]
}
}
}Kernal MCP tools 13
Detected from the READMEkernal_rememberkernal_add_personkernal_add_orgkernal_add_activitykernal_add_actionkernal_linkkernal_recallkernal_peoplekernal_orgskernal_activitieskernal_actionskernal_context
| kernal_remember | — | |
| kernal_add_person | — | |
| kernal_add_org | — | |
| kernal_add_activity | — | |
| kernal_add_action | — | |
| kernal_link | — | |
| kernal_recall | — | |
| kernal_people | — | |
| kernal_orgs | — | |
| kernal_activities | — | |
| kernal_actions | — | |
| kernal_context | — |
Show all 13 toolsShow fewer tools
kernal_correct
| kernal_correct | — |
Configuration
KERNAL_API_KEY
| Name | Description | |
|---|---|---|
| KERNAL_API_KEY | — |
Automated checks
Ran Nov 12, 2026Full report →Passed our automated checks. That is not a security audit: read the code and give the server the narrowest access it needs. How checks work
- Source repository linked and reachablePass
- Open source license (OSI)Pass
- Commit or release in the last yearPass
- Package name not close to a popular packagePass
- Remote endpoint uses HTTPSNot checked
- Destructive tools are labelledPass
- No hidden instructions to the modelPass
- No critical advisory in the package or its dependenciesPass
README
View on GitHubKernal
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.
What's Included (Open Source)
Everything you need to run Kernal locally on your own machine:
- 13 MCP tools — ingestion, CRUD, query, corrections (see full list below)
- SQLite database — local-first, your data never leaves your machine
- LLM-driven extraction — Claude reads your text, decides what to extract, and calls structured write tools
- Entity resolution — fuzzy matching + Levenshtein distance prevents duplicates
- CLI —
init,serve,status,export - Cloud server — Express.js with API key auth, rate limiting, CORS, session management
- Dashboard — React app with network graph, timeline, action items, overview
- 50 tests — comprehensive test suite
This is a fully functional knowledge graph you can run yourself, for free, forever.
What Andes Provides (Managed Service)
For teams and professionals who want more, Andes offers:
- Cloud hosting — access your knowledge graph from any device, no self-hosting
- Dashboard — hosted interactive visualizations powered by your data
- Multi-user — team features, shared knowledge bases, role-based access
- Onboarding & support — we set it up for you and help your team get value from day one
- Industry workflows — pre-built patterns for executive search, consulting, professional services
The open-source core is the engine. Andes wraps it with infrastructure, UX, and support.
Quick Start
npx kernal-mcp init
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:
{
"mcpServers": {
"kernal": {
"command": "npx",
"args": ["-y", "kernal-mcp", "serve"]
}
}
}
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:
- "What do I know about Nordvik Energy?" → Full briefing with people, interactions, topics
- "Who should I follow up with?" → Open action items with owners and due dates
- "Show me everyone at Nordvik Energy" → Contact list filtered by organization
How It Works
Kernal uses an LLM-driven extraction pattern:
- You tell Claude about a meeting, call, or interaction
- Claude calls
kernal_rememberwith the raw text - Kernal stores the text as a note and returns extraction instructions + existing entities (for dedup)
- Claude reads the text intelligently and calls structured write tools (
kernal_add_person,kernal_add_org,kernal_add_activity, etc.) - Each write goes through entity resolution to prevent duplicates
- The LLM makes all extraction decisions — no regex guessing
The MCP server is a clean data store. The LLM is the brain.
MCP Tools
Ingestion (write)
| 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) |
Query (read)
| 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 |
Corrections
| Tool | Description |
|---|---|
kernal_correct |
Update fields, delete entities, merge duplicates, or reset the database |
What Gets Stored
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 Tech
Each call is a deliberate, structured decision by the LLM — not a regex guess.
CLI Commands
kernal init Create database + print Claude Desktop config
kernal serve Start MCP server (stdio transport)
kernal status Show database stats
kernal export Export database to a file
kernal help Show help
Dashboard
The repo includes a React dashboard (dashboard/) with four views:
- Overview — entity counts, most connected people, activity breakdown
- Network — interactive force-directed graph (people + organizations)
- Timeline — chronological activity feed with participants and summaries
- Actions — follow-ups grouped by urgency (overdue, this week, upcoming)
Natural language command bar routes queries to views ("Show me my network" → graph).
# Start the cloud API server
KERNAL_API_KEY=your-key KERNAL_DB_PATH=~/.kernal/kernal.db npm run cloud
# Start the dashboard (separate terminal)
cd dashboard && npm run dev
Data Model
Kernal stores 6 entity types connected by a generic relationship graph:
People ←→ Organizations
↕ ↕
Activities ←→ Topics
↕
Actions ←→ Notes
All entities can link to any other entity via the relationships table, enabling queries like:
- "Who has Sofia met with?" (person → activities → other people)
- "What topics come up with Nordvik Energy?" (org → people → activities → topics)
- "What's the connection between Jonas and Arctura Tech?" (path through graph)
Security
- All SQL queries use parameterized statements (no injection risk)
- API key auth with constant-time comparison (
crypto.timingSafeEqual) - CORS restricted to configured origins
- Rate limiting (120 req/min per IP, configurable)
- MCP session timeout (30 min idle eviction)
- No secrets in code — all config via environment variables
- React dashboard auto-escapes all rendered data (no XSS)
Development
git clone https://github.com/pintomatic/kernal.git
cd kernal
npm install
npm run build
npm test # 50 tests
Self-Hosting the Cloud Server
KERNAL_API_KEY=your-secret KERNAL_DB_PATH=~/.kernal/kernal.db npm run cloud
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 |
Seed Demo Data
npx tsx scripts/seed-demo.ts
Creates 12 contacts, 18 orgs, 19 activities with 123 relationships — a realistic professional services scenario.
License
MIT
Kernal MCP questions
How do I add Kernal MCP to Claude Code?
Run claude mcp add kernal -- npx -y kernal-mcp in your terminal. Add --scope user to make it available in every project.
How do I add Kernal MCP to Cursor?
Open ~/.cursor/mcp.json and add the server under mcpServers, using the Cursor config shown in the install section above.
What tools does Kernal MCP provide?
It exposes 13 tools, including kernal_remember, kernal_add_person, kernal_add_org, kernal_add_activity, kernal_add_action.
How does Kernal store my data?
Kernal uses a local-first SQLite database, ensuring your data never leaves your machine when running the open-source version.
Can I use Kernal with Claude Desktop?
Yes, you can add the Kernal MCP server to your Claude Desktop configuration to talk naturally about meetings and interactions.
How does the server prevent duplicate entries?
The server uses entity resolution with fuzzy matching and Levenshtein distance to prevent duplicate entities.
What kind of entities can be stored?
The system stores people, organizations, topics, activities, actions, and notes in a connected relationship graph.