工具使用策略防火墙

MCP-FIREWALL是一个位于代理和工具使用请求之间的小型工具,能够根据文件夹、git仓库和用户应用基于正则表达式的策略。

  • by dzervas
  • Go
  • 本地部署
  • 13 星标
  • 更新于
在 GitHub 查看 dzervas/mcp-firewall

使用说明

MCP-fires🔒️LL

这是一个位于代理和所有工具使用请求之间的小工具,能够 为每个文件夹、git仓库和用户应用基于正则表达式的策略。

它目前通过pretooluse钩子支持Claude Code和GitHub Copilot CLI。

快速入门

下载并安装 发布 二进制文件,可以从您的 $PATH 环境变量。 有关更多安装说明,请查看 安装 部分

将所需代码段添加到您选择的代理中:

Claude Code

在任一情况下 ~/.config/settings.json (全球)或 .config/settings.json (每个项目):

{
  "hooks": {
    "PreToolUse": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "/usr/local/bin/mcp-firewall claude"
          }
        ]
      }
    ]
  }
}
GitHub Copilot CLI

在 .github/hooks/mcp-firewall.json (每个项目):

{
  "version": 1,
  "hooks": {
    "preToolUse": [
      {
        "type": "command",
        "command": "/usr/local/bin/mcp-firewall claude"
      }
    ]
  }
}

那么,你所要做的就是制定你的第一份保单。这里有一个很好的起点:

~/.config/mcp-firewall/config.jsonnet

[
	{
		name: 'Simple commands',
		// Note the space at the end of the patterns!
		// Without it, commands like 'sortmalliciously' would also be allowed!
		allow: [
			'echo ',
			'sort ',
			'uniq ',
			'wc ',
			'ls( -\w+)?$', // Allow ls, ls -lah, etc. but not ls /etc/secrets!
		],
	}
]

[!提示] 而mcp防火墙使用 jsonnet 对于所有策略文件,这样做只是为了允许更多 复杂和共享的政策。如果您不熟悉该语言,请将其视为普通JSON 还有支持评论的额外好处!

安装

要下载并安装mcp防火墙:

  • 从下载最新编译的二进制文件 发布
  • 使用克隆和构建项目 go build -o mcp-firewall ./cmd
  • 只需运行它 nix run git+https://github.com/dzervas/mcp-firewall -无安装步骤(不推荐)
  • 使用nix-flake作为输入:
NixOS/Home-Manager installation with flake

flake.nix

{
  inputs.mcp-firewall.url = "github:dzervas/mcp-firewall";
  inputs.mcp-firewall.inputs.nixpkgs.follows = "nixpkgs";
}

我假设输入是 speciaArgs 以便可以从任何模块访问:

configuration.nix

environment.systemPackages = [ inputs.mcp-firewall.packages.x86_64-linux.default ]

home-manager.nix

home.packages = [ inputs.mcp-firewall.packages.x86_64-linux.default ]

更多安装选项即将推出!

高级用法

对于希望进一步扩展并利用jsonnet跨平台共享规则集的用户 项目,这里有一些有用的信息:

  • 这 lib 子目录 ~/.config/mcp-firewall 或价值 $MCP_FIREWALL_CONFIG_DIR 可用于libsonnet文件
  • 这 vendor 启示目录下的子目录可用于供应商库(例如使用jsonnet-bundler)
  • 使用的jsonnet实现是go jsonnet,您可以在 go.mod