nanobot-ai/blackjack
If you are the rightful owner of blackjack and would like to certify it and/or have it hosted online, please leave a comment on the right or send an email to henry@mcphub.com.
A Model Context Protocol (MCP) server that provides an interactive blackjack game experience using MCP-UI.
Blackjack MCP Server
A Model Context Protocol (MCP) server that provides an interactive blackjack game experience using MCP-UI. This server exposes blackjack game functionality through MCP tools and provides a web-based UI for playing the game.
Features
- š Full Blackjack Game: Complete blackjack implementation with standard rules
- š§ MCP Tools: Blackjack game actions exposed as MCP tools
- š® Interactive UI: React-based web interface using MCP-UI
- š± Responsive Design: Mobile-friendly interface that scales appropriately
- šØ Realistic Cards: Beautiful card designs with gradients and shadows
- š° Game State Management: Persistent game state and money tracking
- ā” Real-time Updates: Live game state synchronization
Architecture
This MCP server is built using a full-stack React Router application with integrated MCP capabilities:
Key Components
- MCP Tools (
src/tools/
): Game actions exposed as MCP tools for external clients - UI Routes (
src/ui/routes/
): React Router components for the web interface - Game Engine (
src/lib/game.ts
): Core blackjack game logic and state management - MCP Framework (
src/framework/
): Custom MCP server implementation with Express integration
MCP Tools Available
blackjack-new-game
: Start a new blackjack gameblackjack-hit
: Hit (take another card)blackjack-stand
: Stand (end turn)blackjack-double
: Double downblackjack-split
: Split pairsblackjack-surrender
: Surrender handblackjack-take-insurance
: Take insurance betblackjack-decline-insurance
: Decline insurance
Getting Started
Prerequisites
- Node.js 18+
- npm or pnpm
Installation
Install the dependencies:
npm install
Development
Start the development server:
npm run dev
The server will be available at:
- Web UI:
http://localhost:5173/game/:id
- MCP endpoint:
http://localhost:5173/mcp
Building for Production
Create a production build:
npm run build
Start the production server:
npm run start
Development Commands
npm run dev
- Start development server with HMRnpm run build
- Create production buildnpm run start
- Run production servernpm run typecheck
- Run TypeScript type checkingnpm run lint
- Run ESLint and Prettier checksnpm run format
- Format code with Prettier
Usage
As a Web Application
- Navigate to
http://localhost:5173
- Click "Deal Cards" to start a new game
- Use the action buttons to play (Hit, Stand, Double, etc.)
- Game state persists across sessions
As an MCP Server
The server exposes MCP tools that can be consumed by MCP clients:
// Example MCP tool call
{
"method": "tools/call",
"params": {
"name": "blackjack-new-game",
"arguments": {
"bet": 10
}
}
}
Game Rules
- Standard blackjack rules apply
- Dealer stands on 17
- Blackjack pays 3:2
- Insurance pays 2:1
- Double down allowed on any first two cards
- Split allowed on pairs
- Surrender allowed
Project Structure
src/
āāā framework/ # Custom MCP framework
ā āāā mcp-server.ts # MCP server implementation
ā āāā middleware.ts # Express middleware integration
āāā lib/ # Utility libraries
ā āāā game.ts # Core blackjack game logic
ā āāā db.ts # Game state persistence
ā āāā shell.ts # Shell execution utilities
āāā tools/ # MCP tools definitions
ā āāā index.ts # Tool exports
ā āāā blackjack.ts # Blackjack game tools
āāā ui/ # React Router frontend
āāā routes/ # Route components
ā āāā blackjack.tsx # Main game interface
āāā welcome/ # Welcome page assets
Deployment
Docker Deployment
Build and run using Docker:
docker build -t blackjack-mcp .
docker run -p 3000:3000 blackjack-mcp
The containerized application can be deployed to any platform supporting Docker:
- AWS ECS
- Google Cloud Run
- Azure Container Apps
- Fly.io
- Railway
Environment Variables
PORT
- Server port (default: 3000 in production, 5173 in development)NODE_ENV
- Environment mode
Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Run tests and linting:
npm run lint && npm run typecheck
- Submit a pull request
License
Apache 2.0 License - see LICENSE file for details.
Built with ā¤ļø using React Router, MCP, and the engine-blackjack library.