Labsco
rodrigosiviero logo

RomM MCP

from rodrigosiviero

MCP Server for your RomM platform

๐Ÿ”ฅ๐Ÿ”ฅ๐Ÿ”ฅโœ“ VerifiedAccount requiredAdvanced setup

๐ŸŽฎ RomM MCP Server

An MCP (Model Context Protocol) server for RomM โ€” the self-hosted game and ROM management platform.

Give your AI assistant full access to browse, search, and manage your retro game library.

Supports both transports:

  • stdio โ€” local CLI usage (default)
  • Streamable HTTP โ€” Docker / remote / multi-client

Features

  • Browse your full ROM library with pagination, filtering, and sorting
  • Search games by name across all platforms
  • Platforms โ€” list all platforms with ROM counts and metadata
  • Collections โ€” create, list, update, and delete game collections
  • ROM details โ€” full metadata including genres, companies, ratings, summaries
  • Firmware โ€” list available firmware files per platform
  • Save management โ€” browse save files and save states
  • Notes โ€” CRUD notes attached to any ROM
  • System โ€” heartbeat check, config, trigger library scans
  • Screenshots โ€” browse screenshots per ROM
  • Download URLs โ€” generate authenticated download links

Tools

ToolDescription
romm_statsLibrary statistics โ€” total platforms, ROMs, saves, states, screenshots, file size
romm_list_platformsList all platforms with ROM counts, categories, and slugs
romm_browse_romsBrowse and filter ROMs with pagination. Supports platform, collection, genre, company, region filters, and sorting
romm_get_romFull ROM details by ID โ€” metadata, genres, companies, summary, rating, YouTube link
romm_search_romsSearch ROMs by name
romm_manage_collectionsCRUD collections (list, get, create, update, delete). Also supports smart and virtual collections
romm_get_collection_romsList all ROMs in a specific collection
romm_list_firmwareList firmware files available per platform
romm_download_romGenerate an authenticated download URL for a ROM
romm_update_romUpdate ROM metadata โ€” display name, notes, favorite status
romm_rom_notesManage notes attached to a ROM (list, add, update, delete)
romm_manage_savesList save files, optionally filtered by ROM
romm_manage_statesList save state files, optionally filtered by ROM
romm_systemSystem operations โ€” heartbeat, config, trigger library scan, metadata update
romm_screenshotsList screenshots, optionally filtered by ROM

Example Interactions

You: How many games do I have?

๐Ÿค–: ๐Ÿ“Š RomM Library Stats
   Platforms: 20
   ROMs: 1,362
   Saves: 1
   States: 0
   Screenshots: 0
   Total Size: 197.4 GB
You: Find Mario games in my library

๐Ÿค–: ๐Ÿ” Search: "mario" (5 results)
   โ€ข [4227] Mario Kart 8 Deluxe (Nintendo Switch)
   โ€ข [4108] Mario Andretti Racing (Sega Mega Drive/Genesis)
   โ€ข [921] Super Mario RPG (Nintendo Switch)
   โ€ข [933] Paper Mario (Wii)
   โ€ข [4109] Mario Lemieux Hockey (Sega Mega Drive/Genesis)
You: Tell me about Super Mario RPG

๐Ÿค–: ๐ŸŽฎ Super Mario RPG
   Platform: Nintendo Switch
   File: Super Mario RPG [0100BC0018138000][v0].nsp (6.4 GB)

   ๐Ÿ“ Summary: Mario, Bowser, and Peach partner up to repair the
   wish-granting Star Road in this approachable role-playing adventure.

   ๐Ÿท๏ธ Genres: Adventure, Role-playing (RPG)
   ๐Ÿข Companies: ArtePiazza, Flame Hearts, Nintendo
   ๐Ÿ”— Franchises: Mario
   โญ Rating: 80.51
   ๐Ÿ“… Release: 11/17/2023

Development

# Install dependencies
npm install

# Build
npm run build

# Run with stdio (default)
ROMM_BASE_URL=http://localhost:5500 ROMM_API_KEY=rmm_xxx node dist/index.js

# Run with HTTP
MCP_TRANSPORT=http ROMM_BASE_URL=http://localhost:5500 ROMM_API_KEY=rmm_xxx node dist/index.js

Architecture

src/
โ”œโ”€โ”€ client.ts    # RomM REST API client (fetch-based, zero deps)
โ”œโ”€โ”€ server.ts    # MCP server with all tools (shared between transports)
โ””โ”€โ”€ index.ts     # Entry point โ€” auto-detects stdio vs HTTP

The API client is a thin wrapper over the RomM REST API (OpenAPI 3.1.0). It uses native fetch โ€” no external HTTP library needed.

In HTTP mode, the server uses Hono with the stateless WebStandardStreamableHTTPServerTransport โ€” a fresh MCP server is created per request, making it safe for Docker and multi-client scenarios.

Compatibility

  • RomM v4.x+ (tested with v4.8.1)
  • Node.js >= 20 (uses native fetch)
  • Any MCP-compatible client (Claude Desktop, CoPaw, Cursor, Windsurf, etc.)
  • MCP Streamable HTTP spec (2025-03-26)