116 lines
3.2 KiB
Bash
Executable File
116 lines
3.2 KiB
Bash
Executable File
#!/bin/bash
|
||
set -e
|
||
|
||
# ai.card virtual environment setup script
|
||
# This script sets up the Python virtual environment for ai.card MCP server
|
||
|
||
# Configuration
|
||
CARD_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||
API_DIR="$CARD_DIR/api"
|
||
VENV_DIR="$HOME/.config/syui/ai/card/venv"
|
||
REQUIREMENTS_FILE="$API_DIR/requirements.txt"
|
||
|
||
echo "🎴 ai.card Virtual Environment Setup"
|
||
echo "======================================"
|
||
echo "Card directory: $CARD_DIR"
|
||
echo "API directory: $API_DIR"
|
||
echo "Virtual environment: $VENV_DIR"
|
||
echo
|
||
|
||
# Check if we're in the right directory
|
||
if [ ! -f "$API_DIR/requirements.txt" ]; then
|
||
echo "❌ Error: requirements.txt not found in $API_DIR"
|
||
echo "Make sure you're running this script from the ai.card root directory"
|
||
exit 1
|
||
fi
|
||
|
||
# Create config directory structure
|
||
echo "📁 Creating config directory structure..."
|
||
mkdir -p "$(dirname "$VENV_DIR")"
|
||
|
||
# Create virtual environment
|
||
if [ -d "$VENV_DIR" ]; then
|
||
echo "⚠️ Virtual environment already exists at $VENV_DIR"
|
||
read -p "Do you want to recreate it? (y/N): " -n 1 -r
|
||
echo
|
||
if [[ $REPLY =~ ^[Yy]$ ]]; then
|
||
echo "🗑️ Removing existing virtual environment..."
|
||
rm -rf "$VENV_DIR"
|
||
else
|
||
echo "ℹ️ Using existing virtual environment"
|
||
fi
|
||
fi
|
||
|
||
if [ ! -d "$VENV_DIR" ]; then
|
||
echo "🐍 Creating Python virtual environment..."
|
||
python3 -m venv "$VENV_DIR"
|
||
fi
|
||
|
||
# Activate virtual environment
|
||
echo "🔌 Activating virtual environment..."
|
||
source "$VENV_DIR/bin/activate"
|
||
|
||
# Upgrade pip
|
||
echo "⬆️ Upgrading pip..."
|
||
python -m pip install --upgrade pip
|
||
|
||
# Install dependencies
|
||
echo "📦 Installing dependencies from requirements.txt..."
|
||
pip install -r "$REQUIREMENTS_FILE"
|
||
|
||
# Verify installation
|
||
echo "✅ Verifying installation..."
|
||
cd "$API_DIR"
|
||
|
||
# Test basic imports
|
||
echo " Testing FastAPI import..."
|
||
python -c "import fastapi; print(f'✓ FastAPI {fastapi.__version__}')" || {
|
||
echo "❌ FastAPI import failed"
|
||
exit 1
|
||
}
|
||
|
||
# Test fastapi-mcp import
|
||
echo " Testing fastapi-mcp import..."
|
||
python -c "from mcp.server.fastmcp import FastMCP; print('✓ FastMCP')" || {
|
||
echo "❌ FastMCP import failed"
|
||
exit 1
|
||
}
|
||
|
||
# Test ai.card MCP server import
|
||
echo " Testing ai.card MCP server import..."
|
||
python -c "from app.mcp_server import AICardMcpServer; print('✓ AICardMcpServer')" || {
|
||
echo "❌ AICardMcpServer import failed"
|
||
exit 1
|
||
}
|
||
|
||
echo
|
||
echo "🎉 Setup completed successfully!"
|
||
echo
|
||
echo "Usage:"
|
||
echo "------"
|
||
echo "# Activate virtual environment:"
|
||
echo "source $VENV_DIR/bin/activate"
|
||
echo
|
||
echo "# Start ai.card MCP server:"
|
||
echo "cd $API_DIR"
|
||
echo "uvicorn app.main:app --host localhost --port 8000 --reload"
|
||
echo
|
||
echo "# Test server:"
|
||
echo "curl http://localhost:8000/health"
|
||
echo
|
||
echo "# Deactivate when done:"
|
||
echo "deactivate"
|
||
echo
|
||
echo "MCP Server Features:"
|
||
echo "-------------------"
|
||
echo "• 9 MCP tools for card game functionality"
|
||
echo "• FastAPI REST API (/api/v1/*)"
|
||
echo "• Environment variable control (ENABLE_MCP=true/false)"
|
||
echo "• Integration with ai.gpt MCP server"
|
||
echo
|
||
echo "Configuration:"
|
||
echo "-------------"
|
||
echo "• Virtual environment: $VENV_DIR"
|
||
echo "• Config directory: ~/.config/syui/ai/card/"
|
||
echo "• API documentation: http://localhost:8000/docs"
|
||
echo "• MCP endpoint: http://localhost:8000/mcp" |