Skip to main content
Glama

LMStudio-MCP

install.sh8.95 kB
#!/bin/bash # LMStudio-MCP Installation Script # Supports multiple deployment methods 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 # Default values INSTALL_METHOD="" INSTALL_DIR="$HOME/lmstudio-mcp" PYTHON_CMD="python3" VENV_NAME="venv" print_header() { echo -e "${BLUE}================================${NC}" echo -e "${BLUE} LMStudio-MCP Installer${NC}" echo -e "${BLUE}================================${NC}" echo "" } print_success() { echo -e "${GREEN}✓ $1${NC}" } print_error() { echo -e "${RED}✗ $1${NC}" } print_warning() { echo -e "${YELLOW}⚠ $1${NC}" } print_info() { echo -e "${BLUE}ℹ $1${NC}" } check_requirements() { print_info "Checking system requirements..." # Check Python if ! command -v $PYTHON_CMD &> /dev/null; then if command -v python &> /dev/null; then PYTHON_CMD="python" else print_error "Python 3.7+ is required but not found" exit 1 fi fi # Check Python version if ! $PYTHON_CMD -c "import sys; exit(0 if sys.version_info >= (3, 7) else 1)"; then print_error "Python 3.7+ is required. Found: $PYTHON_VERSION" exit 1 fi print_success "Python $PYTHON_VERSION found" # Check Git if ! command -v git &> /dev/null; then print_error "Git is required but not found" exit 1 fi print_success "Git found" # Check Docker (optional) if command -v docker &> /dev/null; then print_success "Docker found" DOCKER_AVAILABLE=true else print_warning "Docker not found (optional for containerized deployment)" DOCKER_AVAILABLE=false fi } show_menu() { echo "" print_info "Choose installation method:" echo "1) Local Python installation (recommended)" echo "2) Docker container" echo "3) Docker Compose" echo "4) Development setup" echo "5) Exit" echo "" read -p "Enter your choice (1-5): " choice case $choice in 1) INSTALL_METHOD="local" ;; 2) INSTALL_METHOD="docker" ;; 3) INSTALL_METHOD="compose" ;; 4) INSTALL_METHOD="dev" ;; 5) exit 0 ;; *) print_error "Invalid choice"; show_menu ;; esac } install_local() { print_info "Installing LMStudio-MCP locally..." # Create installation directory mkdir -p "$INSTALL_DIR" cd "$INSTALL_DIR" # Clone repository if [ -d ".git" ]; then print_info "Repository exists, pulling latest changes..." git pull else print_info "Cloning repository..." git clone https://github.com/infinitimeless/LMStudio-MCP.git . fi # Create virtual environment print_info "Creating virtual environment..." $PYTHON_CMD -m venv $VENV_NAME # Activate virtual environment source $VENV_NAME/bin/activate # Install dependencies print_info "Installing dependencies..." pip install --upgrade pip pip install -r requirements.txt # Create startup script cat > start_lmstudio_mcp.sh << 'EOF' #!/bin/bash cd "$(dirname "$0")" source venv/bin/activate python lmstudio_bridge.py "$@" EOF chmod +x start_lmstudio_mcp.sh print_success "Local installation completed!" print_info "Installation directory: $INSTALL_DIR" print_info "To start: cd $INSTALL_DIR && ./start_lmstudio_mcp.sh" } install_docker() { if [ "$DOCKER_AVAILABLE" != "true" ]; then print_error "Docker is not available" exit 1 fi print_info "Setting up Docker deployment..." mkdir -p "$INSTALL_DIR" cd "$INSTALL_DIR" # Download Docker files print_info "Downloading Docker configuration..." curl -s https://raw.githubusercontent.com/infinitimeless/LMStudio-MCP/main/Dockerfile -o Dockerfile curl -s https://raw.githubusercontent.com/infinitimeless/LMStudio-MCP/main/.dockerignore -o .dockerignore # Build image print_info "Building Docker image..." docker build -t lmstudio-mcp . # Create run script cat > run_docker.sh << 'EOF' #!/bin/bash docker run -it --rm --network host --name lmstudio-mcp-server lmstudio-mcp EOF chmod +x run_docker.sh print_success "Docker installation completed!" print_info "To start: cd $INSTALL_DIR && ./run_docker.sh" } install_compose() { if [ "$DOCKER_AVAILABLE" != "true" ]; then print_error "Docker is not available" exit 1 fi if ! command -v docker-compose &> /dev/null; then print_error "Docker Compose is required but not found" exit 1 fi print_info "Setting up Docker Compose deployment..." mkdir -p "$INSTALL_DIR" cd "$INSTALL_DIR" # Download compose files print_info "Downloading Docker Compose configuration..." curl -s https://raw.githubusercontent.com/infinitimeless/LMStudio-MCP/main/docker-compose.yml -o docker-compose.yml curl -s https://raw.githubusercontent.com/infinitimeless/LMStudio-MCP/main/Dockerfile -o Dockerfile curl -s https://raw.githubusercontent.com/infinitimeless/LMStudio-MCP/main/.dockerignore -o .dockerignore # Create management scripts cat > start.sh << 'EOF' #!/bin/bash docker-compose up -d EOF chmod +x start.sh cat > stop.sh << 'EOF' #!/bin/bash docker-compose down EOF chmod +x stop.sh cat > logs.sh << 'EOF' #!/bin/bash docker-compose logs -f lmstudio-mcp EOF chmod +x logs.sh print_success "Docker Compose installation completed!" print_info "Commands:" print_info " Start: cd $INSTALL_DIR && ./start.sh" print_info " Stop: cd $INSTALL_DIR && ./stop.sh" print_info " Logs: cd $INSTALL_DIR && ./logs.sh" } install_dev() { print_info "Setting up development environment..." # Create installation directory mkdir -p "$INSTALL_DIR" cd "$INSTALL_DIR" # Clone repository if [ -d ".git" ]; then print_info "Repository exists, pulling latest changes..." git pull else print_info "Cloning repository..." git clone https://github.com/infinitimeless/LMStudio-MCP.git . fi # Create virtual environment print_info "Creating virtual environment..." $PYTHON_CMD -m venv $VENV_NAME # Activate virtual environment source $VENV_NAME/bin/activate # Install dependencies including dev tools print_info "Installing dependencies..." pip install --upgrade pip pip install -r requirements.txt pip install -e . # Install development dependencies pip install pytest pytest-cov black flake8 mypy # Create development scripts cat > dev_setup.sh << 'EOF' #!/bin/bash cd "$(dirname "$0")" source venv/bin/activate echo "Development environment activated" echo "Available commands:" echo " python lmstudio_bridge.py - Run the bridge" echo " pytest - Run tests" echo " black . - Format code" echo " flake8 . - Lint code" EOF chmod +x dev_setup.sh print_success "Development environment setup completed!" print_info "Installation directory: $INSTALL_DIR" print_info "To activate: cd $INSTALL_DIR && source dev_setup.sh" } create_mcp_config() { print_info "Creating MCP configuration example..." cat > mcp_config_example.json << EOF { "lmstudio-mcp": { "command": "uvx", "args": [ "https://github.com/infinitimeless/LMStudio-MCP" ] } } EOF if [ "$INSTALL_METHOD" = "local" ]; then cat > mcp_config_local.json << EOF { "lmstudio-mcp-local": { "command": "/bin/bash", "args": [ "-c", "cd $INSTALL_DIR && source venv/bin/activate && python lmstudio_bridge.py" ] } } EOF fi if [ "$INSTALL_METHOD" = "docker" ]; then cat > mcp_config_docker.json << EOF { "lmstudio-mcp-docker": { "command": "docker", "args": [ "run", "-i", "--rm", "--network=host", "lmstudio-mcp" ] } } EOF fi print_success "MCP configuration examples created" } main() { print_header check_requirements show_menu case $INSTALL_METHOD in "local") install_local ;; "docker") install_docker ;; "compose") install_compose ;; "dev") install_dev ;; esac create_mcp_config echo "" print_success "Installation completed successfully!" print_info "Next steps:" print_info "1. Ensure LM Studio is running on localhost:1234" print_info "2. Configure Claude MCP with the provided configuration" print_info "3. Test the connection" echo "" print_info "For troubleshooting, see: https://github.com/infinitimeless/LMStudio-MCP/blob/main/TROUBLESHOOTING.md" } # 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/infinitimeless/LMStudio-MCP'

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