返回市场
MCP-终端

MCP-终端

作者:patrickomatik24 星标更新:2025-04-15

项目介绍

MCP Bash

一个简单的Model-Context-Protocol (MCP)服务器,用于执行bash命令。该项目允许您通过MCP服务器接口执行bash命令,这伴随着潜在的安全风险!在撰写本文时,我没有找到类似的公开项目,所以我编写了自己的项目。当需要让Claude Desktop编写代码时,这是一个非常有用的工具(它可以运行测试、评估结果并一次性修复发现的问题)。

描述

MCP Bash提供了一种简单的方法,从客户端应用程序执行bash命令。它在一个受控环境中包装命令执行,并返回执行命令的标准输出和标准错误输出。

关键特性:

  • 执行任意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  # 在Windows上:.venv\Scripts\activate
    
  3. 安装依赖项

    pip install -e .
    

使用

启动服务器

python -m mcp.cli.server --module server

Claude Desktop配置

要与Claude Desktop一起使用此项目,请在您的配置中添加以下内容(通常位于/Users/<username>/Library/Application Support/Claude/claude_desktop_config.json,或者参见Claude Desktop UI中的“设置 -> 开发者”):

{
  "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命令并返回标准输出和标准错误

示例客户端代码

from mcp.client import MCPClient

async def main():
    # 连接到MCP服务器
    client = MCPClient("http://localhost:8000")
    
    # 设置工作目录
    await client.set_cwd("/path/to/your/directory")
    
    # 执行命令
    stdout, stderr = await client.execute_bash("ls -la")
    
    print(f"命令输出: {stdout}")
    if stderr:
        print(f"错误输出: {stderr}")

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

安全注意事项

该服务器直接执行bash命令,如果未适当限制,可能会带来致命的安全风险。没有什么可以阻止LLM运行危险命令如rm -rf /。对于个人用途,其有用性可能超过风险,但在部署时需谨慎考虑。

考虑:

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

许可证

本项目根据MIT许可证发布 - 详情请参阅LICENSE文件。

贡献

欢迎贡献!请随时提交Pull Request。 </中文翻译>