bash-mcp 安全执行工具
一个TypeScript应用程序,允许克劳德在包含白名单命令、目录和全面日志记录的安全保障下安全执行bash命令。
服务介绍
Bash MCP (Master Control Program)
一个 TypeScript 应用程序,允许 Claude 在具有安全保护措施的受控环境中安全地执行 bash 命令。
功能
- 在受控环境中执行 bash 命令
- 支持无状态和有状态(交互式)命令执行
- 安全保护措施:
- 白名单命令
- 白名单目录
- 命令验证
- 输出清理
- 交互式命令的会话管理
- 全面的日志记录
安装
npm install
npm run build
配置
配置存储在 config/default.json 中。你可以自定义:
- 允许的命令
- 允许的目录
- 会话设置
- 安全设置
- 日志设置
示例配置:
{
"allowedCommands": ["ls", "cat", "echo", "pwd"],
"allowedDirectories": ["/tmp", "/home"],
"session": {
"timeout": 300,
"maxActiveSessions": 5,
"defaultMode": "stateless"
},
"security": {
"validateCommandsStrictly": true,
"sanitizeOutput": true,
"maxOutputSize": 1048576,
"commandTimeout": 30
},
"logging": {
"level": "info",
"file": "logs/bash-mcp.log",
"maxSize": 10485760,
"maxFiles": 5
}
}
使用方法
简单命令执行
import { executeCommand } from 'bash-mcp';
const result = await executeCommand('ls -la', { cwd: '/home/user' });
console.log(result.output);
交互式会话
import { initBashMCP } from 'bash-mcp';
const mcp = await initBashMCP();
// Create a session
const session = mcp.createSession('/home/user');
const sessionId = session.sessionId;
// Execute a command in the session
const result1 = await mcp.executeCommand('ls -la', { sessionId });
console.log(result1.output);
// Send input to the session
const result2 = await mcp.sendInput({ sessionId, input: 'echo "Hello, world!"' });
console.log(result2.output);
// Close the session when done
mcp.closeSession(sessionId);
安全考虑
这个 MCP 设计时考虑了安全性,但重要的是:
- 尽可能限制允许的命令和目录列表
- 定期审查并更新配置
- 监控日志以发现可疑活动
- 保持 MCP 及其依赖项为最新版本
开发
构建
npm run build
代码检查和格式化
要检查代码风格问题:
npm run lint
要自动修复代码风格和格式问题:
./fix-lint.sh
或者手动:
npm run lint:fix # Fix linting issues
npm run format # Format code
测试
npm test