MCP RiR
Click on "Install 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., "@MCP RiRa stairwell, mic near the wall, quite reverberant, put it in my samples folder"
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.
MCP RIR
Room impulse responses from a plain description, via pyroomacoustics.
An MCP server that lets any compatible agent generate an IR from natural language and write it where you want. Describe a space in any language and the calling model turns it into room dimensions, an absorption coefficient and mic/source positions.
Useful for matching a room you no longer have access to (dry foley or dialogue recorded on location, with no IR captured at the time), and for building reverbs that are realistic, impossible, or somewhere between.
Example
"a stairwell, mic near the wall, quite reverberant, put it in my samples folder"
2.4 × 4.8 × 11.2 m · absorption 0.06 (wet) · mic near wall · source near wall
2.33 s stereo, 48000 Hz
/Users/you/Music/samples/medium_near_wall_wet_b7b2.wavThe result loads into any convolution reverb.
Anything left unspecified is randomised. Values you do supply are used as given, but exact mic placement and per-wall absorption are redrawn on every call, so the same numbers twice produce a different take. Call again to reroll.
Related MCP server: AudioGen MCP Server
Setup
Requires uv. Add the
following to your MCP client configuration
(~/Library/Application Support/Claude/claude_desktop_config.json on macOS)
and restart the client:
{
"mcpServers": {
"rir": {
"command": "uvx",
"args": ["--from", "git+https://github.com/tbimbato/MCP_RiR", "mcp-rir"],
"env": {
"RIR_OUTPUT_DIR": "~/Music/IRs"
}
}
}
}The first launch takes a minute while pyroomacoustics is fetched.
RIR_OUTPUT_DIR sets the default destination. Without it, files land in
~/RIR-MCP/. A destination can also be given per request ("put it in my
samples folder", "call it hallway.wav").
The tool
generate_room_ir. Every argument is optional.
argument | description |
| room size in metres, 0.5 to 40 |
| surface reflectivity, 0.02 to 0.95. Bare tile or concrete around 0.05, plaster 0.15, carpeted 0.3, heavily treated 0.5 |
|
|
| a folder, or a full path ending in |
Output is a stereo 48 kHz 24-bit WAV, peak-normalised, capped at 20 seconds. Out-of-range values are clamped rather than rejected, and the reply says so.
Ranges, defaults and the parameters that shape the sound are in
src/mcp_rir/config.py.
Roadmap
Stereo output, 48 kHz 24-bit, peak-normalised.
Per-request output path, so files land where you ask.
Microphone directivity. The pair is currently two omnidirectional capsules, the weakest option for stereo image. Cardioid, hypercardioid and figure-of-eight patterns would allow real techniques (XY, ORTF, Blumlein) and widen the image considerably.
Multichannel output. Quad and octophonic. Adding microphones to the same simulation is inexpensive; the work is picking layouts that convolvers actually accept.
Ambisonic B-format (first order, W/X/Y/Z). Higher priority than a fixed quad, since it decodes to any speaker arrangement afterwards.
Room rendering. An image of the simulated geometry with mic and source positions, written next to the WAV, to see what was generated without loading the file.
Non-shoebox geometry. Arbitrary polygonal footprints extruded to 3D: L-shaped rooms, narrow corridors, concave spaces that focus reflections. No new dependencies needed.
Post-processing tool. Reshaping an existing impulse response: reversed decay, gated tails, extreme time stretch. Taking a file path means it would work on impulse responses not generated here.
Tuning. The default ranges are informed guesses, not yet adjusted by ear.
Suggestions and contributions welcome.
Development
git clone https://github.com/tbimbato/MCP_RiR
cd MCP_RiR
pip install -e .Point the configuration at that checkout:
{
"mcpServers": {
"rir": {
"command": "/path/to/your/python",
"args": ["-m", "mcp_rir.server"]
}
}
}License
MIT
Available Tools
1 toolgenerate_room_irA
Simulate a room and write a stereo impulse response WAV for convolution reverb. Returns a summary and the file path.
Translate the space the user described into dimensions and an absorption coefficient, following the guidance on each argument. Omitted arguments are randomised. Repeated calls vary even with identical arguments, so call again to get a different take on the same room.
| Name | Required | Description | Default |
|---|---|---|---|
| width_m | No | Room width in metres. For reference a small room is roughly 2-5, a large hall 8-20, a stairwell up to 15 high. Go outside that range if the space calls for it. Omit to randomise. | |
| height_m | No | Room height in metres. For reference a small room is roughly 2-5, a large hall 8-20, a stairwell up to 15 high. Go outside that range if the space calls for it. Omit to randomise. | |
| length_m | No | Room length in metres. For reference a small room is roughly 2-5, a large hall 8-20, a stairwell up to 15 high. Go outside that range if the space calls for it. Omit to randomise. | |
| absorption | No | How reflective the surfaces are, 0 to 1. Roughly: bare tile, concrete or glass 0.03-0.08 (very reflective); plaster or wood 0.1-0.2; furnished or carpeted 0.2-0.35; heavily treated or padded 0.4-0.6. Omit to randomise. | |
| output_path | No | Where to save. A folder puts the generated filename inside it; a path ending in .wav is used exactly. '~' works. Pass whatever folder or name the user asked for, otherwise leave empty for the default location. | |
| mic_position | No | Mic position: 'center', 'corner', or 'near wall'. Leave empty to randomise. | |
| source_position | No | Source position: 'center', 'corner', or 'near wall'. Leave empty to randomise. |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Beyond annotations, the description discloses that 'Omitted arguments are randomised' and 'Repeated calls vary even with identical arguments,' which aligns with idempotentHint=false and adds real behavioral context. It also mentions writing a WAV file and returning a summary/path, though it does not address potential file overwrites or permission requirements.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is four sentences, each earning its place: purpose, return value, how to translate user input, and randomization behavior. It is front-loaded with the core action and contains no redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With a full input schema, an output schema, and annotations present, the description covers the essential workflow: simulating a room, generating a WAV, returning a summary/path, and randomizing omitted args. It leaves no significant gaps for invocation, though a brief mention of expected output schema contents would make it fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema descriptions achieve 100% coverage, providing per-parameter ranges and defaults, so the baseline is 3. The description mainly points to those guidelines ('following the guidance on each argument') and reiterates the randomization option, adding no new semantic detail beyond what the schema already offers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The opening sentence states the tool 'Simulate a room and write a stereo impulse response WAV for convolution reverb,' a specific verb and resource, and also notes it 'Returns a summary and the file path.' This is unambiguous and distinguishes the tool's purpose even without siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It instructs to 'Translate the space the user described into dimensions and an absorption coefficient, following the guidance on each argument,' which clarifies how to set key parameters. It mentions the convolution reverb use case and randomization behavior, but does not explicitly state when not to use the tool; given no siblings, this is adequate.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
TDQS
With only one tool, there is no possibility of confusion. The tool's purpose is clearly defined and distinct.
The single tool name 'generate_room_ir' follows a clear verb_noun pattern and is descriptive, with no inconsistent conventions.
The server has exactly one tool, which is on the low end but reasonable for the very specific purpose of generating room impulse responses. It is not excessive, and the narrow scope justifies the minimal count.
The tool fully covers the stated capability of simulating a room and writing a stereo impulse response WAV. There are no obvious missing operations within the declared domain.
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Connectors
Generate images, video, and audio with Glif's media-generation agent
Turn any LLM multimodal; generate images, voices, videos, 3D models, music, and more.
On-brand creative studio for AI agents: images, video, audio, and 3D.
Generate game-ready 3D models, textures, and audio from natural language, over MCP.
Related MCP Servers
- FlicenseAqualityDmaintenanceEnables AI assistants to generate and control real-time audio synthesis through natural language descriptions using SuperCollider. Features 10 built-in synth types, pattern sequencing, audio recording, and server lifecycle management for creating sounds from simple English descriptions.111
- AlicenseNot gradedqualityCmaintenanceEnables users to generate sound effects from text descriptions using Meta's AudioGen model. Specifically designed for Apple Silicon Macs, it supports single and batch audio generation directly from natural language prompts.1MIT
- AlicenseNot gradedqualityBmaintenanceProvides audio inspection, conversion, processing, and generation capabilities via SoX, enabling AI agents to 'hear' and manipulate audio files through structured JSON interfaces.MIT
- AlicenseAqualityAmaintenanceRender, analyze, and verify audio (WAV or FLAC) through a fully offline, deterministic engine, exposed as MCP tools for AI agents.1214Apache 2.0
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/tbimbato/MCP_RiR'
If you have feedback or need assistance with the MCP directory API, please join our Discord server