Mcp_command_server

Mcp_command_server

🚀 MCP命令行服务器

MCP命令行服务器是基于Rust语言开发的远程命令执行服务,具备高度安全性。它借助JSON - RPC协议与客户端通信,还内置强大的命令过滤系统,可有效防止恶意操作。

🚀 快速开始

MCP命令行服务器可通过Docker运行,也能在本地构建运行。

✨ 主要特性

  • JSON - RPC接口:提供command.get接口,可执行命令并返回输出结果。
  • 强大的安全机制:内置命令过滤系统,能配置禁止执行的命令模式,对多种类型的危险命令进行限制。

📦 安装指南

使用Docker运行

# 拉取镜像
docker pull mcp/command-server:latest

# 运行容器
docker run -d --name mcp-server -p 8080:8080 mcp/command-server:latest

本地构建

  1. 克隆项目仓库。
  2. 安装Rust和Docker环境。
  3. 构建镜像:
cargo build && docker build -t mcp/command-server .

💻 使用示例

基础用法

以下是使用JSON - RPC接口执行命令的示例。

// 请求参数
#[derive(serde::Serialize, serde::Deserialize)]
struct CommandParams {
command: String,
// 可选参数,是否显示完整错误信息,默认false
verbose: Option<bool>,
}

// 响应结果
#[derive(serde::Serialize, serde:: Deserialize)]
struct CommandOutput {
stdout: String,
stderr: String,
exit_code: i32,
}

📚 详细文档

核心功能

JSON - RPC接口

  • command.get(params: CommandParams) -> Result
    • 执行并返回命令的输出结果。

命令参数结构

请求参数
#[derive(serde::Serialize, serde::Deserialize)]
struct CommandParams {
command: String,
// 可选参数,是否显示完整错误信息,默认false
verbose: Option<bool>,
}
响应结果
#[derive(serde::Serialize, serde:: Deserialize)]
struct CommandOutput {
stdout: String,
stderr: String,
exit_code: i32,
}

安全机制

命令过滤系统

  • 使用exclude.yaml文件配置禁止执行的命令模式:
    patterns:
    - "rm -rf"
    - regex: "^sudo\s+"
    - shell: "../*.sh"
    

禁止的命令分类

  1. 系统修改类:apt, yum, etc.
  2. 文件操作类:rm -rf, etc.
  3. 系统控制类:shutdown, reboot, etc.
  4. 权限变更类:chmod, sudo, etc.
  5. 网络操作类:wget, curl, etc.
  6. 命令链式执行:&&, |, etc.
  7. 脚本执行类:bash, python, etc.
  8. 文件路径穿越:../, etc.

项目结构

mcp_command_server/
├── .context                 # API文档markdown
├── Cargo.toml               # Rust依赖管理
├── Dockerfile               # 多阶段Docker构建文件
├── exclude.yaml             # 命令过滤配置
├── docker-compose.yml       # Docker Compose配置
├── src/
│   ├── main.rs              # 服务主程序
│   ├── command.rs           # 命令执行逻辑
│   ├── rpc.rs               # JSON-RPC处理模块
│   └── validator.rs         # 命令验证逻辑
└── docs/
├── README.md            # 文档说明
└── mcp_command_server.postman_collection.json  # Postman测试集合

开发指南

依赖项

  • Rust:主要编程语言。
  • tokio:异步运行时。
  • warp:Web服务器框架。
  • serde & serde_json:序列化/反序列化库。
  • serde_yaml:YAML文件解析。
  • regex:正则表达式支持。

贡献指南

  1. 叉取仓库。
  2. 创建功能分支 (git checkout -b feature/amazing-feature)。
  3. 提交更改 (git commit -m 'Add some amazing feature')。
  4. 推送到远程分支 (git push origin feature/amazing-feature)。
  5. 提交Pull Request。

🔧 技术细节

本项目基于Rust语言开发,利用tokio作为异步运行时,warp作为Web服务器框架,实现了高效的异步处理。通过serde和serde_json库进行JSON数据的序列化和反序列化,使用serde_yaml解析YAML配置文件。正则表达式库regex用于命令过滤系统中的模式匹配。

📄 许可证

项目采用MIT许可证,详细信息请查看LICENSE文件。

联系方式

  • 邮件:support@mcp.com
  • GitHub: https://github.com/mcp/command-server
  • 0 关注
  • 0 收藏,12 浏览
  • system 提出于 2025-09-30 09:54

相似服务问题