一个简单的Model-Context-Protocol (MCP)服务器,用于执行bash命令。该项目允许您通过MCP服务器接口执行bash命令,这伴随着潜在的安全风险!在撰写本文时,我没有找到类似的公开项目,所以我编写了自己的项目。当需要让Claude Desktop编写代码时,这是一个非常有用的工具(它可以运行测试、评估结果并一次性修复发现的问题)。
MCP Bash提供了一种简单的方法,从客户端应用程序执行bash命令。它在一个受控环境中包装命令执行,并返回执行命令的标准输出和标准错误输出。
关键特性:
克隆仓库
git clone https://github.com/yourusername/mcp-bash.git
cd mcp-bash
创建并激活虚拟环境
python -m venv .venv
source .venv/bin/activate # 在Windows上:.venv\Scripts\activate
安装依赖项
pip install -e .
python -m mcp.cli.server --module server
要与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工具列出我当前目录下的文件”
服务器暴露了两个主要函数:
set_cwd(path):设置bash命令的工作目录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。 </中文翻译>