Skip to main content
Glama
README.md
## Qanat Goose MCP Extension

[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

๐Ÿ”„ Looking for the standalone prototype? See [Qanat](https://github.com/professordnyc/Qanat).

Qanat Goose MCP Extension is an agentโ€‘based Goose MCPโ€‘UI extension that wraps the Square MCP Server, integrating sandbox catalog/orders with voice and gesture agents for an interactive seller dashboard.

## ๐Ÿ—๏ธ Architecture

Qanat integrates with Goose Desktop as a custom MCP-UI extension:

```
Goose Desktop (MCP-UI surface)
    โ†“
Qanat MCP-UI Extension โ† Voice/Gesture Agents  
    โ†“
Square MCP Server
    โ†“  
Square API
```

## ๐Ÿš€ Quick Start

1. **Setup Environment**
   ```bash
   # Copy environment template
   cp env.example .env
   
   # Edit .env with your API keys
   # SQUARE_API_KEY=your_key_here
   # ELEVENLABS_API_KEY=your_key_here
   ```

2. **Install Dependencies**
   ```bash
   pip install -r requirements.txt
   ```

3. **Run the MCP Server**
   ```bash
   npm run dev
   # or
   python -m backend.mcp_servers.qanat_server
   ```

4. **Connect to Goose Desktop**
   - Add Qanat as MCP-UI extension in Goose settings
   - Server will run on localhost:3001

## ๐Ÿ”„ Running Both Qanat Demos
There are two versions of Qanat available:
Qanat (Baseline Prototype)
- Standalone dashboard using Web Speech API and seeded demo data.
- Runs entirely in the browser, with fallback APIs when Square is unreachable.
- To run:
- Clone the qanat repo.
- Install dependencies (npm install).
- Start the backend mock server (npm run dev).
- Start the frontend (cd frontend && npm run dev).
- Visit http://localhost:5173 in Chrome and allow microphone access.
Qanat Goose MCP Extension (Advanced)
- Goose MCPโ€‘UI extension wrapping Square MCP Server.
- Integrates Square sandbox catalog/orders with voice and gesture agents.
- To run:
- Clone the qanat-goose-mcp repo.
- Copy env.template โ†’ .env and add your Square sandbox OAuth credentials.
- Start the MCP server (npm run dev or python -m backend.mcp_servers.qanat_server).
- In Goose Desktop, add Qanat as an MCPโ€‘UI extension with endpoint http://localhost:3001.
- Interact via voice, gesture, or UI buttons.

## ๐Ÿ“ Project Structure

```
qanat_v2/
โ”œโ”€โ”€ backend/                    # Core backend services
โ”‚   โ”œโ”€โ”€ agents/                # Goose subagents (voice, gesture)
โ”‚   โ”œโ”€โ”€ services/              # Square API integration
โ”‚   โ””โ”€โ”€ mcp_servers/           # MCP protocol servers
โ”œโ”€โ”€ config/                    # Configuration files
โ”‚   โ”œโ”€โ”€ extensions/            # Extension configs (Square, voice, gesture)
โ”‚   โ””โ”€โ”€ environments/          # Environment loading utilities
โ”œโ”€โ”€ docs/                      # Project documentation
โ”‚   โ”œโ”€โ”€ PROJECT_BOARD.md       # Development task breakdown
โ”‚   โ”œโ”€โ”€ PLAN.md               # MVP development plan  
โ”‚   โ””โ”€โ”€ Qanat_Architecture_Overview.md
โ”œโ”€โ”€ requirements.txt           # Python dependencies
โ”œโ”€โ”€ package.json              # Project metadata & scripts
โ””โ”€โ”€ env.example               # Environment template
```

## ๐ŸŽฏ MVP Features

- **Catalog Dashboard**: View and manage Square catalog items
- **Orders Dashboard**: Monitor recent orders and status updates  
- **Voice Control**: "Refresh catalog" command via ElevenLabs
- **Gesture Control**: Toggle item status with thumb-up gesture via MediaPipe
- **Interactive UI**: Clickable tables and action buttons in Goose Desktop

## ๐Ÿ› ๏ธ Development

See [docs/PROJECT_BOARD.md](docs/PROJECT_BOARD.md) for detailed development tasks and timeline.

### Key Components

- **MCP-UI Server**: `backend/mcp_servers/qanat_server.py`
- **Square Integration**: `backend/services/`
- **Voice Agent**: Uses ElevenLabs for speech-to-text
- **Gesture Agent**: Uses MediaPipe for hand gesture recognition

### Configuration Files

- `config/extensions/square_mcp.json` - Square API integration config
- `config/extensions/qanat_mcp_ui.json` - UI component definitions  
- `config/extensions/elevenlabs_voice.json` - Voice command mappings
- `config/extensions/mediapipe_gesture.json` - Gesture recognition setup

## ๐Ÿ”ง Scripts

```bash
npm run dev          # Start development server
npm run start        # Start production server  
npm run test         # Run tests
npm run setup        # Install dependencies
npm run config       # Validate configuration
```

## ๐Ÿ“‹ Environment Variables

Required variables (copy from `env.example`):

- `SQUARE_API_KEY` - Your Square API key  
- `SQUARE_ENVIRONMENT` - sandbox/production
- `ELEVENLABS_API_KEY` - ElevenLabs API key for voice features
- `MEDIAPIPE_CONFIDENCE_THRESHOLD` - Gesture detection sensitivity

## ๐ŸŽฎ Usage

### Voice Commands
- "Refresh catalog" - Reload catalog items
- "Show orders" - Display recent orders  
- "Help" - Show available commands

### Gesture Controls  
- ๐Ÿ‘ **Thumb up** - Toggle item active/inactive status
- ๐Ÿ‘‰ **Point** - Select table row
- โœ‹ **Open palm** - Refresh current view
- โœŒ๏ธ **Peace sign** - Switch catalog/orders view

## ๐Ÿงช Testing

```bash
# Run all tests
npm run test

# Test Square integration
python -m pytest tests/test_square_services.py

# Test voice commands  
python -m pytest tests/test_voice_agent.py

# Test gesture recognition
python -m pytest tests/test_gesture_agent.py
```

## ๐Ÿ“ License

MIT License - see LICENSE file for details.

---

*Built with โค๏ธ for Square sellers using Goose Desktop*
#Block #Goose 

## Contact

Reach me here or on Discord: @professordnyc