安全终端服务器

一个专注于安全的MCP TypeScript SDK服务器,为Claude Desktop提供安全的终端命令执行能力,适用于需要高安全性的命令行操作场景。

  • by luiscnext
  • TypeScript
  • 本地部署
  • 更新于
在 GitHub 查看 luiscnext/mcp-terminal-server

使用说明

MCP安全终端服务器

一个全面的、以安全为重点的MCP(模型上下文协议)TypeScript SDK服务器,为Claude Desktop提供安全的终端命令执行功能。此服务器按照所有MCP安全要求实施企业级安全控制。

🚀 npx快速入门

使用此服务器最简单的方法是使用npx,无需安装!

先决条件

  • Node.js 18+
  • 克劳德桌面

用法

只需使用npx将服务器添加到您的Claude Desktop配置中:

Claude桌面配置: ~/.claude_desktop_config.json (macOS)或 %APPDATA%/Claude/claude_desktop_config.json (Windows)

{
  "servers": {
    "secure-terminal": {
      "command": "npx",
      "args": ["@modelcontextprotocol/mcp-terminal-server"]
    }
  }
}

就是这样!Claude Desktop将在需要时自动下载并运行服务器。

替代方案:全球安装

如果您希望全局安装:

npm install -g @modelcontextprotocol/mcp-terminal-server

然后配置Claude Desktop:

{
  "servers": {
    "secure-terminal": {
      "command": "mcp-terminal-server"
    }
  }
}

🛡️ 安全功能

该服务器满足MCP安全文档中确定的所有主要安全要求和威胁向量:

✅ 安全要求合规性

  • ✓ 强制代码签名 -已准备好进行生产部署
  • ✓ 静态工具定义 -运行时无法更改工具
  • ✓ 经过安全测试的接口 -全面的验证和消毒
  • ✓ 程序包标识 -明确出处和版本控制
  • ✓ 特权声明 -明确的能力要求

🔒 威胁向量缓解

  • ✓ 交叉快速注射(XPIA) -输入净化和验证
  • ✓ 身份验证差距 -速率限制和客户识别
  • ✓ 凭证泄漏 -输出净化和凭据过滤
  • ✓ 工具中毒 -严格执行白名单命令
  • ✓ 缺乏控制 -进程隔离和资源限制
  • ✓ 命令注入 -全面的输入验证
  • ✓ 有限安全审查 -广泛的安全测试

🛠️ 安全控制

  • 命令白名单:只允许预先批准的安全命令
  • 输入消毒:所有输入都经过验证和消毒
  • 输出滤波:凭据和敏感数据自动编辑
  • 速率限制:基于风险的利率限制,采用渐进式阻塞
  • 审计日志:全面的安全事件记录
  • 路径横向保护:目录访问限制
  • 超时强制:命令自动终止
  • 进程隔离:命令执行的安全环境

🛠️ 可用工具

核心工具

list_directory

通过安全验证安全地列出目录内容。

Parameters:
- path (optional): Directory path to list
- includeHidden (optional): Include hidden files
- longFormat (optional): Use detailed listing

get_current_directory

获取当前工作目录。

execute_safe_command

执行安全白名单中的命令。

Parameters:
- command: Command to execute (must be whitelisted)
- args (optional): Command arguments
- workingDirectory (optional): Working directory

read_file_safe

安全读取有大小限制的文件内容。

Parameters:
- filePath: Path to file
- maxLines (optional): Maximum lines to read (default: 100)

git_status

获取Git存储库状态。

Parameters:
- workingDirectory (optional): Git repository path
- short (optional): Use short format

count_file_stats

统计文件中的行数、单词数或字符数。

Parameters:
- filePath: Path to file
- countType (optional): 'lines', 'words', or 'characters'

system_info

获取基本系统信息。

Parameters:
- infoType (optional): 'user', 'os', or 'system'

📋 可用资源

available_commands

列出所有白名单命令及其描述和风险级别。

security_status/{clientId}

显示安全状态,包括速率限制和阻止状态。

server_capabilities

显示服务器功能和安全功能。

🔧 命令白名单

服务器只允许执行预先批准的命令:

低风险指令

  • ls -目录列表
  • pwd -当前目录
  • tree -目录树
  • wc -字数/行数/字符数
  • which -指挥位置
  • uname -系统信息
  • whoami -当前用户

中等风险命令

  • cat, head, tail -文件读取(有限制)
  • git status, git log, git branch, git diff -Git操作
  • npm list, npm outdated -包裹信息

高风险指令

  • npm audit -安全漏洞检查(速率有限)

禁止的命令

明确禁止所有危险命令:

  • 文件修改: rm, mv, cp, chmod
  • 系统管理: sudo, su, systemctl
  • 网络操作: curl, wget, ssh
  • 脚本执行: python, node, bash
  • 还有更多。..

🛡️ 速率限制

服务器实现了复杂的速率限制:

全球限制

  • 所有工具每分钟100个命令
  • 逐步阻止违规行为

基于风险的限额

  • 低风险:50次处决/分钟
  • 中等风险:20次处决/分钟
  • 高风险:5次处决/分钟

故障处理

  • 每5分钟10次失败尝试
  • 每小时3次可疑活动
  • 自动封锁和记录

📊 监控

日志文件

运行时,服务器会在当前目录中创建日志:

  • logs/security-audit.log -所有安全事件
  • logs/security-alerts.log -仅限高风险事件
  • logs/combined.log -通用应用程序日志
  • logs/error.log -错误事件

监控命令

# Watch security events
tail -f logs/security-audit.log

# Check for alerts
tail -f logs/security-alerts.log

# Monitor rate limiting
grep "RATE_LIMIT_EXCEEDED" logs/security-audit.log

📚 使用示例

一旦配置了Claude Desktop,您可以要求Claude:

  • 列出目录:“显示当前目录中的文件”
  • 检查Git状态:“此Git存储库的状态如何?”
  • 安全读取文件:“显示package.json的前50行”
  • 获取系统信息:“我以什么用户身份运行?”
  • 执行安全命令:“运行‘npm list’以显示已安装的软件包”
  • 检查安全状态:“显示当前安全状态”

🔨 发展

地方发展

  1. 克隆和设置

    git clone https://github.com/luiscnext/mcp-terminal-server.git
    cd mcp-terminal-server
    npm install
    
  2. 构建和测试

    npm run build
    npm test
    npm run test:security
    
  3. 在本地运行

    npm run dev
    

脚本

  • npm run build -将TypeScript构建为JavaScript
  • npm run dev -自动重新加载的开发模式
  • npm test -运行安全测试
  • npm run lint -代码linting
  • npm run format -代码格式

📦 出版

要将此包发布到npm:

  1. 构建和测试

    npm run build
    npm test
    
  2. 登录到npm

    npm login
    
  3. 发布

    npm publish
    

该软件包配置了正确的 publishConfig 对于npm注册表。

🚨 安全最佳实践

对于用户

  1. 监控日志 -定期检查安全审计日志
  2. 经常更新 -保持软件包更新
  3. 查看命令 -了解可用的命令
  4. 报告问题 -立即提交安全问题

对于开发者

  1. 切勿绕过安全检查 -所有验证都是强制性的
  2. 查看命令添加 -新命令需要安全分析
  3. 监控审核日志 -注意可疑模式
  4. 彻底测试 -部署前运行安全测试

📄 许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。

🆘 支持

  • 问题: GitHub问题
  • 安全:参见 安全.md 用于报告安全问题
  • 文档:检查存储库以获取详细文档

⚡ 演出

  • 命令执行:<30秒超时
  • 内存使用:每个会话<100MB
  • 输出限制:每个命令最大1MB
  • 并发用户:支持多个Claude Desktop客户端

⚠️ 安全通知:此服务器实施了全面的安全控制,但应负责任地使用。在执行命令之前,始终检查命令,并监控审计日志中的可疑活动。

🎯 快速开始:只需添加 "npx @modelcontextprotocol/mcp-terminal-server" 转到您的Claude Desktop配置,并立即开始使用安全终端命令!