Skip to main content
Glama

title: Murder Mystery MCP Server emoji: šŸ•µļø colorFrom: indigo colorTo: red sdk: gradio sdk_version: "5.29.1" app_file: demo.py pinned: false tags:

  • building-mcp-track-creative

  • mcp

  • mcp-server

  • game-engine

  • murder-mystery

  • agents

  • tools

  • resources


šŸ•µļø Murder Mystery MCP Server

šŸŽ‰ MCP 1st Birthday Hackathon — Track 1: Building MCP (building-mcp-track-creative)

A complete murder mystery game engine exposed as a Model Context Protocol (MCP) server. Generate procedural mysteries, interrogate AI suspects, search for clues, and solve crimes — all through MCP tools that any AI agent can use.


šŸ“ŗ Demo Video

šŸ‘‰ Watch the Demo Video (Required for submission)


🐦 Social Media

🐦 See the announcement on X/Twitter (Required for submission)


šŸ‘„ Team

HuggingFace Username

@YOUR_HF_USERNAME


šŸš€ Quick Start

Use with Claude Desktop

Add to ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "murder-mystery": {
      "command": "python",
      "args": ["-m", "murder_mystery_mcp"],
      "cwd": "/path/to/murder-mystery-mcp",
      "env": {
        "OPENAI_API_KEY": "your-key",
        "HF_TOKEN": "your-hf-token",
        "ELEVENLABS_API_KEY": "your-elevenlabs-key"
      }
    }
  }
}

Then just chat with Claude:

  • "Start a new murder mystery game"

  • "Talk to the butler about his alibi"

  • "Search the library for clues"

  • "I accuse Lady Ashworth of the murder!"

Use with Cursor

Add the same config to Cursor's MCP settings and use the tools in your AI chat.


šŸ› ļø MCP Tools

Game Flow Tools

Tool

Description

start_game

Start a new procedurally-generated murder mystery

get_game_state

Get current game state (suspects, clues, progress)

interrogate_suspect

Question a suspect (they have memory + emotions!)

search_location

Search a location for clues

make_accusation

Formally accuse someone of the murder

Investigation Tools (RAG-Powered)

Tool

Description

search_memory

Search all past conversations for relevant statements

find_contradictions

Check if a suspect's story contradicts past statements

get_cross_references

Find what OTHER suspects said about someone

get_investigation_hint

Get a hint if you're stuck

get_timeline

See the investigation timeline

Image Generation Tools

Tool

Description

generate_portrait

Generate a suspect's portrait

generate_scene

Generate a location/scene image

generate_title_card

Generate the mystery's opening scene


šŸ“š MCP Resources

URI

Description

mystery://state

Current game state (JSON)

mystery://suspects

List of suspects with public info

mystery://clues

Discovered clues

mystery://timeline

Investigation timeline

mystery://locations

Available and searched locations


šŸŽ® How It Works

1. Mystery Generation

When you start a game, the server generates:

  • A unique victim with background story

  • 4-5 suspects with personalities, secrets, and alibis

  • One guilty suspect (the AI won't tell you who!)

  • Clues scattered across locations

  • An "encounter graph" showing who was really where

2. The Oracle Pattern

The MCP server uses a secure "Oracle" architecture:

  • The Mystery Oracle knows the truth (who's guilty, all secrets)

  • The tools only return what the player should see

  • Even the AI using the tools can't "cheat" — it discovers the truth through gameplay

3. Suspect Emotions

Suspects aren't static — they have:

  • Trust (0-100%): How much they trust the detective

  • Nervousness (0-100%): How anxious they are

  • Memory: They remember past conversations and stay consistent

  • Reveals: High trust → reveal locations; high pressure → reveal secrets

4. RAG Memory

All conversations are indexed in a vector store:

  • Search for what was said about any topic

  • Detect contradictions in testimony

  • Cross-reference what suspects said about each other


šŸ—ļø Architecture

ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”
│                   MURDER MYSTERY MCP SERVER                       │
ā”œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”¤
│                                                                   │
│  TOOLS (what agents can call):                                    │
│  ā”œā”€ start_game          - Generate new mystery                    │
│  ā”œā”€ interrogate_suspect - Talk to suspects                        │
│  ā”œā”€ search_location     - Find clues                              │
│  ā”œā”€ make_accusation     - Accuse the murderer                     │
│  ā”œā”€ search_memory       - RAG search past statements              │
│  ā”œā”€ find_contradictions - Detect lies                             │
│  ā”œā”€ get_cross_references- What others said about someone          │
│  ā”œā”€ generate_portrait   - Create character art                    │
│  └─ generate_scene      - Create location art                     │
│                                                                   │
│  RESOURCES (what agents can read):                                │
│  ā”œā”€ mystery://state     - Full game state                         │
│  ā”œā”€ mystery://suspects  - Suspect list                            │
│  ā”œā”€ mystery://clues     - Discovered clues                        │
│  └─ mystery://timeline  - Investigation timeline                  │
│                                                                   │
│  ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” │
│  │                    MYSTERY ORACLE (truth)                    │ │
│  │  • Knows who the murderer is                                │ │
│  │  • Knows all suspects' secrets                              │ │
│  │  • Validates accusations                                    │ │
│  │  • Generates consistent suspect responses                   │ │
│  │  • NEVER exposes truth to the agent directly               │ │
│  ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ │
│                                                                   │
│  ā”Œā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā” │
│  │                    RAG MEMORY (partitioned)                  │ │
│  │  • Per-suspect conversation history                         │ │
│  │  • Semantic search across all statements                    │ │
│  │  • Contradiction detection                                  │ │
│  ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜ │
│                                                                   │
ā””ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”€ā”˜

āš™ļø Configuration

Environment Variable

Required

Description

OPENAI_API_KEY

Yes

For mystery generation and LLM responses

HF_TOKEN

No

For image generation (optional)

ELEVENLABS_API_KEY

No

For voice synthesis (optional, used by UI)


šŸŽÆ Game Rules

  • 3 wrong accusations = Game Over (you're fired from the case)

  • Win: Correctly identify the murderer with evidence

  • Suspects won't reveal secrets easily — build trust or apply pressure!

  • Clues are hidden in locations — search everywhere

  • Cross-reference testimony to find contradictions



šŸ“œ License

MIT