andrew-brown-noosphere/scylladb-mcp-server
If you are the rightful owner of scylladb-mcp-server and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server for ScyllaDB featuring a technical engineering advisor, designed to assist developers in migrating from DynamoDB with a focus on cost, performance, and architectural decisions.
ScyllaDB MCP Server
A Model Context Protocol (MCP) server for ScyllaDB featuring a technical engineering advisor. Enables live A/B testing between DynamoDB and ScyllaDB with honest analysis about costs, performance, and architectural decisions.
Features
- š Technical Engineering Voice - Direct analysis, no marketing fluff
- āļø Multi-Cloud Support - ScyllaDB Cloud, AWS DynamoDB, and local Docker
- š° Advanced Cost Calculator - Matches official ScyllaDB calculator with workload profiles
- š Live A/B Testing - Real-time performance comparison between platforms
- š DynamoDB Code Analysis - Pattern detection and migration assessment
- š Workload Templates - Discord-scale, AdTech, FinTech, and more
- š ļø Migration Complexity Assessment - Honest effort estimates
Supported Connections
1. ScyllaDB Cloud
Connect to managed ScyllaDB instances with full CQL and Alternator (DynamoDB API) support.
2. AWS DynamoDB
Native DynamoDB connections for live A/B testing and cost comparison.
3. Local Docker
Auto-provisions ScyllaDB containers for development and testing.
Demo Applications
The MCP server includes several demo applications for real-world testing:
Performance Benchmarks
quick_demo.py
- Connection speed comparison (ScyllaDB vs DynamoDB)simple_ab_demo.py
- Side-by-side write performance testlive_ab_test.py
- Comprehensive performance comparison with metricsycsb_benchmark.py
- Industry-standard YCSB workload testing
Cost Analysis Tools
test_mcp_server.py
- Test the advisor with real workload scenarios- Advanced Calculator - Matches ScyllaDB's official pricing calculator
- Workload Templates - Pre-configured profiles for common applications
DynamoDB Analysis
The server includes AWS's official DynamoDB sample application for analysis:
- Source: Based on AWS's DynamoDB online shop example
- Location:
test/dynamodb_online_shop_example.py
- Purpose: Analyze real DynamoDB patterns from AWS's own code
- Features:
- Query pattern inspection
- Access pattern analysis
- Hot partition detection
- GSI proliferation identification
- Migration complexity assessment
Quick Start
Prerequisites
- Python 3.8+ (3.11 recommended)
- Docker Desktop (for local testing)
- Claude Desktop or Claude Code with MCP support
- AWS credentials (for DynamoDB comparison)
Installation
- Clone this repository:
git clone https://github.com/scylladb/scylladb-mcp-server.git
cd scylladb-mcp-server
- Run the setup script:
./setup.sh
- Configure your environment:
# Copy the example environment file
cp .env.example .env
# Edit .env with your credentials:
# - AWS_ACCESS_KEY_ID
# - AWS_SECRET_ACCESS_KEY
# - SCYLLA_ALTERNATOR_ENDPOINT (for ScyllaDB Cloud)
- Restart Claude Desktop or Claude Code
Configuration
Claude Desktop Configuration
The setup script automatically configures Claude Desktop. For manual configuration:
macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
Windows: %APPDATA%\Claude\claude_desktop_config.json
Linux: ~/.config/Claude/claude_desktop_config.json
{
"mcpServers": {
"scylladb": {
"command": "python3",
"args": ["/path/to/scylladb-mcp-server/src/scylladb_mcp_server.py"],
"env": {
"SCYLLA_CONNECTION_MODE": "alternator",
"SCYLLA_ALTERNATOR_ENDPOINT": "http://your-endpoint:8000",
"AWS_ACCESS_KEY_ID": "your-key",
"AWS_SECRET_ACCESS_KEY": "your-secret"
}
}
}
}
Claude Code Configuration
For Claude Code users, you have two options:
- Project-specific configuration (recommended):
- Create a
.claude/config.json
file in your project root - This keeps MCP configuration with your project
- Create a
{
"mcpServers": {
"scylladb": {
"command": "python3",
"args": ["./src/scylladb_mcp_server.py"],
"env": {
"SCYLLA_CONNECTION_MODE": "alternator",
"SCYLLA_ALTERNATOR_ENDPOINT": "http://your-endpoint:8000",
"AWS_ACCESS_KEY_ID": "your-key",
"AWS_SECRET_ACCESS_KEY": "your-secret"
}
}
}
}
- Global configuration:
- Use the same
claude_desktop_config.json
location as Claude Desktop - Configuration will be available in all Claude Code sessions
- Use the same
Connection Modes
docker
- Local ScyllaDB container (default)cloud
- ScyllaDB Cloud with CQLalternator
- ScyllaDB or DynamoDB via Alternator API
DynamoDB Configuration
To connect to AWS DynamoDB for A/B testing, add these environment variables to your configuration:
{
"mcpServers": {
"scylladb": {
"command": "python3",
"args": ["/path/to/scylladb-mcp-server/src/scylladb_mcp_server.py"],
"env": {
"SCYLLA_CONNECTION_MODE": "alternator",
"SCYLLA_ALTERNATOR_ENDPOINT": "http://your-scylla-endpoint:8000",
"AWS_ACCESS_KEY_ID": "your-aws-key",
"AWS_SECRET_ACCESS_KEY": "your-aws-secret",
"AWS_REGION": "us-east-1",
"DYNAMODB_ENDPOINT": "" // Leave empty for real AWS DynamoDB
}
}
}
}
For local DynamoDB testing, set DYNAMODB_ENDPOINT
to your local DynamoDB URL (e.g., http://localhost:8001
).
Connecting to ScyllaDB Cloud
-
Create a ScyllaDB Cloud Account:
- Sign up at cloud.scylladb.com
- Choose "DynamoDB API Compatible" when creating your cluster
- Enable "Allow Alternator API" in cluster settings
-
Get Connection Details:
- Find your Alternator endpoint in the cluster dashboard (e.g.,
http://node-0.aws-us-east-1.xxx.clusters.scylla.cloud:8000
) - Generate API keys from the cluster settings
- Note: ScyllaDB uses AWS-compatible authentication
- Find your Alternator endpoint in the cluster dashboard (e.g.,
-
Test Connection:
import boto3 dynamodb = boto3.resource('dynamodb', endpoint_url='http://your-endpoint:8000', region_name='us-east-1', aws_access_key_id='your-key', aws_secret_access_key='your-secret' ) # List tables to verify connection print(list(dynamodb.tables.all()))
Connecting to AWS DynamoDB
-
Set up AWS Account:
- Create an AWS account if you don't have one
- Navigate to IAM console
-
Create Access Keys:
- Go to IAM ā Users ā Add User
- Select "Programmatic access"
- Attach policy:
AmazonDynamoDBFullAccess
- Save the Access Key ID and Secret Access Key
-
Configure Region:
- Choose your preferred AWS region (e.g.,
us-east-1
) - DynamoDB is available in all AWS regions
- Choose your preferred AWS region (e.g.,
-
Test Connection:
import boto3 # For real AWS DynamoDB (no endpoint_url needed) dynamodb = boto3.resource('dynamodb', region_name='us-east-1' ) # List tables print(list(dynamodb.tables.all()))
Usage Examples
Live A/B Testing
Compare performance between DynamoDB and ScyllaDB for 1000 write operations
Cost Analysis with Real Workloads
Calculate costs for a FinTech platform processing 50,000 transactions/second
Analyze Existing DynamoDB Code
Analyze the DynamoDB patterns in test/dynamodb_online_shop_example.py
Migration Assessment
Check if this DynamoDB code will work with ScyllaDB:
response = table.transact_write_items(
TransactItems=[
{'Put': {'TableName': 'Orders', 'Item': order}},
{'Update': {'TableName': 'Inventory', 'Key': {'id': item_id}}}
]
)
Running Demo Scripts
Before running demos, ensure your environment variables are set:
# For ScyllaDB Cloud
export SCYLLA_ALTERNATOR_ENDPOINT="http://your-node.clusters.scylla.cloud:8000"
export AWS_ACCESS_KEY_ID="your-scylla-key"
export AWS_SECRET_ACCESS_KEY="your-scylla-secret"
# For AWS DynamoDB (in addition to above)
export AWS_REGION="us-east-1"
# Leave DYNAMODB_ENDPOINT empty for real AWS, or set to local endpoint
Quick Performance Test
python3 src/quick_demo.py
Shows connection latency differences between platforms.
A/B Write Performance
python3 src/simple_ab_demo.py
Demonstrates identical code running on both platforms with performance metrics.
Full YCSB Benchmark
python3 src/ycsb_benchmark.py
Runs industry-standard benchmarks showing ~29% better P99 latency.
IoT Sensor Data Demo
# Run comparison between both platforms
python3 src/demo_iot_sensors.py
# Run only on ScyllaDB
python3 src/demo_iot_sensors.py scylla
# Run only on DynamoDB
python3 src/demo_iot_sensors.py dynamo
Simulates high-volume IoT sensor data ingestion.
E-commerce Platform Demo
# Run comparison
python3 src/demo_ecommerce.py
# Single platform testing
python3 src/demo_ecommerce.py scylla
python3 src/demo_ecommerce.py dynamo
Demonstrates shopping cart, inventory, and order processing patterns.
Cost Calculator Test
python3 src/test_mcp_server.py
Tests the advisor with various workload scenarios and cost calculations.
Available MCP Tools
- connect - Connect to ScyllaDB/DynamoDB (supports all modes)
- costEstimate - Advanced cost comparison with workload templates
- checkMigration - Validate DynamoDB code compatibility
- analyzeWorkload - Deep analysis of DynamoDB patterns
- comparePerformance - Live A/B testing between platforms
- populateData - Create test data with realistic patterns
- analyzeDynamoDBModel - Analyze AWS data models and access patterns
Workload Templates
Pre-configured profiles for accurate cost analysis:
- Discord-scale messaging - 50K-200K ops/sec
- AdTech RTB - Sub-10ms latency requirements
- Cybersecurity analytics - Write-heavy, 100K-500K ops/sec
- FinTech platform - Payment processing scale
- Growing e-commerce - $100M+ revenue scale
Project Structure
scylladb-mcp-server/
āāā src/
ā āāā scylladb_mcp_server.py # Main MCP server
ā āāā technical_advisor.py # Engineering analysis engine
ā āāā advanced_cost_calculator.py # Matches official calculator
ā āāā workload_templates.py # Real-world profiles
ā āāā query_analyzer.py # DynamoDB pattern analysis
ā āāā quick_demo.py # Performance demos
ā āāā simple_ab_demo.py # A/B testing demo
ā āāā live_ab_test.py # Advanced comparison
ā āāā ycsb_benchmark.py # YCSB implementation
ā āāā requirements.txt # Python dependencies
āāā test/
ā āāā dynamodb_online_shop_example.py # AWS sample for analysis
āāā docs/
ā āāā SYSTEMS_DESIGN_CONTEXT.md # Architecture philosophy
āāā .env.example # Environment template
āāā setup.sh # Automated setup
āāā README.md # This file
Key Results
Based on real benchmarks and customer data:
- Cost Reduction: 86-99% depending on workload
- P99 Latency: ~29% better under load
- No Throttling: Hardware limits only
- Same API: Drop-in replacement via Alternator
Technical Philosophy
Every response is backed by:
- Actual benchmarks from scylladb.com
- Real customer workloads (Discord, Palo Alto Networks, Comcast)
- Transparent architecture explanations
- No marketing claims without data
Contributing
PRs welcome for:
- Additional workload templates
- More DynamoDB pattern detection
- Real migration case studies
- Performance benchmark updates
License
[TBD]
Support
- ScyllaDB Docs: docs.scylladb.com
- ScyllaDB University: university.scylladb.com
- DynamoDB Migration Guide: scylladb.com/dynamodb