Skip to main content
Glama
benpm
by benpm

LLDB MCP Server

CI

An MCP (Model Context Protocol) server that provides structured debugging tools for LLDB, designed for use with Claude Code and other MCP-compatible AI assistants.

Features

This server exposes LLDB debugging capabilities through well-defined MCP tools:

Execution Control

  • lldb_run - Run a program with optional breakpoints and arguments

  • lldb_analyze_crash - Analyze crash dumps and core files

Breakpoints & Watchpoints

  • lldb_set_breakpoint - Set breakpoints by function, file:line, or address

  • lldb_watchpoint - Set watchpoints to break on variable access

Inspection

  • lldb_examine_variables - View local variables and arguments

  • lldb_backtrace - Get stack traces for all threads

  • lldb_registers - View CPU register values

  • lldb_read_memory - Read and display memory contents

  • lldb_threads - List all threads and their states

Code Analysis

  • lldb_disassemble - Disassemble functions or address ranges

  • lldb_source - List source code with line numbers

  • lldb_symbols - Look up symbols by name, regex, or address

  • lldb_images - List loaded executables and shared libraries

Expression Evaluation

  • lldb_evaluate - Evaluate C/C++ expressions in debug context

Utilities

  • lldb_run_command - Run arbitrary LLDB commands

  • lldb_help - Get help on LLDB commands

  • lldb_version - Show LLDB version info

Related MCP server: GDB MCP Server

Requirements

  • Python 3.10+

  • LLDB (with command-line tool in PATH)

  • mcp[cli] Python package

Installing LLDB

Ubuntu/Debian:

sudo apt install lldb

macOS:

# LLDB comes with Xcode Command Line Tools
xcode-select --install

Windows:

# Install via LLVM releases or Visual Studio
winget install LLVM.LLVM

Installation

  1. We provide a setup script that installs all dependencies and verifies the installation.

  2. Make the script executable

  3. chmod +x setup_for_copilot.sh

  4. Run the setup script

  5. ./setup_for_copilot.sh

  6. This script will:

    1. Check for Python 3 and pip

    1. Install required Python packages (mcp[cli], pydantic, httpx)

    1. Verify the installation by running tests

  7. Option 1: Install from source

# Clone the repository
git clone https://github.com/yourusername/lldb-mcp.git
cd lldb-mcp

# Install dependencies
pip install -e .

Option 2: Install dependencies directly

pip install "mcp[cli]" pydantic httpx

Configuration for Claude Code

Automatic Configuration

You can easily add the server to Claude Code using the mcp add command:

claude mcp add lldb python3 /path/to/lldb-mcp/lldb_mcp_server.py

Replace /path/to/lldb-mcp with the actual path to the repository.

Manual Configuration

Add the following to your Claude Code MCP configuration file:

Location of config file

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json

  • Windows: %APPDATA%\Claude\claude_desktop_config.json

  • Linux: ~/.config/Claude/claude_desktop_config.json

Configuration

{
  "mcpServers": {
    "lldb": {
      "command": "python",
      "args": ["/path/to/lldb-mcp/lldb_mcp_server.py"]
    }
  }
}

Or if installed as a package:

{
  "mcpServers": {
    "lldb": {
      "command": "lldb-mcp"
    }
  }
}
{
  "mcpServers": {
    "lldb": {
      "command": "uvx",
      "args": ["--from", "/path/to/lldb-mcp", "lldb-mcp"]
    }
  }
}

Usage Examples

Once configured, you can ask Claude Code to help with debugging tasks:

Analyze a Crash

"Analyze the crash dump in ./core and the executable ./myprogram to find what caused the segfault"

Set Breakpoints and Examine State

"Set a breakpoint at the processData function in processor.cpp, run the program with argument 'test.txt', and show me the local variables when it stops"

Disassemble Code

"Show me the assembly for the main function in ./myprogram"

Evaluate Expressions

"Run ./myprogram until it hits parseConfig and evaluate the expression config->max_threads"

Memory Inspection

"Read 128 bytes of memory at address 0x7fff5fbff000 in hexadecimal format"

Symbol Lookup

"Find all symbols matching 'parse.*' regex in ./myprogram"

Tool Reference

lldb_run_command

Execute any LLDB command directly.

{
    "command": "help breakpoint",  # Any LLDB command
    "target": "./myprogram",       # Optional: executable to load
    "working_dir": "/path/to/dir"  # Optional: working directory
}

lldb_analyze_crash

Analyze crash dumps with full context.

{
    "executable": "./myprogram",
    "core_file": "./core",              # Optional: core dump
    "response_format": "markdown"       # or "json"
}

lldb_set_breakpoint

Set breakpoints with conditions.

{
    "executable": "./myprogram",
    "location": "main.cpp:42",          # or "functionName" or "0x400500"
    "condition": "i > 100"              # Optional: break condition
}

lldb_examine_variables

View variables at a breakpoint.

{
    "executable": "./myprogram",
    "breakpoint": "processData",
    "variables": ["buffer", "size"],    # Optional: specific vars
    "args": ["input.txt"],              # Optional: program args
    "response_format": "markdown"
}

lldb_disassemble

Disassemble code regions.

{
    "executable": "./myprogram",
    "target": "main",                   # Function name, address range, or "current"
    "show_bytes": true,                 # Show opcode bytes
    "mixed": true                       # Interleave source
}

lldb_read_memory

Read memory contents.

{
    "executable": "./myprogram",
    "address": "0x7fff5fbff000",
    "count": 64,                        # Bytes to read
    "format": "x",                      # x=hex, b=binary, d=decimal, s=string
    "breakpoint": "main"                # Optional: stop here first
}

lldb_evaluate

Evaluate C/C++ expressions.

{
    "executable": "./myprogram",
    "expression": "ptr->data[5]",
    "breakpoint": "processBuffer",
    "args": ["test.dat"]
}

lldb_backtrace

Get stack traces.

{
    "executable": "./myprogram",
    "breakpoint": "handleError",        # or use core_file
    "core_file": "./core",              # For post-mortem
    "all_threads": true,
    "limit": 50,
    "response_format": "json"           # Structured output
}

lldb_registers

View CPU registers.

{
    "executable": "./myprogram",
    "breakpoint": "criticalSection",
    "register_set": "general",          # general, float, vector, all
    "specific_registers": ["rax", "rbx", "rsp"]  # Optional
}

lldb_watchpoint

Set data watchpoints.

{
    "executable": "./myprogram",
    "variable": "global_counter",
    "watch_type": "write",              # write, read, read_write
    "condition": "global_counter > 1000"
}

lldb_symbols

Look up symbols.

{
    "executable": "./myprogram",
    "query": "process.*",
    "query_type": "regex"               # name, regex, address, type
}

Alternative: Using LLDB's Built-in MCP Server

LLDB 18+ has built-in MCP support. To use it instead:

  1. Start LLDB and enable MCP:

    (lldb) protocol-server start MCP listen://localhost:59999
  2. Configure Claude Code to connect via netcat:

    {
      "mcpServers": {
        "lldb": {
          "command": "/usr/bin/nc",
          "args": ["localhost", "59999"]
        }
      }
    }

Note: LLDB's built-in MCP only exposes a single lldb_command tool, whereas this server provides structured, specialized tools for better AI integration.

Development

Running Tests

pytest tests/

Type Checking

mypy lldb_mcp_server.py

Linting

ruff check lldb_mcp_server.py
ruff format lldb_mcp_server.py

Troubleshooting

"LLDB executable not found"

Ensure LLDB is installed and in your PATH:

which lldb
lldb --version

Permission denied on core files

On Linux, enable core dumps:

ulimit -c unlimited
sudo sysctl -w kernel.core_pattern=core.%p

Debugger can't find symbols

Compile your programs with debug info:

g++ -g -O0 myprogram.cpp -o myprogram
clang++ -g -O0 myprogram.cpp -o myprogram

License

MIT License - see LICENSE file for details.

Contributing

Contributions welcome! Please read CONTRIBUTING.md for guidelines.

Available Tools

17 tools
lldb_analyze_crashA
Read-onlyIdempotent

Analyze a crashed program or core dump to determine the cause.

This tool loads a core dump or crashed executable and provides:
- Backtrace showing the crash location
- Register state at crash time
- Local variables in the crash frame
- Loaded modules information

Args:
    params: AnalyzeCrashInput with executable path and optional core file

Returns:
    str: Crash analysis including backtrace, registers, and variables
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds useful context about what the analysis provides (backtrace, registers, variables, modules), but does not disclose rate limits, authentication needs, or detailed behavioral traits beyond the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by bullet points detailing outputs and clear sections for Args and Returns. Every sentence adds value without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity, the description is complete enough: it explains the purpose, lists analysis outputs, references parameters, and specifies the return type. With annotations covering safety and idempotency, and an output schema implied by the Returns section, no critical information is missing for effective tool selection.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With schema description coverage at 0%, the description minimally references parameters ('executable path and optional core file'), but does not add meaningful semantics beyond what the input schema already defines in detail for executable, core_file, response_format, and working_dir. The baseline is appropriate given the schema's comprehensive parameter documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('analyze a crashed program or core dump') and resource ('crashed program or core dump'), distinguishing it from siblings like lldb_backtrace or lldb_registers by emphasizing comprehensive crash analysis rather than isolated debugging operations.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implicitly suggests usage for crash investigation ('to determine the cause'), but does not explicitly state when to use this tool versus alternatives like lldb_backtrace or lldb_examine_variables, nor does it provide exclusions or prerequisites for its use.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_backtraceA
Read-onlyIdempotent

Get a stack backtrace showing the call chain.

The backtrace shows:
- Frame numbers (0 is current frame)
- Function names and addresses
- Source file and line numbers (if available)
- Module/library names

Args:
    params: BacktraceInput with executable and stopping point

Returns:
    str: Stack backtrace with frame information
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe, repeatable read operation. The description adds valuable behavioral context by detailing what the backtrace output includes (frame numbers, function names, source lines, module names) and mentioning availability conditions ('if available'), which goes beyond the annotations. No contradictions exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and appropriately sized. It front-loads the purpose, then details output content, and ends with parameter and return summaries. Every sentence adds value, though the 'Args' and 'Returns' sections are somewhat redundant given the schema and output schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, rich annotations (readOnlyHint, idempotentHint), and the presence of an output schema (implied by 'Returns: str'), the description is mostly complete. It explains what the tool does and what the output contains, though it lacks usage guidelines and deeper parameter context, which are minor gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 0%, but the description compensates by explaining that 'params' is a 'BacktraceInput with executable and stopping point.' However, it doesn't detail the semantics of individual parameters like 'executable', 'breakpoint', or 'core_file' beyond what the schema's property descriptions already provide. The baseline is 3 since the schema does heavy lifting with well-described properties.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Get a stack backtrace showing the call chain.' It specifies the exact resource (stack backtrace) and verb (get), and distinguishes it from siblings like lldb_disassemble or lldb_examine_variables by focusing on call chain visualization rather than code disassembly or variable inspection.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention when to prefer lldb_backtrace over lldb_threads (which might show thread states) or lldb_analyze_crash (for crash analysis), nor does it specify prerequisites like needing a running/debuggable process. Usage context is implied but not explicit.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_disassembleA
Read-onlyIdempotent

Disassemble machine code to view assembly instructions.

Can disassemble:
- A named function: 'main', 'MyClass::method'
- An address range: '0x1000-0x1100' or '0x1000 0x1100'
- Current frame (when stopped at breakpoint)

Options:
- show_bytes: Include raw opcode bytes
- mixed: Interleave source code with assembly

Args:
    params: DisassembleInput with target and display options

Returns:
    str: Assembly listing
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds useful context about the tool's scope (e.g., working with breakpoints) and display options (show_bytes, mixed), but does not detail aspects like rate limits, authentication needs, or error handling beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded, starting with the core purpose, followed by bullet points for use cases and options, and ending with args and returns. Each sentence adds value without redundancy, making it efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, rich annotations, and presence of an output schema (which handles return values), the description is largely complete. It covers purpose, usage, and parameters well, though it could benefit from more behavioral details like error cases or performance considerations to be fully comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the schema provides no parameter descriptions. The description compensates by explaining the 'target' parameter with examples (function names, address ranges, 'current'), and outlines 'show_bytes' and 'mixed' options, adding meaningful semantics. However, it does not cover the 'executable' parameter, leaving a minor gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('disassemble') and resource ('machine code'), explaining it converts machine code to assembly instructions. It distinguishes itself from siblings like lldb_read_memory or lldb_symbols by focusing on disassembly rather than memory reading or symbol lookup.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use the tool by listing three specific use cases (named function, address range, current frame), which helps guide selection. However, it does not explicitly mention when not to use it or name alternatives among sibling tools, such as using lldb_read_memory for raw memory access instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_evaluateA
Read-onlyIdempotent

Evaluate a C/C++ expression in the debugger context.

Expressions can include:
- Variable access: 'my_var', 'ptr->member'
- Array indexing: 'array[5]'
- Function calls: 'strlen(str)'
- Casts: '(int*)ptr'
- Arithmetic: 'x + y * 2'
- sizeof: 'sizeof(MyStruct)'

Args:
    params: EvaluateExpressionInput with expression and context

Returns:
    str: Expression result with type information
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds valuable context by specifying the debugger context and listing expression capabilities (variable access, function calls, arithmetic, etc.), which helps the agent understand the tool's behavior beyond the annotations. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by bullet-pointed expression examples and clear sections for Args and Returns. Every sentence earns its place without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (evaluating expressions in a debugger), the description provides good context with expression examples and return information. Annotations cover safety, and an output schema exists (Returns: str), so the description doesn't need to detail return values. However, it could better explain parameter interactions or prerequisites (e.g., needing a running debug session).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description includes an 'Args' section that explains 'params' as 'EvaluateExpressionInput with expression and context' and lists expression examples. This adds some meaning, but it doesn't detail the nested parameters (executable, breakpoint, args) beyond what the schema provides. With 0% coverage, the description partially compensates but not fully.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Evaluate a C/C++ expression in the debugger context.' It specifies the verb ('evaluate') and resource ('C/C++ expression'), and distinguishes from siblings like lldb_examine_variables (which likely inspects variables without expression evaluation) and lldb_run_command (which runs debugger commands rather than evaluating expressions).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage when evaluating C/C++ expressions in a debugger context, but doesn't explicitly state when to use this tool versus alternatives like lldb_examine_variables or lldb_run_command. It provides examples of expression types but no explicit guidance on tool selection or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_examine_variablesA
Read-onlyIdempotent

Examine local variables and arguments at a breakpoint.

Runs the program until the specified breakpoint, then displays
the values of local variables and function arguments.

Args:
    params: ExamineVariablesInput with executable, breakpoint, and optional variable names

Returns:
    str: Variable values at the breakpoint
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide important behavioral hints (readOnlyHint=true, destructiveHint=false, idempotentHint=true), so the agent knows this is a safe, non-destructive read operation. The description adds useful context about program execution ('runs the program until the specified breakpoint') and display behavior, but doesn't mention potential side effects like program state changes during execution or any rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with purpose first, then execution behavior, followed by parameter and return value sections. It's appropriately sized at 4 sentences, though the parameter section could be slightly more detailed given the 0% schema coverage. Every sentence adds value without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a debugging tool with good annotations and an output schema, the description provides adequate context. It explains what the tool does, when to use it, and the main parameters. The presence of an output schema means the description doesn't need to detail return values. However, with 0% schema coverage and multiple sibling tools, more parameter guidance would be beneficial.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the description carries the full burden of parameter documentation. It mentions the main parameter ('ExamineVariablesInput with executable, breakpoint, and optional variable names') and provides semantic context about what these represent. However, it doesn't detail all sub-parameters like 'args' or 'response_format' that appear in the schema, leaving some gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('examine', 'runs', 'displays') and resources ('local variables and arguments at a breakpoint'). It distinguishes itself from siblings like lldb_backtrace (stack trace) or lldb_registers (register values) by focusing specifically on variable inspection during debugging.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('at a breakpoint' for examining variables), but doesn't explicitly state when NOT to use it or name specific alternatives. It implies usage during debugging sessions but lacks explicit exclusions or comparisons to similar tools like lldb_evaluate (which evaluates expressions).

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_helpA
Read-onlyIdempotent

Get help on LLDB commands and usage.

Provides:
- General LLDB usage (empty topic)
- Help on specific commands (e.g., 'breakpoint', 'memory')
- Command syntax and options

Args:
    topic: Command or topic to get help on (empty for general help)

Returns:
    str: Help text for the specified topic
ParametersJSON Schema
NameRequiredDescriptionDefault
topicNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate read-only, non-destructive, and idempotent behavior, which the description doesn't contradict. The description adds context about what help is provided (general usage, command syntax) and the return format, enhancing transparency beyond annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections ('Provides', 'Args', 'Returns'), uses bullet points for readability, and every sentence adds value without redundancy. It's front-loaded with the core purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's low complexity (one optional parameter), rich annotations (read-only, idempotent), and an output schema (returns string), the description is complete. It covers purpose, usage, parameters, and return values adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema has 0% description coverage for the single parameter 'topic'. The description compensates by explaining that an empty topic provides general help, while a specific topic (e.g., 'breakpoint') gives command-specific help, adding meaningful semantics not in the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose as 'Get help on LLDB commands and usage' with specific examples like 'breakpoint' and 'memory', distinguishing it from sibling tools that perform debugging operations rather than providing documentation.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly states when to use this tool: for general LLDB usage (empty topic) or help on specific commands, with clear examples. This distinguishes it from all sibling tools, which are for execution or analysis rather than help retrieval.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_imagesA
Read-onlyIdempotent

List loaded executable images and shared libraries.

Shows:
- Main executable
- Shared libraries (.so, .dylib, .dll)
- Load addresses
- File paths

Args:
    params: ImageListInput with executable and optional filter

Returns:
    str: List of loaded images with addresses
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, indicating a safe, non-mutating operation. The description adds context by specifying what is listed (executable images, shared libraries, addresses, paths) and mentions filtering via 'filter_pattern', which provides useful behavioral details beyond annotations. However, it does not cover aspects like performance, rate limits, or error conditions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose. Each sentence adds value: the first states the action, the bullet points detail what is shown, and the Args/Returns sections provide necessary context without redundancy. It is appropriately sized with zero waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, rich annotations (readOnlyHint, idempotentHint), and the presence of an output schema (returns str), the description is mostly complete. It covers the purpose, parameters, and return type adequately. However, it lacks explicit usage guidelines and detailed behavioral context, which slightly reduces completeness for an agent.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by explaining the 'params' argument as 'ImageListInput with executable and optional filter'. It clarifies that 'executable' is required and 'filter_pattern' is optional for filtering by name, adding meaning beyond the schema. However, it does not detail the format or examples for these parameters, leaving some gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('List loaded executable images and shared libraries') and resource ('loaded images with addresses'), distinguishing it from siblings like lldb_backtrace or lldb_threads. It provides concrete examples of what is shown (main executable, shared libraries, load addresses, file paths), making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description offers no guidance on when to use this tool versus alternatives. It does not mention sibling tools like lldb_symbols or lldb_examine_variables, nor does it specify scenarios where listing loaded images is appropriate (e.g., debugging memory issues, verifying library loads). Usage is implied but not explicitly stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_read_memoryA
Read-onlyIdempotent

Read and display memory contents at a specified address.

Memory can be displayed in various formats:
- 'x': Hexadecimal (default)
- 'b': Binary
- 'd': Decimal
- 's': String (null-terminated)
- 'i': Instructions (disassembly)

Args:
    params: ReadMemoryInput with address, count, and format

Returns:
    str: Memory contents in requested format
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety aspects. The description adds valuable behavioral context by explaining the different display formats available, which isn't covered by annotations. However, it doesn't mention potential limitations like address validity requirements or execution state dependencies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized with clear front-loading of the main purpose. The format list is useful but could be more concise. The Args/Returns section adds structure but duplicates some information. Overall efficient with minimal waste.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, annotations cover safety aspects well, and the description adds format context. However, with 0% schema coverage and multiple parameters, the description doesn't fully compensate for missing parameter documentation. The existence of an output schema reduces the need to explain return values, but parameter semantics remain incomplete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the schema provides no parameter descriptions. The description compensates by listing format options and mentioning address, count, and format parameters, but doesn't fully document all parameters (executable, breakpoint) or provide detailed semantics. The Args/Returns section adds some structure but remains incomplete.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verb ('Read and display') and resource ('memory contents at a specified address'). It distinguishes from siblings like lldb_disassemble (which focuses on instructions) and lldb_examine_variables (which focuses on variables) by specifying memory reading functionality.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context through format options and parameter documentation, but doesn't explicitly state when to use this tool versus alternatives like lldb_disassemble or lldb_examine_variables. No explicit when-not-to-use guidance or prerequisites are provided.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_registersA
Read-onlyIdempotent

View CPU register values at a breakpoint.

Register sets:
- 'general': General purpose registers (rax, rbx, rsp, etc.)
- 'float': Floating point registers
- 'vector': SIMD/vector registers (xmm, ymm)
- 'all': All register sets

Args:
    params: RegistersInput with breakpoint and register selection

Returns:
    str: Register values in hexadecimal format
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, destructiveHint=false, idempotentHint=true, and openWorldHint=false, covering safety and idempotency. The description adds valuable behavioral context by specifying that it works 'at a breakpoint' and describes the return format ('Register values in hexadecimal format'), which goes beyond what annotations provide.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the core purpose, followed by register sets and parameter/return details. Every sentence earns its place without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (debugging with multiple parameters) and the presence of annotations and an output schema, the description is largely complete. It explains the purpose, register sets, and return format, though it could benefit from more detailed parameter guidance. The output schema reduces the need to fully describe returns.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by listing the register set options and mentioning that params include 'breakpoint and register selection'. However, it doesn't fully detail all parameters (e.g., executable, args, specific_registers) beyond what's implied. With 0% schema coverage, the description adds some but not complete parameter semantics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('View') and resource ('CPU register values at a breakpoint'), distinguishing it from siblings like lldb_examine_variables or lldb_read_memory. It explicitly mentions what register sets are available, making the scope unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool (to view register values at a breakpoint), but it doesn't explicitly state when not to use it or name alternatives among siblings. The context is sufficient for typical debugging scenarios, though it lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_runA

Run a program under the debugger with optional breakpoints.

This tool:
1. Loads the executable
2. Sets any specified breakpoints
3. Runs the program (optionally stopping at entry)
4. Returns the state when stopped

Args:
    params: RunProgramInput with executable, args, and breakpoints

Returns:
    str: Program state after stopping (backtrace, variables)
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations provide readOnlyHint=false, openWorldHint=true, idempotentHint=false, and destructiveHint=false. The description adds valuable behavioral context beyond annotations: it details the multi-step process (loads executable, sets breakpoints, runs program, returns state), specifies what happens when stopped, and describes the return content. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear opening sentence, numbered steps, and separate Args/Returns sections. It's appropriately sized but could be slightly more concise by integrating the steps into the main flow. Every sentence adds value, though the formatting is slightly verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (debugging execution), rich annotations, and presence of an output schema (which handles return values), the description is mostly complete. It covers the purpose, process, and key parameters, though it could benefit from more usage guidelines and parameter details to fully compensate for the 0% schema coverage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds minimal parameter semantics: it mentions 'optional breakpoints' and 'optionally stopping at entry', and references 'RunProgramInput with executable, args, and breakpoints'. However, it doesn't fully compensate for the low coverage by explaining all parameters like environment or working_dir. Baseline 3 is appropriate as it adds some meaning but not comprehensive details.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Run a program under the debugger') and resource ('executable'), distinguishing it from siblings like lldb_set_breakpoint (which only sets breakpoints) and lldb_run_command (which runs debugger commands). The four-step breakdown provides explicit scope.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for running programs with debugging, but lacks explicit guidance on when to use this vs alternatives like lldb_run_command or prerequisites. It mentions 'optional breakpoints' and 'optionally stopping at entry', which gives some context but no clear exclusions or comparisons to siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_run_commandA

Execute an arbitrary LLDB command and return the output.

This is a flexible tool for running any LLDB command. Use this when
other specialized tools don't cover your specific need.

Common commands:
- 'help' - Show help for commands
- 'version' - Show LLDB version
- 'settings list' - Show all settings
- 'type summary list' - List type summaries
- 'platform list' - List available platforms

Args:
    params: RunCommandInput containing the command and optional target

Returns:
    str: Command output or error message
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond annotations. Annotations indicate it's not read-only, idempotent, or destructive, but the description clarifies it's a 'flexible tool for running any LLDB command' and provides common command examples (e.g., 'help', 'version'), which helps the agent understand typical use cases and potential outputs. However, it doesn't mention rate limits, authentication needs, or side effects, leaving some behavioral aspects uncovered.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded, starting with the core purpose, followed by usage guidelines, common commands, and parameter/return details. Every sentence adds value without redundancy, and it efficiently conveys necessary information in a compact format, making it easy for an agent to parse and understand quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (executing arbitrary commands) and the presence of an output schema (which handles return values), the description is mostly complete. It covers purpose, usage guidelines, examples, and parameter overview. However, it could improve by addressing potential errors or side effects of commands, but the output schema and annotations provide some structural support, making it sufficiently complete for agent use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description includes an 'Args' section that explains the 'params' parameter contains 'RunCommandInput' with a command and optional target, and a 'Returns' section noting the output is a string. However, schema description coverage is 0%, meaning the input schema lacks descriptions for its properties. The description partially compensates by listing common commands and mentioning the target, but it doesn't fully detail all parameter semantics (e.g., working_dir usage or command constraints beyond examples).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Execute an arbitrary LLDB command and return the output.' It specifies the verb ('execute'), resource ('LLDB command'), and distinguishes from siblings by noting it's for 'any LLDB command' when 'other specialized tools don't cover your specific need.' This explicit differentiation from specialized sibling tools like lldb_backtrace or lldb_set_breakpoint makes it highly specific.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides explicit guidance on when to use this tool: 'Use this when other specialized tools don't cover your specific need.' This directly addresses alternatives by referencing the sibling tools (e.g., lldb_backtrace, lldb_set_breakpoint) without naming them individually, effectively guiding the agent to prefer specialized tools first and use this as a fallback.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_set_breakpointA

Set a breakpoint in a program.

Breakpoints can be set by:
- Function name: 'main', 'MyClass::method'
- File and line: 'main.cpp:42'
- Address: '0x400500'
- Regex: Use 'breakpoint set -r pattern'

Args:
    params: SetBreakpointInput with location and optional condition

Returns:
    str: Confirmation of breakpoint creation with details
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate this is a non-readOnly, non-destructive operation, which the description aligns with by implying creation without contradiction. The description adds context beyond annotations by detailing breakpoint types and confirming return details, but doesn't cover behavioral aspects like error handling, permissions, or rate limits. With annotations providing basic safety info, this earns a baseline score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with a clear purpose statement, bulleted examples, and separate Args/Returns sections. It's appropriately sized without wasted sentences. Minor improvements could include tighter integration of examples, but overall it's efficient and front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (debugging operation), rich input schema, and presence of an output schema, the description is fairly complete. It explains the tool's purpose, provides usage examples, and outlines parameters and returns. With output schema handling return values, the description focuses on input guidance adequately, though it could benefit from more behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by explaining the 'params' input with location examples and optional condition. It clarifies that 'params' is a SetBreakpointInput with location and condition, adding meaning beyond the bare schema. However, it doesn't detail all schema properties like 'executable' or 'working_dir', leaving gaps.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action ('Set a breakpoint in a program') with the specific resource (breakpoints). It distinguishes from siblings like lldb_backtrace or lldb_run by focusing on breakpoint creation rather than execution or analysis. However, it doesn't explicitly contrast with lldb_watchpoint, which is a related debugging tool.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implied usage through examples of breakpoint types (function name, file:line, address, regex), suggesting when to use this tool for debugging. However, it lacks explicit guidance on when to choose this over alternatives like lldb_watchpoint or when not to use it (e.g., during program execution). No prerequisites or sibling comparisons are stated.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_sourceA
Read-onlyIdempotent

List source code for a file, function, or current location.

Can display:
- Source around a specific line
- Source for a named function
- Source at the current debug position

Args:
    params: ListSourceInput specifying what source to show

Returns:
    str: Source code listing with line numbers
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

The description adds valuable behavioral context beyond what annotations provide: it specifies the three display modes (line-specific, function-specific, current position) and mentions the return format ('Source code listing with line numbers'). Annotations already declare readOnlyHint=true and idempotentHint=true, so the description appropriately focuses on operational behavior rather than repeating safety information.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is perfectly structured and front-loaded: the first sentence states the core purpose, bullet points efficiently enumerate capabilities, and the Args/Returns sections are clear and minimal. Every sentence earns its place with zero wasted text.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (debugging source code display), the description covers purpose, usage contexts, and return format well. With annotations covering safety aspects and an output schema presumably detailing the string return, the description is mostly complete. The main gap is lack of parameter details, but this is partially mitigated by the clear overall purpose statement.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage, the schema provides no parameter descriptions, but the tool description only mentions 'params: ListSourceInput specifying what source to show' without explaining individual parameters. While the description doesn't detail parameters like 'executable', 'line', or 'count', it does clarify the overall purpose of the params object. This partial compensation earns a baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('List source code') and resources ('for a file, function, or current location'), distinguishing it from siblings like lldb_disassemble (assembly code) or lldb_examine_variables (variable inspection). The three bullet points further clarify the specific use cases.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when to use this tool (to display source code in various scenarios) but doesn't explicitly state when NOT to use it or name specific alternatives among the sibling tools. The bullet points offer good guidance on different usage contexts without explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_symbolsA
Read-onlyIdempotent

Look up symbols (functions, variables, types) in an executable.

Search types:
- 'name': Exact symbol name lookup
- 'regex': Regular expression pattern matching
- 'address': Find symbol at a specific address
- 'type': Look up a type definition

Args:
    params: SymbolLookupInput with query and search type

Returns:
    str: Symbol information including address and source location
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already indicate readOnlyHint=true, destructiveHint=false, and idempotentHint=true, covering safety and idempotency. The description adds value by specifying the search types and return format ('Symbol information including address and source location'), which provides context beyond annotations. No contradictions with annotations exist.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured and front-loaded with the main purpose, followed by a bulleted list of search types and clear sections for Args and Returns. Every sentence earns its place, with no wasted words, making it efficient and easy to scan.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity, rich annotations (readOnlyHint, idempotentHint), and the presence of an output schema (implied by 'Returns: str'), the description is complete enough. It covers purpose, search types, input structure, and return format, providing sufficient context for an AI agent to use the tool effectively.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description compensates by detailing the 'params' input structure and listing search types (name, regex, address, type). However, it does not fully explain the 'executable' or 'query' parameters beyond what the schema provides, leaving some semantic gaps. With 0% coverage, a baseline of 3 is appropriate as the description adds partial value.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Look up symbols (functions, variables, types) in an executable.' It specifies the verb ('look up'), resource ('symbols'), and scope ('in an executable'), and distinguishes it from sibling tools like lldb_disassemble or lldb_backtrace by focusing on symbol lookup rather than disassembly or stack traces.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context by listing four search types (name, regex, address, type), which helps users understand when to use this tool for different lookup scenarios. However, it does not explicitly mention when not to use it or name alternatives among sibling tools, such as lldb_evaluate for expression evaluation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_threadsA
Read-onlyIdempotent

List all threads and their current state.

Shows:
- Thread IDs and names
- Current execution point for each thread
- Stop reason (if stopped)
- Optionally: backtrace for each thread

Args:
    params: ThreadsInput with executable and optional core file

Returns:
    str: Thread listing with state information
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide readOnlyHint=true, destructiveHint=false, and idempotentHint=true, indicating a safe, non-destructive read operation. The description adds valuable context beyond annotations: it specifies what information is shown (thread IDs, names, execution points, stop reasons, optional backtraces) and mentions the return format ('Thread listing with state information'). This enhances understanding of the tool's behavior without contradicting annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is well-structured with clear sections: purpose statement, 'Shows' list, 'Args', and 'Returns'. It's front-loaded with the main purpose. However, the 'Shows' section could be more concise, and the parameter documentation is minimal. Overall, it's efficient but has minor room for improvement.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (debugging threads), rich annotations (read-only, idempotent), and the presence of an output schema (implied by 'Returns: str'), the description is mostly complete. It covers purpose, output format, and parameters at a high level. However, it lacks details on parameter usage (e.g., how breakpoint interacts with thread listing) and doesn't mention sibling tool relationships, leaving some contextual gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, meaning the schema provides no parameter descriptions. The description compensates by listing parameters in the 'Args' section: 'params: ThreadsInput with executable and optional core file.' However, it doesn't detail the four sub-parameters (executable, breakpoint, core_file, show_backtrace) or their semantics. With 0% coverage, the description adds some value but doesn't fully document the parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'List all threads and their current state.' It specifies the exact resource (threads) and action (list with state information). The title 'Examine Threads' from annotations reinforces this, and it distinguishes from siblings like lldb_backtrace (which focuses on call stacks) and lldb_registers (which examines register values).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage through the 'Shows' section, indicating this tool is for examining thread states during debugging. However, it doesn't explicitly state when to use this versus alternatives like lldb_backtrace (which might show backtraces without thread listings) or lldb_analyze_crash (for crash-specific analysis). No exclusions or prerequisites are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_versionA
Read-onlyIdempotent

Get LLDB version information.

Returns:
    str: LLDB version and build information
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already provide key behavioral hints (readOnlyHint: true, idempotentHint: true, destructiveHint: false), so the description doesn't need to repeat these. It adds value by specifying the return type and content ('str: LLDB version and build information'), but doesn't disclose additional traits like rate limits or error conditions, resulting in a moderate score.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is extremely concise and well-structured, with two brief sentences that directly state the purpose and return value without any wasted words. It's front-loaded and efficiently communicates essential information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (0 parameters, annotations covering safety, output schema present), the description is reasonably complete. It specifies what the tool does and what it returns, but could be enhanced with usage context or error handling details to reach a perfect score.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0 parameters and 100% schema description coverage, the schema fully documents the input (none required). The description doesn't add parameter information, which is unnecessary here, so it meets the baseline for this scenario, but doesn't exceed it since no extra context is provided.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('Get') and resource ('LLDB version information'), making it immediately understandable. However, it doesn't explicitly differentiate from sibling tools like 'lldb_help' or 'lldb_run_command', which might also provide version-related information, so it doesn't reach the highest score.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives. It doesn't mention context, prerequisites, or exclusions, leaving the agent to infer usage based on the tool name alone, which is insufficient for optimal tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

lldb_watchpointA

Set a watchpoint to break when a variable is accessed.

Watch types:
- 'write': Break when value is written (modified)
- 'read': Break when value is read
- 'read_write': Break on any access

Args:
    params: WatchpointInput with variable and access type

Returns:
    str: Confirmation of watchpoint creation
ParametersJSON Schema
NameRequiredDescriptionDefault
paramsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations indicate this is a non-readOnly, non-destructive operation, but the description adds valuable behavioral context: it explains what triggers the break (variable access), defines three specific watch types with their behaviors, and mentions the confirmation return. This goes beyond annotations by detailing the tool's specific debugging behavior and output.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured with a clear purpose statement, bullet-pointed watch type definitions, and labeled Args/Returns sections. Every sentence adds value with no redundancy. The information is front-loaded with the core functionality stated first.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (debugging operation with multiple watch types), good annotations, and the presence of an output schema (which handles return value documentation), the description is reasonably complete. It covers the core behavior, watch type semantics, and basic parameter context, though additional parameter details would improve completeness further.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

With 0% schema description coverage (the schema has descriptions but they're not counted in coverage), the description provides some parameter context by mentioning 'variable and access type' and listing watch types, but doesn't explain the executable parameter, condition parameter, or the nested WatchpointInput structure. It adds partial meaning but doesn't fully compensate for the schema coverage gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Set a watchpoint to break') and resource ('when a variable is accessed'), distinguishing it from sibling tools like lldb_set_breakpoint (which likely sets breakpoints at code locations) or lldb_examine_variables (which likely inspects variable values). The description explicitly defines what a watchpoint does in this debugging context.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context (debugging with LLDB when needing to monitor variable access) but doesn't explicitly state when to use this tool versus alternatives like lldb_set_breakpoint or lldb_examine_variables. It provides watch type definitions that help understand different use cases, but lacks explicit guidance on tool selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A4.2/5.0
Disambiguation5/5

Each tool has a clearly distinct purpose targeting specific debugger operations, such as analyzing crashes, viewing backtraces, disassembling code, evaluating expressions, examining variables, listing images, reading memory, viewing registers, running programs, executing commands, setting breakpoints, showing source, looking up symbols, listing threads, checking version, and setting watchpoints. No tools appear to overlap in functionality, making it easy for an agent to select the correct one.

Naming Consistency5/5

All tool names follow a consistent 'lldb_' prefix with a descriptive verb_noun pattern, such as lldb_analyze_crash, lldb_backtrace, lldb_disassemble, etc. This uniformity enhances readability and predictability, allowing agents to easily understand and navigate the toolset without confusion from mixed naming conventions.

Tool Count5/5

With 17 tools, the server is well-scoped for a comprehensive debugger interface, covering essential operations like execution control, inspection, and analysis. Each tool serves a specific and necessary function in the debugging workflow, avoiding redundancy while ensuring complete coverage of typical debugging tasks.

Completeness5/5

The toolset provides complete coverage of the LLDB debugging domain, including core operations like running programs, setting breakpoints and watchpoints, examining state (variables, registers, memory), analyzing crashes, and accessing symbols and source code. No significant gaps are evident; agents can perform full debugging workflows without dead ends.

Maintenance

ActivityInactive
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    B
    quality
    C
    maintenance
    Provides GDB debugging functionality for use with Claude or other AI assistants, allowing users to manage debugging sessions, set breakpoints, examine variables, and execute GDB commands through natural language.
    16
    86
    158
    MIT
  • A
    license
    C
    quality
    D
    maintenance
    Enables LLM clients to interact with the GNU Debugger (GDB) for comprehensive debugging and binary analysis. It provides a wide range of tools for program execution control, memory examination, stack analysis, and disassembly.
    13
    71
    GPL 3.0
  • A
    license
    B
    quality
    D
    maintenance
    Enables AI assistants to start and manage LLDB debugging sessions, including loading programs, setting breakpoints, stepping through code, and examining memory.
    19
    1
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Enables AI assistants to interact with LLDB debugging sessions through a standardized MCP interface, allowing natural language commands for debugging tasks like setting breakpoints, stepping, and evaluating expressions.
    758
    Apache 2.0

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/benpm/claude_lldb_mcp'

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