MCP server for hierarchical project knowledge management
npm install @sofianedjerbi/knowledge-tree-mcp> Hierarchical knowledge management system for AI assistants
> Transform scattered project insights into an organized, searchable knowledge base with intelligent relationships and priority-based organization.


---
$3Auto-categorized paths with custom overrides and project-specific categories | $3Four-tier priority system: CRITICAL β REQUIRED β COMMON β EDGE-CASE | $3Six relationship types with bidirectional validation and automatic linking |
$3Full-text search with regex, field-specific targeting, and multi-criteria filtering | $3Track access patterns, search trends, and tool usage with privacy-first design | $3Real-time web UI with graph visualization, tree explorer, and analytics |
---
``bashπ― Simple installation
claude mcp add knowledge -- npx @sofianedjerbi/knowledge-tree-mcp
$3
`bash
π¦ Setup
git clone https://github.com/sofianedjerbi/knowledge-tree-mcp
cd knowledge-tree-mcp
npm install && npm run buildπ Run with web interface
npm start -- --port 9000π§ͺ Run tests
npm test
`CLI Options:
-
--docs, -d β Documentation directory (default: ./docs)
- --port, -p β Web interface port (enables UI at http://localhost:PORT)
- --help, -h β Show help---
π οΈ Core Tools
π add_knowledge - Create entries with auto-generated paths
Create knowledge entries from Markdown with automatic categorization
`typescript
add_knowledge({
content: string, // Markdown with frontmatter
path?: string // Optional: override auto-generated path
})
`Auto-Path Generation Examples:
- "How to implement JWT authentication" β
security/authentication/jwt-implementation.json
- "Fix Redis connection timeout" β database/redis/troubleshooting/connection-timeout.json
- "React hooks best practices" β frontend/react/best-practices/hooks.jsonMarkdown Format:
`markdown
---
title: Implement JWT refresh token rotation
priority: REQUIRED
tags: [jwt, authentication, security]
---Problem
JWT tokens expire but users need seamless authenticationContext
Mobile apps and SPAs need to maintain auth state without frequent loginsSolution
Implement refresh token rotation with secure storage...Examples
`typescript
// Token rotation implementation
const refreshToken = async () => {
// Implementation here
}
`
`Path Override Options (Ask your AI assistant):
`bash
Full custom path
"Add this JWT guide to security/auth/my-jwt-guide"Directory only (filename from title)
"Add this authentication knowledge to the security/auth/ directory"
`
π search_knowledge - Find entries with advanced filtering
Search with field-specific targeting and multi-criteria filtering
`typescript
search_knowledge({
query?: string, // Search text (supports regex)
searchIn?: string[], // Fields to search
priority?: string[], // Filter by priorities
category?: string, // Filter by category
sortBy?: string, // Sort results
limit?: number, // Max results
regex?: boolean, // Enable regex mode
caseSensitive?: boolean // Case sensitivity
})
`Search Fields:
-
title, problem, solution, context, code, tags, path, allExamples (Ask your AI assistant):
`bash
Simple search
"Search for authentication patterns"Field-specific search
"Find entries with JWT in the title or tags"Multi-criteria filtering
"Show me all CRITICAL and REQUIRED security vulnerabilities"Regex search
"Search for React hooks usage in code (useState, useEffect, useMemo)"Find all entries
"Show me all knowledge entries"
`
π·οΈ manage_categories - Dynamic category management
Add, update, remove, and merge categories for better organization
`typescript
manage_categories({
action: "add" | "update" | "remove" | "list" | "merge",
category?: string,
keywords?: string[],
subcategories?: string[],
scope?: "project" | "system" | "both",
description?: string
})
`Examples (Ask your AI assistant):
`bash
List all categories
"Show me all available categories"Add project-specific category
"Add a payment-gateway category for Stripe and PayPal integrations"Merge keywords without replacing
"Add Svelte and SvelteKit to the frontend category keywords"
`
π link_knowledge - Connect related entries
Create typed relationships between knowledge entries
`typescript
link_knowledge({
from: string,
to: string,
relationship: string,
description?: string
})
`Relationship Types:
- π€
related β General connection (bidirectional)
- β¬οΈ supersedes β This replaces the target
- β¬οΈ superseded_by β This is replaced by target
- β‘ conflicts_with β Conflicting approaches (bidirectional)
- π§ implements β Implementation of a pattern
- π implemented_by β Has implementations
πΊοΈ index_knowledge - Browse knowledge structure
Get comprehensive overview of your knowledge base
`typescript
index_knowledge({
format?: "tree" | "list" | "summary" | "categories",
include_content?: boolean,
max_entries?: number
})
`Formats:
- π³
tree β Hierarchical folder structure
- π list β Flat list with metadata
- π summary β Statistics and overview
- π categories β Grouped by category
π usage_analytics - Track usage patterns
Analyze how your knowledge base is being used
`typescript
usage_analytics({
days?: number,
include?: string[]
})
`Analytics Types:
- ποΈ
access β Entry access patterns
- π searches β Search query analysis
- π οΈ tools β Tool usage statistics
- π interface β Web UI interactions
- π patterns β Usage trends over time
β
More Tools - Additional capabilities
- update_knowledge β Modify existing entries
- delete_knowledge β Remove entries with cleanup
- validate_knowledge β Check consistency and fix issues
- export_knowledge β Generate documentation (MD/HTML/JSON)
- stats_knowledge β Get detailed statistics
- recent_knowledge β View recent changes
- setup_project β Configure project settings
- help β Get contextual guidance
---
π Web Dashboard
Access the interactive dashboard at
http://localhost:9000 (when using --port 9000)$3
- π Overview Dashboard β KPIs, activity metrics, tag cloud
- πΈοΈ Knowledge Graph β Interactive network visualization with physics simulation
- π² Knowledge Explorer β Hierarchical tree view with expand/collapse
- π Search Interface β Real-time search with filters
- π Analytics View β Usage patterns and trends
- π Recent Activity β Latest additions and modifications$3
- Continuous Physics β Nodes auto-arrange to prevent overlaps
- Priority Colors β Visual distinction by importance
- Relationship Lines β See connections between entries
- Fullscreen Mode β Maximize for large knowledge bases
- Search & Filter β Find specific nodes with dimming highlight---
ποΈ Project Configuration
The AI assistant can configure project-specific settings using
setup_project:`javascript
// Ask your AI assistant to run this:
"Initialize project configuration for our Next.js app with Stripe payments"// The AI will execute:
setup_project({
action: "init",
name: "My Project",
pathPrefix: "my-project",
technologies: ["nodejs", "react", "postgres"],
categories: {
"payments": {
keywords: ["stripe", "billing", "subscription"],
subcategories: ["webhooks", "invoices"]
}
}
})
`This creates
.knowledge-tree.json in your docs directory for:
- Custom categories and keywords
- Auto-tagging rules
- Path prefix for all entries
- Technology stack awareness---
π Example Directory Structure
The system automatically organizes knowledge based on content. Here's a typical structure:
`
docs/
βββ .knowledge-tree.json # Project configuration (auto-created)
βββ logs/
β βββ usage.jsonl # Usage analytics (gitignored)
βββ frontend/ # Auto-detected from React/Vue/UI content
β βββ react/
β β βββ hooks/
β βββ performance/
βββ backend/ # Auto-detected from server/API content
β βββ api/
β βββ database/
β βββ security/
βββ testing/ # Auto-detected from test-related content
β βββ unit/
β βββ integration/
βββ architecture/ # Auto-detected from design/pattern content
βββ patterns/
βββ decisions/
`Note: Directories are created automatically as you add knowledge. You don't need to create this structure manually!
---
π Privacy & Security
- Local First: All data stored locally in your project
- No Telemetry: Zero external data collection
- Git Friendly: JSON format for version control
- Private Analytics: Usage logs in
.gitignore by default---
π§ͺ Development
`bash
Run tests
npm testRun with file watching
npm run devBuild TypeScript
npm run buildLint & format
npm run lint
npm run formatType checking
npm run typecheck
``---
Contributions welcome! Please:
1. Fork the repository
2. Create a feature branch
3. Add tests for new functionality
4. Ensure all tests pass
5. Submit a pull request
---
MIT License - see LICENSE file
---
Created by sofianedjerbi
---
π Star this project if it helps organize your AI assistant's knowledge!