acpi-mcp
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
Read and explain ACPI tables for OS development: CPUs and APIC IDs, I/O APICs and interrupt overrides, HPET, PCIe ECAM, power-off and reset recipes. First load a table set under a name: acpi_load with port= (a QEMU VM started with -s; tables are read from guest physical memory) or path= (/sys/firmware/acpi/tables, or acpidump -b output). Then: acpi_tables to list, acpi_table to decode and explain one, acpi_find for questions like 'how do I shut down', acpi_interrupt_routing for the ISA IRQ -> GSI map, acpi_dump for raw bytes, acpi_disassemble for AML (needs iasl).
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| acpi_loadA | Load a set of ACPI tables and register it under Pass exactly one source:
|
| acpi_tablesC | List every table: signature, address, length, checksum, OEM, and what it's for. |
| acpi_tableB | Decode one table and explain what it means for an OS. signature: FACP/FADT, APIC/MADT, HPET, MCFG, DSDT, SSDT, FACS, RSDT, XSDT, WAET, RSDP. index picks among duplicates (e.g. several SSDTs). |
| acpi_interrupt_routingB | Map every legacy ISA IRQ (0-15) to its GSI and I/O APIC pin, with polarity and trigger mode, from the MADT's interrupt source overrides. This is the table to program I/O APIC redirection entries from. |
| acpi_findB | Answer an OS-developer question from the tables, with the exact ports, addresses and values to use. Understands: shutdown / power off, reset / reboot, hpet, pci config / ecam, cpus / smp, irq routing / ioapic, pm timer, keyboard / ps2, serial, rtc century, sci. |
| acpi_dumpC | Hexdump a table's raw bytes (offset/length within the table, max 4096 bytes). |
| acpi_disassembleA | Disassemble a DSDT/SSDT's AML to ASL source with ACPICA's Needs iasl on PATH (Debian/Ubuntu: apt install acpica-tools; macOS: brew install acpica; Windows: the ACPICA release from intel.com/acpi). acpi_table already lists devices and _S5_ without iasl. |
| acpi_setsC | List loaded table sets. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 8 tools
Each tool targets a distinct layer of the ACPI workflow: discovery (acpi_tables, acpi_sets), loading (acpi_load), inspection (acpi_table, acpi_dump, acpi_disassemble), and higher-level queries (acpi_find, acpi_interrupt_routing). The main overlap is acpi_find, which can answer IRQ-routing or table-derived questions that specialized tools also surface, but the descriptions make the intended split clear.
All names use snake_case with a consistent acpi_ prefix and are readable. However, the action style is mixed—some are verbs (load, find, dump, disassemble) while others are noun-like list tools (tables, table, sets)—so it is not a uniform verb_noun convention.
Eight tools is well within the sweet spot and each covers a distinct stage of ACPI table workflows. There is no obvious padding or missing core operation.
The surface covers loading, listing, decoding, raw dumping, disassembly, IRQ routing, and developer Q&A, which is strong end-to-end coverage. Minor gap: loaded sets can be listed but not unloaded or removed, so lifecycle management is not fully closed.