Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GBDOCS_CACHENoWhere embedding vectors are cached. Defaults to ~/.cache/gbdocs-mcp.~/.cache/gbdocs-mcp
PANDOCS_ROOTNoUse a specific pandocs checkout instead of the bundled copy.
GBDOCS_EMBED_MODELNoSentence-transformers model. Defaults to all-MiniLM-L6-v2.all-MiniLM-L6-v2

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
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
pandocs_tocA

List every Pan Docs chapter, grouped by part.

Use this to orient yourself in the book or to find the page name to pass to pandocs_get_page. Returns chapter titles, page ids, URLs and section counts.

pandocs_searchA

Search all ~580 Pan Docs sections and return ranked snippets.

Good for open questions ("why does my sprite flicker", "OAM DMA timing"). For a specific register or address, gb_lookup_register or gb_memory_map give an exact answer more cheaply.

pandocs_get_pageA

Read a whole Pan Docs chapter.

Custom syntax is expanded: {{#bits}} tables become readable bit layouts, :::warning callouts become labelled blockquotes, and cross-references are resolved to real gbdev.io URLs. Pass sections_only=True first if you only need to find the right section.

pandocs_get_sectionA

Read one section, with its bitfields, hardware caveats and cross-references.

Accepts anything you were handed elsewhere: a ref from a search result, a section title such as "FF40 - LCDC: LCD control", or an anchor found inside returned prose.

pandocs_resolve_linkA

Resolve a #Section Name cross-reference to its page, slug and URL.

Pan Docs anchors are book-wide section-name lookups, not same-page anchors, so following one needs this. Flags titles that occur on more than one page.

gb_lookup_registerA

Look up a hardware register by address, name, RGBDS alias, or description.

Returns the address, every alias, access (R/W/Mixed), which models have it, the full bitfield layout with per-bit meanings, and the documentation text.

gb_list_registersA

List hardware registers, optionally filtered by model, group or address range.

Use this to survey a subsystem ("all audio registers") before drilling into one with gb_lookup_register.

gb_decode_register_valueA

Explain what writing a specific byte to a register actually configures.

This is the tool for disassembly constants: given ld a,$91 / ldh [rLCDC],a, it reports every bit's documented meaning. Bits with no documented meaning are listed separately rather than guessed at.

gb_encode_register_valueA

Build the byte that produces a desired register configuration.

The inverse of gb_decode_register_value. Returns the byte, its binary breakdown, a shift expression, and RGBDS-style assembly.

gb_memory_mapA

Identify what lives at an address, across every relevant source.

With no address, returns the full region table, the I/O ranges and the jump vectors. With one, reports the memory region plus -- where they apply -- the hardware register, RST/interrupt vector, cartridge-header field, and (given mbc) which banking register a write there would hit.

gb_cartridge_headerA

Show the cartridge header layout, or one field's full documentation.

gb_lookup_cart_codeA

Decode a cartridge-header code, list a whole table, or search it by name.

Covers cartridge type ($13 -> MBC3+RAM+BATTERY), ROM and RAM sizes, destination, both licensee tables, and the CGB flag.

gb_decode_cart_headerA

Decode a real cartridge header and verify its checksum.

Resolves every code, checks the Nintendo logo against the reference dump, and recomputes the header checksum the boot ROM validates (a mismatch means the ROM will not run).

gb_mbc_infoA

Summarise a mapper: its mapped memory ranges, control registers and quirks.

The quirks are the chapter's warning/tip callouts -- MBC1's bank-0 aliasing, MBC3's RTC latching, MBC2's built-in nibble RAM.

gb_mbc_decode_writeA

Identify which banking register a ROM-area write hits.

Turns an opaque ld [$2000], a into "MBC1 ROM Bank Number", with the documented behaviour (masking, the $00->$01 rule, mode dependence) attached.

gb_decode_opcodeA

Disassemble SM83 bytes into instructions.

Mnemonics, operands and encoding come from Pan Docs; cycle counts and flag effects come from gbdev.io/gb-opcodes (Pan Docs documents neither), and each field says which. Invalid opcodes that hard-lock the CPU are flagged.

gb_lookup_instructionA

Look up how an instruction is encoded, and what it costs.

Returns the bit pattern, every opcode byte in the group, an example decoding, and its cycles and flag effects.

gb_opcode_tableA

Show the structural opcode map: the four blocks, the $CB block, and the placeholder definitions (r8, r16, r16mem, cond, b3, tgt3) they are built from.

Use this to reason about encoding patterns; use gb_decode_opcode for concrete bytes.

gb_interruptsA

Explain the interrupt system, or one interrupt in detail.

Returns each vector with its IE/IF bit and priority; with an argument, adds the source's full documentation and the dispatch rules.

gb_gotchasA

List Pan Docs' hardware caveats -- its tip/warning/danger callouts.

This is where "why does the original code do this strange thing" is usually answered: LCD-disable timing, OAM corruption, MBC1 aliasing, STAT blocking.

gb_boot_stateA

Report the register values a ROM inherits from the boot ROM at PC=$0100.

Tells you what state the entry point can rely on, and which values are non-deterministic on a given model.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

A4.1/5.0

Scored across 21 tools

Disambiguation5/5

Each tool targets a distinct purpose: documentation navigation (pandocs_*), register lookup/decoding/encoding, memory map, cartridge header, MBC analysis, opcode decoding, and general gotchas. Even similar-sounding tools like pandocs_get_page and pandocs_get_section are clearly differentiated by scope and usage.

Naming Consistency5/5

All tools follow a consistent snake_case verb_noun pattern with clear prefixes (pandocs_ for documentation, gb_ for hardware features). Subgroups like gb_lookup_, gb_decode_, gb_encode_, and gb_mbc_ are consistently named.

Tool Count4/5

At 21 tools, this is slightly above the ideal 3-15 range, but the scope is broad and each tool addresses a specific aspect of Game Boy development documentation. The count is justifiable and not excessive.

Completeness5/5

The tool set covers the full lifecycle of documentation needs: searching, navigating, reading pages/sections, resolving cross-references, looking up registers, encoding/decoding values, understanding boot state, interrupts, memory map, cartridge headers, MBC behavior, opcode decoding, and common gotchas. No obvious gaps for a documentation server.

Maintenance

ActivityMaintained
ResponsivenessNo issues