toolfence
ToolFence
Локальный межсетевой экран с отказоустойчивым закрытием для вызовов инструментов MCP.
ToolFence помещает политики минимальных привилегий и одобрение человека между AI-агентами и stdio-серверами MCP. Он разрешает безопасные операции, блокирует опасные и запрашивает разрешение перед передачей вызовов, требующих человеческого решения — без необходимости изменять код клиента или сервера MCP.
ALLOW Read ./src/index.ts
DENY Read ~/.ssh/id_rsa
ASK Run npm install
DENY Run sudo rm -rf ...Зачем нужен ToolFence
Семантические политики: нормализуют распространённые вызовы инструментов Filesystem, Shell, Git и HTTP в операции, такие как
fs.read,shell.exec,git.writeиnet.request, а затем сопоставляют пути, точные аргументы команд, хосты и HTTP-методы.Детерминированное применение:
denyпереопределяет другие совпадения, многозапросные запросы оцениваются как единое целое, а неизвестные или неоднозначные действия завершаются с отказом (fail closed).Одобрение человека: используйте аутентифицированный локальный Broker для одноразовых или сессионных решений; сессионные одобрения привязаны к схеме инструмента и аннулируются при её изменении.
Аудит с учётом конфиденциальности: записывайте идентификатор инструмента, затронутые ресурсы, решения политик и хеши результатов без хранения исходных аргументов или результатов.
Политики, которые можно тестировать: создавайте, проверяйте, объясняйте и проводите регрессионное тестирование YAML-политик из командной строки.
Related MCP server: cordon
Статус
Версия 0.2.0 — первый стабильный релиз с открытым исходным кодом. Он включает отменяемые одобрения через локальный Broker, консервативные адаптеры Filesystem/Shell/Git/HTTP, команды создания и разработки политик, сессионные одобрения, привязанные к схеме, и реальные интеграционные тесты MCP.
ToolFence не является песочницей для вредоносного процесса сервера MCP: вышестоящий процесс по-прежнему работает с правами текущего пользователя операционной системы.
Поскольку ToolFence запускает настраиваемые пользователем процессы и управляет возможностями Shell, Git и HTTP, npm-пакет прозрачно объявлен как двойного назначения. См. DISCLOSURE для информации о предполагаемом легитимном использовании и границах безопасности.
Установка
Имя npm-пакета — toolfence-mcp; команда — toolfence.
npm install -g toolfence-mcpДля локальной разработки:
npm install
npm run build
npm linkБыстрый старт
Создайте консервативную начальную политику, просмотрите её, затем оберните любой stdio-сервер MCP:
toolfence policy init
toolfence policy check --policy ./toolfence.yamlСгенерированный файл никогда не заменяет существующую политику. Более широкий аннотированный пример см. в examples/policy.yaml.
toolfence wrap \
--policy ./toolfence.yaml \
--server filesystem \
--workspace "$PWD" \
-- npx -y @modelcontextprotocol/server-filesystem "$PWD"Конфигурация клиента MCP выглядит так:
{
"mcpServers": {
"filesystem": {
"command": "toolfence",
"args": [
"wrap",
"--policy", "/absolute/path/policy.yaml",
"--server", "filesystem",
"--workspace", "/absolute/path/project",
"--",
"npx", "-y", "@modelcontextprotocol/server-filesystem", "/absolute/path/project"
]
}
}
}ToolFence резервирует stdout для сообщений MCP JSON-RPC. Диагностика и stderr вышестоящего процесса остаются на stderr. Запустите персональный Broker и терминал одобрения в отдельных терминалах:
toolfence broker
toolfence approvalswrap по умолчанию использует Broker. Если он отсутствует, несовместим, не аутентифицирован, отключён или истекло время ожидания, решение ask завершается с отказом. Используйте --approval tty только когда требуется прямое одобрение через /dev/tty. toolfence status проверяет подключение к Broker, версию протокола и права доступа к сокету.
Политика
version: 1
default: ask
rules:
- id: deny-dotenv
effect: deny
operations: [fs.read, fs.write]
resources: ["**/.env", "**/.env.*"]
- id: allow-workspace-read
effect: allow
operations: [fs.read]
resources: ["${workspace}/**"]
- id: allow-tests
effect: allow
operations: [shell.exec]
commands:
- [npm, test]
- id: allow-git-inspection
effect: allow
operations: [git.read]
- id: allow-read-api
effect: allow
operations: [net.request]
hosts: ["api.example.com", "*.internal.example.com"]
methods: [GET, HEAD]Правила оцениваются детерминированно:
Каждое совпадающее правило
denyпереопределяет все остальные совпадения. Правило ресурса deny срабатывает, когда любой запрошенный ресурс защищён.В противном случае побеждает первое совпавшее правило.
Если ничего не совпало, используется
default.
Правила ресурсов allow и ask требуют совпадения каждого запрошенного ресурса, поэтому многозапросный вызов не может использовать один разрешённый путь для проведения несанкционированного пути.
Пути файловой системы канонизируются перед сопоставлением, включая существующие символические ссылки. Для разрешённых команд используется точное сопоставление argv; составные или заключённые в кавычки строки оболочки не считаются безопасными argv и возвращаются к решению по умолчанию.
Поддерживаемые операции v0.2: fs.read, fs.write, fs.delete, shell.exec, git.read, git.write, git.remote, net.request и unknown. Неоднозначные команды Git, недействительные URL и нераспознанные инструменты завершаются с отказом через shell.exec или unknown.
Разработка политик
toolfence policy init [--policy ./toolfence.yaml]
toolfence policy check --policy ./examples/policy.yaml
toolfence policy explain --policy ./examples/policy.yaml --action ./action.json
toolfence policy test --policy ./examples/policy.yaml --cases ./policy-cases.yamlinit создаёт консервативную политику, не перезаписывая существующий файл. check проверяет YAML, строгие правила схемы, переменные, дублирующиеся ID и недопустимые комбинации полей сети. explain выводит совпавшие правила и окончательное решение. test запускает декларативные тесты и завершается с ненулевым кодом при любом несовпадении.
Журнал аудита
Файл аудита по умолчанию — .toolfence/audit.jsonl в рабочей области. Он записывает имена операций, затронутые пути, идентификатор инструмента, окончательные решения политик и SHA-256 хеши результатов вышестоящего процесса. Исходные аргументы инструмента, аргументы команд и исходные результаты намеренно опущены для уменьшения утечки секретов.
Используйте --audit /path/to/audit.jsonl для выбора другого пути.
Границы безопасности
ToolFence v0.2 снижает случайное или вызванное внедрением в промпт неправильное использование инструментов, когда вызов инструмента проходит через этот прокси. Он не предотвращает прямое чтение файлов, переменных окружения или сети процессом вышестоящего сервера. Изоляция процессов, фильтрация окружения и сетевые контроли относятся к более поздней фазе песочницы.
Дополнительные текущие ограничения:
только транспорт stdio
поддержка локального Broker только для POSIX; Windows остаётся неинтерактивным и с отказоустойчивым закрытием
пакетные сообщения JSON-RPC отклоняются
редактирование секретов в выводе пока отсутствует; исходные результаты передаются без изменений
адаптер HTTP MCP должен предоставлять адрес перенаправления (например, как
redirectUrl), чтобы ToolFence мог переоценить его
Разработка
Архитектура, модель угроз, инварианты безопасности и план реализации v0.2 поддерживаются в руководстве по разработке.
npm run typecheck
npm test
npm run build
npm pack --dry-run
npm audit --omit=devПолная стратегия проверки находится в TESTING.md, а запись проверки релиза/безопасности — в REVIEW.md. См. CONTRIBUTING.md, SECURITY.md, CHANGELOG.md и RELEASING.md перед внесением вклада, сообщением об уязвимости или публикацией релиза.
Лицензия
MIT
This server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- Flicense-quality-maintenanceA transparent proxy and execution firewall that intercepts and audits AI agent tool calls against configurable security policies before forwarding them to downstream MCP servers. It provides safe execution environments with features like data redaction, anti-loop protection, and unified alert dispatching.
- Alicense-qualityAmaintenanceSecurity gateway for MCP tool calls. Sits between your LLM client and MCP servers, enforcing per-tool policies (allow/block/approve/read-only), logging every call, and pausing dangerous operations for human approval in terminal or Slack.21MIT
- Alicense-qualityBmaintenanceA fail-closed cryptographic gate for the MCP tool-call boundary that intercepts tools/call requests, evaluates a policy, and either forwards or denies the call with signed receipts, providing tamper-evident evidence for AI agent actions.225Apache 2.0
- Alicense-qualityDmaintenanceA defensive gateway and firewall for AI agents using MCP servers, scanning tool calls, responses, and manifests for prompt injection, secrets, dangerous commands, and drift before allowing execution.MIT
Related MCP Connectors
Security firewall for AI agents — scans MCP calls for injection, secrets, and risks.
Runtime permission, approval, and audit layer for AI agent tool execution.
Crypto transaction firewall and risk tools for MCP agents.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/jiangkoumo/toolfence'
If you have feedback or need assistance with the MCP directory API, please join our Discord server