终端模拟工具

shell-mcp是一款为AI提供真实终端环境的工具,支持无配置运行命令、安装包、使用git等功能。

  • by psdlabs
  • TypeScript
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 psdlabs/shell-mcp

使用说明

shell-mcp

Give your AI a real terminal. One command. Zero config.

Works with Claude Desktop · Cursor · Windsurf · Zed · Cline · any MCP client


太长,读不下去了

你的AI可以编写代码,但不能运行它。 壳牌mcp 给它一个终端。

npx -y @shell-mcp/mcp-lite --init

重新启动您的AI应用程序。完成。你的人工智能现在可以运行命令、安装软件包、使用git、启动服务器、运行测试——你在终端中所做的一切。


演示

Claude Desktop using shell-mcp to read files, analyze data, and generate a chart — all through natural conversation.


问题

您正在使用Claude Desktop,并要求您的AI:

  • “运行我的测试”
  • “安装该软件包”
  • “检查git状态”
  • “启动开发服务器”

不行。 它没有终端。你最终会像2005年一样来回复制粘贴命令。

修复

npx -y @shell-mcp/mcp-lite --init

这是字面意思。这一个命令:

  1. 自动检测您安装了哪些AI应用程序
  2. 自动配置它们
  3. 没有要编辑的JSON,也没有要查找的配置文件

只需重新启动您的AI应用程序。它现在有一个终端。

  shell-mcp -- init
  -----------------

  Claude Desktop    + Added
  Cursor            + Added
  Windsurf          + Added

  Restart your clients to activate.

你的AI现在能做什么?

您可以在终端中执行的任何操作:

"Run npm install"                    ✓
"Start the dev server"               ✓
"Run the test suite"                 ✓
"Check git status and commit"        ✓
"List all running processes"         ✓
"Create a new React project"         ✓
"Build and deploy"                   ✓
"SSH into the server" (if you want)  ✓

命令之间的状态保持不变-- cd、环境变量, nvm use, conda activate 所有的延续。就像一个真正的终端。


5个工具。这就是它所需要的。

大多数MCP服务器都提供AI 20+工具。我们给它5。这就是为什么这样更好。

工具 为什么存在
run_command 主力。运行任何shell命令——git、npm、curl、docker、make、任何东西。你的AI已经知道如何使用终端。
write_file Shell在编写文件(引用、转义、多行)方面很糟糕。这是可靠的。
read_file 读取文件而无需编码麻烦。比 cat.
get_audit_log 每个命令都会被记录下来。你的AI可以查看发生了什么。
get_safety_config 显示有效的安全规则。只读——人工智能无法改变它们。

为什么不多? 你的AI已经知道了 git status, ls -la, ps aux, kill。将它们包装在自定义工具中会增加复杂性,但没有价值。给它一个终端,让开。


安全第一

你的AI有一个终端,但它不是无监督的。命令已检查 之前 他们执行。

已阻止(从不运行)

rm -rf /       ·  DROP DATABASE     ·  curl ... | bash
format C:      ·  dd of=/dev/sda    ·  :(){ :|:& };:

警告(带着旗帜奔跑)

sudo ...       ·  rm -rf            ·  git push --force
kill -9        ·  shutdown          ·  chmod 777

每个命令(被阻止或执行)都会记录到 ~/.shell-mcp/logs/audit.jsonl.

把它锁起来

想要限制你的AI可以运行什么?使用同种异体:

{
  "mcpServers": {
    "shell-mcp": {
      "command": "npx",
      "args": ["-y", "@shell-mcp/mcp-lite"],
      "env": {
        "SHELL_MCP_ALLOWLIST": "npm.*,git.*,node.*",
        "SHELL_MCP_DEFAULT_DENY": "true"
      }
    }
  }
}

现在只有 npm, git,以及 node 命令是允许的。其他一切都被封锁了。


智能超时

其他工具杀人 npm install 由于固定超时,30秒后。我们没有。

Others:       |---- 30s fixed ---------| KILL (npm install dies mid-download)

shell-mcp:    |-- 15s --| reset |-- 15s --| reset |-- 15s --| done
                  ^ output    ^ output       ^ output

超时 每次产生输出时重置。只有在完全静音15秒或绝对上限为5分钟后,您的命令才会失效。


适用于所有地方

平台 默认外壳 状态
macOS zsh 支持
Linux bash 支持
Windows PowerShell 支持

零本地依赖。不需要构建工具。只有Node.js 20+。


配置(全部可选)

shell mcp开箱即用。仅在需要时进行自定义。

变量 默认值 它的作用
SHELL_MCP_CWD 当前目录 会话的起始目录
SHELL_MCP_SHELL 自动检测 强制外壳(bash, zsh, powershell.exe)
SHELL_MCP_MAX_SESSIONS 10 最大并行会话数
SHELL_MCP_BLOCKLIST 内置 额外的阻塞模式(逗号分隔正则表达式)
SHELL_MCP_ALLOWLIST none 只允许这些命令(逗号分隔的正则表达式)
SHELL_MCP_DEFAULT_DENY false 阻止所有不在allowlist中的内容
SHELL_MCP_AUDIT true 启用/禁用审核日志记录

将它们作为环境变量传递到MCP配置中:

{
  "mcpServers": {
    "shell-mcp": {
      "command": "npx",
      "args": ["-y", "@shell-mcp/mcp-lite"],
      "env": {
        "SHELL_MCP_CWD": "/path/to/project",
        "SHELL_MCP_SHELL": "bash"
      }
    }
  }
}

手动设置

如果 --init 无法检测到您的客户端,或者您更喜欢手动配置:

Claude Desktop

配置文件位置:

  • macOS: ~/Library/Application Support/Claude/claude_desktop_config.json
  • 视窗: %APPDATA%\Claude\claude_desktop_config.json
  • Linux: ~/.config/Claude/claude_desktop_config.json

将以下内容添加到文件中:

{
  "mcpServers": {
    "shell-mcp": {
      "command": "npx",
      "args": ["-y", "@shell-mcp/mcp-lite"]
    }
  }
}
Cursor

配置文件: ~/.cursor/mcp.json

{
  "mcpServers": {
    "shell-mcp": {
      "command": "npx",
      "args": ["-y", "@shell-mcp/mcp-lite"]
    }
  }
}
Windsurf

配置文件: ~/.windsurf/mcp.json

{
  "mcpServers": {
    "shell-mcp": {
      "command": "npx",
      "args": ["-y", "@shell-mcp/mcp-lite"]
    }
  }
}

它是如何工作的(对于好奇的人)

You ask: "Run my tests"
        |
        v
  AI calls run_command("npm test")
        |
        v
  Safety check (blocked? warned? ok?)
        |
        v
  Execute in persistent shell session
  (state carries over between commands)
        |
        v
  Smart timeout (auto-extends while output flows)
        |
        v
  Log to audit trail --> return result to AI
        |
        v
  AI reads output, decides what to do next

没有PTY。没有本机依赖关系。只需清洁stdin/stdout管道。


贡献

我们欢迎捐款!看 贡献.md 作为指导方针。

git clone https://github.com/psdlabs/shell-mcp.git
cd shell-mcp
pnpm install
pnpm build
packages/
  core/        -- Session engine, safety, audit
  mcp-lite/    -- MCP server (what users install)

常见问题解答

Is this safe?

对。破坏性命令在执行之前会被阻止。每个命令都会记录到审计跟踪中。你可以用同种异体进一步锁定它 DEFAULT_DENY 模式。人工智能不能修改安全规则——它们是只读的。

Does it work with [my AI client]?

如果您的客户端支持MCP(模型上下文协议),则是。这 --init 命令自动检测Claude Desktop、Cursor和Windsurf。对于其他命令,请手动添加JSON配置。

What if a command hangs?

智能超时处理它。如果一个命令在15秒内没有输出,它就会超时。还有一个5分钟的绝对上限。AI会得到一个明确的“超时”状态,并可以决定做什么。

Can I use it for CI/CD?

它专为交互式AI使用而设计,但没有什么能阻止你在自动化中使用它。只需为您的用例配置安全规则。

Do I need to install anything besides Node.js?

号码 npx 自动下载并运行它。你只需要Node.js 20或更高版本。


明星历史

如果这个项目对你有帮助,可以考虑给它一颗星。它帮助其他人找到它。


许可证

麻省理工学院——随心所欲。


Built by psdlabs · LinkedIn
Report a bug · Request a feature