AgentStack
Browse Sign in
Browse Why AgentStack Sell Docs
Sign in
MCP verified MIT Self-run

Rbinr2

mcp-kirkderp-rbinr2 · by kirkderp

MCP server for radare2-based binary analysis

No reviews yet
0 installs
31 views
0.0% view→install

Install

$ agentstack add mcp-kirkderp-rbinr2

✓ scanned · ✓ verified, works with Claude Code, Cursor, and more.

Security review

✓ Passed

No issues found. Passed automated security review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures

What it can access

  • Network access No
  • Filesystem access No
  • Shell / process execution No
  • Environment & secrets No
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

View the full security report →

Verified badge

Passed review? Show it. Paste this badge into your README, it links to the public security report.

AgentStack Verified badge Links to your public security report.
[![AgentStack Verified](https://agentstack.voostack.com/badges/verified.svg)](https://agentstack.voostack.com/security/report/mcp-kirkderp-rbinr2)

Reliability & compatibility

Security review passed
0 installs to date
no reviews yet
3mo ago

Declared compatibility

Claude CodeClaude DesktopCursorWindsurf

Compatibility is declared by the source manifest. End-to-end runtime verification is coming, see below.

Preview Execution monitoring

We're building live execution health for every listing: tool-call success rate, median latency, uptime, and last-checked timestamps, measured, not self-reported. It isn't live yet, so we don't show numbers we can't stand behind.

How agent discovery & health will work →
Are you the author of Rbinr2? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

rbinr2

rbinr2 is a Model Context Protocol server for radare2-backed binary analysis.

It runs as a stdio MCP server, opens binaries in persistent radare2 sessions, and exposes named tools for metadata, disassembly, search, xrefs, byte extraction, graphing, and static triage.

The target use case is repeatable static analysis from an MCP client. Give the tools an absolute binary path and an address, symbol, flag, or search pattern. rbinr2 keeps the radare2 session open until you close it or the server exits.

Requirements

  • Rust 1.88 or newer
  • radare2 5.9 or newer on PATH
  • An MCP client that can run stdio servers

Check the runtime dependency:

r2 -v

Optional decompiler support for r2_decompile mode=code requires an r2 decompiler plugin such as r2ghidra or r2dec. mode=meta works without those plugins.

Install

From a local checkout:

git clone https://github.com/kirkderp/rbinr2
cd rbinr2
cargo install --path crates/rbm-server --locked

From git:

cargo install --git https://github.com/kirkderp/rbinr2 --package rbm-server --locked

The installed executable is named rbinr2.

Run it directly:

RBM_CACHE_DIR=./rbinr2-cache rbinr2

The process waits for MCP JSON-RPC messages on stdin and writes responses to stdout.

MCP Configuration

Example stdio server configuration:

{
  "mcpServers": {
    "rbinr2": {
      "command": "/absolute/path/to/rbinr2",
      "args": [],
      "env": {
        "RBM_CACHE_DIR": "/absolute/path/to/rbinr2-cache"
      }
    }
  }
}

Use an absolute path for command. Use an absolute path for RBM_CACHE_DIR when the client may start the server from different working directories.

How It Works

MCP client
  -> stdio JSON-RPC
  -> rbinr2
  -> one persistent radare2 process per binary
  -> bounded r2 commands
  -> JSON/text tool responses

rbinr2 canonicalizes binary paths and reuses the same radare2 session for later calls. The first call for a binary performs radare2 startup analysis. Later calls use the existing session.

Use r2_close to close one binary session. Use r2_sessions to list open sessions.

Example Tool Calls

MCP clients call tools by name. These examples show the tool arguments.

Open a binary with r2_open:

{
  "binary_path": "/absolute/path/to/sample.exe"
}

Read binary metadata with r2_metadata:

{
  "binary_path": "/absolute/path/to/sample.exe",
  "mode": "info"
}

List functions with r2_metadata:

{
  "binary_path": "/absolute/path/to/sample.exe",
  "mode": "functions",
  "limit": 25
}

Inspect a function with r2_function_view:

{
  "binary_path": "/absolute/path/to/sample.exe",
  "addr": "entry0",
  "mode": "profile"
}

Extract bytes without writing files with r2_extract_bytes:

{
  "binary_path": "/absolute/path/to/sample.exe",
  "addr": "entry0",
  "count": 256
}

Close the session with r2_close:

{
  "binary_path": "/absolute/path/to/sample.exe"
}

Configuration

| Variable | Default | Description | | --- | --- | --- | | RBM_CACHE_DIR | ./rbinr2-cache | Cache root for guarded overflow output. | | RBM_R2_OPEN_TIMEOUT | 120 | Timeout in seconds for opening a new radare2 session. | | RBM_TOOL_TIMEOUT_SECS | 30 | Timeout in seconds for each radare2 command. |

Tool Reference

rbinr2 exposes 39 MCP tools.

Sessions

| Tool | Purpose | | --- | --- | | r2_open | Open a binary and start a persistent radare2 session. | | r2_close | Close one binary session. | | r2_sessions | List open sessions. |

Metadata

| Tool | Purpose | | --- | --- | | r2_metadata | Mode-driven metadata: info, headers, version info, entry points, sections, relocations, resources, libraries, imports, exports, symbols, strings, and functions. | | r2_classes | List classes or inspect one class. | | r2_vtables | Return bounded native vtable discovery from avj. | | r2_types | Read r2 type-system data: lists, functions, structs, enums, unions, typedefs, C declarations, views, formats, casts, xrefs, links, and calling conventions. | | r2_imports_grouped | Group imports by usage category with caller data when r2 provides it. | | r2_plugins | List r2 asm, analysis, binary, hash, and decompiler capabilities. | | r2_flags | Read flags, real names, or flagspaces with filtering and pagination. | | r2_lookup_address | Resolve an address to its flag, symbol, module, and enclosing function. | | r2_address_info | Return r2 address classification metadata from aij. | | r2_calculate | Evaluate an r2 math expression and return hex, decimal, and binary. |

Disassembly

| Tool | Purpose | | --- | --- | | r2_disassemble | Disassemble a bounded instruction window or containing function as JSON or text. | | r2_opcodes | Return structured opcode-analysis rows from aoj. | | r2_decompile | Return decompiler output or compact decompiler metadata. | | r2_function_view | Inspect a function: analyze, info, signature, vars, profile, strings, constants, callees, refs, or cfg. | | r2_graph | Export native r2 graphs for functions, callgraphs, imports, refs, xrefs, and data refs. |

Bytes

| Tool | Purpose | | --- | --- | | r2_get_bytes | Read raw bytes as a hex string. | | r2_extract_bytes | Extract a bounded byte range with SHA-256, hex/ascii previews, lookup data, and section/file-offset mapping. | | r2_block_hash | Compute a bounded r2 ph hash or entropy value. | | r2_pointer_scan | Read pointer/reference-like words from a bounded memory range using pxrj. | | r2_string_at | Decode a string at an address as auto, ascii, utf16, utf32, or pascal. |

Search

| Tool | Purpose | | --- | --- | | r2_find | Search functions, strings, imports, or bytes. | | r2_semantic_search | Run bounded opcode-type, disasm-text, wide-string, value, refs, ROP, or hex searches. | | r2_find_xrefs | Search and resolve xrefs to each hit in one bounded pass. |

Xrefs And Flow

| Tool | Purpose | | --- | --- | | r2_xrefs | Get xrefs to or from an address. | | r2_global_xrefs | Return a paginated global xref inventory. | | r2_trace_data_flow | Traverse xrefs forward or backward with bounded depth. | | r2_var_xrefs | List function variable read/write xrefs from afvxj. | | r2_esil_accesses | Summarize ESIL-derived register and memory accesses. | | r2_value_trace | Trace a seeded register or memory value through a bounded disassembly window. |

Static Triage

| Tool | Purpose | | --- | --- | | r2_security | Return checksec-style hardening fields or per-section entropy. | | r2_path_digest | Summarize branches, calls, constants, markers, local buffers, and state writes over a bounded path. | | r2_artifact_summary | Summarize decoded branch artifacts, strings, callsites, and unsupported branches. | | r2_field_xrefs | Map raw memory field references with symbolic root tracking. | | r2_jump_table_slices | Summarize computed jump-table targets. | | r2_windows_driver_dispatch | Recover Windows DRIVER_OBJECT dispatch and notify callback anchors from an init routine. |

Raw r2 Query

| Tool | Purpose | | --- | --- | | r2_cmd | Run one read-only r2 query command with guarded output. |

r2_cmd rejects command separators, shell escapes, writes, seeks, and eval-setting mutations. Prefer named tools when one exists.

Usage Notes

  • binary_path must be an absolute path.
  • Address arguments accept numeric addresses, symbols, and r2 flags.
  • Most tools clamp counts and limits before calling r2.
  • r2_extract_bytes returns bytes, hashes, previews, and mapping data. It does not write extracted bytes to disk.
  • r2_decompile mode=code depends on installed r2 decompiler plugins. Use mode=meta for plugin-independent metadata.
  • r2_cmd is for read-only queries. Use named tools for normal workflows.

Development

Build and test:

cargo fmt --check
cargo clippy --workspace --all-targets --locked -- -D warnings
cargo test --workspace --locked

Run from source:

RBM_CACHE_DIR=./rbinr2-cache cargo run --bin rbinr2

Fresh local install:

cargo install --path crates/rbm-server --locked

Project Layout

crates/
  rbm-server/    MCP server, radare2 session management, and tool implementations

License

MIT. See [LICENSE](LICENSE).

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet, be the first.

Versions

  • v0.1.0 Imported from the upstream source.