Skip to main content
Glama
tehmenghai

Gen AI Lyrics Search Agent

by tehmenghai
README.md
# Gen AI Lyrics Search Agent

A generative AI agent that can search for song lyrics across the web and return results in a specific format for mobile apps. Built with Model Context Protocol (MCP) for standardized tool integration.

## Features

- šŸ” Web-based lyrics search across multiple sources
- šŸ¤– Generative AI-powered conversation interface
- šŸ”Œ MCP-compliant tool integration
- šŸš€ FastAPI-based REST API
- šŸ”’ Authentication and rate limiting
- šŸ“Š Performance monitoring and analytics

## Prerequisites

- Python 3.10 or higher
- Poetry for dependency management
- Docker (optional)

## Setup

1. Clone the repository:
```bash
git clone <repository-url>
cd lyrics-search-agent
```

2. Install dependencies using Poetry:
```bash
poetry install
```

3. Set up environment variables:
```bash
cp .env.example .env
# Edit .env with your configuration
```

4. Run the application:
```bash
poetry run uvicorn app.main:app --reload
```

Or using Docker:
```bash
docker build -t lyrics-search-agent .
docker run -p 8000:8000 lyrics-search-agent
```

## API Documentation

Once the application is running, visit:
- API documentation: http://localhost:8000/docs
- ReDoc alternative: http://localhost:8000/redoc

### Key Endpoints

- `GET /`: Service information
- `POST /search`: Search for lyrics
- `GET /tools`: List available tools

## Development

### Project Structure

```
app/
ā”œā”€ā”€ __init__.py
ā”œā”€ā”€ main.py
ā”œā”€ā”€ mcp/
│   ā”œā”€ā”€ __init__.py
│   └── protocol.py
└── tools/
    └── web_search.py
```

### Adding New Tools

1. Create a new tool class in `app/tools/`
2. Implement the `BaseTool` interface
3. Register the tool in `app/main.py`

## Testing

Run tests using pytest:
```bash
poetry run pytest
```

## Contributing

1. Fork the repository
2. Create a feature branch
3. Commit your changes
4. Push to the branch
5. Create a Pull Request

## License

This project is licensed under the MIT License - see the LICENSE file for details.

## Acknowledgments

- OpenAI/Anthropic for LLM capabilities
- FastAPI for the web framework
- LangChain for LLM orchestration