Skip to main content
Glama

Knowledge Base MCP Server

by cwente25
README.md10.6 kB
# Knowledge Base MCP Server A Model Context Protocol (MCP) server for managing a personal markdown-based knowledge base. Enable AI assistants like Claude to read, search, and update your notes naturally. ## Overview This MCP server provides AI-native access to a personal knowledge base stored as markdown files with YAML frontmatter. It allows you to: - Create and organize notes across multiple categories - Search through your knowledge base using natural language - Update and maintain notes with AI assistance - Keep all data in human-readable, portable markdown format - Access your notes from Claude Desktop, Claude Code, or any MCP-compatible client ## Features ### Core Capabilities - **7 MCP Tools** for complete knowledge base management - `add_note` - Create new notes - `search_notes` - Search by content, tags, or category - `get_note` - Retrieve full note content - `update_note` - Modify existing notes (replace or append) - `list_notes` - List notes with optional filters - `delete_note` - Remove notes (with backup) - `list_categories` - View all categories and counts - **Smart Search** with relevance scoring - Search across titles, content, tags, and metadata - Case-insensitive matching - Filter by category or tags - Ranked results by relevance - **Flexible Organization** - Default categories: people, recipes, meetings, procedures, tasks - Configurable category system - Tag-based organization - Rich metadata support - **Data Safety** - Automatic backups before updates - Atomic file writes - Human-readable markdown format - No vendor lock-in ## Installation ### Prerequisites - Python 3.11 or higher - `uv` package manager (recommended) or `pip` ### Install with uv (Recommended) ```bash # Clone the repository git clone <repository-url> cd knowledge-base-mcp # Install dependencies uv sync # The server is now ready to use ``` ### Install with pip ```bash # Clone the repository git clone <repository-url> cd knowledge-base-mcp # Create virtual environment python -m venv venv source venv/bin/activate # On Windows: venv\Scripts\activate # Install in development mode pip install -e . ``` ## Configuration ### Environment Variables Create a `.env` file in the project root (optional): ```bash # Knowledge base location (default: ~/knowledge-base) KNOWLEDGE_BASE_PATH=~/knowledge-base # Categories (comma-separated) CATEGORIES=people,recipes,meetings,procedures,tasks # Server settings SERVER_NAME=Knowledge Base LOG_LEVEL=INFO ``` ### Claude Desktop Setup Add the server to your Claude Desktop configuration: **macOS**: `~/Library/Application Support/Claude/claude_desktop_config.json` **Windows**: `%APPDATA%\Claude\claude_desktop_config.json` **Linux**: `~/.config/Claude/claude_desktop_config.json` ```json { "mcpServers": { "knowledge-base": { "command": "uv", "args": [ "--directory", "/absolute/path/to/knowledge-base-mcp", "run", "knowledge-base-server" ] } } } ``` **Alternative (using pip/venv)**: ```json { "mcpServers": { "knowledge-base": { "command": "/absolute/path/to/venv/bin/python", "args": [ "-m", "knowledge_base_mcp.server" ], "env": { "KNOWLEDGE_BASE_PATH": "/path/to/your/knowledge-base" } } } } ``` After configuration, restart Claude Desktop. ## Usage ### Example Interactions #### Adding Notes ``` You: "I just met Sarah Chen at a conference. She works at Tesla on battery tech and is interested in our AI product. Tag this as important." Claude: [Calls add_note tool] ✓ Note 'Sarah Chen' created in people/ File: sarah-chen.md Tags: conference, tesla, important ``` #### Searching ``` You: "Who did I meet that works on batteries?" Claude: [Calls search_notes with query="batteries"] Found 1 result(s): [people] Sarah Chen [conference, tesla, batteries, important] Battery engineer at Tesla. Met at tech conference. Interested in AI... ``` #### Retrieving Notes ``` You: "Show me my note about Sarah Chen" Claude: [Calls get_note tool] # Sarah Chen **Category:** people **Tags:** conference, tesla, batteries, important **Date:** 2025-10-21 --- Battery engineer at Tesla... ``` #### Updating Notes ``` You: "Add to Sarah Chen's note that we scheduled a call for next Tuesday" Claude: [Calls update_note with append=True] ✓ Note 'Sarah Chen' updated successfully Category: people Last updated: 2025-10-22 ``` #### Quick Reference ``` You: "How long do I cook brussels sprouts in the air fryer?" Claude: [Calls search_notes with query="brussels sprouts"] Found 1 result(s): [recipes] Brussels Sprouts [quick, vegetables, air-fryer] Cook at 400°F for 15-18 minutes, shake halfway through... ``` ## Knowledge Base Structure Your knowledge base is stored as markdown files in a simple folder structure: ``` ~/knowledge-base/ ├── people/ │ ├── sarah-chen.md │ ├── john-doe.md │ └── ... ├── recipes/ │ ├── brussels-sprouts.md │ ├── chocolate-cake.md │ └── ... ├── meetings/ │ └── q4-planning.md ├── procedures/ │ └── onboarding-checklist.md └── tasks/ └── launch-preparation.md ``` ### Markdown Format Each note is a markdown file with YAML frontmatter: ```markdown --- tags: [conference, tesla, batteries, important] date: 2025-10-21 category: people company: Tesla role: Battery Engineer email: sarah.chen@tesla.com --- # Sarah Chen **Met:** Tech Conference 2025, Silicon Valley **Contact:** sarah.chen@tesla.com ## Notes Interested in our AI product for battery optimization. Has budget approval for Q1 2026. ## Follow-up - [ ] Send demo link by end of week - [ ] Schedule call for next Tuesday ``` ### Metadata Fields **Required:** - `tags`: List of tags for categorization - `date`: Creation date (YYYY-MM-DD) - `category`: Category folder name **Optional (category-specific):** - **People**: `company`, `role`, `email`, `phone` - **Recipes**: `prep_time`, `cook_time`, `servings` - **Meetings**: `attendees`, `meeting_date`, `location` - **Tasks**: `priority`, `due_date`, `status` You can add any custom metadata fields as needed. ## Development ### Running Tests ```bash # With uv uv run pytest # With pip pytest # Run specific test file pytest tests/test_storage.py # Run with coverage pytest --cov=knowledge_base_mcp tests/ ``` ### Project Structure ``` knowledge-base-mcp/ ├── src/ │ └── knowledge_base_mcp/ │ ├── __init__.py │ ├── server.py # MCP server and tools │ ├── storage.py # File operations │ ├── search.py # Search functionality │ └── models.py # Data models ├── tests/ │ ├── test_server.py # Integration tests │ ├── test_storage.py # Storage layer tests │ └── test_search.py # Search tests ├── examples/ │ └── sample-notes/ # Example notes ├── pyproject.toml # Project configuration └── README.md ``` ### Adding Custom Categories Edit your `.env` file or environment configuration: ```bash CATEGORIES=people,recipes,meetings,procedures,tasks,books,articles,ideas ``` The server will automatically create folders for new categories. ## Troubleshooting ### Common Issues **Server not appearing in Claude Desktop:** - Verify the path in `claude_desktop_config.json` is absolute - Check that the command path is correct (`uv` or python path) - Restart Claude Desktop completely - Check Claude Desktop logs for errors **Notes not being created:** - Verify `KNOWLEDGE_BASE_PATH` exists and is writable - Check file permissions - Ensure category is valid (use `list_categories` tool) **Search not finding notes:** - Verify notes have proper YAML frontmatter - Check that tags are formatted as lists - Try searching with simpler queries - Use `list_notes` to see what notes exist **Permission errors:** - Ensure the knowledge base directory has write permissions - On macOS, you may need to grant Claude Desktop disk access in System Preferences ### Viewing Logs Claude Desktop logs can help diagnose issues: - **macOS**: `~/Library/Logs/Claude/` - **Windows**: `%APPDATA%\Claude\logs\` - **Linux**: `~/.config/Claude/logs/` ## Use Cases ### Conference CRM Track people you meet at conferences with contact info, notes, and follow-up tasks. ### Recipe Collection Store recipes with tags, cook times, and personal notes about modifications. ### Meeting Notes Keep meeting agendas, discussion points, and action items organized by topic. ### Procedure Documentation Maintain step-by-step procedures and checklists for recurring tasks. ### Task Management Track projects, deadlines, and task lists with priorities and status. ## Integration with Other Tools ### Obsidian The markdown format is fully compatible with Obsidian. You can: - Open the knowledge base in Obsidian - Edit notes in either Obsidian or via Claude - Use Obsidian mobile for on-the-go access - Sync via Obsidian Sync or iCloud ### Git Version Control Consider adding git version control to your knowledge base: ```bash cd ~/knowledge-base git init git add . git commit -m "Initial knowledge base" ``` This provides: - Version history of all changes - Ability to revert changes - Backup to remote repository - Collaboration capabilities ### File Sync Use any file sync service: - iCloud Drive - Dropbox - Google Drive - Syncthing ## Roadmap ### Phase 2 Features (Planned) - HTTP API for web and mobile access - Web UI for browsing and editing - AI pendant integration via webhooks - Automatic summarization and insights - Calendar integration - Email integration ### Future Considerations - Multi-user support - Real-time collaboration - Advanced search with embeddings - Automatic tagging suggestions - Template system for note types ## Contributing Contributions are 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 ## License MIT License - see LICENSE file for details ## Support - Report issues: [GitHub Issues] - Documentation: [MCP Documentation](https://modelcontextprotocol.io) - Community: [MCP Discord] ## Acknowledgments Built with: - [Model Context Protocol](https://modelcontextprotocol.io) - [MCP Python SDK](https://github.com/modelcontextprotocol/python-sdk) - [PyYAML](https://pyyaml.org/) --- Made with Claude Code

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/cwente25/KnowledgeBaseMCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server