使用说明
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许可证获得许可-有关详细信息,请参阅许可证文件。