Skip to main content
Glama
Ripnrip

Quake Coding Arena MCP

by Ripnrip
README.md
# šŸŽÆ Enhanced Quake Coding Arena - MCP Server

[![smithery badge](https://smithery.ai/badge/@Ripnrip/quake-coding-arena)](https://smithery.ai/server/@Ripnrip/quake-coding-arena)

![Quake Coding Arena Logo](logo.png)

**DOMINATING! EXCELLENT! GODLIKE! UNSTOPPABLE!** šŸŽÆšŸ”„

> **Premium TypeScript MCP Server for gamifying your development environment with authentic Quake 3 Arena sounds and dual voice announcers**

## šŸš€ **Features**

### šŸŽ® **25 Epic Achievements**
- **Streak Achievements**: RAMPAGE, DOMINATING, UNSTOPPABLE, GODLIKE (both voices)
- **Quality Achievements**: EXCELLENT, PERFECT, IMPRESSIVE (male voice)
- **Multi-Kills**: WICKED SICK, HEADSHOT, MULTI KILL, ULTRA KILL, MONSTER KILL, LUDICROUS KILL, KILLING SPREE, DOUBLE KILL, TRIPLE KILL (both voices)
- **Game Events**: FIRST BLOOD, HUMILIATION, HOLY SHIT, BOTTOM FEEDER (both voices)
- **Team Events**: PREPARE TO FIGHT, PLAY (both voices)

### šŸŽ¤ **Dual Voice System**
- **Male Announcer**: Complete voice pack with 17 unique sounds
- **Female Announcer**: Complete voice pack with 16 unique sounds
- **Smart fallback** to male voice for unavailable female sounds
- **Volume control** (0-100%)
- **Cross-platform audio** support

### šŸ”§ **MCP Integration**
- **10 MCP Tools** for complete control
- **JSON-RPC 2.0** compliant
- **Session statistics** tracking
- **Dual transport support**: HTTP (Smithery) and stdio (local clients)
- **Claude Code compatible** with automatic stdio detection
- **Category filtering** for achievements
- **Random achievement** selection
- **AI usage guide** integration
- **Voice pack testing** capabilities

## šŸ“¦ **Installation Options**

### **Option 1: Local Development Setup**

```bash
# Run local setup script
./setup-local.sh

# Or manually
npm install
npm run build
node run-server.ts
```

### **Option 2: Remote (Smithery) Deployment**

**āš ļø Important:** Smithery packages are NOT on npm - they use HTTP endpoints!

```bash
# Run remote setup script
./setup-remote.sh

# Or use Smithery HTTP endpoint directly
# Add to your MCP configuration:
{
  "mcpServers": {
    "quake-arena": {
      "transport": "http",
      "url": "https://server.smithery.ai/@Ripnrip/quake-coding-arena-mcp/mcp"
    }
  }
}
```

**Note:** For local development/testing, use the local build method (Option 1) instead of npx.

### **Option 3: GitHub Pages Website**

Visit the live soundboard at: **https://ripnrip.github.io/Quake-Coding-Arena-MCP/**

The website includes:
- āœ… Interactive soundboard with all 25 achievements
- āœ… Dual voice system (Male/Female toggle)
- āœ… Category filtering
- āœ… Volume control
- āœ… GitHub Pages ready

## šŸŽÆ **Available MCP Tools**

### Core Achievement Tools
- `play_enhanced_quake_sound` - Trigger specific achievements
- `random_enhanced_achievement` - Random by category
- `list_enhanced_achievements` - Browse all achievements

### Control & Settings
- `set_enhanced_volume` - Set volume (0-100)
- `set_voice_pack` - Switch male/female voices
- `get_voice_pack_info` - Voice information

### Statistics & Guides
- `get_enhanced_achievement_stats` - Session statistics
- `get_enhanced_achievement_guide` - Achievement guide
- `get_ai_usage_guide` - Context-specific usage tips
- `test_voice_packs` - Test all voice packs

## šŸŽ® **Usage Examples**

```javascript
// Trigger a GODLIKE achievement at 80% volume
await session.call("tools/call", {
  name: "play_enhanced_quake_sound",
  arguments: {
    achievement: "GODLIKE",
    volume: 80,
    voiceGender: "female"
  }
});

// Get a random quality achievement
await session.call("tools/call", {
  name: "random_enhanced_achievement",
  arguments: {
    category: "quality",
    volume: 70
  }
});

// Switch to female voice pack
await session.call("tools/call", {
  name: "set_voice_pack",
  arguments: {
    voiceGender: "female"
  }
});
```

## šŸ”§ **Configuration**

The server automatically detects sound files and supports:
- **MP3 and WAV** audio formats
- **Custom sound directories**
- **Voice pack management**
- **Session persistence**

## šŸ“ **Project Structure**

```
quake-coding-arena-enhanced/
ā”œā”€ā”€ index.js              # Main MCP server
ā”œā”€ā”€ package.json           # NPM configuration
ā”œā”€ā”€ smithery.yaml         # Smithery configuration
ā”œā”€ā”€ sounds/               # Audio files
│   ā”œā”€ā”€ male/            # Male announcer sounds
│   └── female/          # Female announcer sounds
ā”œā”€ā”€ README.md            # This file
└── test-mcp-server.cjs   # Test utilities
```

## šŸ† **Achievement Categories**

### šŸ”„ **Streak Achievements** (Both Voices)
- **RAMPAGE** (10) - Multiple quick tasks
- **DOMINATING** (15) - Complex problems solved
- **UNSTOPPABLE** (20) - Long productive sessions
- **GODLIKE** (25) - Legendary coding sessions

### ✨ **Quality Achievements** (Male Voice)
- **EXCELLENT** - Elegant solutions
- **PERFECT** - Flawless implementation
- **IMPRESSIVE** - Creative problem-solving

### āš”ļø **Multi-Kill Achievements** (Both Voices)
- **HEADSHOT** - Precision coding
- **DOUBLE KILL** - Two quick wins
- **MULTI KILL** - Multiple bugs squashed
- **KILLING SPREE** - Consistent productivity
- **TRIPLE KILL** - Triple efficiency
- **ULTRA KILL** - Exceptional performance
- **MONSTER KILL** - Massive code refactoring
- **LUDICROUS KILL** - Unbelievable solutions
- **WICKED SICK** - Mind-blowing solutions

### šŸŽŖ **Game State Announcements** (Both Voices)
- **FIRST BLOOD** - First bug found
- **HUMILIATION** - Quick bug fixes
- **HOLY SHIT** - Unexpected breakthrough
- **BOTTOM FEEDER** - Learning from mistakes

### šŸ‘„ **Team Events** (Both Voices)
- **PREPARE TO FIGHT** - Team motivation
- **PLAY** - Game on, let's code!

## šŸŽÆ **Perfect For**

- **Developers** wanting gamified coding environments
- **Teams** needing motivational feedback
- **Streamers** wanting engaging content
- **Educators** teaching coding concepts
- **Anyone** loving Quake 3 Arena nostalgia!

## šŸ“Š **Requirements**

- **Node.js 18+** for MCP server
- **MCP-compatible** IDE (Cursor, Claude Desktop, etc.)
- **Audio system** for sound playback

## šŸ”— **Integration Examples**

### Claude Desktop
```json
{
  "mcpServers": {
    "quake-arena": {
      "command": "npx",
      "args": ["@Ripnrip/quake-coding-arena-mcp"]
    }
  }
}
```

### Cursor / Claude Code
- **Local Build Method** (Recommended):
  ```json
  {
    "mcpServers": {
      "quake-coding-arena": {
        "command": "node",
        "args": ["/path/to/.smithery/index.cjs"]
      }
    }
  }
  ```
- **HTTP Endpoint Method** (When server is running):
  ```json
  {
    "mcpServers": {
      "quake-coding-arena": {
        "transport": "http",
        "url": "http://localhost:6487/mcp"
      }
    }
  }
  ```
- See `CLAUDE-CODE-SETUP.md` and `CURSOR-HTTP-SETUP.md` for detailed instructions

### Chat Widget + Sound Bridge
Clone-ready example that proxies ChatGPT responses and calls this MCP server to play Quake achievements. See [`examples/chat-widget`](examples/chat-widget/README.md) for setup instructions (OpenAI key + MCP URL required).

## šŸ“œ **License**

MIT License - Feel free to use and modify!

## šŸŽÆ **Get Started**

1. **Install**: `smithery install quake-coding-arena-enhanced`
2. **Configure**: Add to your MCP client
3. **Achieve**: Start triggering those epic sounds!

**šŸ† READY TO DOMINATE THE CODING ARENA! šŸŽÆšŸ”„**

---

*Built with ā¤ļø and Quake 3 Arena nostalgia*
*Published via Smithery - The MCP Server Registry*

## šŸ“ **Recent Updates**

### **December 10, 2025 - JSON Parsing Fix & Transport Support**
- **šŸ”§ Fixed JSON parsing errors** when using with Claude Code and other stdio-based MCP clients
- **šŸ“” Added stdio transport support** with automatic detection for local MCP clients
- **🚫 Fixed console.log interference** by redirecting all logs to stderr (prevents JSON-RPC protocol issues)
- **āœ… Tested and verified** sound playback functionality with both HTTP and stdio transports
- **šŸ“š Created comprehensive setup guides**:
  - `CLAUDE-CODE-SETUP.md` - Complete Claude Code integration guide
  - `CURSOR-HTTP-SETUP.md` - Cursor IDE HTTP endpoint setup
  - `CURSOR-SETUP-COMPLETE.md` - Cursor MCP configuration guide
- **šŸ”Œ Dual transport support**: Server now works with both HTTP (Smithery) and stdio (local clients)
- **šŸŽÆ Port conflict handling** with automatic port selection and interactive prompts

### **December 10, 2025 - Female Audio Expansion Update**
- **šŸŽ¤ Added 16 female voice audio files** to the `sounds/female/` directory
- **šŸ† Expanded to 25 total achievements** with comprehensive multi-kill support
- **šŸ”„ Updated voice pack configuration** to properly point to female audio directory
- **šŸ“š Enhanced documentation** to reflect new female audio capabilities
- **šŸ”§ Fixed TypeScript build issues** and improved import resolution
- **āœ… Full compatibility** maintained with existing male voice functionality

**New Female Audio Includes:**
- Classic streak announcements (RAMPAGE, DOMINATING, UNSTOPPABLE, GODLIKE)
- Multi-kill sequences (HEADSHOT, MULTI KILL, KILLING SPREE, ULTRA KILL, MONSTER KILL, LUDICROUS KILL)
- Game state announcements (FIRST BLOOD, HUMILIATION, HOLY SHIT, BOTTOM FEEDER)
- Team motivation sounds (PLAY)

**Technical Improvements:**
- Smart fallback system to male voice for missing female audio
- Enhanced achievement categorization with 25 total achievements
- Updated MCP tool descriptions and documentation
- Verified cross-platform audio compatibility

---

*Built with ā¤ļø and Quake 3 Arena nostalgia*
*Published via Smithery - The MCP Server Registry*

## 🌐 **Smithery Cloud Deployment**

When deployed via Smithery, the MCP server runs as a cloud service with **HTTP endpoints**. All audio files (including the 16 female voice files) are automatically included via the `package.json` "files" array.

> šŸ“– **Detailed Guide:** See [SMITHERY-DEPLOYMENT.md](./SMITHERY-DEPLOYMENT.md) for complete deployment documentation.

### **How Audio Works in Cloud Mode:**
- āœ… **All 25 achievements** available with both male/female voices
- āœ… **16 female + 17 male audio files** automatically bundled by Smithery
- āœ… **Voice pack switching** via `set_voice_pack` tool
- āœ… **Volume control** via `set_enhanced_volume` tool
- āœ… **Complete sound library** included in deployment (via package.json "files" array)
- āš ļø **Requires explicit tool invocation** - Audio plays when MCP tools are called
- šŸŽÆ **Audio plays locally** - Smithery triggers playback on user's machine via system commands

### **Cloud vs Local Differences:**
- **Local**: Can trigger sounds automatically via file system events
- **Cloud**: Sounds only play when MCP tools are explicitly invoked by user/AI
- **Both**: Same achievement system, voice packs, and audio quality
- **Both**: All 16 female audio files available

### **Using Female Voice via Smithery:**
```javascript
// Switch to female voice pack
await session.call("tools/call", {
  name: "set_voice_pack",
  arguments: { voiceGender: "female" }
});

// Play female achievement
await session.call("tools/call", {
  name: "play_enhanced_quake_sound", 
  arguments: {
    achievement: "HEADSHOT",
    volume: 85
  }
});
```

TDQS

A4.4/5.0

Scored across 10 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no overlap: get_ai_usage_guide provides usage tips, get_enhanced_achievement_guide offers achievement explanations, get_enhanced_achievement_stats retrieves statistics, get_voice_pack_info gives voice pack details, list_enhanced_achievements lists achievements, play_enhanced_quake_sound triggers sound playback, random_enhanced_achievement plays a random sound, set_enhanced_volume adjusts volume, set_voice_pack switches voice packs, and test_voice_packs tests audio setups. The descriptions clearly differentiate each tool's function.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern with snake_case throughout: get_ai_usage_guide, get_enhanced_achievement_guide, get_enhanced_achievement_stats, get_voice_pack_info, list_enhanced_achievements, play_enhanced_quake_sound, random_enhanced_achievement, set_enhanced_volume, set_voice_pack, and test_voice_packs. The naming is predictable and uniform across all tools.

Tool Count5/5

With 10 tools, the count is well-scoped for the server's purpose of managing Quake achievement sounds and voice packs. Each tool earns its place by covering distinct aspects such as guides, statistics, listing, playback, configuration, and testing, without being overly sparse or bloated.

Completeness5/5

The tool set provides complete coverage for the domain of Quake achievement sound management: it includes retrieval of guides and stats, listing and playing achievements, configuring volume and voice packs, and testing functionality. There are no obvious gaps, as all core operations (CRUD/lifecycle for sounds and settings) are supported, enabling smooth agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues