mcp-omnienv-nix
MCP server that spins up Nix-backed, polyglot ephemeral environments. It uses nix shell to build disposable toolchains for interpreted stacks (Python, Node.js, Ruby, R, Lua; extendable) and runs your command inside that shell. Package availability depends on nixpkgs (e.g., python313Packages.requests, rPackages.misty, nodePackages.sloc).
Why
- Coding agents often need ad-hoc Python/Node/Ruby/R/Lua deps. Preloading everything is noisy; venvs clutter a system.
- With Nix on the host, this server asks for packages on demand, pulls them into the store, and leaves the rest of the environment clean—no venvs or global installs.
- Runs over MCP (stdio transport) so agent clients can call the tools directly.
Tools
list_languages— enumerate supported languages and their base Nix packages.run_in_env(language, command, extra_packages?, timeout_seconds?)— launch anix shellwith base + extras and executecommand. Returns JSON:stdout,stderr,exit_code.
Quick start
# Try it ad-hoc
nix shell github:StealthBadger747/mcp-omnienv-nix -c mcp-omnienv-nix
Hook into your MCP client (stdio transport). Example config shape:
{
"mcpServers": {
"mcp-omnienv-nix": {
"command": "mcp-omnienv-nix"
}
}
}
Extending languages
- Edit
SUPPORTED_LANGUAGESinmcp_omnienv_nix/server.pyto add a language and its base packages. run_in_envvalidates extra packages against a simple regex and appends them to thenix shellinvocation.
Development
# Nix dev shell with deps + pytest
nix develop . -c pytest
# Run integration tests (hit nix shell for real package resolution)
MCP_OMNIENV_INTEGRATION=1 nix develop . -c pytest -m integration
License
MIT.
