easyeffects-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@easyeffects-mcp Load my headphones preset and boost the bass a bit"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
easyeffects-mcp
An MCP server that lets AI assistants (Claude Code, Claude Desktop, Cursor, VS Code, etc.) control Easy Effects, the PipeWire audio effects app for Linux.
Ask things like:
"Turn off all my audio effects" / "turn them back on"
"Load my
headphonespreset""Boost the bass a bit on my EQ"
"Apply this AutoEQ profile for my HD 600s: …"
"What plugins are active on my mic?"
Requirements
Linux with Easy Effects running (native package or Flatpak)
uv (it installs Python 3.10+ for you if needed)
Easy Effects version | What works |
8.0+ (Arch, Fedora, Flatpak) | Everything |
7.x (e.g. Ubuntu 24.04, Debian 12) | Global bypass and presets only, through the |
Check your version with easyeffects --version (or flatpak run com.github.wwmm.easyeffects --version).
Related MCP server: Twill
Install
You don't need to clone anything. Point your MCP client at:
uvx --from git+https://github.com/kaushikgunasekaren/easyeffects-mcp easyeffects-mcpClaude Code
claude mcp add easyeffects --scope user -- uvx --from git+https://github.com/kaushikgunasekaren/easyeffects-mcp easyeffects-mcpClaude Desktop, Cursor, Windsurf and other JSON-configured clients
{
"mcpServers": {
"easyeffects": {
"command": "uvx",
"args": ["--from", "git+https://github.com/kaushikgunasekaren/easyeffects-mcp", "easyeffects-mcp"]
}
}
}VS Code (.vscode/mcp.json)
{
"servers": {
"easyeffects": {
"command": "uvx",
"args": ["--from", "git+https://github.com/kaushikgunasekaren/easyeffects-mcp", "easyeffects-mcp"]
}
}
}uvx caches the install. To pick up a newer version, run uv cache clean easyeffects-mcp and restart your client.
Tools
Tool | What it does |
| Bypass / mic monitoring / audio sharing state, devices, last presets, plugin chains |
| Turn all effects off (bypass) or on |
| Hear your processed microphone |
| Route processed output to the virtual source |
| Show or hide the Easy Effects window |
| List and load saved input/output presets |
| Read or write preset JSON files |
| Active plugins in a pipeline with their bypass state |
| Bypass a single plugin |
| Read/write any plugin property (e.g. |
| Full parametric EQ state, both channels |
| Change gain/frequency/Q/type/mode of one band |
| Replace the EQ with a list of bands (great for AutoEQ profiles) |
output is the speakers/headphones pipeline, input is the microphone pipeline. Property names are the camelCase keys Easy Effects stores in ~/.config/easyeffects/db/*rc (e.g. inputGain, band3Gain, bypass).
Limitations
Adding or removing plugins from the chain isn't exposed by Easy Effects' control socket. Do that in the app, or save a preset with the plugins you want and load it.
Live property changes aren't saved into a preset until you save it in Easy Effects.
Troubleshooting
"control socket not found": Easy Effects isn't running. Start it in the background with easyeffects --service-mode -w (Flatpak: flatpak run com.github.wwmm.easyeffects --service-mode -w). Enabling "Launch on system startup" in its settings keeps it running.
"error_plugin_not_found": that plugin isn't in the chain. Ask for get_status to see which plugins are loaded, and add the plugin in the Easy Effects window.
Socket in an unusual place: set EASYEFFECTS_SOCKET to its path in your MCP client's env block.
Development
git clone https://github.com/kaushikgunasekaren/easyeffects-mcp.git
cd easyeffects-mcp
uv sync
uv run pytest
npx @modelcontextprotocol/inspector uv run easyeffects-mcp # MCP InspectorLicense
MIT
Available Tools
16 toolsapply_parametric_eqB
Replace the whole equalizer with a list of bands (e.g. from an AutoEQ ParametricEQ.txt), applied to both channels.
Requires an equalizer plugin in the chain.
Inputs: bands (required), mode, preamp, instance, +1 more. Returns: result
bypass_pluginC
Bypass (disable) or re-enable a single plugin in the chain.
Inputs: plugin (required), bypassed (required), pipeline (required), instance. Returns: result
get_equalizerB
Read the parametric equalizer: gains, mode and every active band for both channels.
Inputs: instance, pipeline.
get_plugin_propertyA
Read one property of an active plugin (see get_status for the plugin chain).
Inputs: plugin (required), pipeline (required), property (required), channel, +1 more. Returns: result
get_statusB
Overview: global bypass, mic monitoring, audio sharing, devices, last loaded presets and active plugin chains.
Inputs: no named parameters.
list_plugin_instancesB
Active plugins in a pipeline, in processing order, with their bypass state.
Inputs: pipeline (required). Returns: result
list_presetsB
List saved input and output presets, plus the last loaded one for each.
Inputs: no named parameters.
load_presetC
Load a saved preset into the input or output pipeline.
Inputs: name (required), pipeline (required). Returns: result
read_presetC
Return the JSON contents of a saved preset file.
Inputs: name (required), pipeline (required).
save_presetA
Write a preset JSON file (same format read_preset returns; top-level key must be the pipeline name).
Tip: read an existing preset first and modify it, rather than writing one from scratch.
Inputs: name (required), preset (required), pipeline (required), overwrite. Returns: result
set_audio_sharingB
Turn audio sharing (route processed output to the virtual source) on or off.
Inputs: enabled (required). Returns: result
set_equalizer_bandC
Change one equalizer band. Only the fields you pass are changed. Applies to both channels by default.
Inputs: band (required), q, gain, mode, +6 more.
set_global_bypassA
Enable (true) or disable (false) the global bypass. Bypass on = all effects off.
Inputs: enabled (required). Returns: result
set_microphone_monitoringB
Turn microphone monitoring (hear your processed mic) on or off.
Inputs: enabled (required). Returns: result
set_plugin_propertyB
Set one property of an active plugin. Returns the value read back from Easy Effects.
Inputs: value (required), plugin (required), pipeline (required), property (required), +2 more. Returns: result
windowB
Show or hide the Easy Effects window.
Inputs: action (required). Returns: result
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 16 tools
Most tools target clearly distinct actions (e.g., set_equalizer_band vs. apply_parametric_eq vs. get_equalizer), and global vs. plugin-specific bypass are separated. Minor overlap exists between the generic set_plugin_property and the specialized equalizer tools, but descriptions help disambiguate.
Nearly all tools follow a verb_noun pattern (get_status, set_global_bypass, list_presets, save_preset, etc.). The outlier is 'window', which lacks a verb, but otherwise naming is predictable.
With 16 tools, the set sits at the borderline of being heavy for the apparent scope. While no tool seems entirely redundant, the count is above the ideal 3–15 range and some generic property tools could potentially be consolidated.
Core operations for equalizer, presets, plugins, and toggles are present, but notable gaps exist: no delete_preset, no add/remove plugin, and no reset-to-flat equalizer or device selection. These gaps may cause agent workarounds.
Maintenance
Related MCP Connectors
A comprehensive Model Context Protocol (MCP) server that enables AI assistants to interact with yo…
Connect any AI to your Foundry VTT world: actors, combat, dice, journals, tokens, compendiums.
Audio for your agent: transcribe, speak, translate, summarise, plus sound effects and music.
Connect AI assistants to your approved computer for files, commands, browser and desktop tasks.
Related MCP Servers
- FlicenseNot gradedqualityBmaintenanceEnables control of Equalizer APO profiles, filters, headphones, and diagnostics through MCP tools, allowing profile switching and audio management from any MCP client.-
- AlicenseCqualityBmaintenanceEnables AI assistants and voice companions to control a Linux desktop over MCP, exposing desktop tools and system controls through stdio.462Apache 2.0
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to control Linux desktops and compositors, including Hyprland/Wayland window management, PipeWire audio routing, systemd diagnostics and self-healing, notifications, screenshots, and optional agent memory.MIT
- AlicenseCqualityCmaintenanceEnables an AI assistant to control a Hyprland/Wayland Linux desktop through 178 tools across 30 categories, covering audio, window and workspace management, themes and wallpapers, screenshots and recording, Bluetooth, media playback, notifications, system stats, and chained multi-step macros. Everything runs locally via hyprctl, PipeWire, and standard Linux utilities, with no cloud dependencies.178MIT