| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266 |
- #!/bin/bash
- # Skill Seeker MCP Server - Quick Setup Script
- # This script automates the MCP server setup for Claude Code
- set -e # Exit on error
- echo "=================================================="
- echo "Skill Seeker MCP Server - Quick Setup"
- echo "=================================================="
- echo ""
- # Colors for output
- GREEN='\033[0;32m'
- YELLOW='\033[1;33m'
- RED='\033[0;31m'
- NC='\033[0m' # No Color
- # Step 1: Check Python version
- echo "Step 1: Checking Python version..."
- if ! command -v python3 &> /dev/null; then
- echo -e "${RED}❌ Error: python3 not found${NC}"
- echo "Please install Python 3.7 or higher"
- exit 1
- fi
- PYTHON_VERSION=$(python3 --version | cut -d' ' -f2)
- echo -e "${GREEN}✓${NC} Python $PYTHON_VERSION found"
- echo ""
- # Step 2: Get repository path
- REPO_PATH=$(pwd)
- echo "Step 2: Repository location"
- echo "Path: $REPO_PATH"
- echo ""
- # Step 3: Install dependencies
- echo "Step 3: Installing Python dependencies..."
- # Check if we're in a virtual environment
- if [[ -n "$VIRTUAL_ENV" ]]; then
- echo -e "${GREEN}✓${NC} Virtual environment detected: $VIRTUAL_ENV"
- PIP_INSTALL_CMD="pip install"
- elif [[ -d "venv" ]]; then
- echo -e "${YELLOW}⚠${NC} Virtual environment found but not activated"
- echo "Activating venv..."
- source venv/bin/activate
- PIP_INSTALL_CMD="pip install"
- else
- echo -e "${YELLOW}⚠${NC} No virtual environment found"
- echo "It's recommended to use a virtual environment to avoid conflicts."
- echo ""
- read -p "Would you like to create one now? (y/n) " -n 1 -r
- echo ""
- if [[ $REPLY =~ ^[Yy]$ ]]; then
- echo "Creating virtual environment..."
- python3 -m venv venv || {
- echo -e "${RED}❌ Failed to create virtual environment${NC}"
- echo "Falling back to system install..."
- PIP_INSTALL_CMD="pip3 install --user --break-system-packages"
- }
- if [[ -d "venv" ]]; then
- source venv/bin/activate
- PIP_INSTALL_CMD="pip install"
- echo -e "${GREEN}✓${NC} Virtual environment created and activated"
- fi
- else
- echo "Proceeding with system install (using --user --break-system-packages)..."
- echo -e "${YELLOW}Note:${NC} This may override system-managed packages"
- PIP_INSTALL_CMD="pip3 install --user --break-system-packages"
- fi
- fi
- echo "This will install: mcp, requests, beautifulsoup4"
- read -p "Continue? (y/n) " -n 1 -r
- echo ""
- if [[ $REPLY =~ ^[Yy]$ ]]; then
- echo "Installing package in editable mode..."
- $PIP_INSTALL_CMD -e . || {
- echo -e "${RED}❌ Failed to install package${NC}"
- exit 1
- }
- echo -e "${GREEN}✓${NC} Dependencies installed successfully"
- else
- echo "Skipping dependency installation"
- fi
- echo ""
- # Step 4: Test MCP server
- echo "Step 4: Testing MCP server..."
- timeout 3 python3 src/skill_seekers/mcp/server.py 2>/dev/null || {
- if [ $? -eq 124 ]; then
- echo -e "${GREEN}✓${NC} MCP server starts correctly (timeout expected)"
- else
- echo -e "${YELLOW}⚠${NC} MCP server test inconclusive, but may still work"
- fi
- }
- echo ""
- # Step 5: Optional - Run tests
- echo "Step 5: Run test suite? (optional)"
- read -p "Run MCP tests to verify everything works? (y/n) " -n 1 -r
- echo ""
- if [[ $REPLY =~ ^[Yy]$ ]]; then
- # Check if pytest is installed
- if ! command -v pytest &> /dev/null; then
- echo "Installing pytest..."
- $PIP_INSTALL_CMD pytest || {
- echo -e "${YELLOW}⚠${NC} Could not install pytest, skipping tests"
- }
- fi
- if command -v pytest &> /dev/null; then
- echo "Running MCP server tests..."
- python3 -m pytest tests/test_mcp_server.py -v --tb=short || {
- echo -e "${RED}❌ Some tests failed${NC}"
- echo "The server may still work, but please check the errors above"
- }
- fi
- else
- echo "Skipping tests"
- fi
- echo ""
- # Step 6: Configure Claude Code
- echo "Step 6: Configure Claude Code"
- echo "=================================================="
- echo ""
- echo "You need to add this configuration to Claude Code:"
- echo ""
- echo -e "${YELLOW}Configuration file:${NC} ~/.config/claude-code/mcp.json"
- echo ""
- echo "Add this JSON configuration (paths are auto-detected for YOUR system):"
- echo ""
- echo -e "${GREEN}{"
- echo " \"mcpServers\": {"
- echo " \"skill-seeker\": {"
- echo " \"command\": \"python3\","
- echo " \"args\": ["
- echo " \"$REPO_PATH/src/skill_seekers/mcp/server.py\""
- echo " ],"
- echo " \"cwd\": \"$REPO_PATH\""
- echo " }"
- echo " }"
- echo -e "}${NC}"
- echo ""
- echo -e "${YELLOW}Note:${NC} The paths above are YOUR actual paths (not placeholders!)"
- echo ""
- # Ask if user wants auto-configure
- echo ""
- read -p "Auto-configure Claude Code now? (y/n) " -n 1 -r
- echo ""
- if [[ $REPLY =~ ^[Yy]$ ]]; then
- # Check if config already exists
- if [ -f ~/.config/claude-code/mcp.json ]; then
- echo -e "${YELLOW}⚠ Warning: ~/.config/claude-code/mcp.json already exists${NC}"
- echo "Current contents:"
- cat ~/.config/claude-code/mcp.json
- echo ""
- read -p "Overwrite? (y/n) " -n 1 -r
- echo ""
- if [[ ! $REPLY =~ ^[Yy]$ ]]; then
- echo "Skipping auto-configuration"
- echo "Please manually add the skill-seeker server to your config"
- exit 0
- fi
- fi
- # Create config directory
- mkdir -p ~/.config/claude-code
- # Write configuration with actual expanded path
- cat > ~/.config/claude-code/mcp.json << EOF
- {
- "mcpServers": {
- "skill-seeker": {
- "command": "python3",
- "args": [
- "$REPO_PATH/src/skill_seekers/mcp/server.py"
- ],
- "cwd": "$REPO_PATH"
- }
- }
- }
- EOF
- echo -e "${GREEN}✓${NC} Configuration written to ~/.config/claude-code/mcp.json"
- echo ""
- echo "Configuration contents:"
- cat ~/.config/claude-code/mcp.json
- echo ""
- # Verify the path exists
- if [ -f "$REPO_PATH/src/skill_seekers/mcp/server.py" ]; then
- echo -e "${GREEN}✓${NC} Verified: MCP server file exists at $REPO_PATH/src/skill_seekers/mcp/server.py"
- else
- echo -e "${RED}❌ Warning: MCP server not found at $REPO_PATH/src/skill_seekers/mcp/server.py${NC}"
- echo "Please check the path!"
- fi
- else
- echo "Skipping auto-configuration"
- echo "Please manually configure Claude Code using the JSON above"
- echo ""
- echo "IMPORTANT: Replace \$REPO_PATH with the actual path: $REPO_PATH"
- fi
- echo ""
- # Step 7: Test the configuration
- if [ -f ~/.config/claude-code/mcp.json ]; then
- echo "Step 7: Testing MCP configuration..."
- echo "Checking if paths are correct..."
- # Extract the configured path
- if command -v jq &> /dev/null; then
- CONFIGURED_PATH=$(jq -r '.mcpServers["skill-seeker"].args[0]' ~/.config/claude-code/mcp.json 2>/dev/null || echo "")
- if [ -n "$CONFIGURED_PATH" ] && [ -f "$CONFIGURED_PATH" ]; then
- echo -e "${GREEN}✓${NC} MCP server path is valid: $CONFIGURED_PATH"
- elif [ -n "$CONFIGURED_PATH" ]; then
- echo -e "${YELLOW}⚠${NC} Warning: Configured path doesn't exist: $CONFIGURED_PATH"
- fi
- else
- echo "Install 'jq' for config validation: brew install jq (macOS) or apt install jq (Linux)"
- fi
- fi
- echo ""
- # Step 8: Final instructions
- echo "=================================================="
- echo "Setup Complete!"
- echo "=================================================="
- echo ""
- echo "Next steps:"
- echo ""
- echo " 1. ${YELLOW}Restart Claude Code${NC} (quit and reopen, don't just close window)"
- echo " 2. In Claude Code, test with: ${GREEN}\"List all available configs\"${NC}"
- echo " 3. You should see 9 Skill Seeker tools available"
- echo ""
- echo "Available MCP Tools:"
- echo " • generate_config - Create new config files"
- echo " • estimate_pages - Estimate scraping time"
- echo " • scrape_docs - Scrape documentation"
- echo " • package_skill - Create .zip files"
- echo " • list_configs - Show available configs"
- echo " • validate_config - Validate config files"
- echo ""
- echo "Example commands to try in Claude Code:"
- echo " • ${GREEN}List all available configs${NC}"
- echo " • ${GREEN}Validate configs/react.json${NC}"
- echo " • ${GREEN}Generate config for Tailwind at https://tailwindcss.com/docs${NC}"
- echo ""
- echo "Documentation:"
- echo " • MCP Setup Guide: ${YELLOW}docs/MCP_SETUP.md${NC}"
- echo " • Full docs: ${YELLOW}README.md${NC}"
- echo ""
- echo "Troubleshooting:"
- echo " • Check logs: ~/Library/Logs/Claude Code/ (macOS)"
- echo " • Test server: python3 src/skill_seekers/mcp/server.py"
- echo " • Run tests: python3 -m pytest tests/test_mcp_server.py -v"
- echo ""
- echo "Happy skill creating! 🚀"
|