This repository contains some MCP (Model Context Protocol) servers I've been playing around with for executing Bash and AppleScript commands from large language models (LLMs) on a Mac. I tested it using the Claude Desktop client.
Once the tool is properly configured and loaded into Claude Desktop, you can ask Claude to do new things. The tools available in restricted mode include:
say
: Could you please say "Hello World!"whoami
: Which user am I running as?
In arbitrary execution mode (described below), you can ask Claude to perform more complicated actions.
- macOS (Required for AppleScript tool)
- Claude Desktop, or other MCP client
- Python 3.13 or higher
mcp
package for Pythonpytest
package for tests
-
Clone the repository:
git clone .../mcp-experiments cd mcp-experiments
-
Create and activate a virtual environment:
python3 -m venv .venv source .venv/bin/activate
-
Install the required dependencies:
pip install -r requirements.txt
-
Configure Claude Desktop for Mac to load the servers.
i. Modify the configuration file located at:
~/Library/Application Support/Claude/claude_desktop_config.json
.ii. An example configuration is provided in
claude_decktop_config.example.json
in this repository.iii. Ensure the
command
andargs
fields point to the correct Python interpreter and script path.iv. Ensure that
MCP_EXECUTION_MODE
is set to your desired safety level.
{
"mcpServers": {
"applescript": {
"command": "/path/to/mcp-experiments/.venv/bin/python",
"args": [
"/path/to/mcp-experiments/applescript.py"
],
"env": {
"MCP_EXECUTION_MODE": "restricted"
}
},
"bash": {
"command": "/path/to/mcp-experiments/.venv/bin/python",
"args": [
"/path/to/mcp-experiments/bash.py"
],
"env": {
"MCP_EXECUTION_MODE": "restricted"
}
}
}
}
Warning
Setting the environment variable MCP_EXECUTION_MODE
to arbitrary
will allow this server to execute arbitrary code generated by the client (LLM) on your computer. This is a security concern and may result in unintended consequences. Please consider using a sandbox to play around with this mode.
TO enable arbitrary execution mode, set the environment variable MCP_EXECUTION_MODE
to arbitrary
. Two more tools are then exposed to the client:
execute_bash
: Runs arbitrary bash script as the current user and returns the result.execute_applescript
: Runs arbitrary AppleScript script as the current user and returns the result.
applescript.py
: A server script that defines theexecute_applescript
tool, which uses AppleScript to complete tasks.bash.py
: A server script that defines theexecute_bash
tool, which uses bash to complete tasks.claude_desktop_config.example.json
: Example configuration file for the MCP server. Yours may be located in~/Library/Application Support/Claude
.requirements.txt
: Python dependencies for the project.test
: Pytest unit tests for the applescript and bash tools.
This project is licensed under the MIT License. See the LICENSE file for details.
This project was created by Jordan Perr-Sauer. Github Copilot (with GPT-4o and Claude 3.5 Sonnet) was used to generate some of the content in this repository.