personal-kg-mcp
Integration with GitHub to capture decision context from issues, pull requests, and MCP tool calls, enabling traceability and auditability for development workflows.
Integration with Notion to capture context from MCP tool calls, preserving decision reasoning and knowledge from project management activities.
Integration with Obsidian to capture context from MCP tool calls, preserving decision reasoning and knowledge from note-taking activities.
Integration with OpenAI's API for generating semantic embeddings of captured knowledge, enabling semantic search and context retrieval.
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., "@personal-kg-mcpshow me the reasoning behind the last architecture decision"
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.
Decision intelligence for multi-agent workflows
⸻
🚨 The Problem: Context Evaporates
Multi-agent development is fast—but context gets lost at every handoff: • Planning sessions → compressed into short GitHub issues • Architecture debates → collapsed into one-line directives in Cursor • Implementation agents → see what to do, not why
Result: Tasks move quickly, but decisions lose their reasoning. Context exists somewhere—it just doesn't travel.
⸻
✅ The Solution: Auto-Captured Decision Context
Personal KG preserves the "why" behind every decision—automatically, without extra work.
Captured context includes: • Full reasoning chains • Alternatives considered + rejected • Constraints & trade-offs that shaped choices • Idea evolution across planning sessions • Nuanced context beyond specs
⸻
🔁 The Learning Loop
Personal KG isn't just storage—it's a continuous improvement engine: • Accountability → Every directive is traceable to its reasoning • Auditability → Agent actions are explainable and reviewable • Reflection & Analysis → See what worked, what failed, and improve continuously
⸻
🌊 Impact: From Compressed Tasks to Full Context
Before Personal KG • Stripped-down tasks • Fragmented context • Agents move fast but blind
After Personal KG • Tasks + reasoning, constraints, and alternatives • Rich context flows seamlessly across tools • Agents move fast with full understanding
⸻
👉 Personal KG = Never lose the why. Capture it once, use it everywhere.
Installation
NPM Package
The Personal KG MCP server is available as an NPM package:
npm install @tomschell/personal-kg-mcpMCP Configuration
Configure MCP Server in
.cursor/mcp.jsonor your MCP client configuration:
{
"mcpServers": {
"personal-kg-mcp": {
"command": "node",
"args": [
"node_modules/@tomschell/personal-kg-mcp/dist/server.js"
],
"cwd": "/path/to/your/project",
"env": {
"PKG_STORAGE_DIR": ".kg",
"PKG_AUTO_BACKUP_MINUTES": "0",
"PKG_USE_ANN": "true",
"PKG_GITHUB_INTEGRATION_ENABLED": "true",
"PKG_MCP_CAPTURE_ENABLED": "true",
"PKG_MCP_CAPTURE_TOOLS": "github",
"PKG_MCP_CAPTURE_EXCLUDE": "",
"PKG_MCP_CAPTURE_AUTO": "true"
}
}
}
}Set up GitHub Integration (optional):
Create a GitHub Personal Access Token
Add to
.envfile:PKG_GITHUB_TOKEN=github_pat_your_token_hereOr set as environment variable
Restart your MCP client (Cursor, Claude Desktop, etc.)
⚠️ Important: MCP servers are only loaded at session startup. After adding or modifying the MCP configuration, you must restart your Claude Code, Cursor, or Claude Desktop session for the tools to become available. Simply saving the config file is not enough.
Configuration Options
Environment Variable | Default | Description |
|
| Directory for storing knowledge graph data |
|
| Auto-backup interval (0 = disabled) |
|
| Use approximate nearest neighbor search |
|
| Enable GitHub issue/PR integration |
|
| Auto-capture MCP tool calls |
|
| Tools to capture (comma-separated) |
|
| Tools to exclude (comma-separated) |
|
| Auto-capture without explicit calls |
| - | OpenAI API key for semantic embeddings |
|
| OpenAI embedding model |
Environment Setup
For a complete list of environment variables, see .env.example.
Setup Options:
Conductor Workspaces (recommended for 1Password users):
./scripts/setup-conductor.shThis creates symlinks to your 1Password-managed environment files.
Manual Setup:
cp .env.example .env # Edit .env with your valuesMCP Config: Add environment variables directly to your MCP configuration (see above).
Quick Start
npm install @tomschell/personal-kg-mcp
Installation
Configure MCP Server in
.cursor/mcp.json:
{
"mcpServers": {
"personal-kg-mcp": {
"command": "node",
"args": [
"node_modules/@tomschell/personal-kg-mcp/dist/server.js"
],
"cwd": "/path/to/your/project",
"env": {
"PKG_STORAGE_DIR": ".kg",
"PKG_AUTO_BACKUP_MINUTES": "0",
"PKG_USE_ANN": "true",
"PKG_GITHUB_INTEGRATION_ENABLED": "true",
"PKG_MCP_CAPTURE_ENABLED": "true",
"PKG_MCP_CAPTURE_TOOLS": "github",
"PKG_MCP_CAPTURE_EXCLUDE": "",
"PKG_MCP_CAPTURE_AUTO": "true"
}
}
}
}Set up GitHub Integration (optional):
Create a GitHub Personal Access Token
Add to
.envfile:PKG_GITHUB_TOKEN=github_pat_your_token_hereOr set as environment variable
Restart your MCP client (Cursor, Claude Desktop, etc.)
Basic Usage
Start with these essential tools:
Purpose | Tool |
Session warmup |
|
Capture decisions/progress |
|
Session summaries |
|
Search |
|
Project overview |
|
Get context |
|
Track questions |
|
Link nodes |
|
Configuration
The Personal KG MCP server is configured through environment variables set in .cursor/mcp.json.
Storage Configuration
PKG_STORAGE_DIR
Description: Directory path for Personal KG storage
Default:
.kgExample:
"PKG_STORAGE_DIR": "data/knowledge/personal"
GitHub Integration
PKG_GITHUB_INTEGRATION_ENABLED
Description: Enable/disable GitHub integration in session warmup
Default:
false(disabled by default for security)Values:
"true"or"false"Note: Requires
PKG_GITHUB_TOKENto be set to actually enable
PKG_GITHUB_TOKEN
Description: GitHub Personal Access Token for Personal KG integration
Default: Not set
Security: Store in
.envfile, not in version control
MCP Capture Configuration
PKG_MCP_CAPTURE_ENABLED
Description: Enable/disable automatic capture of MCP tool calls
Default:
true
PKG_MCP_CAPTURE_TOOLS
Description: Comma-separated list of MCP tool names to capture
Default:
"github"Example:
"PKG_MCP_CAPTURE_TOOLS": "obsidian,notion,github"
PKG_MCP_CAPTURE_EXCLUDE
Description: Comma-separated list of MCP tool names to exclude
Default:
""(empty)
PKG_MCP_CAPTURE_AUTO
Description: Enable automatic capture without explicit calls
Default:
"true"
Example Configuration
{
"mcpServers": {
"personal-kg-mcp": {
"command": "node",
"args": [
"node_modules/@tomschell/personal-kg-mcp/dist/server.js"
],
"cwd": "/path/to/your/project",
"env": {
"PKG_STORAGE_DIR": ".kg",
"PKG_AUTO_BACKUP_MINUTES": "0",
"PKG_USE_ANN": "true",
"PKG_GITHUB_INTEGRATION_ENABLED": "true",
"PKG_MCP_CAPTURE_ENABLED": "true",
"PKG_MCP_CAPTURE_TOOLS": "github",
"PKG_MCP_CAPTURE_EXCLUDE": "",
"PKG_MCP_CAPTURE_AUTO": "true"
}
}
}
}Usage Guide
Tag Conventions
Normalised tags:
proj:<name>,ws:<workstream>,ticket:<id>Examples:
proj:kgws:kg-devticket:78
Agent Training Reminders
Important for Developers: The kg_session_warmup tool includes an agentTrainingReminders field. These reminders are NOT user-facing documentation - they are designed to train AI agents on proper development workflows during coding sessions.
Purpose:
Train agents on commit frequency and git best practices
Guide agents to follow project workflow conventions
Improve agent behavior through consistent guidance
Ensure code quality and proper git usage
Who sees this:
AI agents during session warmup (embedded in context)
Developers reading the code
NOT end users browsing documentation
Users benefit from these reminders indirectly through improved agent behavior, not by reading them directly.
Proactive Behavior
Capture key moments with kg_capture (decisions, progress, insights, questions).
At session boundaries use kg_capture_session (include
next_actions[]).When resuming a topic call kg_get_relevant_context or kg_get_project_state.
Track open questions with kg_open_questions and resolve with kg_resolve_question.
Link entries with kg_edges (operation: "create", relation: "blocks" or "derived_from").
Core Tools
Capture
Tool | Args (required bold) | Notes |
kg_capture | content, type, tags?, project?, workstream?, ticket?, importance?, visibility?, includeGit?, auto_link?, sessionId? | Primary knowledge creation |
kg_capture_session | summary, duration?, artifacts?, next_actions[], visibility?, importance? | Session summaries |
kg_link_session | sessionId, nodeId | Link session to node |
kg_update_node | id, content?, tags?, importance?, visibility? | Update existing nodes |
Search & Retrieval
Tool | Args | Notes |
kg_search | query, mode∈text|semantic|time_range, tags?, type?, limit?, threshold? | Unified search |
kg_query_context | topic | Summarize topic-relevant nodes |
kg_get_relevant_context | query, project?, max_items?, include_questions? | Proactive context injection |
kg_get_project_state | project | Overview, blockers, decisions |
kg_session_warmup | project?, workstream?, limit?, discover? | Session context warmup |
kg_list_tags | prefix?, minCount?, limit? | List all tags with counts |
Node Operations
Tool | Args | Notes |
kg_node | operation∈get|delete|find_similar, id, deleteEdges?, limit?, threshold? | Unified node ops |
Relationships
Tool | Args | Notes |
kg_edges | operation∈create|list|maintain, fromNodeId?, toNodeId?, relation?, nodeId?, maintainOp? | Unified edge ops |
Question Tracking
Tool | Args | Notes |
kg_open_questions | project?, include_stale?, limit? | List unresolved questions |
kg_resolve_question | question_id, resolved_by_id, resolution_note? | Mark question resolved |
Admin & Maintenance
Tool | Args | Notes |
kg_admin | operation∈health|backup|validate|repair|export|import|rename_tag|merge_tags, ... | Unified admin ops |
Analysis
Tool | Args | Notes |
kg_analyze | operation∈clusters|emerging|path|graph_export, limit?, threshold?, startId?, endId? | Unified analysis ops |
Relationship Type Guide
Relation | When to use | Example |
references | Loose citation / mention | Session note references design doc |
relates_to | General topical overlap | Two progress nodes on same feature |
derived_from | Work or idea builds on another | Refactor derived_from original design decision |
blocks | Hard dependency ordering | Bug fix blocks release task |
duplicates | Identical or redundant content | Duplicate question captured twice |
Best-Practice Flow
Start / resume →
kg_session_warmup({ project: "my-project" })(discovery mode if no project)Before starting work →
kg_get_relevant_context({ query: "topic" })for backgroundDuring dev →
kg_capturedecisions, progress, insights, questionsTrack questions →
kg_open_questionsto see unresolved itemsLink related work →
kg_edges({ operation: "create", ... })End session →
kg_capture_sessionwith summary and next_actions
Claude Code Integration
Add these instructions to your project's CLAUDE.md to enable automatic knowledge graph usage:
## Knowledge Graph
This project uses personal-kg-mcp for decision tracking and context management.
### Session Start
- Run `kg_session_warmup` with project name at the start of each session
- Use discovery mode (no project) to see all available projects
### During Work
- Capture important decisions with `kg_capture` (type: "decision")
- Log progress on features with `kg_capture` (type: "progress")
- Record insights and learnings with `kg_capture` (type: "insight")
- Track open questions with `kg_capture` (type: "question")
### Context Retrieval
- Use `kg_get_relevant_context` before starting work on a topic
- Check `kg_open_questions` for unresolved items
- Use `kg_query_context` for topic summaries
### Session End
- Summarize work with `kg_capture_session`
- Include `next_actions` for continuityRecommended CLAUDE.md Snippet
For projects using personal-kg-mcp, add to your CLAUDE.md:
## Knowledge Graph
- **MCP Server**: personal-kg-mcp
- **Storage**: `.kg/` (gitignored)
- **Usage**: Capture decisions, track questions, maintain context across sessions
- **Session Start**: Always run `kg_session_warmup` with project name
- **Key Tools**: kg_capture, kg_session_warmup, kg_get_relevant_context, kg_open_questionsExamples
Session Warmup
{
"tool": "kg_session_warmup",
"args": { "project": "kg", "limit": 20 }
}Capture Progress
{
"tool": "kg_capture",
"args": {
"content": "Progress: added query tools for Issue 64",
"type": "progress",
"sessionId": "<sessionId>",
"tags": ["proj:kg", "ws:kg-dev", "ticket:64"],
"importance": "medium"
}
}Session Summary
{
"tool": "kg_capture_session",
"args": {
"summary": "Completed KG tool analysis and documentation updates",
"next_actions": ["Implement simplified system prompt", "Update .cursorrules"],
"artifacts": ["Issue #215", "Updated documentation"]
}
}Link Related Work
{
"tool": "kg_edges",
"args": {
"operation": "create",
"fromNodeId": "<decisionId>",
"toNodeId": "<taskId>",
"relation": "blocks"
}
}Get Context Before Starting
{
"tool": "kg_query_context",
"args": { "topic": "CI/CD pipeline improvements" }
}Consolidated Tools (v3.0)
Tools have been consolidated for easier use:
Tool | Operations | Description |
| clusters, emerging, path, graph_export | Analysis operations |
| health, backup, validate, repair, export, import, rename_tag, merge_tags | Admin/maintenance |
| create, list, maintain | Relationship management |
| get, delete, find_similar | Node operations |
| text, semantic, time_range | Unified search |
New Features
kg_open_questions- Track unresolved questions with staleness detectionkg_resolve_question- Mark questions as resolvedkg_get_relevant_context- Proactive context injection for queries
Development
Building
cd packages/personal-kg-mcp
npm install
npm run buildTesting
npm test
npm run test:unit
npm test -- config.test.ts --runDevelopment Mode
npm run devChangelog
[2.1.0] - 2025-08-16
Configuration System: Centralized configuration management via environment variables
GitHub Integration: Configurable GitHub integration with secure token handling
MCP Capture: Configurable automatic capture of MCP tool calls
Security: GitHub integration disabled by default, secure token storage recommendations
[2.0.0] - 2025-08-14
Modular Architecture: Refactored from monolithic 1,625-line server to modular structure
Core Tools Module: kg_health, kg_capture, kg_capture_session, kg_link_session
Search Tools Module: kg_list_recent, kg_search, kg_semantic_search, kg_find_similar, kg_query_time_range, kg_query_context
Relationship Tools Module: 10 relationship management tools
Maintenance Tools Module: 5 maintenance tools
Analysis Tools Module: 4 analysis tools
Project Tools Module: 3 project tools
Deprecated Tools Module: 6 deprecated tools
Comprehensive Documentation: Detailed architecture guide
GitHub Repository: Standalone repository at https://github.com/tomschell/personal-kg-mcp
CI/CD Pipeline: GitHub Actions for testing, building, and deployment
[1.0.0] - 2025-01-01
Initial Personal KG MCP server implementation
43 tools for knowledge graph management
File-based storage system
Vector similarity search
Relationship management
Session management
Project state tracking
License
MIT License - see LICENSE file for details.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
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/tomschell/personal-kg-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server