MCPShell
这 MCPShell 是一种允许LLM安全执行的工具 命令行工具 通过 模型上下文协议(MCP). 它在LLM和操作系统命令之间提供了一个安全的桥梁。
特性
- 灵活的命令执行:将任何shell命令作为MCP工具运行,
通过模板进行参数替换。
- 基于配置的工具定义:在YAML中用参数定义工具,
约束和输出格式。
- 通过约束实现安全:使用CEL表达式验证工具参数
执行前,以及可选 沙盒环境 用于运行命令。
- MCP工具的快速预测:只需添加一些shell代码并将其用作
LLM中的MCP工具。
- 简单集成:适用于支持MCP协议的任何LLM客户端
(即光标、VSCode、Witsy……)
快速开始
想象一下,你希望Cursor(或其他MCP客户端)帮助你 硬盘空间问题。
- 创建配置文件
/my/example.yaml定义你的工具:
mcp:
description: |
Tool for analyzing disk usage to help identify what's consuming space.
run:
shell: bash
tools:
- name: "disk_usage"
description: "Check disk usage for a directory"
params:
directory:
type: string
description: "Directory to analyze"
required: true
max_depth:
type: number
description: "Maximum depth to analyze (1-3)"
default: 2
constraints:
- "directory.startsWith('/')" # Must be absolute path
- "!directory.contains('..')" # Prevent directory traversal
- "max_depth >= 1 && max_depth <= 3" # Limit recursion depth
- "directory.matches('^[\\w\\s./\\-_]+$')" # Only allow safe path characters, prevent command injection
run:
command: |
du -h --max-depth={{ .max_depth }} {{ .directory }} | sort -hr | head -20
output:
prefix: |
Disk Usage Analysis (Top 20 largest directories):看看 示例目录 以获取更复杂和有用的示例。 也许你更喜欢让LLM知道你的Kubernetes集群 kubectl 的? 或者让它运行一些 AWS-CLI 命令?
- 在Cursor(或任何其他支持MCP的LLM客户端)中配置MCP服务器
例如,对于Cursor,创建 .cursor/mcp.json:
{
// you need the "go" command available
"mcpServers": {
"mcp-cli-examples": {
"command": "go",
"args": [
"run", "github.com/inercia/MCPShell@v0.1.8",
"mcp", "--tools", "/my/example.yaml",
"--logfile", "/some/path/mcpshell/example.log"
]
}
}
}您还可以使用相对路径并省略 .yaml 扩展名:
{
"mcpServers": {
"mcp-cli-examples": {
"command": "go",
"args": [
"run", "github.com/inercia/MCPShell@v0.1.8",
"mcp", "--tools", "example",
"--logfile", "/some/path/mcpshell/example.log"
]
}
}
}这将寻找 example.yaml 在工具目录中(~/.mcpshell/tools/ 默认情况下)。
查看有关如何配置的更多详细信息 光标 或 Visual Studio Code其他支持MCP的LLM 应该以类似的方式配置。
- 确保您的MCP客户端已刷新(Cursor应自动识别它)
第一次,但配置文件中的任何更改都需要刷新)。
- 问你的法学硕士一些问题,它应该能够用新工具回答。例如:
_“我的硬盘空间不足。你能帮我找到问题吗?”_.
使用和配置
查看中的所有命令 本文件.
配置文件使用定义的YAML格式 这里. 请参阅 这个目录 举几个例子。
要在容器和Kubernetes中部署MCPShell,请参阅 容器部署指南.
代理模式
有关将LLM直接连接到工具的AI代理功能,请参阅 唐 项目。唐提供:
- 无需单独的MCP客户端即可直接连接LLM
- RAG(检索增强生成)支持
- 多代理架构
- 使用MCPShell的工具配置格式
安全考虑
所以你可能会觉得 _“这个人工智能帮助我找到了所有这些大文件。如果我创建另一个删除文件的工具呢?”_. 不要那样做!.
- 将这些工具的范围限制在 只读操作,不要赋予法学硕士改变事物的权力。
- 使用 约束 将命令执行限制为安全参数
- 考虑使用 沙盒环境 用于运行命令。
- 检查所有命令模板是否存在潜在的注入漏洞
- 仅暴露可安全外部使用的工具
- 以上所有!
请阅读 安全考虑 在使用此软件之前,请先记录。
贡献
欢迎投稿!看看 开发指南. 请在GitHub上打开问题或提交拉取请求。
许可证
此项目根据MIT许可证获得许可-有关详细信息,请参阅许可证文件。

