A Model Context Protocol (MCP) server tailored for Klever blockchain smart contract development. This server maintains and serves contextual knowledge including code patterns, best practices, and runtime behavior for developers working with the Klever VM SDK.
- 🚀 Dual Mode Operation: Run as HTTP API server or MCP protocol server
- đź’ľ Flexible Storage: In-memory or Redis backend support
- 🔍 Smart Context Retrieval: Query by type, tags, or contract type
- 📝 Automatic Pattern Extraction: Parse Klever contracts to extract examples and patterns
- 🎯 Relevance Ranking: Intelligent scoring and ranking of context
- 🔄 Live Updates: Add and update context in real-time
- 🛡️ Type Safety: Full TypeScript with Zod validation
- 📚 Comprehensive Knowledge Base: Pre-loaded with Klever VM patterns, best practices, and examples
- đź”§ Contract Validation: Automatic detection of common issues and anti-patterns
- 🚀 Deployment Scripts: Ready-to-use scripts for contract deployment, upgrade, and querying
mcp-klever-vm/
├── src/
│ ├── api/ # HTTP API routes with validation
│ ├── context/ # Context management service layer
│ ├── mcp/ # MCP protocol server implementation
│ ├── parsers/ # Klever contract parser and validator
│ ├── storage/ # Storage backends (memory/Redis)
│ │ ├── memory.ts # In-memory storage with size limits
│ │ └── redis.ts # Redis storage with optimized queries
│ ├── types/ # TypeScript type definitions
│ ├── utils/ # Utilities and ingestion tools
│ └── knowledge/ # Modular knowledge base (95+ entries)
│ ├── core/ # Core concepts and imports
│ ├── storage/ # Storage patterns and mappers
│ ├── events/ # Event handling and rules
│ ├── tokens/ # Token operations and decimals
│ ├── modules/ # Built-in modules (admin, pause)
│ ├── tools/ # CLI tools (koperator, ksc)
│ ├── scripts/ # Helper scripts
│ ├── examples/ # Complete contract examples
│ ├── errors/ # Error patterns
│ ├── best-practices/ # Optimization and validation
│ └── documentation/ # API reference
├── tests/ # Test files
└── docs/ # Documentation
-
Storage Layer
- Added memory limits to prevent OOM in InMemoryStorage
- Optimized Redis queries to avoid O(N) KEYS command
- Added atomic transactions for Redis operations
- Improved error handling and validation
-
API Security
- Added input validation for all endpoints
- Batch operation size limits
- Proper error responses without leaking internals
- Environment-aware error messages
-
Type Safety
- Centralized schema validation
- Proper TypeScript interfaces for options
- Runtime validation of stored data
-
Performance
- Batch operations using Redis MGET
- Index-based queries instead of full scans
- Optimized count operations
- Clone the repository:
git clone https://github.com/yourusername/mcp-klever-vm.git
cd mcp-klever-vm
- Install dependencies:
pnpm install
- Copy environment configuration:
cp .env.example .env
- Build the project:
pnpm run build
Edit .env
file to configure the server:
# Server Mode (http or mcp)
MODE=http
# HTTP Server Port (only for http mode)
PORT=3000
# Storage Backend (memory or redis)
STORAGE_TYPE=memory
# Maximum contexts for in-memory storage (default: 10000)
MEMORY_MAX_SIZE=10000
# Redis URL (only if STORAGE_TYPE=redis)
REDIS_URL=redis://localhost:6379
# Node environment (development or production)
NODE_ENV=development
The Klever MCP Server can be integrated with different MCP-compatible clients. We provide detailed setup guides for:
Follow the VS Code Installation Guide to:
- Configure the MCP server in VS Code with GitHub Copilot Chat
- Set up the
.vscode/mcp.json
configuration file - Use Klever blockchain knowledge in your development workflow
Follow the Claude Desktop Installation Guide to:
- Configure the MCP server with Claude Desktop application
- Set up the
mcp.json
configuration file - Access Klever development context through Claude's interface
Both guides include troubleshooting tips and verification steps to ensure the MCP server is working correctly with your chosen client.
The server automatically loads the Klever knowledge base based on your storage type:
- Knowledge is automatically loaded when the server starts
- No need to run
pnpm run ingest
separately - Data exists only while server is running
- Best for development and testing
# First, ingest the knowledge base (one time)
pnpm run ingest
# Then start the server
pnpm run dev
- Knowledge persists in Redis database
- Survives server restarts
- Best for production use
This will load:
- Smart contract templates and examples
- Annotation rules and best practices
- Storage mapper patterns and comparisons
- Deployment and query scripts
- Common errors and solutions
- Testing patterns
- API reference documentation
# Development mode
pnpm run dev
# Production mode
pnpm run build && pnpm start
The HTTP API will be available at http://localhost:3000/api
MODE=mcp pnpm start
Use with any MCP-compatible client.
Ingest new context into the system.
{
"type": "code_example",
"content": "contract code here",
"metadata": {
"title": "Token Contract Example",
"description": "ERC20-like token implementation",
"tags": ["token", "fungible"],
"contractType": "token"
}
}
Retrieve specific context by ID.
Query contexts with filters.
{
"query": "transfer",
"types": ["code_example", "best_practice"],
"tags": ["token"],
"contractType": "token",
"limit": 10,
"offset": 0
}
Update existing context.
Delete context.
Find similar contexts.
Batch ingest multiple contexts.
When running as MCP server, the following tools are available:
query_context
: Search for relevant Klever development contextadd_context
: Add new context to the knowledge baseget_context
: Retrieve specific context by IDfind_similar
: Find contexts similar to a given contextget_knowledge_stats
: Get statistics about the knowledge baseinit_klever_project
: Initialize a new Klever smart contract project with helper scriptsenhance_with_context
: Automatically enhance queries with relevant Klever VM context
code_example
: Working code snippets and examples (Rust smart contract code)best_practice
: Recommended patterns and practicessecurity_tip
: Security considerations and warningsoptimization
: Performance optimization techniquesdocumentation
: General documentation and guideserror_pattern
: Common errors and solutionsdeployment_tool
: Deployment scripts and utilities (bash scripts, tools)runtime_behavior
: Runtime behavior explanations
The MCP server includes a comprehensive knowledge base with 95+ entries organized into 11 categories:
- Payment handling and token operations
- Decimal conversions and calculations
- Event emission and parameter rules
- CLI tool usage and best practices
- Basic contract structure templates
- Complete lottery game implementation
- Staking contract with rewards
- Cross-contract communication patterns
- Remote storage access patterns
- Token mapper helper modules
- Koperator: Complete CLI reference with argument encoding
- KSC: Build commands and project setup
- Deployment, upgrade, and query scripts
- Interactive contract management tools
- Common utilities library (bech32, network management)
- Storage mapper selection guide with performance comparisons
- Namespace organization patterns
- View endpoints for efficient queries
- Gas optimization techniques
- OptionalValue vs Option patterns
- Input validation patterns
- Error handling strategies
- Admin and pause module usage
- Access control patterns
- Common mistakes and solutions
Use the built-in ingestion utilities to parse and import Klever contracts:
import { StorageFactory } from './storage/index.js';
import { ContextService } from './context/service.js';
import { ContractIngester } from './utils/ingest.js';
const storage = StorageFactory.create('memory');
const contextService = new ContextService(storage);
const ingester = new ContractIngester(contextService);
// Ingest a single contract
await ingester.ingestContract('./path/to/contract.rs', 'AuthorName');
// Ingest entire directory
await ingester.ingestDirectory('./contracts', 'AuthorName');
// Add common patterns
await ingester.ingestCommonPatterns();
# Run tests
pnpm test
# Lint code
pnpm run lint
# Format code
pnpm run format
# Watch mode
pnpm run dev
# Ingest/update knowledge base
pnpm run ingest
The server can automatically validate Klever contracts and detect issues:
import { KleverValidator } from './parsers/validators.js';
const issues = KleverValidator.validateContract(contractCode);
// Returns array of detected issues with suggestions
Validation checks include:
- Event annotation format (double quotes, camelCase)
- Managed type API parameters
- Zero address validation in transfers
- Optimal storage mapper selection
- Module naming conventions
Integrate with your IDE to provide context-aware suggestions for Klever contract development.
Automatically check contracts against best practices and security patterns.
Provide examples and explanations for developers learning Klever development.
Extract and organize contract documentation automatically.
For complete project implementation examples and specifications, see:
- Project Specification Template - A comprehensive template/prompt for implementing smart contracts using the MCP knowledge base. This includes the discovery process, implementation gates, and step-by-step guidance for using MCP queries throughout development.
The MCP server includes a powerful project initialization tool that creates a new Klever smart contract project with all necessary helper scripts.
When connected via MCP, use the init_klever_project
tool:
{
"name": "my-token-contract",
"template": "empty",
"noMove": false
}
Parameters:
name
(required): The name of your contracttemplate
(optional): Template to use (default: "empty")noMove
(optional): If true, keeps project in subdirectory (default: false)
The tool creates the following scripts in the scripts/
directory:
- build.sh: Builds the smart contract
- deploy.sh: Deploys to Klever testnet with auto-detection of contract artifacts
- upgrade.sh: Upgrades existing contract (auto-detects from history.json)
- query.sh: Query contract endpoints with proper encoding/decoding
- test.sh: Run contract tests
- interact.sh: Shows usage examples and available commands
-
Initialize project:
# Via MCP tool init_klever_project({"name": "my-contract"})
-
Build contract:
./scripts/build.sh
-
Deploy to testnet:
./scripts/deploy.sh
-
Query contract:
./scripts/query.sh --endpoint getSum ./scripts/query.sh --endpoint getValue --arg myKey
-
Upgrade contract:
./scripts/upgrade.sh
All deployment history is tracked in output/history.json
for easy reference.
The MCP server can automatically enhance queries with relevant Klever VM context. This ensures your MCP client always has access to the most relevant information.
Use the enhance_with_context
tool to automatically add relevant context to any query:
{
"tool": "enhance_with_context",
"arguments": {
"query": "How do I create a storage mapper?",
"autoInclude": true
}
}
This will:
- Extract relevant keywords from the query
- Search the knowledge base for matching contexts
- Return an enhanced query with context included
- Provide metadata about what was found
For MCP clients that want to always check Klever context first:
// Always enhance Klever-related queries
if (query.match(/klever|kvm|smart contract|endpoint/i)) {
const enhanced = await callTool('enhance_with_context', { query });
// Use enhanced.enhancedQuery for processing
}
The context enhancement feature automatically enriches queries with relevant Klever VM knowledge from the comprehensive knowledge base.
// Query for token transfer examples
const response = await fetch('http://localhost:3000/api/context/query', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
query: 'transfer',
types: ['code_example'],
contractType: 'token'
})
});
# Using curl to add context
curl -X POST http://localhost:3000/api/context \
-H "Content-Type: application/json" \
-d '{
"type": "security_tip",
"content": "Always check for zero address",
"metadata": {
"title": "Zero Address Check",
"tags": ["security", "validation"]
}
}'
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
MIT License - see LICENSE file for details
- Inspired by Context7 by Upstash
- Built for the Klever Blockchain
- Uses the Klever VM SDK (Rust)