b

bash-mcp 安全执行工具

@yannbam/bash-mcp
1 Stars 538 次浏览 yannbam 更新于 2026-08-23

一个TypeScript应用程序,允许克劳德在包含白名单命令、目录和全面日志记录的安全保障下安全执行bash命令。

该服务暂未提供标准配置,请参考 README 手动接入

服务介绍

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

相关 MCP 服务