CodeKarma MCP Server
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@CodeKarma MCP ServerIdentify the CPU-intensive methods in the payment-service"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
CodeKarma MCP Server
A Model Context Protocol (MCP) server that provides production insights and code analysis capabilities using your Nexus instrumentation data. Analyze real production flows, identify hot methods, generate test cases, and make data-driven decisions about your code.
โก Quick Start Reference
๐ Local Setup (Development)
./setup.sh # Install dependencies & setup venv
python3 quick_test.py # Test all tools with real data
./run_server.sh # Start local server (stdio)๐ Remote Setup (Docker)
cp env-example .env # Copy environment template
./restart-server.sh # Build & start Docker container
./generate-config.sh # Generate client config (interactive)
./test-mcp-server.sh # Test remote server via HTTP๐ง Quick Commands
./restart-server.sh- Restart Docker container./generate-config.sh- Create MCP client configs (Direct or nginx proxy)python3 quick_test.py- Test all 4 tools locallycurl http://localhost:8547/health- Check Docker server health
๐ Deployment Options
๐ Local Server (Original)
Direct Python execution
Uses stdio transport
For local development and testing
๐ Remote Server (New!)
HTTP/JSON-RPC transport with flexible authentication
Docker containerized
For shared team access and production use
Port: 8547 (non-common port)
Authentication: Two models supported:
Direct: ck-domain header (no auth needed)
nginx Proxy: Bearer token (nginx validates and adds ck-domain)
๐ Features
๐ฅ Hot Method Detection - Identify CPU-intensive methods above configurable thresholds
๐ Production Usage Analysis - Get real-time insights about method execution patterns
๐ณ Flow Tree Visualization - View individual and aggregated execution flow trees
โก Performance Optimization - Get CPU utilization insights and optimization recommendations
๐ฏ Data-Driven Development - Make code changes based on real production usage
๐ Prerequisites
Python 3.8+
Nexus service running on
http://localhost:8081Instrumented Java application with production flow data
โก Quick Start
๐ Local Server Setup
1. Setup (One Command)
git clone <your-repo>
cd ck-mcp-server
./setup.sh2. Test the Server
python3 quick_test.py3. Configure Claude Desktop
Add this to your Claude Desktop claude_desktop_config.json:
{
"mcpServers": {
"nexus": {
"command": "python3",
"args": ["/absolute/path/to/ck-mcp-server/server.py"],
"env": {}
}
}
}4. Start Using
./run_server.sh๐ Remote Server Setup (Recommended for Teams)
1. Deploy with Docker
# Copy environment template
cp env-example .env
# Edit .env with your Nexus endpoint if needed
# Start the server
docker-compose up -d --build
# Or use the simple restart script
./restart-server.sh2. Generate Client Configuration
# Interactive configuration generator
./generate-config.shTwo Connection Models:
Direct Connection: Uses ck-domain header, connects directly to MCP server (port 8547)
nginx Proxy: Uses Bearer token, connects through nginx (nginx validates token and adds ck-domain)
Options:
Connection Type: Choose Direct or nginx Proxy
Client Type: Choose Windsurf or Claude Desktop/Cursor
Domain Examples: test, production, staging, or custom
Script will output ready-to-use JSON config for your specific deployment!
3. Verify Connection
# Health check
curl http://localhost:8547/health
# Test with domain header
curl -X POST http://localhost:8547/mcp \
-H "Content-Type: application/json" \
-H "ck-domain: test" \
-d '{"jsonrpc": "2.0", "id": 1, "method": "tools/list", "params": {}}'๐ ๏ธ Available Tools
1. find_service_names ๐
Find service names from a list of class names visible in your IDE. This tool helps discover which services contain the specified classes when the service name is unknown.
Parameters:
class_names(required): Array of fully qualified class names (e.g.,['com.example.service.UserService', 'com.example.util.DatabaseUtil'])
Usage:
When you don't know the service name but have class names from your IDE
Provide 10-20 class names for optimal matching accuracy
If multiple services are found, the tool will prompt you to ask the user which service to analyze
Use discovered service names with other production analysis tools
Example Workflows:
Single Service Found:
1. "Find services for these classes: com.example.UserService, com.example.OrderController"
2. โ Returns: ["my-microservice"]
3. "Analyze production usage for my-microservice"Multiple Services Found:
1. "Find services for these classes: com.example.UserService, com.example.OrderController"
2. โ Returns: ["my-microservice", "order-service", "user-service"]
3. โ LLM asks: "I found 3 services... Which service would you like to analyze?"
4. User responds: "Let's analyze my-microservice"
5. "Analyze production usage for my-microservice"2. get_production_usage
Get production usage information for methods including throughput and activity status.
Parameters:
service_name(required): Name of the service (e.g., 'codetrails')class_name(required): Full class namemethod_name(optional): Specific method namestep(optional): Time window (default: '1m')
3. get_production_call_flows
Analyze production method call patterns and flows with aggregated performance metrics and hot method annotations.
Parameters:
service_name(required): Name of the serviceclass_name(required): Full class namemethod_name(optional): Specific method namestep(optional): Time window (default: '1m')
4. get_hot_methods ๐ฅ
Get details about hot methods that have high CPU utilization in production (above 1% CPU threshold).
Parameters:
service_name(required): Name of the servicestep(optional): Time window (default: '1m')
๐ก Usage Examples
Service Discovery (New!)
"I can see these classes in my IDE: UserService, OrderController, PaymentService, DatabaseUtil. Which services do they belong to?"Automatically discovers service names from class names
No need to manually know service names
Sets up other tools for further analysis
Complete Workflow (Unknown Service)
1. "Find services for: com.example.UserService, com.example.OrderController"
2. "Analyze production usage for [discovered-service] UserService class"
3. "Show hot methods in [discovered-service]"Start with class names from your IDE
Discover services automatically
Dive into production analysis
Hot Method Analysis
"Show me all hot methods in the codetrails service"Identifies CPU-intensive methods
Shows CPU utilization percentages
Provides optimization recommendations
Production Flow Analysis
"Analyze the production usage for OrderUtil class in codetrails service"Shows QPS, error rates, latency for each method
Identifies active vs inactive methods
Highlights HTTP endpoints
Execution Tree Visualization
"Show me the call flows for OrderController in codetrails"Displays aggregated flow trees
Shows CPU annotations for hot methods (๐ฅ)
Includes flow IDs and metrics
Combined Analysis
"Get the call flows for OrderUtil and highlight any hot methods"Shows comprehensive flow analysis
Annotates hot methods with CPU utilization
Provides context about flow patterns
๐ฏ Key Features in Detail
๐ฅ Hot Method Detection
CPU Threshold: Automatically detects methods above 1% CPU utilization
Performance Impact: Shows actual CPU consumption percentages
Optimization Targeting: Prioritizes optimization efforts on high-impact methods
Visual Indicators: Hot methods marked with ๐ฅ in flow trees
๐ Flow Tree Annotations
Individual Flows: Shows hot methods in each execution path
Unified Trees: Aggregates CPU data across all flows
Visual Clarity:
CPU: X.XX% ๐ฅannotations in tree outputContext Aware: Matches methods by className + methodName
โก Production Insights
Real-time Data: Live production metrics from Nexus
HTTP Endpoints: Shows which endpoints trigger hot methods
Error Correlation: Combines CPU usage with error rates
Throughput Analysis: QPS/QPM data alongside CPU metrics
๐๏ธ Architecture
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Claude UI โโโโโโ MCP Server โโโโโโ Nexus API โ
โ โ โ โ โ โ
โ Natural Lang โ โ - Tool Handlers โ โ - Flow Data โ
โ Queries โ โ - Hot Methods โ โ - CPU Metrics โ
โ โ โ - Tree Builders โ โ - Production โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโComponents:
NexusClient: Async HTTP client for Nexus API calls
Hot Methods Engine: CPU threshold detection and annotation
Tree Builders: Flow tree construction and visualization
Analysis Functions: Production usage insights and recommendations
๐งช Testing
Local Testing
# Test all tools with real API
python3 quick_test.py
# Test raw APIs only
python3 quick_test.py --rawWhat Gets Tested:
โ All 4 MCP tools (service discovery, usage analysis, call flows, hot methods)
โ Raw Nexus API connectivity (find-service-name, mpks, flows, flow-details, hot-methods)
โ Service discovery from class names
โ Hot method detection and annotation
โ Real production data integration
Sample Test Output:
๐ Quick MCP Tools Test
==========================================
0๏ธโฃ SERVICE DISCOVERY TOOL
------------------------------
# Service Name Discovery
## Input Classes (4)
1. `OrderUtil` (Full: `com.example.codetrails.orders.util.OrderUtil`)
2. `OrderServiceImpl` (Full: `com.example.codetrails.orders.service.impl.OrderServiceImpl`)
3. `OrderController` (Full: `com.example.codetrails.orders.controller.OrderController`)
4. `RequestLogFilter` (Full: `com.example.codetrails.config.RequestLogFilter`)
## Discovery Results
โ
**Service Names Found:** 1 matching service(s)
**Domain:** test
### Matching Services:
1. `codetrails`
### Next Steps
You can now use these service name(s) with other production analysis tools:
- `get_production_usage(service_name="codetrails", class_name="...")`
- `get_production_call_flows(service_name="codetrails", class_name="...")`
- `get_hot_methods(service_name="codetrails")`
==================================================
3๏ธโฃ HOT METHODS TOOL
------------------------------
# Hot Methods Report
**Service:** codetrails
**CPU Threshold:** โฅ 1.0%
## Hot Methods Found (1)
### 1. `OrderServiceImpl.compareCharactersExpensively` ๐ฅ
**CPU Utilization:** 1.611%
**Throughput (QPS):** 1,723,283.72
**Optimization Target:** Primary candidate for performance improvement๐ Project Structure
ck-mcp-server/
โโโ server.py # Local MCP server (stdio)
โโโ remote_server.py # Remote MCP server (HTTP/JSON-RPC)
โโโ quick_test.py # Comprehensive testing script
โโโ setup.sh # One-command local setup
โโโ restart-server.sh # Simple Docker container restart
โโโ test-mcp-server.sh # Remote server testing script
โโโ run_server.sh # Local server runner
โโโ requirements.txt # Python dependencies
โโโ Dockerfile # Docker image configuration
โโโ docker-compose.yml # Docker Compose setup
โโโ .dockerignore # Docker build exclusions
โโโ env-example # Environment variables template
โโโ mcp-config.json # Local MCP configuration (uses env vars)
โโโ generate-config.sh # Interactive MCP client config generator
โโโ README.md # This documentation
โโโ nexus-api.md # API referenceKey Configuration Files:
mcp-config.json: For local server (Claude Desktop) - setsCK_NEXUS_ENDPOINTenv vargenerate-config.sh: Interactive script to generate remote MCP client configs.env: Docker Compose environment variables
๐ง Configuration
Logging Level
Control the verbosity of server logs using the LOG_LEVEL environment variable:
Available Levels: DEBUG, INFO, WARNING, ERROR, CRITICAL
Default: INFO (shows INFO, WARNING, ERROR, CRITICAL)
To see debug logs:
# For Docker/remote server - add to .env file:
LOG_LEVEL=DEBUG
# For local server:
export LOG_LEVEL=DEBUG
./run_server.shWhat each level shows:
DEBUG: All logs including debug messages (most verbose)INFO: Informational messages and above (default)WARNING: Warning messages and aboveERROR: Error messages onlyCRITICAL: Critical errors only
Domain-Based Routing
The server uses the ck-domain header to determine which Nexus API path to use:
Generate MCP Client Configuration:
# Use the interactive generator
./generate-config.sh
# Example output for direct connection:
{
"mcpServers": {
"codekarma-insights": {
"url": "http://localhost:8547/mcp",
"headers": {
"ck-domain": "production" // โ Direct to MCP server
}
}
}
}
# Example output for nginx proxy:
{
"mcpServers": {
"codekarma-insights": {
"url": "https://nginx-proxy.com/mcp",
"headers": {
"Authorization": "Bearer mcp_xxx" // โ nginx validates this
}
}
}
}Domain โ API Path Mapping:
ck-domain: "test"โ Nexus calls to/test/api/method-graph-paths/...ck-domain: "production"โ Nexus calls to/production/api/method-graph-paths/...ck-domain: "staging"โ Nexus calls to/staging/api/method-graph-paths/...
Nexus Connection
Default: AWS ELB endpoint (see server.py)
Recommended: Set via environment variable:
export CK_NEXUS_ENDPOINT="http://your-nexus-server:8081"Docker/Kubernetes:
# In your .env file or Helm values
CK_NEXUS_ENDPOINT=http://your-nexus-server:8081Alternative: Modify directly in server.py:
class NexusClient:
def __init__(self, base_url: str = "http://your-nexus:8081"):CPU Threshold
Default: 1.0% for hot method detection
To change, modify in server.py:
hot_methods = await client.get_hot_methods(service_name, cpu_threshold=2.0)๐ Troubleshooting
Connection Issues
โ Error: Connection refusedSolution: Ensure Nexus is running on localhost:8081
No Hot Methods Found
No hot methods found (no methods exceed 1% CPU utilization threshold)Solution: Check that your application has CPU-intensive operations or lower the threshold
Empty Flow Trees
No production data found for ClassNameSolution: Verify class name exists and has production traffic
Missing CPU Annotations
Flow trees show but no ๐ฅ indicatorsSolution: Ensure hot methods API is working: curl http://localhost:8081/{domain}/api/method-graph-paths/hot-methods?serviceName=yourservice&cpuThreshold=1
๐ Next Steps
Deploy to Production: Use with your production Nexus instance
Custom Thresholds: Adjust CPU thresholds for your environment
Integration: Add to CI/CD pipelines for performance monitoring
Optimization: Use hot method data to prioritize performance improvements
Monitoring: Set up alerts for new hot methods in production
๐ค Contributing
Add New Tools: Extend
handle_list_tools()andhandle_call_tool()Enhance Analysis: Add new metrics and insights to existing tools
Improve Visualization: Enhance tree rendering and annotations
Testing: Add test cases to
quick_test.py
๐ API Endpoints Used
The server integrates with these Nexus endpoints (domain dynamically set via ck-domain header):
POST /{domain}/api/method-graph-paths/find-service-name- Service discovery from class namesGET /{domain}/api/method-graph-paths/mpks- Method summary with profiling infoGET /{domain}/api/method-graph-paths/flows- Flow IDs for methodsGET /{domain}/api/method-graph-paths/flow-details- Detailed flow treesGET /{domain}/api/method-graph-paths/hot-methods- CPU-intensive methods
Examples:
With
ck-domain: testโ/test/api/method-graph-paths/mpksWith
ck-domain: productionโ/production/api/method-graph-paths/mpks
๐ฅ Ready to optimize your production code with data-driven insights!
Start by running ./setup.sh and then python3 quick_test.py to see your hot methods in action.
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Latest Blog Posts
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/firgga-sunil/ck-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server