Skip to main content
Glama
README.md
# Web-Scout: AI-Powered Search with LLM Summarization

A FastAPI application that performs web searches using DuckDuckGo and generates AI-powered summaries using Google's Gemini AI.

## Features

- Web search using DuckDuckGo
- AI summarization using Gemini 2.5 Flash
- Two output modes: Summary and Detailed analysis
- Docker & Docker Compose ready
- Secure API key management via environment variables
- MCP (Model Context Protocol) support over HTTP

## Prerequisites

- Docker and Docker Compose installed
- Google Gemini API key

## Setup

1. **Clone the repository** (or navigate to your project directory)

2. **Add your Gemini API key** to the `.env` file:
   ```bash
   GEMINI_API_KEY=your_actual_gemini_api_key_here
   ```

3. **Build and run with Docker Compose**:
   ```bash
   docker-compose up --build
   ```

## API Usage

The application will be available at `http://localhost:8000`

### Health Check
```bash
curl http://localhost:8000/health
```

### Search Endpoint

#### Summary Mode (Default)
```bash
curl "http://localhost:8000/search?query=artificial+intelligence"
# or explicitly specify mode=summary
curl "http://localhost:8000/search?query=artificial+intelligence&mode=summary"
```

#### Detailed Mode
```bash
curl "http://localhost:8000/search?query=artificial+intelligence&mode=detailed"
```

#### Response Format
```json
{
  "query": "your search query",
  "mode": "summary",
  "summary": "AI-generated analysis...",
  "sources_used": 10
}
```

## MCP Server Integration

Web-Scout can also function as an MCP (Model Context Protocol) server, allowing AI assistants to perform web searches directly through tools.

### MCP Features

- **Web Search Tool**: Perform web searches with AI summarization
- **Dual Mode Support**: Both summary and detailed analysis modes
- **HTTP Transport**: MCP over HTTP protocol for client integration
- **JSON Responses**: Structured output for easy integration

### MCP Tools Available

#### Web Search Tool
- **Name**: `web_search`
- **Description**: Perform a web search using DuckDuckGo and generate AI-powered summaries
- **Parameters**:
  - `query` (string, required): The search query to perform
  - `mode` (string, optional): Response mode - "summary" or "detailed" (default: "summary")

### MCP Server Setup

Web-Scout provides MCP functionality over HTTP, accessible at the `/mcp` endpoint.

#### Method 1: Direct FastAPI Server
1. Install dependencies:
```bash
pip install -r requirements.txt
```

2. Set your Gemini API key:
```bash
export GEMINI_API_KEY=your_api_key_here
```

3. Run the HTTP server with MCP endpoint:
```bash
python main.py
```

The MCP endpoint will be available at `http://localhost:8000/mcp`


#### Method 2: Docker Container
```bash
# Run the HTTP server with Docker (MCP available at /mcp)
docker-compose up --build
```
# Or run standalone container
docker run -p 8000:8000 -e GEMINI_API_KEY=your_api_key_here web-scout

### Integrating with AI Tools

To use Web-Scout as an MCP server with AI tools like Claude Desktop or Roo:

1. **Create MCP Configuration**:
```json
{
  "mcpServers": {
    "web-scout": {
      "command": "python",
      "args": ["-m", "uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"],
      "env": {
        "GEMINI_API_KEY": "your_gemini_api_key_here"
      }
    }
  }
}
```

2. **Configure your AI tool** to use the MCP configuration:
   - For Claude Desktop: Add to `~/Library/Application Support/Claude/claude_desktop_config.json`
   - For Roo: Add to the appropriate configuration file

3. **Usage Example**:
```
Can you search for the latest news about artificial intelligence?
```

The AI tool will use the Web-Scout MCP server (via the `/mcp` endpoint) to perform the search and provide summarized results.

## Development

### Local Development (without Docker)
```bash
# Install dependencies
pip install -r requirements.txt

# Set your API key
export GEMINI_API_KEY=your_api_key_here

# Run the application
uvicorn main:app --reload
```

### Using Docker Compose
```bash
# Build and run
docker-compose up --build

# Run in background
docker-compose up -d --build

# Stop the application
docker-compose down

# View logs
docker-compose logs -f web-scout
```

## Configuration

### Environment Variables
- `GEMINI_API_KEY`: Your Google Gemini API key (required)

### Docker Configuration
- **Port**: 8000
- **Container name**: web-scout
- **Health check**: Automatic health monitoring

## Security Notes

- The `.env` file is ignored by Git and should never be committed
- API keys are mounted securely via Docker Compose volumes
- The application uses health checks for monitoring

## Error Handling

- Returns proper HTTP status codes
- Includes detailed error messages
- Handles missing API keys and invalid parameters gracefully