使用说明
MCP外壳服务器
一种安全的模型上下文协议(MCP)服务器,提供具有内置安全机制的终端命令执行和文件读取功能。
特性
- 安全命令执行:运行具有全面安全限制的终端命令
- 文件资源访问:通过MCP资源端点读取特定文件
- 安全第一:内置对危险命令和操作的保护
- 异步/等待支持:完全异步实现,实现最佳性能
- Docker支持:具有多阶段构建的容器化部署
- 交叉平台的:适用于macOS、Linux和Windows
安全功能
服务器实施了多层安全措施,以防止危险操作:
- 命令黑名单:阻止危险命令,如
rm,dd,format,fdisk - 模式检测:防止文件重定向和系统修改等风险模式
- 执行超时:命令仅限于防止挂起进程
- 错误处理:全面的错误处理和记录
已阻止的命令
- 文件删除:
rm,rmdir,del,unlink,shred - 磁盘操作:
dd,format,fdisk,mkfs,wipefs - 危险模式:
>,>>,/dev/null,sudo rm
安装
先决条件
- Python 3.12或更高版本
- 紫外线 包管理器(推荐)
地方发展
-
克隆存储库:
git clone <repository-url> cd shellserver -
使用uv安装依赖项:
uv sync -
或使用pip安装:
pip install -r requirements.txt
Docker安装
-
构建Docker镜像:
docker build -t mcp-shell-server . -
运行容器:
docker run -it mcp-shell-server
用法
运行服务器
带紫外线:
uv run server.py
使用Python:
python server.py
使用Docker:
docker run -it mcp-shell-server
可用工具
run_command
安全地执行终端命令。
参数:
command(string):要执行的shell命令
退货:
stdout(string):命令输出stderr(string):错误输出returncode(int):退出代码
示例:
{
"name": "run_command",
"arguments": {
"command": "ls -la"
}
}
可用资源
file://mcpreadme
读取位于以下位置的特定markdown文件的内容 ~/Desktop/ML/mcpreadme.md.
示例:
{
"uri": "file://mcpreadme"
}
配置
默认情况下,服务器在标准I/O(stdio)传输上运行。您可以在 server.py 文件:
if __name__ == "__main__":
mcp.run("stdio") # or "sse" for Server-Sent Events
发展
项目结构
shellserver/
├── server.py # Main MCP server implementation
├── pyproject.toml # Project configuration
├── requirements.txt # Python dependencies
├── Dockerfile # Container configuration
├── uv.lock # Dependency lock file
└── README.md # This file
添加新工具
要添加新工具,请使用 @mcp.tool() 装饰师:
@mcp.tool()
async def your_new_tool(param: str) -> dict:
"""Your tool description"""
# Tool implementation
return {"result": "success"}
添加新资源
要添加新资源,请使用 @mcp.resource() 装饰师:
@mcp.resource("file://your-resource")
async def your_resource() -> str:
"""Resource description"""
# Resource implementation
return "resource content"
错误处理
服务器实现了全面的错误处理:
- 违反安全规定:与危险模式匹配的命令会返回安全错误
- 执行错误:失败的命令在stderr中返回错误详细信息
- 文件访问错误:资源访问失败返回描述性错误消息
- 超时处理:长时间运行的命令在30秒后终止
贡献
- 分叉存储库
- 创建要素分支
- 进行更改
- 如果适用,添加测试
- 提交拉取请求
许可证
该项目根据MIT许可证获得许可。
您可以根据以下条款自由使用、修改和分发此软件 MIT许可证.
请参阅 LICENSE 存储库中的文件以获取完整的许可证文本。
支持
对于问题和疑问:
- 在存储库中创建问题
- 检查 MCP文件
依赖项
- mcp[cli]:模型上下文协议实现
- Python 3.12+:必需的Python版本
- FastMCP:MCP服务器框架
- 异步IO:异步编程支持