list_globals
Retrieve and paginate all global variables from a database in IDA Pro for efficient reverse engineering analysis.
Instructions
List all globals in the database (paginated)
Input Schema
TableJSON Schema
| Name | Required | Description | Default |
|---|---|---|---|
| count | Yes | Number of globals to list (100 is a good default, 0 means remainder) | |
| offset | Yes | Offset to start listing from (start at 0) |
Implementation Reference
- Handler function implementing the list_globals tool. Collects global variables from IDA's Names(), filters non-function named addresses, applies pagination and pattern filtering.@tool @idaread def list_globals( queries: Annotated[ list[ListQuery] | ListQuery | str, "List global variables with optional filtering and pagination", ], ) -> list[Page[Global]]: """List globals""" queries = normalize_dict_list( queries, lambda s: {"offset": 0, "count": 50, "filter": s} ) all_globals: list[Global] = [] for addr, name in idautils.Names(): if not idaapi.get_func(addr) and name is not None: all_globals.append(Global(addr=hex(addr), name=name)) results = [] for query in queries: offset = query.get("offset", 0) count = query.get("count", 100) filter_pattern = query.get("filter", "") # Treat empty/"*" filter as "all" if filter_pattern in ("", "*"): filter_pattern = "" filtered = pattern_filter(all_globals, filter_pattern, "name") results.append(paginate(filtered, offset, count)) return results
- Output item schema: Global TypedDict defining structure of each global variable (address and name). Used in Page[Global].class Global(TypedDict): addr: str name: str
- Input schema: ListQuery TypedDict for optional filter, offset, and count parameters supporting pagination and filtering.class ListQuery(TypedDict, total=False): """Pagination query for listing operations""" filter: Annotated[str, "Optional glob pattern to filter results"] offset: Annotated[int, "Starting index (default: 0)"] count: Annotated[int, "Maximum number of results (default: 50, 0 for all)"]
- Pagination response wrapper: Page generic TypedDict used for output structure list[Page[Global]].class Page(TypedDict, Generic[T]): data: list[T] next_offset: Optional[int]
- src/ida_pro_mcp/ida_mcp/rpc.py:17-18 (registration)The @tool decorator registers functions as MCP tools by adding them to the McpServer instance.def tool(func): return MCP_SERVER.tool(func)