Knowledge MCP Server
# Knowledge MCP Server
[](https://www.typescriptlang.org/)
[](#testing)
[](LICENSE)
[](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**
TDQS
Scored across 27 tools
Most tools have clearly distinct purposes, with clear boundaries between knowledge files, chapters, TODOs, and project sections. However, there is some overlap between add_chapter/add_project_section and update_chapter/update_project_section, which could cause confusion about when to use each. The descriptions help clarify, but the similar naming and functionality create minor ambiguity.
Tool names follow a highly consistent verb_noun pattern throughout, with clear action-object pairs like create_knowledge_file, delete_todo, update_chapter, and get_server_info. All tools use snake_case consistently, and verbs like create, delete, update, get, list, add, remove, search, and sync are used predictably across different resource types.
With 27 tools, this server feels overloaded for a knowledge management system. While the domain is broad (knowledge files, chapters, TODOs, projects, and storage operations), many tools could be consolidated or simplified. The high count increases cognitive load and makes it harder for agents to navigate the complete tool surface efficiently.
The tool surface provides comprehensive CRUD/lifecycle coverage for all major resource types: knowledge files (create, get, delete, search), chapters (add, get, update, remove, list), TODOs (create, get tasks, complete, delete), and project sections (add, update, remove). There are no obvious gaps, and tools like sync_storage and get_server_info provide necessary infrastructure operations.