An MCP server for shell command execution on macOS with session management, background processes, caching, and semantic search.
git clone https://github.com/quanticsoul4772/macos-shell.git
cd macos-shell
npm install
npm run buildAdd to ~/.claude.json under mcpServers:
{
"macos-shell": {
"type": "stdio",
"command": "node",
"args": ["/path/to/macos-shell/build/server.js"],
"env": {
"VOYAGE_API_KEY": "your-voyage-api-key"
}
}
}Add to ~/Library/Application Support/Claude/claude_desktop_config.json:
{
"mcpServers": {
"macos-shell": {
"command": "node",
"args": ["/path/to/macos-shell/build/server.js"],
"env": {
"VOYAGE_API_KEY": "your-voyage-api-key"
}
}
}
}The VOYAGE_API_KEY enables semantic search features. Without it, set "EMBEDDINGS_ENABLED": "false" instead.
run_command-- execute a shell commandrun_script-- execute a multi-line shell scriptbatch_execute_enhanced-- execute commands with conditional logic and retries
create_shell_session-- create a named session with isolated environmentlist_shell_sessions-- list active sessionsclose_session-- close a session and free resources
cd-- change working directorypwd-- get current working directoryset_env-- set environment variablesget_env-- get environment variableshistory-- view command history
run_background-- start a background processlist_processes-- list processes with resource usageget_process_output-- retrieve output with searchstream_process_output-- stream output as it arriveskill_process-- terminate a processcleanup_orphans-- manage processes from previous sessionskill_all_matching-- kill processes matching a patternsave_process_output-- save output to a file
get_system_health-- system health metricspreflight_check-- validate conditions before operationssystem_profile-- gather system information
ssh_interactive_start-- start an SSH sessionssh_interactive_send-- send input to SSH sessionssh_interactive_control-- send control charactersssh_interactive_output-- get output with searchssh_interactive_wait-- wait for new outputssh_interactive_resize-- resize terminalssh_interactive_close-- close SSH sessionssh_interactive_list-- list active SSH sessions
cache_stats-- cache statisticscache_clear_command-- clear specific command from cachecache_clear_pattern-- clear commands matching a patterncache_mark_never-- mark a command to never cachecache_explain-- explain cache decision for a command
Requires VOYAGE_API_KEY. See docs/SEMANTIC_SEARCH.md for details.
semantic_command_search-- search command history by intentsearch_documentation-- search command docs semanticallyrecommend_commands-- get suggestions based on intenterror_solution_lookup-- find solutions for error messagesanalyze_output-- extract patterns from command outputsemantic_search_stats-- search system statistics
| Variable | Description |
|---|---|
VOYAGE_API_KEY |
Voyage AI API key for semantic search |
EMBEDDINGS_ENABLED |
Set to false to disable semantic search |
MCP_DISABLE_CACHE |
Set to true to disable command caching |
MCP_DEBUG |
Set to true for debug logging to stderr |
MCP_LOG_FILE |
Path to write log output |
- macOS only (uses
/bin/zsh) - 30-second default command timeout (configurable up to 10 minutes)
- Commands run with the permissions of the user running the MCP client
- Output buffer limited to 300 lines per background process
- Sudo commands require passwordless sudo or will hang
See CLAUDE.md for build commands, architecture, testing, and contribution details.
ISC