MCP Power - Knowledge Search Server
A Model Context Protocol (MCP) server that provides semantic search capabilities over knowledge datasets using FAISS vector embeddings.
π Features
Semantic Search: Search knowledge datasets using natural language queries
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
π Table of Contents
β‘ Quick Start
See Quick Start Guide for detailed setup instructions.
1. Install Dependencies
2. Try the Sample Dataset
3. Search from Your MCP Client
ποΈ Architecture
π¦ Installation
Prerequisites
Node.js: 18.x or higher
Python: 3.10 or higher
npm: 9.x or higher
From Source
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
Dataset Structure
Each dataset requires three components:
Manifest Format
manifest.json:
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 Tools
knowledge.search
Search a knowledge dataset using natural language queries.
Input Schema:
Output:
Example:
knowledge.listDatasets
List all available datasets with metadata.
Input Schema:
Output:
π οΈ Development
Project Structure
Development Scripts
Adding a New Dataset
Create dataset directory:
datasets/your-dataset/Add
manifest.jsonwith dataset configurationAdd
metadata.jsonwith document metadataAdd FAISS index in
index/directoryRestart the server
π§ͺ Testing
Running Tests
Test Coverage
Current test coverage: 86 tests passing
18 search edge case tests (Phase 6)
15 search tool tests
11 dataset registry tests
9 listDatasets tests
9 startup integration tests
8 knowledge store tests
6 performance tests (Phase 6)
5 listDatasets integration tests
5 search integration tests
π Troubleshooting
Dataset Not Found
Error: Dataset not found: your-dataset
Solutions:
Verify the dataset ID in manifest.json matches the query
Check that manifest.json is in the datasets directory
Restart the server to reload dataset registry
Python Bridge Failures
Error: Python bridge command failed
Solutions:
Ensure Python 3.10+ is installed and in PATH
Install Python dependencies:
pip install -r python/requirements.txtCheck that FAISS is installed:
python -c "import faiss"
Slow Search Performance
Issue: Search takes >500ms
Solutions:
Check FAISS index size (smaller is faster)
Ensure index is trained:
python python/bridge.py validate-index <path>Consider using a GPU-accelerated FAISS build
Reduce topK parameter
Dataset Loading Errors
Check startup logs for detailed error messages:
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
local-only server
The server can only run on the client's local machine because it depends on local resources.
Enables semantic search across multiple knowledge datasets using FAISS vector embeddings, allowing natural language queries to find relevant documents with fast retrieval.