mcpField
M
MCP Bash

MCP Bash

本地服务
github.com/patrickomatik开发工具3780 周前更新

关于 MCP Bash

MCP Bash 是一个简单的 MCP 服务,允许 Claude Desktop 等支持 MCP 的客户端在本地机器上执行 Bash 命令。它返回 stdout 与 stderr,并可保持工作目录。README 明确指出该项目存在较高安全风险。

主要功能

  1. 01执行任意 Bash 命令
  2. 02返回 stdout 与 stderr
  3. 03通过 set_cwd 保持工作目录
  4. 04部署与扩展简单

适用场景

  1. 01让 Claude 运行测试并根据结果修复代码
  2. 02在本地命令行中执行客户端发起的命令

MCP 相关

该项目是 MCP 服务,向 MCP 客户端暴露 set_cwd 与 execute_bash 两个函数。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

MCP Bash

一个用于执行 bash 命令的简单 Model-Context-Protocol(MCP)服务。此项目允许你通过 MCP 服务接口执行 bash 命令,并承担由此带来的所有潜在安全风险!撰写本文时,我在公开领域找不到类似项目,所以就自己写了一个。让 Claude Desktop 编写代码时,它非常有用(它可以运行测试、评估结果,并一次性修复发现的问题)。

描述

MCP Bash 提供了一种从客户端应用程序执行 bash 命令的简单方式。它在受控环境中封装命令执行,并返回所执行命令的 stdout 和 stderr。

主要功能:

  • 执行任意 bash 命令
  • 在多次命令执行期间设置并保持工作目录
  • 通过 Model-Context-Protocol(MCP)提供简洁的接口
  • 易于部署和扩展

安装

先决条件
  • Python 3.10 或更高版本
  • pip 或其他包管理器
设置
  1. 克隆代码仓库

    git clone https://github.com/yourusername/mcp-bash.git
    cd mcp-bash
    
  2. 创建并激活虚拟环境

    python -m venv .venv
    source .venv/bin/activate  # On Windows: .venv\Scripts\activate
    
  3. 安装依赖

    pip install -e .
    

使用方法

启动服务
python -m mcp.cli.server --module server
Claude Desktop 配置

要将其用于 Claude Desktop,请将以下内容添加到配置中(通常位于 /Users//Library/Application Support/Claude/claude_desktop_config.json,或者在 Claude Desktop 界面中查看“Settings -> Developer”):

{
  "mcpServers": {
    "Bash": {
      "command": "/Users/<username>/.local/bin/uv",
      "args": [
        "run",
        "--with",
        "mcp[cli]",
        "mcp",
        "run",
        "/path/to/server.py"
      ]
    }
  }
}

然后向 Claude 提问:“使用 Bash MCP 工具列出我当前目录中的文件”

使用 API

该服务提供两个主要函数:

  1. set_cwd(path):设置 bash 命令的工作目录
  2. execute_bash(cmd):执行 bash 命令并返回 stdout/stderr
客户端代码示例
from mcp.client import MCPClient

async def main():
    # Connect to the MCP server
    client = MCPClient("http://localhost:8000")
    
    # Set working directory
    await client.set_cwd("/path/to/your/directory")
    
    # Execute a command
    stdout, stderr = await client.execute_bash("ls -la")
    
    print(f"Command output: {stdout}")
    if stderr:
        print(f"Error output: {stderr}")

if __name__ == "__main__":
    import asyncio
    asyncio.run(main())

安全注意事项

此服务会直接执行 bash 命令,如果未进行适当限制,可能带来致命的安全风险。没有任何机制能阻止大模型运行 rm -rf / 之类的危险命令。个人使用时,其实用性或许大于风险,但部署时务必谨慎。

建议考虑:

  • 在容器或受限环境中运行
  • 添加命令验证或允许列表
  • 通过适当的用户权限限制文件系统访问

许可证

此项目基于 MIT License 授权,详情请参阅 LICENSE 文件。

贡献

欢迎贡献!请随时提交 Pull Request。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。