gdb-multiarch-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GDB_PATH | No | Path to the gdb-multiarch binary | gdb-multiarch |
| SWITCH_IP | No | IP address of the Switch/Yuzu GDB stub | 192.168.1.235 |
| SWITCH_PORT | No | GDB stub port | 22225 |
| GDB_MCP_LOG_LEVEL | No | Logging level (DEBUG, INFO, WARNING, ERROR) | INFO |
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
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| switch_start_sessionA | Start gdb-multiarch and connect to the Switch/Yuzu GDB stub. This MUST be called before any other tool. Connects to the IP/port configured via SWITCH_IP and SWITCH_PORT environment variables (defaults: 192.168.1.235:22225). Automatically loads Switch debug commands, attaches to the game, and sets $main to the base address of cross2_Release.nss. Do NOT manually run 'target remote', 'attach', or 'set $main' — this tool handles all of that. |
| switch_stop_sessionA | Stop the gdb-multiarch session and disconnect from Yuzu. |
| gdb_execute_commandA | Execute a raw GDB command (CLI or MI). For Switch-specific operations, prefer the dedicated switch_* tools. IMPORTANT: Do NOT use 'target remote' or 'target extended-remote' — the session auto-connects to the Switch on first use. Do NOT use 'attach' or 'monitor wait application' — handled automatically. $main is already set to the base address of the game executable. |
| gdb_get_statusB | Get the current status of the GDB session. |
| gdb_get_threadsB | Get information about all threads. |
| gdb_select_threadC | Select a specific thread. |
| gdb_get_backtraceC | Get the stack backtrace (standard GDB backtrace). |
| gdb_select_frameC | Select a specific stack frame. |
| gdb_get_frame_infoB | Get information about the current stack frame. |
| gdb_set_breakpointA | Set a breakpoint at a function, file:line, or *address. For offset-from-main breakpoints, use switch_break_at instead. |
| gdb_list_breakpointsB | List all breakpoints with structured data. |
| gdb_delete_breakpointA | Delete a breakpoint by number. |
| gdb_enable_breakpointA | Enable a breakpoint by number. |
| gdb_disable_breakpointA | Disable a breakpoint by number. |
| gdb_continueA | Continue execution until next breakpoint or completion. Only use when program is PAUSED. |
| gdb_stepB | Step into the next instruction. |
| gdb_nextC | Step over to the next line. |
| gdb_interruptA | Interrupt (pause) a running program. |
| gdb_evaluate_expressionC | Evaluate a C/C++ expression. |
| gdb_get_variablesC | Get local variables for a stack frame. |
| gdb_get_registersB | Get CPU register values. |
| gdb_call_functionA | Call a function in the target process. WARNING: executes code in the debugged program. |
| switch_break_atA | Set a breakpoint at an offset relative to the base of main ($main). Example: offset '0x3a5f10' sets a breakpoint at $main+0x3a5f10. |
| switch_no_opA | NOP the instruction at the given offset from main. Writes ARM64 NOP (0xD503201F) at $main+offset. |
| switch_stubA | Stub the function at the given offset from main. Writes ARM64 RET (0xD65F03C0) at $main+offset, making the function return immediately. |
| switch_replaceB | Replace the instruction at an offset from main with a new instruction. Offset and instruction are both hex values. |
| switch_get_pcA | Get the current PC as an offset relative to the base of main. |
| switch_localizeB | Convert an absolute address or register value to an offset relative to the base of main. Example: address '$x0' or '0x8012345'. |
| switch_my_btA | Print the backtrace as absolute addresses by walking the frame pointer chain. Often misses the first address — use 'p/x $lr' for that. |
| switch_my_bt2A | Print the backtrace with offsets relative to the base of main. Walks the frame pointer chain and resolves each return address to a module-relative offset. |
| switch_print_traceA | Combined trace: runs get_pc, localize $lr, and my_bt2 in one command. Returns the current PC offset, calling offset, and full backtrace with offsets relative to main. |
| switch_xxdA | Print a hex dump (xxd-style) of memory at the given address. |
| switch_prepare_rehookA | Dump the original instructions at an offset (4 instructions / 16 bytes) as 'replace' commands, so you can restore them after hooking. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/sbergeron42/gdb-multiarch-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server