Skip to main content
Glama
README.mdβ€’17.8 kB
# Knowledge MCP Server [![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/) [![Tests](https://img.shields.io/badge/Tests-133/133_passing-green.svg)](#testing) [![License](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![MCP Compatible](https://img.shields.io/badge/MCP-Compatible-purple.svg)](https://modelcontextprotocol.io/) A production-ready Model Context Protocol (MCP) server that provides centralized knowledge management for AI assistants. Features project-specific documentation, searchable knowledge bases, integrated TODO management, and Git-backed version control for persistent AI memory across sessions. ## πŸš€ Features - **πŸ“ Project Knowledge Management**: Centralized storage for project instructions and documentation - **πŸ” Advanced Search**: Full-text search across all knowledge documents with contextual results - **πŸ“‹ TODO System**: Built-in task management with markdown support and progress tracking - **πŸ” Security-First**: Comprehensive input validation, path sanitization, and abstraction boundaries - **⚑ High Performance**: Optimized for concurrent operations with sophisticated file locking - **πŸ“Š Request Tracing**: Unique trace IDs for debugging and monitoring - **πŸ”„ Git Integration**: Automatic version control with descriptive commit messages - **πŸ§ͺ Battle-Tested**: 133 comprehensive tests covering all functionality and edge cases ## πŸ“¦ Installation ### NPM (Recommended) ```bash npm install -g @spothlynx/knowledge-mcp ``` ### From Source ```bash git clone https://github.com/sven-borkert/knowledge-mcp.git cd knowledge-mcp pnpm install pnpm run build npm link ``` ## πŸ› οΈ Usage ### MCP Client Configuration Add to your MCP client configuration: ```json { "mcpServers": { "knowledge": { "command": "knowledge-mcp", "args": [] } } } ``` ### Claude Desktop Configuration Add to `~/Library/Application Support/Claude/claude_desktop_config.json`: ```json { "mcpServers": { "knowledge": { "command": "knowledge-mcp" } } } ``` ### Direct Execution ```bash # Start the MCP server knowledge-mcp # Development mode with auto-reload pnpm run dev ``` ## πŸ€– AI Assistant Configuration For comprehensive usage instructions, copy the contents of [`INSTRUCTIONS.md`](INSTRUCTIONS.md) to your global instruction file (e.g., `~/.claude/CLAUDE.md`). This will enable Claude Code to automatically use the Knowledge MCP for all project knowledge management. Knowledge is organized as: ``` ~/.knowledge-mcp/ β”œβ”€β”€ index.json # Project name mapping β”œβ”€β”€ activity.log # Request logs (gitignored) └── projects/ └── {project-slug}/ # Auto-detected from git/directory β”œβ”€β”€ main.md # Project instructions β”œβ”€β”€ knowledge/ # Knowledge documents β”‚ β”œβ”€β”€ api-guide.md β”‚ └── architecture.md └── TODO/ # TODO lists └── 1/ # TODO #1 β”œβ”€β”€ index.md # TODO metadata └── tasks/ # Individual task files ``` ## ⚠️ IMPORTANT CONSTRAINTS - Project ID auto-detected from git repo or current directory name - All paths are sanitized - no `../` or absolute paths - Keywords must be alphanumeric + dots, underscores, hyphens - Maximum 50 chapters per document - File extension `.md` required for knowledge files - Section headers must include `##` prefix (e.g., `"## Configuration"`) - All changes auto-commit with descriptive messages - Storage syncs with origin/main if git remote configured ## πŸ” ERROR CODES Common errors and their meanings: - `PROJECT_NOT_FOUND`: Project doesn't exist yet (use update_project_main to create) - `DOCUMENT_NOT_FOUND`: Knowledge file not found - `FILE_ALREADY_EXISTS`: File/chapter already exists (use update instead) - `CHAPTER_NOT_FOUND`: Chapter title not found in document - `SECTION_NOT_FOUND`: Section header not found in main.md - `TODO_NOT_FOUND`: TODO list doesn't exist - `INVALID_INPUT`: Parameters failed validation - `FILE_SYSTEM_ERROR`: File operation failed - `GIT_ERROR`: Git operation failed Each error includes a `traceId` for debugging. ```` ## πŸ“¦ Client-Specific Configuration ### Claude Code ```bash # For global scope (all projects) - ensures latest version is always used claude mcp add knowledge-mcp npx -- -y @spothlynx/knowledge-mcp@latest # For current project only claude mcp add --scope project knowledge-mcp npx -- -y @spothlynx/knowledge-mcp@latest # For development (using local build) claude mcp add knowledge-mcp node "$(pwd)/dist/knowledge-mcp/index.js" ```` ### Claude Desktop Add to `~/Library/Application Support/Claude/claude_desktop_config.json`: ```json { "mcpServers": { "knowledge": { "command": "npx", "args": ["-y", "@spothlynx/knowledge-mcp@latest"] } } } ``` ### Generic MCP Configuration For other MCP-compatible clients: ```json { "mcpServers": { "knowledge-mcp": { "type": "stdio", "command": "npx", "args": ["-y", "@spothlynx/knowledge-mcp@latest"], "env": {} } } } ``` ## πŸ”„ Version Management ### Why Use `@latest` and `-y` Flags - **`-y` flag**: Automatically accepts npx installation prompt without user interaction - **`@latest` tag**: Forces npx to fetch the newest version instead of using cached versions **Important**: NPX caches packages indefinitely. Without `@latest`, you might run outdated versions. ### Updating to Latest Version ```bash # Remove and re-add to ensure latest version claude mcp remove knowledge-mcp claude mcp add knowledge-mcp npx -- -y @spothlynx/knowledge-mcp@latest ``` ### Configuration Precedence Most MCP clients support multiple configuration levels: 1. **User-level (Global)**: Applies to all projects 2. **Project-level**: Applies to current project only 3. **Configuration files**: Manual configuration files Higher-level configurations typically override lower-level ones. ## πŸ›‘οΈ Environment Configuration ### Environment Variables - `KNOWLEDGE_MCP_HOME`: Storage directory (default: `~/.knowledge-mcp`) - `KNOWLEDGE_MCP_LOG_LEVEL`: Log level: `ERROR`, `WARN`, `INFO`, `DEBUG` (default: `INFO`) ### Automatic Project Identification The Knowledge MCP automatically identifies projects based on: - **Git repositories**: Uses repository name from git remote URL - **Non-git directories**: Uses current directory name Example: `/path/to/my-awesome-project/.git` β†’ project_id = "my-awesome-project" ### Storage Structure ``` ~/.knowledge-mcp/ β”œβ”€β”€ .git/ # Git repository (auto-initialized) β”œβ”€β”€ index.json # Project name mapping β”œβ”€β”€ activity.log # Request activity log (gitignored) └── projects/ └── my-app/ β”œβ”€β”€ main.md # Project instructions (centralized, not in repo) β”œβ”€β”€ knowledge/ β”‚ β”œβ”€β”€ api-guide.md # Structured knowledge documents β”‚ └── architecture.md └── TODO/ # TODO lists for the project β”œβ”€β”€ 1/ # First TODO list β”‚ β”œβ”€β”€ index.md # TODO metadata β”‚ └── tasks/ # Individual task files └── 2/ # Second TODO list ``` ### Git Remote Setup (Recommended) Enable automatic cloud backup: ```bash # 1. Create repository on GitHub/GitLab # 2. Configure remote cd ~/.knowledge-mcp git remote add origin https://github.com/yourusername/knowledge-mcp-backup.git git push -u origin main # 3. Set up authentication (SSH recommended) git remote set-url origin git@github.com:yourusername/knowledge-mcp-backup.git ``` **⚠️ Important**: On startup, Knowledge MCP pulls from `origin/main` and overwrites local changes. ## πŸ“š API Reference ### Core Tools #### Project Management - `get_project_main(project_id)` - Retrieve main project instructions - `update_project_main(project_id, content)` - Update project instructions - `update_project_section(project_id, section_header, new_content)` - Update specific section - `add_project_section(project_id, section_header, content, position?, reference_header?)` - Add new section - `remove_project_section(project_id, section_header)` - Remove section - `delete_project(project_id)` - Delete entire project #### Knowledge Documents - `create_knowledge_file(project_id, filename, title, introduction, keywords, chapters)` - Create structured document - `get_knowledge_file(project_id, filename)` - Retrieve complete document - `delete_knowledge_file(project_id, filename)` - Delete document - `update_chapter(project_id, filename, chapter_title, new_content, new_summary?)` - Update chapter - `add_chapter(project_id, filename, chapter_title, content, position?, reference_chapter?)` - Add chapter - `remove_chapter(project_id, filename, chapter_title)` - Remove chapter #### Chapter Iteration - `list_chapters(project_id, filename)` - List all chapters (titles and summaries only) - `get_chapter(project_id, filename, chapter_title | chapter_index)` - Get single chapter content - `get_next_chapter(project_id, filename, current_chapter_title | current_index)` - Get next chapter #### Search & Discovery - `search_knowledge(project_id, query)` - Full-text search across all documents #### TODO Management - `list_todos(project_id)` - List all TODO lists - `create_todo(project_id, description, tasks?)` - Create new TODO list - `get_todo_tasks(project_id, todo_number)` - Get tasks in TODO list - `add_todo_task(project_id, todo_number, title, content?)` - Add task - `complete_todo_task(project_id, todo_number, task_number)` - Mark task complete - `get_next_todo_task(project_id, todo_number)` - Get next incomplete task - `remove_todo_task(project_id, todo_number, task_number)` - Remove task - `delete_todo(project_id, todo_number)` - Delete entire TODO list #### Server Operations - `get_server_info()` - Get server version and configuration - `get_storage_status()` - Get Git repository status - `sync_storage()` - Force Git commit and sync ### Resources The server provides read-only resources for browsing: - `knowledge://projects/{project_id}/main` - Project main instructions - `knowledge://projects/{project_id}/files` - List of knowledge files - `knowledge://projects/{project_id}/chapters/{filename}` - Chapter listings ## πŸ—οΈ Architecture ### Storage Structure ``` ~/.knowledge-mcp/ β”œβ”€β”€ index.json # Project name to directory mapping β”œβ”€β”€ activity.log # Request activity log (gitignored) └── projects/ └── {project-slug}/ # Slugified project directory β”œβ”€β”€ main.md # Main project instructions β”œβ”€β”€ knowledge/ # Knowledge documents β”‚ └── *.md # Individual knowledge files └── TODO/ # TODO lists └── {number}/ # Numbered TODO directories β”œβ”€β”€ index.md # TODO metadata └── tasks/ # Individual task files └── *.md ``` ### Security Features - **Path Validation**: Prevents directory traversal attacks - **Input Sanitization**: Comprehensive validation with Zod schemas - **Abstraction Boundaries**: Internal paths never exposed to clients - **Atomic Operations**: File operations use temp-file + rename pattern - **Request Tracing**: Unique trace IDs for all operations ### Concurrency & Performance - **File Locking**: Queue-based locking prevents race conditions - **Atomic Updates**: All file operations are atomic - **Efficient Search**: Optimized full-text search with result limiting - **Memory Management**: Controlled memory usage for large documents ## πŸ§ͺ Testing The project includes comprehensive test coverage: ```bash # Run all tests pnpm run test:all # Run specific test suite npx tsx test/suites/01-project-main.test.ts # Generate HTML test report pnpm run test:all && open test-results/html/merged-results.html ``` ### Test Coverage - **133 tests** across 11 comprehensive test suites - **100% success rate** in CI/CD pipeline - **Edge cases** including concurrency, unicode, and error conditions - **Security tests** for abstraction boundaries and input validation - **Performance tests** for high-load scenarios ## πŸ”§ Development ### Prerequisites - Node.js 18+ - pnpm (recommended) or npm - TypeScript 5.7+ ### Development Workflow ```bash # Install dependencies pnpm install # Start development server with auto-reload pnpm run dev # Build for production pnpm run build # Run type checking pnpm run type-check # Run linter pnpm run lint # Format code pnpm run format # Run all quality checks pnpm run analyze ``` ### Code Quality The project enforces high code quality standards: - **TypeScript**: Strict mode with comprehensive type checking - **ESLint**: Comprehensive linting with TypeScript support - **Prettier**: Consistent code formatting - **Static Analysis**: Zero warnings policy - **Test Coverage**: All functionality thoroughly tested ## πŸ“– Documentation - **[Technical Specification](docs/technical-specification.md)** - Complete API reference and architecture - **[Error Handling Guide](docs/error-handling-guide.md)** - Error codes and debugging - **[MCP Security Guidelines](docs/mcp-security-guidelines.md)** - Security best practices - **[Publishing Guidelines](docs/publishing-guidelines.md)** - Release and deployment process ## πŸ› Troubleshooting ### Common Issues 1. **"spawn npx ENOENT" or "Connection closed"** ```bash # Remove and re-add to ensure latest version claude mcp remove knowledge-mcp claude mcp add knowledge-mcp npx -- -y @spothlynx/knowledge-mcp@latest ``` 2. **Permission errors** ```bash # Ensure storage directory exists and is writable mkdir -p ~/.knowledge-mcp chmod 755 ~/.knowledge-mcp ``` 3. **NPX cache issues** ```bash # Clear NPX cache if using published version rm -rf ~/.npm/_npx # Reinstall with @latest claude mcp remove knowledge-mcp claude mcp add knowledge-mcp npx -- -y @spothlynx/knowledge-mcp@latest ``` 4. **Version conflicts** ```bash # Check all configuration scopes claude mcp list # Remove from all scopes and re-add claude mcp remove knowledge-mcp -s global claude mcp remove knowledge-mcp -s project claude mcp add knowledge-mcp npx -- -y @spothlynx/knowledge-mcp@latest ``` ### Debugging with Logs ```bash # View MCP logs (location varies by client) # For Claude Code: ls ~/Library/Caches/claude-cli-nodejs/*/mcp-logs-knowledge-mcp/ # View activity logs with trace IDs tail -f ~/.knowledge-mcp/activity.log # Check Git repository status cd ~/.knowledge-mcp && git status ``` ### Error Codes The Knowledge MCP uses standardized error codes for debugging: - `PROJECT_NOT_FOUND` - Project doesn't exist yet (call `update_project_main` to create) - `DOCUMENT_NOT_FOUND` - Knowledge file not found - `FILE_ALREADY_EXISTS` - File already exists (use update instead of create) - `SECTION_NOT_FOUND` - Section header not found in document - `SECTION_ALREADY_EXISTS` - Section header already exists - `INVALID_INPUT` - Invalid parameters (check Zod validation errors) - `TODO_NOT_FOUND` - TODO list doesn't exist - `TODO_TASK_NOT_FOUND` - Task not found in TODO list - `FILE_SYSTEM_ERROR` - File operation failed - `GIT_ERROR` - Git operation failed Each error includes a unique `traceId` for debugging. Search logs using: `grep "traceId" ~/.knowledge-mcp/activity.log` ### Verifying Installation ```bash # Check if Knowledge MCP is properly configured claude mcp list | grep knowledge-mcp # Test basic functionality (if using Claude Code) # Should return server information /mcp knowledge get_server_info # Verify storage directory ls -la ~/.knowledge-mcp/ ``` ### Performance Issues If experiencing slow performance: 1. **Large knowledge base**: Consider splitting large documents 2. **Git repository size**: Archive old projects or use shallow clones 3. **Concurrent operations**: File locking ensures safety but may slow bulk operations 4. **Search performance**: Use specific keywords instead of broad queries See [Error Handling Guide](docs/error-handling-guide.md) for detailed debugging information. ## 🀝 Contributing 1. Fork the repository 2. Create a feature branch: `git checkout -b feature/amazing-feature` 3. Make your changes and add tests 4. Ensure all tests pass: `pnpm run test:all` 5. Run quality checks: `pnpm run analyze` 6. Commit your changes: `git commit -m 'Add amazing feature'` 7. Push to the branch: `git push origin feature/amazing-feature` 8. Open a Pull Request ### Development Standards - All new features must include comprehensive tests - Code must pass all static analysis checks - Documentation must be updated for API changes - Security considerations must be addressed ## πŸ“„ License This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details. ## πŸ™ Acknowledgments - **Model Context Protocol** - For the excellent MCP specification - **TypeScript Community** - For outstanding tooling and ecosystem - **Contributors** - For making this project better ## πŸ“ž Support - **Issues**: [GitHub Issues](https://github.com/sven-borkert/knowledge-mcp/issues) - **Documentation**: [Technical Specification](docs/technical-specification.md) - **MCP Protocol**: [Official Documentation](https://modelcontextprotocol.io/) --- **Built with ❀️ using TypeScript and the Model Context Protocol**

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/sven-borkert/knowledge-mcp'

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