# acpi-mcp [Health: Active]

**Category:** 📟 Embedded System  
**Repository:** https://github.com/0xmortuex/acpi-mcp  
**GitHub Stars:** 0  
**Views:** 0  
**Installs:** 0  
**Upvotes:** 0  
**Directory Page:** https://allmcps.com/mcp/acpi-mcp

## Description
Read ACPI tables from a live QEMU guest or files and explain them for OS developers.

## Tools
Capabilities this server exposes over MCP:

- **acpi_load** — Load tables under a name from `port=` (live VM; `boot_wait_s` lets firmware run first; `resume` chooses whether the guest runs on afterwards) or from `path=` (a directory).
- **acpi_tables** — List every table: address, length, checksum, OEM, and what the table is for.
- **acpi_table** — Decode one table and explain it: FADT, MADT, HPET, MCFG, DSDT/SSDT, FACS, RSDT/XSDT, WAET, RSDP.
- **acpi_interrupt_routing** — Map ISA IRQs 0-15 to GSI and I/O APIC pin, with polarity and trigger mode.
- **acpi_find** — Answer OS-dev questions: shutdown, reset, HPET, PCI config, CPUs, IRQ routing, PM timer, keyboard, serial, RTC century, SCI.
- **acpi_dump** — Hexdump a table's raw bytes.
- **acpi_disassemble** — AML to ASL with `iasl -d`, if installed.
- **acpi_sets** — List loaded table sets.

## Claude Desktop Quick Installation
Install path detected from listing signals. Uses `uvx` (confidence: high):

```json
"mcpServers": {
  "acpi-mcp": {
    "command": "uvx",
    "args": ["acpi-mcp"]
  }
}
```

## Documentation

## What acpi-mcp MCP server does

The acpi-mcp MCP server exposes ACPI inspection tools for x86 operating-system development. It can read firmware tables from a live QEMU guest or from a directory containing table files, such as Linux's `/sys/firmware/acpi/tables` or files produced by `acpidump -b`.

The server helps translate binary ACPI data into implementation details. Its responses can identify CPU and APIC information, the I/O APIC location, ISA interrupt overrides, HPET and PCI Express configuration-space addresses, PM timer details, SCI settings, and the port writes used for power-off or reset.

## How it works

For a live VM, acpi-mcp connects to QEMU's gdbstub and requests physical-memory access so ACPI physical pointers remain usable when the guest has enabled paging. It searches firmware memory for a valid, checksummed RSDP, then follows the RSDT or XSDT to locate related tables, including the FADT, DSDT, and FACS.

If the guest is paused before firmware has created the tables, the server runs it in short intervals and stops when it finds a complete valid set. By default, it lets the guest continue after detaching; `resume=False` leaves the guest paused. QEMU permits only one debugger connection at a time.

For file-based input, the server reads a named table set from the directory supplied to `acpi_load`.

## Tools and capabilities

Available MCP tools include:

- `acpi_load` to load a live-QEMU or directory-based table set.
- `acpi_sets` to show loaded sets.
- `acpi_tables` to list table addresses, sizes, checksums, OEM data, and purposes.
- `acpi_table` to decode supported tables, including MADT, FADT, HPET, MCFG, DSDT, SSDT, FACS, RSDT, XSDT, WAET, and RSDP.
- `acpi_interrupt_routing` to map ISA IRQs 0–15 to GSIs and I/O APIC pins, including polarity and trigger mode.
- `acpi_find` to answer questions about shutdown, reset, CPUs, IRQs, HPET, PCI configuration, PM timers, keyboard, serial, RTC century, and SCI behavior.
- `acpi_dump` to produce raw table hexdumps.
- `acpi_disassemble` to invoke `iasl -d` for AML-to-ASL conversion when `iasl` is installed.

## Setup and configuration

Install the package with `pip install acpi-mcp`. Register the executable as an MCP server, for example with `claude mcp add acpi -- acpi-mcp`.

For live access, start QEMU with its gdbstub, using `-s`; `-S` is also supported because the server can allow firmware to run before reading the tables. For file input, call `acpi_load` with a directory path. Reading a host Linux table directory generally requires root access.

## Limitations and notes

The AML reader structurally walks scopes, devices, and names but does not execute methods. Runtime-computed behavior, such as a method-controlled `_STA`, is not evaluated; use `acpi_disassemble` for an exact AML listing when `iasl` is available.

Live RSDP discovery currently searches BIOS-area locations. UEFI guests using OVMF may therefore require tables captured with `acpidump -b` and loaded from files. The implementation supports x86 ACPI; ARM-specific structures such as GICC, GICD, and GTDT are not covered.

_Full upstream README: https://allmcps.com/mcp/acpi-mcp/readme_

