Skip to main content
Glama

MCP Kafka Schema Reg

MIT License
23
  • Apple
  • Linux
start-test-env.sh7.96 kB
#!/bin/bash # Script to start test environment and run MCP development server # Handles cleanup on interrupt set -e # Colors for output RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' BLUE='\033[0;34m' NC='\033[0m' # No Color # Global variables DOCKER_COMPOSE_FILE="tests/docker-compose.yml" ENV_FILE="test_registry.env" MCP_RUNNING=false DOCKER_RUNNING=false # Function to print colored output print_status() { echo -e "${BLUE}[INFO]${NC} $1" } print_success() { echo -e "${GREEN}[SUCCESS]${NC} $1" } print_warning() { echo -e "${YELLOW}[WARNING]${NC} $1" } print_error() { echo -e "${RED}[ERROR]${NC} $1" } # Function to check if required files exist check_requirements() { print_status "Checking requirements..." if [ ! -f "$DOCKER_COMPOSE_FILE" ]; then print_error "Docker compose file not found: $DOCKER_COMPOSE_FILE" exit 1 fi if [ ! -f "$ENV_FILE" ]; then print_warning "Environment file not found: $ENV_FILE (will proceed without it)" fi if [ ! -f "kafka_schema_registry_unified_mcp.py" ]; then print_error "MCP server file not found: kafka_schema_registry_unified_mcp.py" exit 1 fi # Check if docker-compose is available if ! command -v docker-compose &> /dev/null && ! command -v docker &> /dev/null; then print_error "Neither docker-compose nor docker compose is available" exit 1 fi print_success "All requirements checked" } # Function to determine docker compose command get_docker_compose_cmd() { if command -v docker-compose &> /dev/null; then echo "docker-compose" elif docker compose version &> /dev/null 2>&1; then echo "docker compose" else print_error "No valid docker compose command found" exit 1 fi } # Function to start docker services start_docker_services() { print_status "Starting Docker services..." local compose_cmd=$(get_docker_compose_cmd) local env_args="" # Add environment file if it exists if [ -f "$ENV_FILE" ]; then env_args="--env-file $ENV_FILE" print_status "Using environment file: $ENV_FILE" fi # Start services if $compose_cmd -f "$DOCKER_COMPOSE_FILE" $env_args up -d; then DOCKER_RUNNING=true print_success "Docker services started successfully" # Wait for services to be healthy print_status "Waiting for services to be healthy..." if $compose_cmd -f "$DOCKER_COMPOSE_FILE" $env_args logs -f --tail=0 & then local logs_pid=$! # Wait for a bit to let services start sleep 10 # Kill the logs process kill $logs_pid 2>/dev/null || true print_success "Services are starting up..." fi else print_error "Failed to start Docker services" exit 1 fi } # Function to stop docker services stop_docker_services() { if [ "$DOCKER_RUNNING" = true ]; then print_status "Stopping Docker services..." local compose_cmd=$(get_docker_compose_cmd) local env_args="" if [ -f "$ENV_FILE" ]; then env_args="--env-file $ENV_FILE" fi # Stop and remove containers, networks, and volumes if $compose_cmd -f "$DOCKER_COMPOSE_FILE" $env_args down -v --remove-orphans; then print_success "Docker services stopped successfully" else print_warning "Some issues occurred while stopping Docker services" fi DOCKER_RUNNING=false fi } # Function to start MCP server start_mcp_server() { print_status "Starting MCP development server..." # Load environment variables if file exists if [ -f "$ENV_FILE" ]; then print_status "Loading environment variables from $ENV_FILE" set -a # automatically export all variables source "$ENV_FILE" set +a # disable automatic export fi # Set ALLOW_LOCALHOST for testing environment export ALLOW_LOCALHOST=true # Start MCP server print_status "Running: mcp dev kafka_schema_registry_unified_mcp.py" mcp dev kafka_schema_registry_unified_mcp.py & local mcp_pid=$! MCP_RUNNING=true # Wait for MCP server wait $mcp_pid MCP_RUNNING=false } # Function to cleanup on exit cleanup() { print_status "Cleaning up..." # Stop MCP server if running if [ "$MCP_RUNNING" = true ]; then print_status "Stopping MCP server..." # Kill all child processes jobs -p | xargs -r kill 2>/dev/null || true MCP_RUNNING=false fi # Stop Docker services stop_docker_services print_success "Cleanup completed" } # Function to verify schema registries are accessible verify_schema_registries() { print_status "Verifying Schema Registry endpoints..." # Check development registry (port 38081) if curl -s -f http://localhost:38081/subjects >/dev/null 2>&1; then print_success "Development Schema Registry accessible at http://localhost:38081" else print_warning "Development Schema Registry at http://localhost:38081 not yet ready" fi # Check production registry (port 38082) if curl -s -f http://localhost:38082/subjects >/dev/null 2>&1; then print_success "Production Schema Registry accessible at http://localhost:38082" else print_warning "Production Schema Registry at http://localhost:38082 not yet ready" fi # Additional wait if services aren't ready local retries=0 local max_retries=12 while [ $retries -lt $max_retries ]; do if curl -s -f http://localhost:38081/subjects >/dev/null 2>&1 && \ curl -s -f http://localhost:38082/subjects >/dev/null 2>&1; then print_success "Both Schema Registries are ready!" break fi retries=$((retries + 1)) print_status "Waiting for Schema Registries to be ready... (attempt $retries/$max_retries)" sleep 5 done if [ $retries -eq $max_retries ]; then print_warning "Some Schema Registries may not be fully ready, but proceeding..." fi } # Function to display registry information display_registry_info() { echo "" print_success "=== Test Environment Ready ===" echo -e "${BLUE}Available Schema Registries:${NC}" echo -e " • ${GREEN}Development${NC}: http://localhost:38081" echo -e " • ${GREEN}Production${NC}: http://localhost:38082" echo "" echo -e "${BLUE}Web UI (AKHQ):${NC}" echo -e " • ${GREEN}Management UI${NC}: http://localhost:38080" echo "" echo -e "${BLUE}MCP Server Configuration:${NC}" echo -e " • Environment: ${ENV_FILE}" echo -e " • Default Registry: development" echo "==================================" echo "" } # Function to handle interrupt signals interrupt_handler() { print_warning "Interrupt received, initiating cleanup..." cleanup exit 0 } # Main function main() { print_status "Starting Kafka Schema Registry MCP Test Environment" echo "==================================================" # Set up signal handlers trap interrupt_handler SIGINT SIGTERM # Check requirements check_requirements # Start Docker services start_docker_services # Give services time to fully start print_status "Waiting 15 seconds for services to fully initialize..." sleep 15 # Verify schema registries are accessible verify_schema_registries # Display registry information display_registry_info # Start MCP server start_mcp_server # If we reach here, MCP server exited normally print_status "MCP server has stopped" cleanup } # Run main function main "$@"

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/aywengo/kafka-schema-reg-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server