1. Conduid
  2. Developer Tools
  3. If
MCP server · Developer Tools

If

MCP server for playing interactive fiction games (Glulx and Z-machine)

Unclaimed MIT last commit 7 months ago devtools
55Fair

Scored 12 hours ago · breakdown

About If

If is an MCP server published by davidar in the Developer Tools category: mCP server for playing interactive fiction games (Glulx and Z-machine). It has been installed 0 times through Conduid.

Six months or more without a commit doesn't mean the server is broken, but check the open issues (0) before depending on it in production.

Install

Install
npx mcp-server-if

This server has no ConduID identity, so agent calls to it are not receipted. Pin the version you install and review the source before granting it credentials.

Ask AI

Ask AI about If

Powered by Claude · Grounded in docs

I know everything about If. Ask me about installation, configuration, usage, or troubleshooting.

Security checks

  • ·README presentNot checked yet.
  • ·License declaredNot checked yet.
  • ·Tests presentNot checked yet.
  • ·Dependencies pinnedNot checked yet.
  • ·No dynamic code executionNot checked yet.
  • !Scoped permissionsDoesn't declare a permission scope. Assume it can do anything its process can.

Releases

v0.2.0v0.2.0 - Z-machine Support · 3 Feb 2026Full Changelog**: https://github.com/davidar/mcp-server-if/compare/v0.1.0...v0.2.0
v0.1.0v0.1.0 · 30 Jan 2026Full Changelog**: https://github.com/davidar/mcp-server-if/commits/v0.1.0

README

mcp-server-if

An MCP (Model Context Protocol) server for playing interactive fiction games. Enables AI assistants like Claude to play text adventure games through a standardized interface.

Features

  • Play Glulx (.ulx, .gblorb) and Z-machine (.z3-.z8, .zblorb) games
  • Automatic game state persistence (save/restore between sessions)
  • Download games directly from the IF Archive
  • Optional journaling mode for reflective playthroughs
  • Works with Claude Desktop, Claude Code, and other MCP clients
  • Bundled interpreters (glulxe for Glulx, bocfel for Z-machine)

Installation

# Using uvx (recommended)
uvx mcp-server-if

# Or install with pip
pip install mcp-server-if

The package includes pre-compiled interpreters. No additional setup required.

Configuration

Environment Variables

Variable Description Default
IF_GAMES_DIR Directory to store games ~/.mcp-server-if/games
IF_GLULXE_PATH Override path to glulxe binary Bundled binary
IF_BOCFEL_PATH Override path to bocfel binary Bundled binary
IF_REQUIRE_JOURNAL Require journal reflections false

Command Line Arguments

mcp-server-if --help

Options:
  --games-dir PATH       Directory to store games
  --glulxe-path PATH     Path to glulxe binary (overrides bundled)
  --require-journal      Require journal reflections between turns

Usage with Claude Desktop

Add to your Claude Desktop configuration (~/Library/Application Support/Claude/claude_desktop_config.json on macOS or %APPDATA%\Claude\claude_desktop_config.json on Windows):

{
  "mcpServers": {
    "interactive-fiction": {
      "command": "uvx",
      "args": ["mcp-server-if"]
    }
  }
}

Usage with Claude Code

claude mcp add interactive-fiction -- uvx mcp-server-if

Available Tools

play_if

Play a turn of interactive fiction.

play_if(game="zork", command="go north")
play_if(game="zork", command="", journal="...reflection...")  # with journaling

list_games

List available games and their save state status.

download_game

Download a game from the IF Archive or any URL.

download_game(name="advent", url="advent.ulx")
download_game(name="bronze", url="https://example.com/Bronze.gblorb")

reset_game

Reset a game to start fresh (clears save state, preserves journal).

read_journal

Read the playthrough journal for a game.

read_journal(game="zork", recent=10)  # last 10 entries

search_journal

Search journal entries by keyword.

search_journal(game="zork", query="treasure")

Supported Game Formats

Glulx (modern, uses glulxe interpreter):

  • .ulx - Raw Glulx game files
  • .gblorb - Blorb containers with Glulx games

Z-machine (classic Infocom format, uses bocfel interpreter):

  • .z3, .z4, .z5, .z7, .z8 - Z-code game files
  • .zblorb - Blorb containers with Z-machine games

Find games at the IF Archive: Glulx games, Z-code games.

Journaling Mode

Enable with --require-journal or IF_REQUIRE_JOURNAL=true. In this mode:

  1. After playing your first command, subsequent turns require a journal entry
  2. Journal entries must be at least 100 words
  3. Entries are saved to {game}/journal.jsonl
  4. Use read_journal and search_journal to review your playthrough

This encourages thoughtful, reflective gameplay rather than rushing through.

How It Works

  1. Games are stored in ~/.mcp-server-if/games/{name}/

  2. Each game directory contains:

    • The game file (.ulx, .gblorb, .z5, etc.)
    • state/ - autosave data (persists between sessions)
    • metadata.json - session metadata
    • journal.jsonl - playthrough journal (if enabled)
  3. The server selects the appropriate interpreter based on file format:

    • Glulx games → glulxe
    • Z-machine games → bocfel
  4. Both interpreters use RemGlk for JSON-based I/O

  5. Game state is automatically saved after each turn

Development

Requires uv, a C compiler (gcc or clang), a C++ compiler (g++ or clang++), make, and git.

git clone --recursive https://github.com/davidar/mcp-server-if.git
cd mcp-server-if
uv sync --group dev
uv run pytest -v

uv sync compiles the bundled interpreters (glulxe and bocfel) from source automatically. If binaries are missing after a fresh clone, run uv sync --reinstall-package mcp-server-if to force recompilation.

Troubleshooting

"glulxe binary not found"

This shouldn't happen with pip/uvx installs. If it does:

  • Try reinstalling: pip install --force-reinstall mcp-server-if or uv sync --reinstall-package mcp-server-if
  • Or set IF_GLULXE_PATH to a manually installed glulxe

"Game file not found"

Use list_games to see available games, or download_game to get new ones.

Save/restore commands don't work

In-game save/restore triggers file dialogs that aren't supported. Use the automatic autosave system instead - your game state persists between sessions automatically.

License

MIT License - see LICENSE for details.

Credits

  • glulxe - The Glulx VM interpreter by Andrew Plotkin
  • bocfel - Z-machine interpreter by Chris Spiegel
  • RemGlk - Remote Glk library for JSON I/O
  • MCP - Model Context Protocol by Anthropic

README mirrored from the source repository 12 hours ago. The original is authoritative.

Questions

About If

How do I install If?

Run npx mcp-server-if, then add the server to your MCP client's configuration. Conduid has recorded 0 installs, so the command is known to work with current clients.

Is If safe to use with an AI agent?

Its trust score is 55 out of 100 (fair). It passes 0 of 1 static security checks; the failures are listed above. It has no ConduID identity yet, so agent calls to it are not receipted.

Is If still maintained?

The last commit was 7 months ago, with 0 open issues. That's long enough that you should check whether the maintainer is responding to issues before depending on it.