MCP命令行服务器是基于Rust语言开发的远程命令执行服务,具备高度安全性。它借助JSON - RPC协议与客户端通信,还内置强大的命令过滤系统,可有效防止恶意操作。
MCP命令行服务器可通过Docker运行,也能在本地构建运行。
command.get
接口,可执行命令并返回输出结果。# 拉取镜像
docker pull mcp/command-server:latest
# 运行容器
docker run -d --name mcp-server -p 8080:8080 mcp/command-server:latest
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,
}
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"
apt
, yum
, etc.rm -rf
, etc.shutdown
, reboot
, etc.chmod
, sudo
, etc.wget
, curl
, etc.&&
, |
, etc.bash
, python
, etc.../
, 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测试集合
git checkout -b feature/amazing-feature
)。git commit -m 'Add some amazing feature'
)。git push origin feature/amazing-feature
)。本项目基于Rust语言开发,利用tokio作为异步运行时,warp作为Web服务器框架,实现了高效的异步处理。通过serde和serde_json库进行JSON数据的序列化和反序列化,使用serde_yaml解析YAML配置文件。正则表达式库regex用于命令过滤系统中的模式匹配。
项目采用MIT许可证,详细信息请查看LICENSE
文件。