Skip to main content
Glama
btdt

famistudio-mcp

Official
by btdt

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
FAMISTUDIO_EXENoFull path to the FamiStudio binary. Otherwise common install locations and `PATH` are probed, so normally you do **not** need this — set it for a portable build, a custom location, or to pin one of several versions.
FAMISTUDIO_MCP_OUTDIRNoOutput directory, used when you decline the prompt (and whenever the client cannot prompt at all). Defaults to `<tmp>/famistudio-mcp`.<tmp>/famistudio-mcp
FAMISTUDIO_MCP_READDIRSNoExtra directories the server may read project files from.
FAMISTUDIO_MCP_WORKSPACENoSingle-directory shorthand for both FAMISTUDIO_MCP_OUTDIR and FAMISTUDIO_MCP_READDIRS.

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
famistudio_infoA

Report whether the FamiStudio executable was found, which version it is, and the paths that were probed. Also lists the CLI export commands this server can run, and the directories it is allowed to read and write.

compute_ticksA

FamiStudio tempo arithmetic: with a uniform groove one tick equals one frame, so duration is ticks / frameRate (60.0988 NTSC, 50.007 PAL). Use it to turn a target duration into the tick count a spec needs, or to check how long a pattern budget lasts.

analyze_audioA

Report duration, peak/RMS level and silence for a WAV file, and optionally detect the pitch sequence. Pitch detection expects a monophonic render, e.g. a single channel exported with export_audio + separateChannels.

run_famistudioA

Escape hatch for FamiStudio commands this server does not wrap (NSF export, ROM export, assembly export with exotic options). Runs FamiStudio <input> <command> <output> [extraArgs...] with the given argv and no shell involved. Prefer export_audio / export_text when they fit.

compile_song_specA

Compile a compact JSON song specification (channels + notes) into a complete FamiStudio project object, optionally writing it to a .fms file. Object ids, the mandatory instrument envelope masks and the fixed 256-slot pattern tables are filled in automatically. The returned "project" can be passed straight to export_audio / verify_roundtrip / validate_fms.

Notes can be written two ways: absolute: {"channel":"Square1","notes":[{"time":0,"note":"C4","duration":8},{"time":8,"note":"E4"}]} grid: {"channel":"Square1","notes":["C4",null,null,null,"E4"]} // one entry per tick In grid form a note without "duration" sustains until the next filled cell. FamiStudio note names are one octave above standard pitch: its "C4" sounds ~523 Hz, so write melodies one octave below the pitch you hear in a tracker.

create_fmsA

Convenience wrapper around compile_song_spec that always writes a .fms file and returns its path plus a structural summary. Use this when the goal is a file on disk.

validate_fmsA

Check every invariant FamiStudio relies on when loading a project: the mandatory four-envelope instrument masks, the DPCM mapping count, unique object ids, nextUniqueId, reference integrity, note ranges and effect ranges, and the fixed 256-entry pattern tables. Returns the list of problems.

read_fmsA

Decode a FamiStudio project file into structured JSON: songs, channels, patterns and notes, plus instrument envelope contents. Set includeNotes=false for a structural overview of large projects. Only version 19 files (FamiStudio 4.5.x) can be read; older files must be re-saved by FamiStudio.

summarize_fmsA

Return a readable listing of a project: every song with its pattern order and per-pattern note dumps, plus tick totals and rendered duration. Use this to review what a .fms actually contains.

diff_fmsA

Structurally compare two FamiStudio projects (files or inline objects) and list differences in metadata, instruments and per-note content. Use it to confirm that a rewrite did not change the musical content.

export_audioA

Render a FamiStudio project to an audio file with the FamiStudio command line. Requires FamiStudio 4.5.x to be installed; call famistudio_info first if unsure. Returns the artifact path plus duration, peak level and an audibility check for WAV output.

export_textB

Convert a project with famistudio-txt-export (FamiStudio text - excellent for verification and for reading note data), famitracker-txt-export, or a sound-engine assembly exporter (famistudio-asm-export, famitone2-asm-export, ...). Returns a preview of the produced file.

verify_roundtripB

The end-to-end validity check: re-export the project to FamiStudio text and render a WAV, then report whether FamiStudio loaded the file cleanly (no field desync) and produced audio of the expected length. Run this after generating a .fms file.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A3.7/5.0

Scored across 13 tools

Disambiguation3/5

Several tools sit close together: compile_song_spec vs create_fms, validate_fms vs verify_roundtrip, read_fms vs summarize_fms, and export_audio vs analyze_audio. The descriptions do clearly separate in-memory creation from file writing, invariant checks from end-to-end verification, and structured decoding from human-readable review, but an agent must read them carefully to avoid misselection.

Naming Consistency4/5

Most tools follow a clean verb_noun snake_case pattern such as compile_song_spec, validate_fms, and export_audio, with the repeated _fms suffix forming a recognizable family. The main deviations are famistudio_info, which is noun-style, and run_famistudio, which uses the application name as the object.

Tool Count5/5

Thirteen tools is a well-scoped size for a specialized FamiStudio server, and each tool maps to a distinct part of the create-validate-export-review workflow. None feel redundant or extraneous.

Completeness4/5

The server covers the full core loop: environment info, tempo arithmetic, spec compilation, file writing, validation, round-trip verification, reading, summarizing, diffing, audio analysis, and audio/text export. A minor gap is the lack of a direct update/modify path for an existing project from structured JSON, though run_famistudio acts as an escape hatch for uncovered CLI operations.