Lilith Shell
@charles-adedotun
An MCP (Model Context Protocol) server that enables AI assistants to execute terminal commands securely.
Overview
What is Lilith Shell?
Lilith Shell is an experimental MCP server that exposes local shell command execution to an AI assistant. It is a prototype intended for development and testing, not for production use.
How to use Lilith Shell?
Install from source using pip install -e ".[dev]" after cloning the repository, then run the MCP server in your AI assistant client. The server registers one tool, execute_command, which accepts a command string and an optional directory string (defaults to ~).
Key features of Lilith Shell
- Exposes one MCP tool:
execute_command - Executes commands via
subprocess.run(..., shell=True) - Returns exit code, stdout, and stderr
- Fixed five-minute timeout per command
- Accepts an optional working directory
Use cases of Lilith Shell
- Experimenting with MCP server development
- Testing local command execution with an AI assistant
- Prototyping security models for shell access
FAQ from Lilith Shell
What security controls does Lilith Shell have?
The current implementation has no command allowlist, no denylist, no environment filtering, no output sanitization, and no audit log. It uses shell=True with untrusted tool input.
Can Lilith Shell be used in production?
No. The README warns against running it on any host, account, or directory containing credentials, production data, private source code, SSH keys, or cloud tokens. It is strictly a prototype.
What platforms does Lilith Shell support?
The README does not specify supported platforms beyond general Python execution. No Windows-specific execution path is implemented.
How do I install and run tests?
Use pip install -e ".[dev]" to install in development mode, then run pytest to execute tests.
What was de-scoped from the original plan?
Capabilities like command allowlisting, dangerous command detection, configurable modes, output sanitization, audit logging, working-directory confinement, cross-platform shell selection, and streaming output are not present in the current code.