ainative-zerodb-mcp-server
v2.0.8
Published
AINative ZeroDB MCP Server - 60 operations for vector search, quantum compression, NoSQL, files, events, RLHF, and persistent memory for AI agents with enterprise security. Production-ready MCP integration for Claude, Windsurf, and other AI assistants.
Maintainers
Keywords
Readme
ZeroDB MCP Server v2.0.8
Enterprise-grade Model Context Protocol (MCP) server providing full access to ZeroDB's vector search, quantum compression, NoSQL operations, and persistent memory for AI agents.
Key Features
- 60 Complete Operations - Full API coverage across all ZeroDB capabilities
- Vector Search - Semantic similarity search with 1536-dimensional embeddings
- Quantum Compression - Advanced vector compression using quantum algorithms
- NoSQL Tables - Flexible table operations for structured data
- File Storage - Secure file upload, download, and management
- Event System - Event-driven architecture with pub/sub support
- Project Management - Multi-tenant project isolation and management
- RLHF Integration - Reinforcement Learning from Human Feedback collection
- Admin Tools - System monitoring, optimization, and health checks
- Enterprise Security - JWT authentication with automatic token renewal
- 90%+ Test Coverage - Comprehensive test suite for production reliability
Table of Contents
- Installation
- Quick Start
- API Reference
- Configuration
- Examples
- Migration Guide
- Troubleshooting
- Contributing
- License
Installation
NPM Global Installation
npm install -g ainative-zerodb-mcp-serverNPX (No Installation Required)
npx ainative-zerodb-mcp-serverRequirements
- Node.js >= 18.0.0
- NPM >= 9.0.0
- ZeroDB account with API credentials (see below)
Getting Started
Step 1: Create Your ZeroDB Account
Before using the MCP server, you need a ZeroDB account and project.
Option A: Register via Web (Recommended)
Visit: https://api.ainative.studio/docs
- Click on "Register User" endpoint
- Use the "Try it out" feature
- Enter your email, password, and username
Option B: Register via API
curl -X POST 'https://api.ainative.studio/v1/public/auth/register' \
-H 'Content-Type: application/json' \
-d '{
"email": "[email protected]",
"password": "YourSecurePassword123!",
"username": "yourname"
}'Response:
{
"email": "[email protected]",
"id": "user-uuid-here",
"username": "yourname"
}Step 2: Create a Project
After registration, create a project to get your PROJECT_ID:
# 1. Login to get your access token
curl -X POST 'https://api.ainative.studio/v1/public/auth/login-json' \
-H 'Content-Type: application/json' \
-d '{
"username": "[email protected]",
"password": "YourSecurePassword123!"
}'Response:
{
"access_token": "eyJhbGc...",
"token_type": "bearer",
"expires_in": 1800
}# 2. Create a project using your token
curl -X POST 'https://api.ainative.studio/v1/public/projects' \
-H 'Authorization: Bearer YOUR_ACCESS_TOKEN_HERE' \
-H 'Content-Type: application/json' \
-d '{
"name": "My ZeroDB MCP Project",
"description": "Project for Claude Desktop MCP integration"
}'Response:
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"name": "My ZeroDB MCP Project",
"status": "ACTIVE",
...
}Save this Project ID! You'll need it for the MCP configuration.
Quick Start
Step 3: Configure Claude Desktop
Add to your Claude Desktop configuration file:
MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
{
"mcpServers": {
"zerodb": {
"command": "npx",
"args": ["ainative-zerodb-mcp-server"],
"env": {
"ZERODB_API_URL": "https://api.ainative.studio",
"ZERODB_PROJECT_ID": "your-project-id-here",
"ZERODB_USERNAME": "[email protected]",
"ZERODB_PASSWORD": "your-password",
"MCP_CONTEXT_WINDOW": "8192",
"MCP_RETENTION_DAYS": "30"
}
}
}
}Step 4: Restart Claude Desktop
After saving the configuration, restart Claude Desktop to activate the MCP server.
Step 5: Test Your First Operation
In Claude Desktop, try:
Store a memory: "This is my first ZeroDB memory entry"Claude will use the zerodb_store_memory tool to persist this information.
API Reference
All 60 operations are organized into 9 categories. Each operation is exposed as an MCP tool that Claude can invoke.
Memory Operations
1. zerodb_store_memory
Store agent memory in ZeroDB for persistent context across sessions.
Parameters:
content(string, required) - Memory content to storerole(string, required) - Message role:"user","assistant", or"system"session_id(string, optional) - Session identifier (auto-generated if not provided)agent_id(string, optional) - Agent identifier (auto-generated if not provided)metadata(object, optional) - Additional metadata
Returns:
{
"memory_id": "uuid",
"created_at": "2025-10-14T12:00:00Z"
}Example:
{
"content": "User prefers dark mode and TypeScript",
"role": "system",
"metadata": {
"category": "preferences"
}
}2. zerodb_search_memory
Search agent memory using semantic similarity.
Parameters:
query(string, required) - Search querysession_id(string, optional) - Filter by sessionagent_id(string, optional) - Filter by agentrole(string, optional) - Filter by rolelimit(number, optional) - Max results (default: 10)
Returns:
{
"memories": [
{
"memory_id": "uuid",
"content": "string",
"role": "user|assistant|system",
"created_at": "timestamp",
"similarity_score": 0.95
}
]
}Example:
{
"query": "What were the user's preferences?",
"limit": 5
}3. zerodb_get_context
Get agent context window for current session, optimized for token limits.
Parameters:
session_id(string, required) - Session identifieragent_id(string, optional) - Agent identifiermax_tokens(number, optional) - Max tokens in context (default: 8192)
Returns:
{
"session_id": "uuid",
"agent_id": "uuid",
"total_tokens": 1024,
"memory_count": 15,
"messages": [
{
"role": "user",
"content": "string",
"timestamp": "2025-10-14T12:00:00Z"
}
]
}Example:
{
"session_id": "session-123",
"max_tokens": 4096
}Vector Operations
4. zerodb_store_vector
Store vector embedding with metadata (exactly 1536 dimensions).
Parameters:
vector_embedding(array[number], required) - 1536-dimensional vectordocument(string, required) - Source document textmetadata(object, optional) - Document metadatanamespace(string, optional) - Vector namespace (default: "windsurf")
Returns:
{
"vector_id": "uuid",
"namespace": "windsurf"
}Example:
{
"vector_embedding": [0.1, 0.2, ..., 0.9], // 1536 values
"document": "This is the source text",
"metadata": {
"source": "documentation",
"page": 42
}
}5. zerodb_batch_upsert_vectors
Batch upsert multiple vectors for improved performance.
Parameters:
vectors(array, required) - Array of vector objectsvector_embedding(array[number], required) - 1536-dimensional vectordocument(string, required) - Source documentmetadata(object, optional) - Document metadata
namespace(string, optional) - Vector namespace
Returns:
{
"success_count": 100,
"failed_count": 0,
"vector_ids": ["uuid1", "uuid2", ...]
}Example:
{
"vectors": [
{
"vector_embedding": [...],
"document": "Document 1",
"metadata": {"index": 1}
},
{
"vector_embedding": [...],
"document": "Document 2",
"metadata": {"index": 2}
}
],
"namespace": "knowledge-base"
}6. zerodb_search_vectors
Search vectors using semantic similarity.
Parameters:
query_vector(array[number], required) - 1536-dimensional query vectornamespace(string, optional) - Vector namespacelimit(number, optional) - Max results (default: 10)threshold(number, optional) - Similarity threshold 0-1 (default: 0.7)
Returns:
{
"vectors": [
{
"vector_id": "uuid",
"document": "string",
"similarity_score": 0.95,
"metadata": {}
}
]
}Example:
{
"query_vector": [...], // 1536 values
"namespace": "windsurf",
"limit": 20,
"threshold": 0.8
}7. zerodb_delete_vector
Delete a specific vector by ID.
Parameters:
vector_id(string, required) - Vector UUID to delete
Returns:
{
"success": true,
"deleted_id": "uuid"
}Example:
{
"vector_id": "123e4567-e89b-12d3-a456-426614174000"
}8. zerodb_get_vector
Retrieve a specific vector by ID.
Parameters:
vector_id(string, required) - Vector UUID to retrieve
Returns:
{
"vector_id": "uuid",
"vector_embedding": [...],
"document": "string",
"metadata": {},
"created_at": "timestamp"
}Example:
{
"vector_id": "123e4567-e89b-12d3-a456-426614174000"
}9. zerodb_list_vectors
List vectors with pagination and filtering.
Parameters:
namespace(string, optional) - Filter by namespacelimit(number, optional) - Results per page (default: 50)offset(number, optional) - Pagination offset (default: 0)
Returns:
{
"vectors": [...],
"total_count": 1000,
"limit": 50,
"offset": 0
}Example:
{
"namespace": "windsurf",
"limit": 100,
"offset": 200
}10. zerodb_vector_stats
Get statistics about vector storage.
Parameters:
namespace(string, optional) - Filter by namespace
Returns:
{
"total_vectors": 10000,
"namespaces": {
"windsurf": 5000,
"default": 5000
},
"storage_bytes": 1048576,
"avg_dimension": 1536
}Example:
{
"namespace": "windsurf"
}11. zerodb_create_vector_index
Create a vector search index for improved performance.
Parameters:
namespace(string, required) - Namespace to indexindex_type(string, optional) - Index type: "ivfflat" or "hnsw" (default: "hnsw")params(object, optional) - Index-specific parameters
Returns:
{
"index_id": "uuid",
"namespace": "windsurf",
"index_type": "hnsw",
"status": "created"
}Example:
{
"namespace": "windsurf",
"index_type": "hnsw",
"params": {
"m": 16,
"ef_construction": 200
}
}12. zerodb_optimize_vectors
Optimize vector storage and indexes.
Parameters:
namespace(string, optional) - Namespace to optimize
Returns:
{
"optimized": true,
"space_saved_bytes": 102400,
"duration_ms": 1500
}Example:
{
"namespace": "windsurf"
}13. zerodb_export_vectors
Export vectors to external format.
Parameters:
namespace(string, required) - Namespace to exportformat(string, optional) - Export format: "json" or "csv" (default: "json")include_embeddings(boolean, optional) - Include vector data (default: false)
Returns:
{
"export_id": "uuid",
"download_url": "https://...",
"expires_at": "timestamp"
}Example:
{
"namespace": "windsurf",
"format": "json",
"include_embeddings": true
}Quantum Operations
14. zerodb_quantum_compress
Compress vector using quantum algorithms for reduced storage.
Parameters:
vector_embedding(array[number], required) - 1536-dimensional vector to compresscompression_ratio(number, optional) - Target ratio 0-1 (default: 0.5)algorithm(string, optional) - Algorithm: "qaoa" or "vqe" (default: "qaoa")
Returns:
{
"compressed_vector": [...],
"original_dimensions": 1536,
"compressed_dimensions": 768,
"compression_ratio": 0.5,
"fidelity_score": 0.98
}Example:
{
"vector_embedding": [...],
"compression_ratio": 0.6,
"algorithm": "qaoa"
}15. zerodb_quantum_decompress
Decompress quantum-compressed vector.
Parameters:
compressed_vector(array[number], required) - Compressed vector dataoriginal_dimensions(number, required) - Original dimension count
Returns:
{
"decompressed_vector": [...],
"dimensions": 1536,
"reconstruction_error": 0.02
}Example:
{
"compressed_vector": [...],
"original_dimensions": 1536
}16. zerodb_quantum_hybrid_search
Perform hybrid search using quantum-enhanced similarity.
Parameters:
query_vector(array[number], required) - 1536-dimensional querynamespace(string, optional) - Vector namespacelimit(number, optional) - Max results (default: 10)quantum_weight(number, optional) - Quantum influence 0-1 (default: 0.5)
Returns:
{
"vectors": [
{
"vector_id": "uuid",
"document": "string",
"similarity_score": 0.96,
"quantum_score": 0.94,
"hybrid_score": 0.95
}
]
}Example:
{
"query_vector": [...],
"namespace": "windsurf",
"limit": 10,
"quantum_weight": 0.7
}17. zerodb_quantum_optimize
Optimize vector space using quantum optimization.
Parameters:
namespace(string, required) - Namespace to optimizeoptimization_target(string, optional) - "storage" or "search_speed" (default: "storage")
Returns:
{
"optimized": true,
"improvement_percentage": 35.5,
"duration_ms": 5000
}Example:
{
"namespace": "windsurf",
"optimization_target": "search_speed"
}18. zerodb_quantum_feature_map
Generate quantum feature map for vector.
Parameters:
vector_embedding(array[number], required) - 1536-dimensional vectorfeature_map_type(string, optional) - "zz" or "pauli" (default: "zz")
Returns:
{
"feature_map": [...],
"quantum_circuit_depth": 10,
"qubit_count": 12
}Example:
{
"vector_embedding": [...],
"feature_map_type": "pauli"
}19. zerodb_quantum_kernel
Compute quantum kernel similarity between vectors.
Parameters:
vector_a(array[number], required) - First 1536-dimensional vectorvector_b(array[number], required) - Second 1536-dimensional vectorkernel_type(string, optional) - "linear" or "rbf" (default: "rbf")
Returns:
{
"kernel_similarity": 0.92,
"quantum_advantage": 0.15,
"computation_time_ms": 45
}Example:
{
"vector_a": [...],
"vector_b": [...],
"kernel_type": "rbf"
}Table/NoSQL Operations
20. zerodb_create_table
Create a new NoSQL table with schema.
Parameters:
table_name(string, required) - Table nameschema(object, required) - JSON schema definitiondescription(string, optional) - Table description
Returns:
{
"table_id": "uuid",
"table_name": "string",
"created_at": "timestamp"
}Example:
{
"table_name": "user_profiles",
"schema": {
"user_id": "uuid",
"name": "string",
"email": "string",
"created_at": "timestamp"
},
"description": "User profile information"
}21. zerodb_list_tables
List all tables in project.
Parameters:
limit(number, optional) - Results per page (default: 50)offset(number, optional) - Pagination offset (default: 0)
Returns:
{
"tables": [
{
"table_id": "uuid",
"table_name": "string",
"row_count": 1000,
"created_at": "timestamp"
}
],
"total_count": 10
}Example:
{
"limit": 100,
"offset": 0
}22. zerodb_get_table
Get table details and schema.
Parameters:
table_id(string, required) - Table UUID
Returns:
{
"table_id": "uuid",
"table_name": "string",
"schema": {},
"row_count": 1000,
"created_at": "timestamp"
}Example:
{
"table_id": "123e4567-e89b-12d3-a456-426614174000"
}23. zerodb_delete_table
Delete a table and all its data.
Parameters:
table_id(string, required) - Table UUID to delete
Returns:
{
"success": true,
"deleted_id": "uuid",
"rows_deleted": 1000
}Example:
{
"table_id": "123e4567-e89b-12d3-a456-426614174000"
}24. zerodb_insert_rows
Insert rows into table.
Parameters:
table_id(string, required) - Table UUIDrows(array, required) - Array of row objects
Returns:
{
"inserted_count": 100,
"row_ids": ["uuid1", "uuid2", ...]
}Example:
{
"table_id": "123e4567-e89b-12d3-a456-426614174000",
"rows": [
{
"user_id": "user-1",
"name": "John Doe",
"email": "[email protected]"
},
{
"user_id": "user-2",
"name": "Jane Smith",
"email": "[email protected]"
}
]
}25. zerodb_query_rows
Query table rows with filters.
Parameters:
table_id(string, required) - Table UUIDfilters(object, optional) - Query filterslimit(number, optional) - Max results (default: 50)offset(number, optional) - Pagination offset (default: 0)
Returns:
{
"rows": [...],
"total_count": 1000,
"limit": 50,
"offset": 0
}Example:
{
"table_id": "123e4567-e89b-12d3-a456-426614174000",
"filters": {
"email": {
"$contains": "@example.com"
}
},
"limit": 100
}26. zerodb_update_rows
Update rows in table.
Parameters:
table_id(string, required) - Table UUIDfilters(object, required) - Row selection filtersupdates(object, required) - Fields to update
Returns:
{
"updated_count": 50,
"row_ids": ["uuid1", "uuid2", ...]
}Example:
{
"table_id": "123e4567-e89b-12d3-a456-426614174000",
"filters": {
"user_id": "user-1"
},
"updates": {
"email": "[email protected]"
}
}27. zerodb_delete_rows
Delete rows from table.
Parameters:
table_id(string, required) - Table UUIDfilters(object, required) - Row selection filters
Returns:
{
"deleted_count": 25,
"row_ids": ["uuid1", "uuid2", ...]
}Example:
{
"table_id": "123e4567-e89b-12d3-a456-426614174000",
"filters": {
"created_at": {
"$lt": "2025-01-01"
}
}
}File Operations
28. zerodb_upload_file
Upload file to ZeroDB storage.
Parameters:
file_name(string, required) - File namefile_data(string, required) - Base64-encoded file datacontent_type(string, optional) - MIME typemetadata(object, optional) - File metadata
Returns:
{
"file_id": "uuid",
"file_name": "string",
"size_bytes": 1024,
"upload_url": "string"
}Example:
{
"file_name": "document.pdf",
"file_data": "base64encodeddata...",
"content_type": "application/pdf",
"metadata": {
"category": "documentation"
}
}29. zerodb_download_file
Download file from ZeroDB storage.
Parameters:
file_id(string, required) - File UUID
Returns:
{
"file_id": "uuid",
"file_name": "string",
"file_data": "base64encodeddata...",
"content_type": "string",
"size_bytes": 1024
}Example:
{
"file_id": "123e4567-e89b-12d3-a456-426614174000"
}30. zerodb_list_files
List files with pagination.
Parameters:
limit(number, optional) - Results per page (default: 50)offset(number, optional) - Pagination offset (default: 0)content_type(string, optional) - Filter by MIME type
Returns:
{
"files": [
{
"file_id": "uuid",
"file_name": "string",
"size_bytes": 1024,
"content_type": "string",
"created_at": "timestamp"
}
],
"total_count": 100
}Example:
{
"limit": 100,
"content_type": "application/pdf"
}31. zerodb_delete_file
Delete file from storage.
Parameters:
file_id(string, required) - File UUID to delete
Returns:
{
"success": true,
"deleted_id": "uuid"
}Example:
{
"file_id": "123e4567-e89b-12d3-a456-426614174000"
}32. zerodb_get_file_metadata
Get file metadata without downloading.
Parameters:
file_id(string, required) - File UUID
Returns:
{
"file_id": "uuid",
"file_name": "string",
"size_bytes": 1024,
"content_type": "string",
"metadata": {},
"created_at": "timestamp"
}Example:
{
"file_id": "123e4567-e89b-12d3-a456-426614174000"
}33. zerodb_generate_presigned_url
Generate temporary download URL.
Parameters:
file_id(string, required) - File UUIDexpiry_seconds(number, optional) - URL validity (default: 3600)
Returns:
{
"file_id": "uuid",
"presigned_url": "https://...",
"expires_at": "timestamp"
}Example:
{
"file_id": "123e4567-e89b-12d3-a456-426614174000",
"expiry_seconds": 7200
}Event Operations
34. zerodb_create_event
Create a new event in the event system.
Parameters:
event_type(string, required) - Event type identifierevent_data(object, required) - Event payloadmetadata(object, optional) - Event metadata
Returns:
{
"event_id": "uuid",
"event_type": "string",
"created_at": "timestamp"
}Example:
{
"event_type": "user.signup",
"event_data": {
"user_id": "user-123",
"email": "[email protected]"
},
"metadata": {
"source": "web"
}
}35. zerodb_list_events
List events with filtering and pagination.
Parameters:
event_type(string, optional) - Filter by event typestart_date(string, optional) - Filter by start date (ISO 8601)end_date(string, optional) - Filter by end date (ISO 8601)limit(number, optional) - Results per page (default: 50)offset(number, optional) - Pagination offset (default: 0)
Returns:
{
"events": [
{
"event_id": "uuid",
"event_type": "string",
"event_data": {},
"created_at": "timestamp"
}
],
"total_count": 1000
}Example:
{
"event_type": "user.signup",
"start_date": "2025-10-01T00:00:00Z",
"limit": 100
}36. zerodb_get_event
Get specific event by ID.
Parameters:
event_id(string, required) - Event UUID
Returns:
{
"event_id": "uuid",
"event_type": "string",
"event_data": {},
"metadata": {},
"created_at": "timestamp"
}Example:
{
"event_id": "123e4567-e89b-12d3-a456-426614174000"
}37. zerodb_subscribe_events
Subscribe to event stream (WebSocket).
Parameters:
event_types(array[string], required) - Event types to subscribe tofilters(object, optional) - Additional filters
Returns:
{
"subscription_id": "uuid",
"event_types": ["user.signup", "user.login"],
"websocket_url": "wss://..."
}Example:
{
"event_types": ["user.signup", "user.login"],
"filters": {
"source": "web"
}
}38. zerodb_event_stats
Get event statistics and analytics.
Parameters:
event_type(string, optional) - Filter by event typestart_date(string, optional) - Start date (ISO 8601)end_date(string, optional) - End date (ISO 8601)group_by(string, optional) - Group by: "hour", "day", "week" (default: "day")
Returns:
{
"total_events": 10000,
"event_types": {
"user.signup": 1000,
"user.login": 9000
},
"timeline": [
{
"date": "2025-10-14",
"count": 500
}
]
}Example:
{
"start_date": "2025-10-01T00:00:00Z",
"end_date": "2025-10-14T23:59:59Z",
"group_by": "day"
}Project Operations
39. zerodb_create_project
Create a new ZeroDB project.
Parameters:
project_name(string, required) - Project namedescription(string, optional) - Project descriptionsettings(object, optional) - Project settings
Returns:
{
"project_id": "uuid",
"project_name": "string",
"created_at": "timestamp"
}Example:
{
"project_name": "My AI Application",
"description": "Vector search for customer support",
"settings": {
"retention_days": 90
}
}40. zerodb_get_project
Get project details.
Parameters:
project_id(string, required) - Project UUID
Returns:
{
"project_id": "uuid",
"project_name": "string",
"description": "string",
"settings": {},
"created_at": "timestamp"
}Example:
{
"project_id": "123e4567-e89b-12d3-a456-426614174000"
}41. zerodb_list_projects
List all accessible projects.
Parameters:
limit(number, optional) - Results per page (default: 50)offset(number, optional) - Pagination offset (default: 0)
Returns:
{
"projects": [
{
"project_id": "uuid",
"project_name": "string",
"created_at": "timestamp"
}
],
"total_count": 10
}Example:
{
"limit": 100
}42. zerodb_update_project
Update project settings.
Parameters:
project_id(string, required) - Project UUIDproject_name(string, optional) - New project namedescription(string, optional) - New descriptionsettings(object, optional) - Updated settings
Returns:
{
"project_id": "uuid",
"updated_fields": ["project_name", "settings"],
"updated_at": "timestamp"
}Example:
{
"project_id": "123e4567-e89b-12d3-a456-426614174000",
"settings": {
"retention_days": 120
}
}43. zerodb_delete_project
Delete a project and all its data.
Parameters:
project_id(string, required) - Project UUID to deleteconfirm(boolean, required) - Must be true to confirm deletion
Returns:
{
"success": true,
"deleted_id": "uuid",
"deleted_at": "timestamp"
}Example:
{
"project_id": "123e4567-e89b-12d3-a456-426614174000",
"confirm": true
}44. zerodb_get_project_stats
Get project usage statistics.
Parameters:
project_id(string, required) - Project UUIDstart_date(string, optional) - Start date (ISO 8601)end_date(string, optional) - End date (ISO 8601)
Returns:
{
"project_id": "uuid",
"vector_count": 10000,
"memory_count": 5000,
"table_count": 10,
"file_count": 100,
"storage_bytes": 10485760,
"api_calls": 50000
}Example:
{
"project_id": "123e4567-e89b-12d3-a456-426614174000",
"start_date": "2025-10-01T00:00:00Z"
}45. zerodb_enable_database
Enable database features for project.
Parameters:
project_id(string, required) - Project UUIDfeatures(array[string], required) - Features to enable: ["vectors", "tables", "files", "events"]
Returns:
{
"project_id": "uuid",
"enabled_features": ["vectors", "tables"],
"enabled_at": "timestamp"
}Example:
{
"project_id": "123e4567-e89b-12d3-a456-426614174000",
"features": ["vectors", "tables", "files"]
}RLHF Operations
46. zerodb_rlhf_interaction
Collect user interaction for RLHF training.
Parameters:
session_id(string, required) - Session identifieruser_input(string, required) - User's inputagent_response(string, required) - Agent's responsefeedback_score(number, optional) - User rating 1-5metadata(object, optional) - Additional context
Returns:
{
"interaction_id": "uuid",
"collected_at": "timestamp"
}Example:
{
"session_id": "session-123",
"user_input": "How do I reset my password?",
"agent_response": "You can reset your password by...",
"feedback_score": 5,
"metadata": {
"model": "claude-3-sonnet",
"response_time_ms": 1200
}
}47. zerodb_rlhf_agent_feedback
Collect feedback about agent performance.
Parameters:
agent_id(string, required) - Agent identifiersession_id(string, required) - Session identifierfeedback_type(string, required) - "positive" or "negative"feedback_text(string, optional) - Detailed feedbackmetrics(object, optional) - Performance metrics
Returns:
{
"feedback_id": "uuid",
"collected_at": "timestamp"
}Example:
{
"agent_id": "agent-123",
"session_id": "session-123",
"feedback_type": "positive",
"feedback_text": "Very helpful and accurate responses",
"metrics": {
"accuracy": 0.95,
"helpfulness": 0.9
}
}48. zerodb_rlhf_workflow
Collect feedback about workflow completion.
Parameters:
workflow_id(string, required) - Workflow identifiersession_id(string, required) - Session identifiercompleted(boolean, required) - Workflow completion statusduration_ms(number, optional) - Workflow durationfeedback(object, optional) - Workflow feedback
Returns:
{
"workflow_feedback_id": "uuid",
"collected_at": "timestamp"
}Example:
{
"workflow_id": "workflow-123",
"session_id": "session-123",
"completed": true,
"duration_ms": 5000,
"feedback": {
"ease_of_use": 5,
"effectiveness": 4
}
}49. zerodb_rlhf_error
Collect error reports for model improvement.
Parameters:
session_id(string, required) - Session identifiererror_type(string, required) - Error categoryerror_message(string, required) - Error descriptioncontext(object, optional) - Error contextuser_impact(string, optional) - Impact level: "low", "medium", "high"
Returns:
{
"error_report_id": "uuid",
"collected_at": "timestamp"
}Example:
{
"session_id": "session-123",
"error_type": "hallucination",
"error_message": "Agent provided incorrect information about product pricing",
"context": {
"user_query": "What is the price?",
"agent_response": "The price is $50"
},
"user_impact": "high"
}50. zerodb_rlhf_status
Get RLHF collection status.
Parameters:
session_id(string, optional) - Filter by sessionstart_date(string, optional) - Start date (ISO 8601)end_date(string, optional) - End date (ISO 8601)
Returns:
{
"total_interactions": 1000,
"avg_feedback_score": 4.2,
"positive_feedback": 850,
"negative_feedback": 150,
"collection_rate": 0.85
}Example:
{
"start_date": "2025-10-01T00:00:00Z",
"end_date": "2025-10-14T23:59:59Z"
}51. zerodb_rlhf_summary
Get RLHF analytics summary.
Parameters:
group_by(string, optional) - Group by: "agent", "workflow", "session" (default: "agent")start_date(string, optional) - Start date (ISO 8601)end_date(string, optional) - End date (ISO 8601)
Returns:
{
"summary": [
{
"group_id": "agent-123",
"interaction_count": 500,
"avg_score": 4.5,
"improvement_trend": 0.15
}
]
}Example:
{
"group_by": "agent",
"start_date": "2025-10-01T00:00:00Z"
}52. zerodb_rlhf_start
Start RLHF collection for session.
Parameters:
session_id(string, required) - Session identifiercollection_config(object, optional) - Collection settings
Returns:
{
"session_id": "uuid",
"collection_started": true,
"started_at": "timestamp"
}Example:
{
"session_id": "session-123",
"collection_config": {
"collect_all_interactions": true,
"require_explicit_feedback": false
}
}53. zerodb_rlhf_stop
Stop RLHF collection for session.
Parameters:
session_id(string, required) - Session identifier
Returns:
{
"session_id": "uuid",
"collection_stopped": true,
"stopped_at": "timestamp",
"total_collected": 50
}Example:
{
"session_id": "session-123"
}54. zerodb_rlhf_session
Get all interactions for a session.
Parameters:
session_id(string, required) - Session identifierlimit(number, optional) - Max results (default: 100)
Returns:
{
"session_id": "uuid",
"interactions": [
{
"interaction_id": "uuid",
"user_input": "string",
"agent_response": "string",
"feedback_score": 5,
"timestamp": "timestamp"
}
],
"total_count": 50
}Example:
{
"session_id": "session-123",
"limit": 200
}55. zerodb_rlhf_broadcast
Broadcast RLHF event to subscribers.
Parameters:
event_type(string, required) - Event typeevent_data(object, required) - Event payloadtarget_sessions(array[string], optional) - Target session IDs
Returns:
{
"broadcast_id": "uuid",
"recipients": 10,
"broadcasted_at": "timestamp"
}Example:
{
"event_type": "feedback.requested",
"event_data": {
"interaction_id": "interaction-123",
"question": "Was this response helpful?"
},
"target_sessions": ["session-1", "session-2"]
}Admin Operations
56. zerodb_admin_system_stats
Get system-wide statistics (requires admin role).
Parameters:
include_details(boolean, optional) - Include detailed metrics (default: false)
Returns:
{
"total_projects": 100,
"total_users": 500,
"total_vectors": 1000000,
"total_storage_bytes": 10737418240,
"active_sessions": 50,
"api_calls_24h": 100000,
"avg_response_time_ms": 150
}Example:
{
"include_details": true
}57. zerodb_admin_list_projects
List all projects in system (requires admin role).
Parameters:
user_id(string, optional) - Filter by userlimit(number, optional) - Results per page (default: 100)offset(number, optional) - Pagination offset (default: 0)
Returns:
{
"projects": [
{
"project_id": "uuid",
"project_name": "string",
"user_id": "uuid",
"created_at": "timestamp",
"storage_bytes": 1048576
}
],
"total_count": 100
}Example:
{
"limit": 500
}58. zerodb_admin_user_usage
Get user usage statistics (requires admin role).
Parameters:
user_id(string, required) - User UUIDstart_date(string, optional) - Start date (ISO 8601)end_date(string, optional) - End date (ISO 8601)
Returns:
{
"user_id": "uuid",
"project_count": 5,
"vector_count": 10000,
"storage_bytes": 10485760,
"api_calls": 50000,
"cost_estimate_usd": 25.50
}Example:
{
"user_id": "user-123",
"start_date": "2025-10-01T00:00:00Z"
}59. zerodb_admin_health
Get system health status (requires admin role).
Parameters:
- None
Returns:
{
"status": "healthy",
"database": "connected",
"storage": "healthy",
"quantum_service": "operational",
"cache": "healthy",
"uptime_seconds": 86400,
"last_check": "timestamp"
}Example:
{}60. zerodb_admin_optimize
Optimize database and storage (requires admin role).
Parameters:
optimization_type(string, required) - "vacuum", "reindex", or "all"tables(array[string], optional) - Specific tables to optimize
Returns:
{
"optimized": true,
"optimization_type": "all",
"duration_ms": 30000,
"space_freed_bytes": 1048576,
"improvements": {
"query_performance": 0.25,
"storage_efficiency": 0.15
}
}Example:
{
"optimization_type": "all"
}Configuration
Environment Variables
All configuration is done through environment variables. Set these in your MCP server configuration.
| Variable | Required | Default | Description |
|----------|----------|---------|-------------|
| ZERODB_API_URL | No | https://api.ainative.studio | ZeroDB API base URL |
| ZERODB_PROJECT_ID | Yes | - | Your ZeroDB project ID |
| ZERODB_USERNAME | Yes | - | Your ZeroDB account email |
| ZERODB_PASSWORD | Yes | - | Your ZeroDB account password |
| ZERODB_API_TOKEN | No | - | Pre-existing API token (optional, will be auto-generated) |
| MCP_CONTEXT_WINDOW | No | 8192 | Maximum tokens in context window |
| MCP_RETENTION_DAYS | No | 30 | Memory retention period in days |
Authentication
The MCP server uses JWT authentication with automatic token renewal:
- Initial Authentication: On startup, the server authenticates using username/password
- Token Storage: Access token is stored in memory
- Automatic Renewal: Token is automatically renewed every 25 minutes (tokens expire after 30 minutes)
- Manual Renewal: Use
zerodb_renew_tokento manually renew if needed
Security Best Practices
- Store credentials securely: Use environment variables, never hardcode
- Use project-specific credentials: Create separate projects for different applications
- Rotate passwords regularly: Change passwords every 90 days
- Monitor API usage: Check for unusual activity in project stats
- Limit token scope: Use project-specific tokens when possible
Examples
Example 1: Building a Knowledge Base
// 1. Create a project for your knowledge base
const project = await zerodb_create_project({
project_name: "Product Documentation KB",
description: "Searchable product documentation"
});
// 2. Upload documentation files
const file = await zerodb_upload_file({
file_name: "user_guide.pdf",
file_data: "base64data...",
content_type: "application/pdf"
});
// 3. Store vectors for semantic search
// (Assume you've generated embeddings from the documentation)
const vector = await zerodb_store_vector({
vector_embedding: [...], // 1536-dimensional vector
document: "How to reset your password: Navigate to Settings...",
metadata: {
source: "user_guide.pdf",
page: 15
}
});
// 4. Search the knowledge base
const results = await zerodb_search_vectors({
query_vector: [...], // User query embedding
limit: 5,
threshold: 0.75
});Example 2: Agent Memory with Context
// 1. Store conversation in memory
await zerodb_store_memory({
content: "User wants to book a flight to Paris",
role: "user",
session_id: "session-123"
});
await zerodb_store_memory({
content: "I'll help you book a flight to Paris. What dates?",
role: "assistant",
session_id: "session-123"
});
// 2. Later in the conversation, get context
const context = await zerodb_get_context({
session_id: "session-123",
max_tokens: 4096
});
// Context includes all previous messages, token-optimizedExample 3: RLHF Data Collection
// 1. Start RLHF collection for session
await zerodb_rlhf_start({
session_id: "session-456",
collection_config: {
collect_all_interactions: true
}
});
// 2. Collect interactions during conversation
await zerodb_rlhf_interaction({
session_id: "session-456",
user_input: "What's the weather like?",
agent_response: "I don't have access to real-time weather data",
feedback_score: 3,
metadata: {
model: "claude-3-sonnet",
response_time_ms: 800
}
});
// 3. Collect error reports
await zerodb_rlhf_error({
session_id: "session-456",
error_type: "capability_limitation",
error_message: "Agent cannot access real-time data",
user_impact: "medium"
});
// 4. Get RLHF summary
const summary = await zerodb_rlhf_summary({
group_by: "session",
start_date: "2025-10-14T00:00:00Z"
});Example 4: Quantum-Enhanced Search
// 1. Store vectors with quantum compression
const compressed = await zerodb_quantum_compress({
vector_embedding: [...], // Original 1536 dimensions
compression_ratio: 0.5,
algorithm: "qaoa"
});
// Store compressed version
await zerodb_store_vector({
vector_embedding: compressed.compressed_vector,
document: "Product description...",
metadata: {
compressed: true,
original_dimensions: 1536
}
});
// 2. Perform quantum hybrid search
const results = await zerodb_quantum_hybrid_search({
query_vector: [...],
quantum_weight: 0.7, // Higher weight for quantum similarity
limit: 10
});
// Results include both classical and quantum similarity scoresExample 5: NoSQL Data Management
// 1. Create a table for user profiles
const table = await zerodb_create_table({
table_name: "user_profiles",
schema: {
user_id: "uuid",
name: "string",
email: "string",
preferences: "json",
created_at: "timestamp"
}
});
// 2. Insert user data
await zerodb_insert_rows({
table_id: table.table_id,
rows: [
{
user_id: "user-1",
name: "Alice Smith",
email: "[email protected]",
preferences: { theme: "dark", language: "en" }
}
]
});
// 3. Query users
const users = await zerodb_query_rows({
table_id: table.table_id,
filters: {
email: { $contains: "@example.com" }
}
});
// 4. Update preferences
await zerodb_update_rows({
table_id: table.table_id,
filters: { user_id: "user-1" },
updates: {
preferences: { theme: "light", language: "en" }
}
});Example 6: Error Handling
// All operations return structured responses with error handling
try {
const result = await zerodb_store_vector({
vector_embedding: [...],
document: "Sample text"
});
if (result.isError) {
console.error("Operation failed:", result.content[0].text);
// Handle error appropriately
} else {
console.log("Success:", result.content[0].text);
}
} catch (error) {
// Handle unexpected errors
console.error("Unexpected error:", error.message);
}Migration Guide
Migrating from v1.x to v2.0.0
Breaking Changes
API Endpoint Consolidation
- v1.x: Direct API calls to various endpoints
- v2.0: All operations go through unified MCP execute endpoint
Impact: No code changes needed if using MCP tools
Tool Naming Convention
- v1.x: Some tools lacked
zerodb_prefix - v2.0: All tools prefixed with
zerodb_
Migration:
// Old (v1.x) store_memory(...) → zerodb_store_memory(...) search_memory(...) → zerodb_search_memory(...) // New (v2.0) zerodb_store_memory(...) // Consistent prefix- v1.x: Some tools lacked
Parameter Changes
- Memory operations:
memory_metadata→metadata - Vector operations:
vector_metadata→metadata
Migration:
// Old (v1.x) { content: "...", memory_metadata: { key: "value" } } // New (v2.0) { content: "...", metadata: { key: "value" } }- Memory operations:
New Required Environment Variables
ZERODB_PROJECT_IDis now required (was optional in v1.x)
Migration: Add to your config:
{ "env": { "ZERODB_PROJECT_ID": "your-project-id" } }
New Features Available
- 54 New Operations - Full API coverage beyond memory and vector operations
- Quantum Compression - Reduce vector storage by up to 50%
- NoSQL Tables - Structured data storage and queries
- File Management - Upload and manage files
- Event System - Event-driven architecture support
- RLHF Collection - Built-in feedback collection for model training
- Admin Tools - System monitoring and optimization
Migration Steps
Update Package
npm update ainative-zerodb-mcp-server # or npm install -g [email protected]Update Configuration
- Add
ZERODB_PROJECT_IDto environment variables - Update any custom tool names to include
zerodb_prefix
- Add
Test Existing Functionality
- All v1.x operations remain compatible
- Test memory and vector operations still work
Gradually Adopt New Features
- Start with new features that provide immediate value
- Refer to API Reference for new operation documentation
Backward Compatibility
- All v1.x operations are supported in v2.0
- Existing data and projects are fully compatible
- No data migration required
Troubleshooting
Common Issues
1. Authentication Failed
Error: Authentication failed: Invalid credentials
Solutions:
- Verify
ZERODB_USERNAMEandZERODB_PASSWORDare correct - Check that your account is active
- Try manual token renewal:
zerodb_renew_token
2. Project Not Found
Error: Project not found: [project-id]
Solutions:
- Verify
ZERODB_PROJECT_IDis correct - List your projects:
zerodb_list_projects - Create a new project:
zerodb_create_project
3. Vector Dimension Mismatch
Error: vector must have exactly 1536 dimensions, got 768
Solutions:
- Ensure you're using OpenAI's
text-embedding-3-small(1536 dimensions) - Or use
text-embedding-ada-002(1536 dimensions) - Do not use
text-embedding-3-large(3072 dimensions)
4. Token Expired
Error: Token expired or invalid
Solutions:
- The server should auto-renew tokens every 25 minutes
- Manually renew:
zerodb_renew_token - Check server logs for renewal errors
5. Rate Limiting
Error: Rate limit exceeded
Solutions:
- Reduce request frequency
- Use batch operations where available
- Contact support for rate limit increases
Debug Logging
Enable verbose logging by checking stderr output:
# The MCP server logs to stderr
# In Claude Desktop, check: ~/Library/Logs/Claude/mcp*.logLog messages include:
- Token renewal attempts and status
- API call details (operation, params)
- Error messages with full context
Getting Help
- Documentation: https://docs.ainative.studio/zerodb
- GitHub Issues: https://github.com/AINative-Studio/ainative-zerodb-mcp-server/issues
- Email Support: [email protected]
- Discord Community: https://discord.gg/ainative
Contributing
We welcome contributions! Please see our Contributing Guide for details.
Development Setup
# Clone repository
git clone https://github.com/AINative-Studio/ainative-zerodb-mcp-server.git
cd ainative-zerodb-mcp-server
# Install dependencies
npm install
# Run tests
npm test
# Lint code
npm run lint
# Run security audit
npm run security:auditTesting
# Run tests with coverage
npm test
# Watch mode for development
npm run test:watch
# CI mode
npm run test:ciCode Quality
- 90%+ test coverage required
- ESLint for code style
- No high/critical npm vulnerabilities
- All tests must pass before PR merge
License
MIT License - see LICENSE file for details.
Changelog
v2.0.0 (2025-10-14)
Breaking Changes:
- All operations now require
ZERODB_PROJECT_IDenvironment variable - Unified API endpoint for all operations
- Consistent
zerodb_prefix for all tool names
New Features:
- Added 54 new operations (total 60)
- Quantum vector compression and optimization
- NoSQL table operations
- File storage and management
- Event-driven architecture support
- RLHF feedback collection
- Admin system monitoring and optimization
- 90%+ test coverage
- Automatic token renewal
Improvements:
- Better error handling and messages
- Improved documentation
- Enhanced security
- Performance optimizations
v1.0.7 (2025-10-01)
- Initial public release
- Basic memory and vector operations
- Claude Desktop integration
Built with ❤️ by AINative Studio
Powered by ZeroDB - Enterprise Vector Search for AI
