Skip to content
Agentmart
Submit a tool

MCP Pwntools

MCP server exposing pwntools 4.15.0 functionality for binary exploitation

Connector by daedalus · GitHub account verified by the MCP Registry

IndexedMITLocal (stdio)★ 1
Write a review

Install

Works with Claude Code, Codex, VS Code, Cursor, Windsurf, Claude Desktop. Read the repository before you give any tool access to your data.

npx agentmarket install connector/daedalus-mcp-pwntools

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

MCP server exposing pwntools 4.15.0 functionality for binary exploitation

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this server can do and what it asks for, from its tool list and install config. Checked Oct 25, 2026.

Tools
4 read · 7 write · 0 delete · 29 not yet classified
Secrets
None asked for
Install scripts
Not scanned yet
Runs as
Python package

Tools by what they do 40

Read from the source code; the running server may list different tools.

Read 4 · Look things up without changing anything.

  • context_get
  • cyclic_find
  • elf_read
  • log_info

Write 7 · Create, change, send or run things.

  • context_set
  • dynelf_resolve
  • elf_write
  • listen
  • process_create
  • rop_call
  • tube_send

Not yet classified 29 · We could not tell from the name and description.

  • asm
  • cyclic
  • disasm
  • elf_asm
  • elf_load
  • enhex
  • fit
  • flat
  • fmtstr_payload
  • fmtstr_split
  • hexdump
  • log_debug
Show 17 more tools
  • log_error
  • log_success
  • log_warn
  • p16
  • p32
  • p64
  • p8
  • remote_connect
  • rop_load
  • shellcraft
  • shellcraft_dupsh
  • shellcraft_setreuid
  • u16
  • u32
  • u64
  • u8
  • unhex

Files it touches

  • Any path the agent passes to its tools

Tools (40)

Read from the source code; the running server may differ. Descriptions are the server’s own words; hidden characters are shown as [U+…].

  • asm

    Assemble code to bytes. Args: code: Assembly code. arch: Architecture (i386, amd64, arm, mips, etc.). Uses context if not specified. os: OS (linux, freebsd, etc.). Uses context if not specified. Returns: Hex string of assembled bytes. Example: >>> asm('nop') '90'

  • context_get

    Get current pwntools context. Returns: Current context settings. Example: >>> context_get() {'arch': 'amd64', 'os': 'linux', ...}

  • context_set

    Set pwntools context. Args: arch: Architecture (i386, amd64, arm, mips, etc.). os: OS (linux, freebsd, etc.). endian: Endianness (little, big). word_size: Word size in bits (32, 64). log_level: Logging level (debug, info, warning, error). Returns: Current context settings. Example: >>> context_set(arch='amd64', os='linux', log_level='debug')

  • cyclic

    Generate cyclic pattern. Args: length: Length of pattern. n: Alphabet size (default 256). Returns: Cyclic pattern as hex string. Example: >>> cyclic(20) '61616162616163616164616165616166'

  • cyclic_find

    Find offset in cyclic pattern. Args: pattern: Hex string of pattern to find. Returns: Offset of pattern in cyclic. Example: >>> cyclic_find('66616661') 120

  • disasm

    Disassemble bytes to code. Args: data: Hex string to disassemble. arch: Architecture. Uses context if not specified. bits: Bits (32, 64). Uses context if not specified. Returns: Disassembled code. Example: >>> disasm('90') ' 0: 90 nop'

  • dynelf_resolve

    Dynamic ELF resolution. Note: Requires active memory leak. Args: leak_func: Memory leak function. elf_path: Optional ELF path. Returns: Resolution status.

  • elf_asm

    Assemble code at a specific address in an ELF. Args: path: Path to ELF file. address: Address (hex string like '0x400000'). code: Assembly code. Returns: Success message. Example: >>> elf_asm('/bin/cat', '0x401000', 'ret') 'Assembly applied successfully'

  • elf_load

    Load an ELF file. Args: path: Path to ELF file. Returns: Dictionary with ELF info (address, symbols, plt, got, etc.). Example: >>> elf_load('/bin/ls') {'address': '0x400000', 'symbols': {...}, ...}

  • elf_read

    Read bytes from an ELF at address. Args: path: Path to ELF file. address: Address (hex string like '0x400000'). length: Number of bytes to read. Returns: Bytes as hex string. Example: >>> elf_read('/bin/cat', '0x400000', 16)

  • elf_write

    Write bytes to an ELF at address. Args: path: Path to ELF file. address: Address (hex string like '0x400000'). data: Hex string to write. Returns: Success message. Example: >>> elf_write('/bin/cat', '0x401000', '90') 'Write successful'

  • enhex

    Encode bytes to hex string. Args: data: Hex string to encode. Returns: Hex string. Example: >>> enhex('41424344') '41424344'

  • fit

    Fit data into buffer. Args: data: Dictionary mapping offsets to values. length: Total length of buffer. filler: Hex string for filler bytes. Returns: Fitted buffer as hex string. Example: >>> fit({0: '41424344', 8: '45464748'}) '414243450000000045464748'

  • flat

    Flatten arguments into bytes. Args: args: List of arguments to flatten (integers or hex strings). endian: Endianness (default from context). sign: Signedness (default from context). Returns: Flattened bytes as hex string. Example: >>> flat([0x41424344, '68656c6c6f']) '44434241000000000000000068656c6c6f'

  • fmtstr_payload

    Generate format string payload. Args: offset: Offset to format string. writes: Dict of {address: value} to write. nbytes: Number of bytes. Returns: Format string payload as hex string. Example: >>> fmtstr_payload(6, {0x8048000: 0x41424344})

Show 25 more tools
  • fmtstr_split

    Split format string writes. Args: writes: Dict of {address: value} to write. nbytes: Number of bytes. Returns: List of format string parts. Example: >>> fmtstr_split({0x8048000: 0x41424344})

  • hexdump

    Hexdump utility. Args: data: Hex string to dump. begin: Offset to start from. Returns: Formatted hexdump string. Example: >>> hexdump('41424344')

  • listen

    Create a listening socket. Args: port: Port to listen on (0 for random). bindaddr: Address to bind to. Returns: Listener info dict. Example: >>> listen(8080) {'port': 8080, 'lport': 8080, ...}

  • log_debug

    Log debug message. Args: msg: Message to _log. Returns: Success message.

  • log_error

    Log error message. Args: msg: Message to _log. Returns: Success message.

  • log_info

    Log info message. Args: msg: Message to _log. Returns: Success message.

  • log_success

    Log success message. Args: msg: Message to _log. Returns: Success message.

  • log_warn

    Log warning message. Args: msg: Message to _log. Returns: Success message.

  • p16

    Pack an integer into 2 bytes. Args: n: Integer to pack (0-65535). endian: 'little' or 'big'. Returns: Hex string of packed bytes. Example: >>> p16(0x4142, endian='little') '4241'

  • p32

    Pack an integer into 4 bytes. Args: n: Integer to pack. endian: 'little' or 'big'. Returns: Hex string of packed bytes. Example: >>> p32(0x41424344, endian='little') '44434241'

  • p64

    Pack an integer into 8 bytes. Args: n: Integer to pack. endian: 'little' or 'big'. Returns: Hex string of packed bytes. Example: >>> p64(0x4142434445464748, endian='little') '4847464544434241'

  • p8

    Pack an integer into 1 byte. Args: n: Integer to pack (0-255). Returns: Hex string of packed bytes. Example: >>> p8(0x41) '41'

  • process_create

    Create and interact with a process. Args: argv: Command and arguments as list. env: Environment variables dict. stdin: Stdin redirect (PIPE, STDOUT, etc.). stdout: Stdout redirect. stderr: Stderr redirect. timeout: Timeout in seconds. Returns: Process info dict. Example: >>> process_create(['/bin/sh']) {'pid': 1234, 'proc': {...}, 'unique': '...'}

  • remote_connect

    Connect to a remote host. Args: host: Hostname or IP. port: Port number. timeout: Timeout in seconds. Returns: Connection info dict. Example: >>> remote_connect('example.com', 80) {'host': 'example.com', 'port': 80, 'connected': True}

  • rop_call

    Generate ROP call. Note: Requires an active ROP object. Args: runtime: Runtime/ELF path. func: Function name to call. args: Arguments for the call. Returns: ROP chain as hex string.

  • rop_load

    Load ELF for ROP. Args: path: Path to ELF file. Returns: ROP info dict. Example: >>> rop_load('/bin/ls') {'path': '/bin/ls', 'elf': {...}, 'gadgets_count': ...}

  • shellcraft

    Generate shellcode. Args: shellcode_type: Type of shellcode (e.g., 'amd64.linux.sh', 'i386.linux.bind', 'setreuid'). arg1: Optional first argument. arg2: Optional second argument. Returns: Assembly code for the shellcode. Example: >>> shellcraft('amd64.linux.sh') ' ...'

  • shellcraft_dupsh

    Generate dup shellcode with execve. Args: fd: File descriptor to dup. Returns: Assembly code. Example: >>> shellcraft_dupsh(4)

  • shellcraft_setreuid

    Generate setreuid shellcode. Args: uid: UID to set. euid: Effective UID to set. Returns: Assembly code for setreuid. Example: >>> shellcraft_setreuid(0, 0)

  • tube_send

    Send data through a tube. Note: This is a placeholder - actual tube handling requires state management. Args: data: Hex string to send. tube_type: Type of tube to create. Returns: Status message.

  • u16

    Unpack 2 bytes to integer. Args: data: Hex string of 2 bytes. endian: 'little' or 'big'. Returns: Unpacked integer. Example: >>> u16('4241', endian='little') 16706

  • u32

    Unpack 4 bytes to integer. Args: data: Hex string of 4 bytes. endian: 'little' or 'big'. Returns: Unpacked integer. Example: >>> u32('44434241', endian='little') 1094795857

  • u64

    Unpack 8 bytes to integer. Args: data: Hex string of 8 bytes. endian: 'little' or 'big'. Returns: Unpacked integer. Example: >>> u64('4847464544434241', endian='little') 3203391512993874777

  • u8

    Unpack 1 byte to integer. Args: data: Hex string of 1 byte. Returns: Unpacked integer. Example: >>> u8('41') 65

  • unhex

    Decode hex string to bytes. Args: data: Hex string to decode. Returns: Bytes as hex string. Example: >>> unhex('41424344') '41424344'

Signals

Stars
1
Forks
1
Open issues
0
Weekly downloads
27
Last commit
May 3, 2026 (6 months ago)
Last release
Apr 6, 2026 (6 months ago)
Last package publish
Apr 6, 2026 (6 months ago)

From GitHub (fetched Oct 24, 2026) and the package registry.

Details

Registry name
io.github.daedalus/mcp-pwntools
Version
0.1.0
Auth
No auth
Packages
pypi mcp-pwntools
License
MIT
First seen
Oct 24, 2026
Last checked
Oct 25, 2026

More from daedalus

Cite this page

MCP Pwntools. Agent Mart. https://agentmart.dev/connectors/daedalus-mcp-pwntools (last updated 2026-10-25)