Solr MCP

by allenday
Verified
#!/bin/bash # Setup script for Solr MCP Server set -e # Exit immediately if a command exits with a non-zero status echo "=== Setting up Solr MCP Server ===" # Check if Docker is installed if ! command -v docker &> /dev/null; then echo "Docker is not installed. Please install Docker and Docker Compose first." exit 1 fi # Check if Docker Compose is installed if ! command -v docker-compose &> /dev/null; then echo "Docker Compose is not installed. Please install Docker Compose first." exit 1 fi # Create Python virtual environment echo "Creating Python virtual environment..." python3 -m venv venv source venv/bin/activate # Install dependencies echo "Installing dependencies..." pip install poetry poetry install # Start Docker containers echo "Starting SolrCloud, ZooKeeper, and Ollama containers..." docker-compose up -d # Wait for Solr to be ready echo "Waiting for SolrCloud to be ready..." sleep 10 attempts=0 max_attempts=30 while ! curl -s http://localhost:8983/solr/ > /dev/null; do attempts=$((attempts+1)) if [ $attempts -ge $max_attempts ]; then echo "Error: SolrCloud did not start in time. Please check docker-compose logs." exit 1 fi echo "Waiting for SolrCloud to start... (attempt $attempts/$max_attempts)" sleep 5 done # Create unified collection echo "Creating unified collection..." python scripts/create_unified_collection.py # Process demo data (Bitcoin whitepaper) echo "Processing demo data..." python scripts/process_markdown.py data/bitcoin-whitepaper.md --output data/processed/bitcoin_sections.json # Index demo data to unified collection echo "Indexing demo data to unified collection..." python scripts/unified_index.py data/processed/bitcoin_sections.json --collection unified # Test search to ensure content is indexed properly echo "Testing search functionality..." python -c " import httpx import asyncio async def test_search(): async with httpx.AsyncClient() as client: response = await client.get( 'http://localhost:8983/solr/unified/select', params={ 'q': 'content:\"double spend\"~5', 'wt': 'json' } ) results = response.json() if results.get('response', {}).get('numFound', 0) > 0: print('✅ Search test successful! Found documents matching \"double spend\"') else: print('❌ Warning: No documents found for \"double spend\". Search may not work properly.') print(' Try running: python scripts/diagnose_search.py --collection unified --term \"double spend\"') asyncio.run(test_search()) " echo "" echo "=== Setup Complete! ===" echo "" echo "You can now use the Solr MCP server with the following commands:" echo "" echo "1. Start the MCP server:" echo " python -m solr_mcp.server" echo "" echo "2. Try hybrid search on the demo data:" echo " python scripts/demo_hybrid_search.py \"blockchain\" --mode compare" echo "" echo "3. Use the Claude Desktop integration by configuring the MCP server" echo " in Claude's configuration file (see README.md for details)." echo "" echo "For more information, please refer to the documentation in README.md."