Skip to main content
Glama

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault

No arguments

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
create_emulator

Create a new CPU emulation session.

Args: arch: Architecture name. One of: x86_32, x86_64, arm, arm64.

Returns a dict with session_id and arch.

destroy_emulator

Destroy an emulation session and free its resources.

Args: session_id: The session ID returned by create_emulator.

map_memory

Map a memory region in the emulator.

Size is rounded up to 4KB page alignment.

Args: session_id: The session ID. address: Start address (must be page-aligned, i.e. multiple of 0x1000). size: Region size in bytes. perms: Permission string combining 'r', 'w', 'x'. Default "rwx".

write_memory

Write data to emulator memory.

Args: session_id: The session ID. address: Destination address. data: Data as hex string (e.g. "90c3") or base64. encoding: "hex" (default) or "base64".

read_memory

Read data from emulator memory.

Args: session_id: The session ID. address: Source address. size: Number of bytes to read. encoding: "hex" (default) or "base64".

list_regions

List all mapped memory regions.

Args: session_id: The session ID.

hexdump

Formatted hex dump of memory.

Standard format: ADDR | 16 hex bytes (8+8) | ASCII. Max 4096 bytes.

Args: session_id: The session ID. address: Start address. size: Number of bytes to dump (default 256, max 4096).

search_memory

Search for a byte pattern in memory.

If address is None, searches all mapped regions.

Args: session_id: The session ID. pattern: Hex string of bytes to search for (e.g. "deadbeef"). address: Optional start address to limit search. size: Optional size of search range (required if address is set). max_results: Maximum matches to return (default 100).

snapshot_memory

Save a snapshot of all mapped memory under a label.

Overwrites if the label already exists.

Args: session_id: The session ID. label: A name for this memory snapshot.

diff_memory

Compare two memory snapshots and return changed byte ranges.

Args: session_id: The session ID. label_a: First snapshot label. label_b: Second snapshot label.

get_stack

Read stack entries from the current stack pointer.

Resolves values against registered symbols.

Args: session_id: The session ID. count: Number of stack entries to read (default 16, max 256).

memory_map

Produce a /proc/self/maps-style layout of the address space.

Shows regions with permissions, gaps, and symbol annotations.

Args: session_id: The session ID.

add_watchpoint

Add a memory watchpoint.

Idempotent -- same address replaces the existing watchpoint.

Args: session_id: The session ID. address: Memory address to watch. size: Number of bytes to watch (default 1). access: Access type -- "r" (read), "w" (write), or "rw" (both). Default "w".

remove_watchpoint

Remove a memory watchpoint.

Args: session_id: The session ID. address: The watchpoint address to remove.

list_watchpoints

List all memory watchpoints.

Args: session_id: The session ID.

set_registers

Write one or more registers.

Args: session_id: The session ID. values: Dict mapping register names to integer values.

get_registers

Read one or more registers.

Args: session_id: The session ID. names: List of register names. Omit or pass null for all registers.

emulate

Run CPU emulation.

Must provide stop_address, count, or both to bound execution.

Args: session_id: The session ID. address: Address to begin execution. stop_address: Address to stop at (exclusive). count: Maximum instructions to execute (capped at 100,000). timeout_ms: Timeout in milliseconds (capped at 60,000).

add_breakpoint

Add a breakpoint at the given address.

Idempotent — adding the same address twice is a no-op.

Args: session_id: The session ID. address: The address to break at. condition: Optional condition expression (e.g. "eax == 42", "rax > 0x1000 and rcx != 0").

remove_breakpoint

Remove a breakpoint.

Args: session_id: The session ID. address: The breakpoint address to remove.

list_breakpoints

List all breakpoints in the session.

Args: session_id: The session ID.

step

Execute a single instruction.

If address is omitted, execution starts at the current program counter.

Args: session_id: The session ID. address: Optional start address. Defaults to current PC.

save_context

Save a register snapshot under a label.

Overwrites if the label already exists.

Args: session_id: The session ID. label: A name for this snapshot.

restore_context

Restore registers from a previously saved snapshot.

Args: session_id: The session ID. label: The snapshot label to restore.

enable_trace

Enable execution tracing.

Clears any existing trace log and starts recording.

Args: session_id: The session ID. max_entries: Maximum trace entries to record (default 10000).

disable_trace

Disable execution tracing.

The trace log is preserved for inspection via get_trace.

Args: session_id: The session ID.

get_trace

Get trace entries with pagination.

Each entry includes disassembled instruction details.

Args: session_id: The session ID. offset: Start index (default 0). limit: Max entries to return (default 100).

save_trace

Save the current trace log under a label.

Overwrites if the label already exists.

Args: session_id: The session ID. label: A name for this saved trace.

diff_trace

Compare two saved traces instruction-by-instruction.

Returns the common prefix length, divergence point, and up to 50 differing entries.

Args: session_id: The session ID. label_a: First trace label. label_b: Second trace label.

hook_syscall

Install a syscall hook to intercept system calls.

Modes: skip: Log the syscall and return default_return (continue execution). stop: Log the syscall and stop emulation.

Idempotent — replaces existing hook.

Args: session_id: The session ID. mode: Hook mode — "skip" (default) or "stop". default_return: Return value for skip mode (default 0).

unhook_syscall

Remove the syscall hook.

Args: session_id: The session ID.

get_syscall_log

Get recorded syscall invocations with pagination.

Args: session_id: The session ID. offset: Start index (default 0). limit: Max entries to return (default 100).

add_symbol

Associate a symbolic name with a memory address.

Overwrites if the name already exists.

Args: session_id: The session ID. name: Symbol name. address: Memory address.

remove_symbol

Remove a symbol.

Args: session_id: The session ID. name: The symbol name to remove.

list_symbols

List all symbols.

Args: session_id: The session ID.

load_binary

Load binary data into the emulator.

Auto-maps memory, writes data, and optionally sets the program counter.

Args: session_id: The session ID. data: Binary data as hex string or base64. address: Destination address. entry_point: Optional address to set the PC to. encoding: "hex" (default) or "base64".

load_executable

Load an executable binary (ELF, PE, or Mach-O) into the emulator.

Auto-detects format. Maps segments with correct permissions, sets PC to entry point, registers symbols.

Args: session_id: The session ID. data: Binary data as hex string or base64. base_address: Optional base address offset. Default 0. encoding: "hex" (default) or "base64".

export_session

Export full session state (memory, registers, breakpoints, symbols) to JSON.

Args: session_id: The session ID.

import_session

Import session state into a new session.

Creates a new session for the given architecture and restores state from export.

Args: arch: Architecture name (must match the exported state's arch). state: The state dict from export_session.

assemble

Assemble instructions into machine code using Keystone.

Args: arch: Architecture name (x86_32, x86_64, arm, arm64). code: Assembly source code (e.g. "mov eax, 42; ret"). address: Base address for assembly (affects relative offsets). Default 0.

disassemble

Disassemble machine code into instructions using Capstone.

Args: arch: Architecture name (x86_32, x86_64, arm, arm64). data: Machine code as hex string or base64. address: Base address for disassembly. Default 0. encoding: "hex" (default) or "base64". count: Max instructions to disassemble. 0 = all.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/LabGuy94/MCPEmulate'

If you have feedback or need assistance with the MCP directory API, please join our Discord server