mirror of
https://github.com/ruvnet/RuVector.git
synced 2026-05-25 06:36:37 +00:00
193 lines
5 KiB
Markdown
193 lines
5 KiB
Markdown
# RuVector MCP Server Test Scripts
|
|
|
|
This directory contains test scripts demonstrating how to use the RuVector MCP (Model Context Protocol) server.
|
|
|
|
## Test Scripts
|
|
|
|
### 1. `mcp-demo.js` - Full Featured Demo
|
|
|
|
A comprehensive demonstration of the MCP server capabilities using the official MCP SDK.
|
|
|
|
**Features:**
|
|
- Creates a vector database with configurable dimensions
|
|
- Inserts sample document vectors with metadata
|
|
- Performs semantic search queries
|
|
- Demonstrates batch operations
|
|
- Shows database statistics
|
|
|
|
**Prerequisites:**
|
|
```bash
|
|
# Install dependencies (if not already installed)
|
|
npm install
|
|
|
|
# Build the MCP server binary
|
|
cargo build --release -p ruvector-cli --bin ruvector-mcp
|
|
```
|
|
|
|
**Usage:**
|
|
```bash
|
|
node tests/mcp-demo.js
|
|
```
|
|
|
|
### 2. `mcp-simple-test.js` - Simple JSON-RPC Test
|
|
|
|
A lightweight test script using direct JSON-RPC communication without requiring the full SDK.
|
|
|
|
**Features:**
|
|
- Minimal dependencies
|
|
- Direct JSON-RPC over stdio
|
|
- Simple vector operations (create, insert, search)
|
|
- Database statistics
|
|
|
|
**Usage:**
|
|
```bash
|
|
node tests/mcp-simple-test.js
|
|
```
|
|
|
|
**Custom server path:**
|
|
```bash
|
|
MCP_SERVER_PATH=/path/to/ruvector-mcp node tests/mcp-simple-test.js
|
|
```
|
|
|
|
## Available MCP Tools
|
|
|
|
The RuVector MCP server provides the following tools:
|
|
|
|
### Vector Database Operations
|
|
- `vector_db_create` - Create a new vector database
|
|
- `vector_db_insert` - Insert/upsert vectors with metadata
|
|
- `vector_db_search` - Perform semantic similarity search
|
|
- `vector_db_stats` - Get database statistics
|
|
- `vector_db_backup` - Backup database to file
|
|
|
|
### GNN (Graph Neural Network) Operations
|
|
- `gnn_layer_create` - Create/cache GNN layers
|
|
- `gnn_forward` - Forward pass through GNN layer
|
|
- `gnn_batch_forward` - Batch GNN operations
|
|
- `gnn_cache_stats` - Get GNN cache statistics
|
|
- `gnn_compress` - Compress embeddings
|
|
- `gnn_decompress` - Decompress embeddings
|
|
|
|
## Example: Creating a Collection and Searching
|
|
|
|
```javascript
|
|
const { SimpleMCPClient, generateEmbedding } = require('./mcp-simple-test.js');
|
|
|
|
async function example() {
|
|
const client = new SimpleMCPClient({
|
|
cmd: './target/release/ruvector-mcp',
|
|
args: []
|
|
});
|
|
|
|
await client.start();
|
|
|
|
// Create database
|
|
await client.callTool('vector_db_create', {
|
|
path: './my-vectors.db',
|
|
dimensions: 128,
|
|
distance_metric: 'cosine'
|
|
});
|
|
|
|
// Insert vectors
|
|
await client.callTool('vector_db_insert', {
|
|
db_path: './my-vectors.db',
|
|
vectors: [{
|
|
id: 'doc-1',
|
|
vector: generateEmbedding(128, 1),
|
|
metadata: { title: 'My Document' }
|
|
}]
|
|
});
|
|
|
|
// Search
|
|
const results = await client.callTool('vector_db_search', {
|
|
db_path: './my-vectors.db',
|
|
query: generateEmbedding(128, 1.1),
|
|
k: 5
|
|
});
|
|
|
|
console.log(JSON.parse(results.content[0].text));
|
|
|
|
await client.close();
|
|
}
|
|
```
|
|
|
|
## Distance Metrics
|
|
|
|
Supported distance metrics:
|
|
- `cosine` - Cosine similarity (recommended for normalized vectors)
|
|
- `euclidean` - Euclidean distance (L2)
|
|
- `dotproduct` - Dot product similarity
|
|
- `manhattan` - Manhattan distance (L1)
|
|
|
|
## Integration with Claude Code
|
|
|
|
To use the MCP server with Claude Code:
|
|
|
|
```bash
|
|
# Add to Claude Code MCP configuration
|
|
claude mcp add ruvector -- /path/to/ruvector-mcp
|
|
```
|
|
|
|
Then Claude can use the vector database tools directly.
|
|
|
|
## Performance Tips
|
|
|
|
1. **Batch Operations**: Use batch insert for better performance
|
|
2. **Dimensions**: Choose dimensions based on your embedding model (common: 128, 384, 768, 1536)
|
|
3. **Distance Metric**: Use `cosine` for normalized embeddings, `euclidean` for unnormalized
|
|
4. **GNN Caching**: The server automatically caches GNN layers for ~250-500x speedup
|
|
|
|
## Troubleshooting
|
|
|
|
### Server binary not found
|
|
```bash
|
|
# Build the release version
|
|
cargo build --release -p ruvector-cli --bin ruvector-mcp
|
|
|
|
# Or use debug version (slower)
|
|
cargo build -p ruvector-cli --bin ruvector-mcp
|
|
MCP_SERVER_PATH=./target/debug/ruvector-mcp node tests/mcp-simple-test.js
|
|
```
|
|
|
|
### Dependencies missing
|
|
```bash
|
|
# Install Node.js dependencies
|
|
npm install
|
|
|
|
# Or install just the MCP SDK
|
|
npm install @modelcontextprotocol/sdk
|
|
```
|
|
|
|
### Permission denied
|
|
```bash
|
|
# Make the test script executable
|
|
chmod +x tests/mcp-demo.js
|
|
chmod +x tests/mcp-simple-test.js
|
|
```
|
|
|
|
## Architecture
|
|
|
|
```
|
|
┌─────────────────┐
|
|
│ Test Script │
|
|
│ (Node.js) │
|
|
└────────┬────────┘
|
|
│ JSON-RPC
|
|
│ over stdio
|
|
┌────────▼────────┐
|
|
│ MCP Server │
|
|
│ (Rust binary) │
|
|
└────────┬────────┘
|
|
│
|
|
┌────────▼────────┐
|
|
│ RuVector DB │
|
|
│ (Rust crate) │
|
|
└─────────────────┘
|
|
```
|
|
|
|
## Further Reading
|
|
|
|
- [Model Context Protocol Specification](https://github.com/modelcontextprotocol/specification)
|
|
- [RuVector Documentation](../README.md)
|
|
- [MCP Server Implementation](../crates/ruvector-cli/src/mcp_server.rs)
|
|
- [MCP Handler Reference](../crates/ruvector-cli/src/mcp/handlers.rs)
|