MCP Power is a semantic knowledge search server that transforms document collections into searchable knowledge bases using FAISS vector embeddings and the Model Context Protocol (MCP).
Key Capabilities:
Semantic Search: Query datasets using natural language with AI-powered semantic understanding beyond keyword matching, delivering sub-500ms response times with relevance scoring
Document Processing: Automatically index .txt, .md, and .pdf files by splitting them into intelligent semantic chunks and generating vector embeddings
Dataset Management: Create, monitor, and delete multiple knowledge bases through a drag-and-drop web console or REST API
MCP Integration: Seamlessly works with any MCP-compatible client including Claude Desktop, VS Code Copilot, and Cherry Studio
Tool Operations:
knowledge.search: Execute semantic searches with configurable result count (topK parameter)knowledge.listDatasets: Retrieve all available datasets with metadata, chunk counts, and readiness status
Web Interface: Modern console at http://127.0.0.1:4173 for easy management and real-time monitoring
Zero Configuration: One-click launcher automatically sets up the Python environment, dependencies, and starts the server across Linux, macOS, and Windows
Use Cases: Build searchable documentation sites, create knowledge bases for chatbots, search research paper collections, query personal notes, and power AI assistants with custom domain knowledge.
๐ MCPower
Semantic Knowledge Search, Simplified
Transform your documents into searchable knowledge bases with FAISS vector embeddings
๐ Quick Start โข ๐ Documentation โข ๐ Report Bug โข ๐ก Request Feature
โจ What is MCPower?
MCPower is a Model Context Protocol (MCP) server that provides powerful semantic search over your document collections. Drop in any folder of .txt or .md files, and get instant AI-powered search capabilities through a beautiful web interface or programmatic API.
Perfect for:
๐ Documentation sites
๐๏ธ Knowledge bases
๐ฌ Chatbot context
๐ Research papers
๐ Note collections
๐ฏ Features at a Glance
๐ฑ๏ธ Drag & Drop Interface
Just drop folders into the web console to create searchable datasets. No CLI commands needed!
โก Lightning Fast
FAISS-powered vector search with <500ms response times. Search thousands of documents instantly.
๐ง Semantic Understanding
Uses sentence transformers for intelligent matching beyond keyword search.
๐ MCP Compatible
Works with Claude Desktop, VS Code, Cherry Studio, and any MCP client.
๐ฆ Zero Config
One-click launcher automatically sets up everything. Just run ./launch.sh.
๐จ Beautiful UI
Modern, responsive web console with real-time stats and visual feedback.
๐ Quick Start
The web console opens automatically at http://127.0.0.1:4173 ๐
Your browser opens automatically to http://127.0.0.1:4173 ๐
๐ธ What You'll See
โจ Features
Semantic Search: Search knowledge datasets using natural language queries
Interactive Web Console: Manage datasets with drag-and-drop interface
Multiple Datasets: Manage and search across multiple knowledge bases
MCP Compatible: Works with any MCP client (VS Code, Cherry Studio, etc.)
Fast & Reliable: FAISS-powered vector search with <500ms p95 latency
Graceful Degradation: Continues working even with invalid datasets
Comprehensive Logging: Structured JSON logs with detailed diagnostics
๐๏ธ How It Works
The Magic Behind MCPower
๐ Document Processing
Python reads your documents (txt, md, pdf)
Splits them into semantic chunks
Generates embeddings using
sentence-transformers
โก Fast Vector Search
FAISS indexes embeddings for lightning-fast similarity search
Sub-500ms query latency even on large datasets
Efficient memory usage with optimized index structures
๐ MCP Integration
TypeScript server exposes MCP tools
Clients send queries via stdio protocol
Python bridge handles FAISS operations
Results returned as JSON with relevance scores
โ๏ธ Installation
Prerequisites
Node.js 18+ and npm
Python 3.10+
Git
Automatic Setup (Recommended)
The launcher will:
โ Create virtual environment
โ Install Python dependencies
โ Install Node.js dependencies
โ Configure environment variables
โ Start the web console
โ Open your browser
Manual Setup
1. Clone the repository
2. Install Node.js dependencies
3. Create Python virtual environment
4. Install Python dependencies
5. Configure environment
6. Build and run
โ โโโโโโโฌโโโโโโ โ
โโโโโโโโโโผโโโโโโโโโ
โ execa (JSON over stdio)
โ
โโโโโโโโโโดโโโโโโโโโ
โ Python Bridge โ
โ (Python) โ
โ โ
โ โโโโโโโโโโโโโ โ
โ โ FAISS โ โ Vector search
โ โ Index โ โ
โ โโโโโโโโโโโโโ โ
โ โ
โ โโโโโโโโโโโโโ โ
โ โ Sentence โ โ Query encoding
โ โTransformersโ โ
โ โโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโ
Verify Installation
โ๏ธ Configuration
Command Line Options
Options:
--datasets <path>: Path to datasets directory (default:./datasets)--log-level <level>: Log level: debug, info, warn, error (default:info)--version: Show version information
Environment Variables
Create a .env file in the project root:
๐ Dataset Management
Using the Web Console
The easiest way to create datasets is through the web console:
Start the console:
./launch.shAdd a dataset:
Click Browse to open directory picker
Or drag & drop a folder into the input field
Or type the path manually
Submit: Click "Create Dataset"
Monitor: Watch real-time indexing progress
Dataset Structure
Each dataset has three components stored in datasets/<name>/:
Manual Dataset Creation
Configuration options:
Dataset Operations
โโโ your-dataset/ โโโ manifest.json # Configuration โโโ metadata.json # Document metadata โโโ index/ # FAISS index directory โโโ docs.index # FAISS index file
Metadata Format
metadata.json:
Creating a Dataset
See the sample dataset for a complete example.
To create embeddings from your documents, use a tool like:
FAISS for indexing
Custom embedding pipeline
๏ฟฝ MCP Integration
MCPower works with any MCP-compatible client. Here's how to connect it:
VS Code Copilot
Add to your VS Code settings.json:
Cherry Studio
Add to Cherry Studio's MCP configuration:
Available Tools
๐ knowledge.search
Search your knowledge bases using natural language.
Example:
Response:
๐ knowledge.listDatasets
List all available datasets.
Response:
๐ ๏ธ Development
Project Structure
Development Scripts
Creating a New Tool
Define the tool in
src/tools/yourTool.ts:
Implement the handler in
src/tools/handlers/yourTool.tsRegister it in
src/server.tsAdd tests in
tests/unit/tools/yourTool.test.ts
๐งช Testing
Quick Test
Test Coverage
โ 86 tests passing across:
๐ 18 search edge cases (empty queries, special chars, large results)
๐ ๏ธ 15 search tool validations
๐ 11 dataset registry operations
๐ 9 listDatasets tool tests
๐ 9 startup integration tests
๐พ 8 knowledge store caching
โก 6 performance benchmarks (<500ms p95)
๐ 5+5 integration tests (search + listDatasets)
Integration Testing
๐ Troubleshooting
Error: Dataset not found: your-dataset
Solutions:
โ Verify dataset exists in
datasets/directoryโ Check
config.jsonhas correct name fieldโ Restart server to reload dataset registry
โ Use web console to verify dataset list
Error: Python bridge command failed
Solutions:
โ Verify Python 3.10+ is installed:
python3 --versionโ Check virtual environment:
.venv/bin/python --versionโ Reinstall dependencies:
.venv/bin/pip install -r python/requirements.txtโ Test FAISS:
.venv/bin/python -c "import faiss; print('OK')"โ Check .env file has correct
MCPOWER_PYTHONpath
Issue: Queries taking >500ms
Solutions:
โ Check dataset size (>10k chunks may need optimization)
โ Verify FAISS index is properly trained
โ Reduce
topKparameter (try 3-5 instead of 10+)โ Consider using faster embedding model
โ Use GPU-accelerated FAISS for large datasets
Error: ERR_CONNECTION_REFUSED
Solutions:
โ Ensure web server is running:
npm run webโ Check port 4173 isn't blocked by firewall
โ Try accessing
http://127.0.0.1:4173directlyโ Check console logs for startup errors
Get detailed diagnostics:
This shows:
Dataset loading details
Python bridge communication
FAISS index operations
Search query execution
Error stack traces
๐ค Contributing
We welcome contributions! Here's how to get started:
Quick Start
Areas We Need Help
๐จ UI/UX: Improve web console design
๐ Documentation: Tutorials, examples, guides
๐งช Testing: More test coverage, edge cases
๐ Performance: Optimization, caching strategies
๐ Integrations: New MCP clients, data sources
๐ Bug Fixes: See issues
Code Guidelines
Write tests for new features
Follow TypeScript/Python best practices
Update documentation for API changes
Use conventional commit messages
Keep PRs focused and atomic
๐ License
MIT License - see LICENSE for details
๐ Acknowledgments
Built with amazing open-source tools:
FAISS - Vector similarity search by Facebook Research
sentence-transformers - State-of-the-art text embeddings
MCP - Model Context Protocol by Anthropic
TypeScript - Type-safe JavaScript
Express - Fast web framework
โญ Star this repo if you find it useful!
Made with โค๏ธ by the MCPower team
๐ Report Bug โข โจ Request Feature โข ๐ Documentation
Look for error logs with:
manifestPath: Location of problematic manifesterrorType: Type of error (json_parse_error, file_not_found, validation_error)error: Detailed error message
๐ License
ISC
๐ค Contributing
Contributions welcome! Please read our contributing guidelines before submitting PRs.
๐ Links
๐ Project Status
โ Phase 1-5: Complete (All user stories implemented)
๐ง Phase 6: Polish & documentation (in progress)
Made with โค๏ธ for the MCP community