by g0t4
mcp-server-commands is a Model Context Protocol (MCP) server that empowers Large Language Models (LLMs) to execute commands and scripts on the host system, effectively functioning as a terminal for LLMs.
mcp-server-commands is a Model Context Protocol (MCP) server that enables Large Language Models (LLMs) to execute commands and scripts on the host system, similar to a terminal. It provides a run_command
tool that LLMs can call to interact with the underlying operating system.
mcp-server-commands can be integrated with LLM applications like Claude Desktop and Groq Desktop. Users need to configure their LLM application to recognize and use the mcp-server-commands
server. This typically involves adding a JSON configuration snippet to the application's settings file, specifying the command to run the server (e.g., npx mcp-server-commands
for the npm package or the path to a local build).
For development, users can install dependencies with npm install
, build the server with npm run build
, and use npm run watch
for auto-rebuild during development.
To use with HTTP/OpenAPI, mcpo
can be used to bridge STDIO and HTTP, allowing integration with tools like Open-WebUI.
run_command
tool: The core feature, allowing LLMs to execute arbitrary commands and scripts.stdin
parameter: Enables LLMs to pass input to commands (e.g., code to interpreters, text to file creation utilities).mcp-server-commands
.npm run inspector
script for using the MCP Inspector to debug server interactions.cat >> filename
.hostname
, ls -al
).sudo
.run_command
without hesitation.STDERR
and can be made more verbose by adding --verbose
to the server configuration arguments.Tools are for LLMs to request. Claude Sonnet 3.5 intelligently uses run_command
. And, initial testing shows promising results with Groq Desktop with MCP and llama4
models.
Currently, just one command to rule them all!
run_command
- run a command, i.e. hostname
or ls -al
or echo "hello world"
etc
STDOUT
and STDERR
as textstdin
parameter means your LLM can
stdin
to commands like fish
, bash
, zsh
, python
cat >> foo/bar.txt
from the text in stdin
[!WARNING] Be careful what you ask this server to run! In Claude Desktop app, use
Approve Once
(notAllow for This Chat
) so you can review each command, useDeny
if you don't trust the command. Permissions are dictated by the user that runs the server. DO NOT run withsudo
.
Prompts are for users to include in chat history, i.e. via Zed
's slash commands (in its AI Chat panel)
run_command
- generate a prompt message with the command outputInstall dependencies:
npm install
Build the server:
npm run build
For development with auto-rebuild:
npm run watch
To use with Claude Desktop, add the server config:
On MacOS: ~/Library/Application Support/Claude/claude_desktop_config.json
On Windows: %APPDATA%/Claude/claude_desktop_config.json
Groq Desktop (beta, macOS) uses ~/Library/Application Support/groq-desktop-app/settings.json
Published to npm as mcp-server-commands using this workflow
{
"mcpServers": {
"mcp-server-commands": {
"command": "npx",
"args": ["mcp-server-commands"]
}
}
}
Make sure to run npm run build
{
"mcpServers": {
"mcp-server-commands": {
// works b/c of shebang in index.js
"command": "/path/to/mcp-server-commands/build/index.js"
}
}
}
run_commands
without double checking.# NOTE: make sure to review variants and sizes, so the model fits in your VRAM to perform well!
# Probably the best so far is [OpenHands LM](https://www.all-hands.dev/blog/introducing-openhands-lm-32b----a-strong-open-coding-agent-model)
ollama pull https://huggingface.co/lmstudio-community/openhands-lm-32b-v0.1-GGUF
# https://ollama.com/library/devstral
ollama pull devstral
# Qwen2.5-Coder has tool use but you have to coax it
ollama pull qwen2.5-coder
The server is implemented with the STDIO
transport.
For HTTP
, use mcpo
for an OpenAPI
compatible web server interface.
This works with Open-WebUI
uvx mcpo --port 3010 --api-key "supersecret" -- npx mcp-server-commands
# uvx runs mcpo => mcpo run npx => npx runs mcp-server-commands
# then, mcpo bridges STDIO <=> HTTP
[!WARNING] I briefly used
mcpo
withopen-webui
, make sure to vet it for security concerns.
Claude Desktop app writes logs to ~/Library/Logs/Claude/mcp-server-mcp-server-commands.log
By default, only important messages are logged (i.e. errors).
If you want to see more messages, add --verbose
to the args
when configuring the server.
By the way, logs are written to STDERR
because that is what Claude Desktop routes to the log files.
In the future, I expect well formatted log messages to be written over the STDIO
transport to the MCP client (note: not Claude Desktop app).
Since MCP servers communicate over stdio, debugging can be challenging. We recommend using the MCP Inspector, which is available as a package script:
npm run inspector
The Inspector will provide a URL to access debugging tools in your browser.
Please log in to share your review and rating for this MCP.