article
README
🚀 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
本地构建
- 克隆项目仓库。
- 安装Rust和Docker环境。
- 构建镜像:
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<CommandOutput>- 执行并返回命令的输出结果。
命令参数结构
请求参数
#[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测试集合
开发指南
依赖项
- Rust:主要编程语言。
- tokio:异步运行时。
- warp:Web服务器框架。
- serde & serde_json:序列化/反序列化库。
- serde_yaml:YAML文件解析。
- regex:正则表达式支持。
贡献指南
- 叉取仓库。
- 创建功能分支 (
git checkout -b feature/amazing-feature)。 - 提交更改 (
git commit -m 'Add some amazing feature')。 - 推送到远程分支 (
git push origin feature/amazing-feature)。 - 提交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
微信扫一扫