ToolMesh
OfficialToolMesh — Позвольте ИИ-агентам взаимодействовать с реальными системами. Безопасно.
Недостающий уровень управления между ИИ-агентами и корпоративными системами. ToolMesh превращает неконтролируемые вызовы инструментов ИИ в управляемый, проверяемый процесс — и подключает любой REST API или MCP-сервер за минуты, а не месяцы.
30 строк YAML. Никаких серверов для сборки.
На практике MCP-серверы предоставляют лишь малую часть REST API, которые они оборачивают — и вы быстро столкнетесь с ограничениями. ToolMesh позволяет заменить уровень обертки файлами .dadl — декларативным форматом YAML, который описывает любой REST API как инструменты MCP. Не нужно создавать, развертывать или поддерживать сервер-обертку.
Current: Claude → ToolMesh → MCP Server → REST API
With DADL: Claude → ToolMesh → REST API (via .dadl file)Вам не нужно писать YAML вручную. Вы просите LLM. Claude, GPT, Gemini — любая модель, знающая спецификацию DADL, создаст рабочий файл .dadl за секунды. Опишите, что вам нужно, поместите файл в config/dadl/, готово.
"Создай DADL для API GitHub — список репозиториев, открытие тикетов и создание pull-запросов."
10 секунд. Работает с любой LLM, понимающей формат.
И в отличие от MCP-шлюзов, которые просто передают вызовы инструментов, ToolMesh добавляет то, что действительно необходимо для промышленного развертывания:
Безопасность учетных данных — секреты внедряются во время выполнения, никогда не попадают в промпты или конфигурации клиентов LLM
Авторизация — детальный контроль пользователь → план → инструмент (OpenFGA)
Фильтрация входных и выходных данных — политики JS блокируют конфиденциальные данные и фильтруют ответы
Журнал аудита — каждый вызов инструмента записывается в структурированный лог или доступную для запросов базу данных SQLite
Related MCP server: MCPGate
Шесть столпов
Столп | Что делает | На чем основано |
Любой бэкенд | 30 строк DADL заменяют целый MCP-сервер. Также проксирует существующие MCP-серверы. | Go MCP SDK + DADL (файлы .dadl) |
Режим кода | 15 MCP-серверов одновременно? Без ToolMesh это невозможно. Режим кода сокращает 50 000+ токенов до ~1 000. | Вызовы инструментов, распарсенные через AST |
Хранилище учетных данных | Секреты внедряются во время выполнения — никогда не попадают в промпты или конфигурации клиентов LLM | Внедрение для каждого запроса через конвейер Executor |
OpenFGA | Детальная авторизация (пользователь → план → инструмент). Пример: бесплатные пользователи получают доступ только для чтения, Pro — полный доступ. | OpenFGA |
Шлюз (Gate) | Блокировка конфиденциальных данных перед выполнением, маскирование PII в ответах | goja |
Аудит | Каждый вызов инструмента записывается и доступен для запросов — отвечайте на вопрос "что сделал этот агент?" с помощью SQL | slog / SQLite |
Попробуйте демо
Хотите попробовать ToolMesh перед установкой? Подключитесь к нашему публичному демо-экземпляру — без Docker, без конфигурации, без API-ключей:
demo.toolmesh.io — API Hacker News через ToolMesh. Работает с Claude Desktop, Claude Code и ChatGPT. Логин: dadl / toolmesh.
Быстрый старт
# Clone
git clone https://github.com/DunkelCloud/ToolMesh.git
cd ToolMesh
# Configure
cp .env.example .env
# IMPORTANT: Set a password — without it, all requests are rejected:
# TOOLMESH_AUTH_PASSWORD=my-secret-password
# Or set an API key for programmatic access:
# TOOLMESH_API_KEY=my-api-key
# Optional: local overrides (build locally, enable OpenFGA, HTTPS proxy, ...)
# cp docker-compose.override.yml.example docker-compose.override.yml
# # then edit docker-compose.override.yml — picked up automatically by Docker Compose
# Start (runs in bypass mode by default — no authz required)
docker compose up -d
# Verify it's running (default port: 8123)
curl http://localhost:8123/health
# MCP endpoint: http://localhost:8123/mcp
# Note: Most MCP clients require HTTPS — see TLS section belowTLS (важно)
Сам ToolMesh работает по обычному HTTP. Большинство MCP-клиентов, включая Claude Desktop, требуют HTTPS и будут отклонять URL-адреса http://. Вам нужен обратный прокси-сервер с поддержкой TLS перед ToolMesh:
Опция | Когда использовать |
Caddy | Самохостинг с публичным доменом — автоматические сертификаты Let's Encrypt |
Cloudflare Tunnel | Не нужны открытые порты, настройка TLS не требуется |
nginx / Traefik | Уже есть в вашем стеке |
Только для локальной разработки вы можете обойти TLS, отредактировав claude_desktop_config.json вручную (графический интерфейс требует https://).
Подключение к Claude Desktop
Добавьте в конфигурацию MCP Claude Desktop:
{
"mcpServers": {
"toolmesh": {
"url": "https://toolmesh.example.com/mcp"
}
}
}Для локальной разработки без TLS-прокси:
{
"mcpServers": {
"toolmesh": {
"url": "http://localhost:8123/mcp"
}
}
}Подключение к Claude.ai (пользовательский коннектор)
ToolMesh поддерживает OAuth 2.1 с PKCE S256 для удаленного доступа. Настройте пользователей в config/users.yaml и используйте публичный HTTPS URL в качестве конечной точки MCP.
Аутентификация
ToolMesh поддерживает два метода аутентификации, которые можно использовать независимо или вместе. Все состояние OAuth (токены, коды авторизации, клиенты) сохраняется в Redis и переживает перезагрузки сервера.
OAuth 2.1 (интерактивный вход)
Определите пользователей в config/users.yaml с паролями, хешированными через bcrypt:
users:
- username: admin
password_hash: "$2a$10$..."
company: dunkelcloud
plan: pro
roles: [admin]Генерируйте хеши паролей с помощью любой утилиты, поддерживающей bcrypt:
htpasswd -nbBC 10 "" "my-password" | cut -d: -f2Для однопользовательских настроек TOOLMESH_AUTH_PASSWORD по-прежнему работает как резервный вариант. Настройте идентификацию с помощью TOOLMESH_AUTH_USER, TOOLMESH_AUTH_PLAN и TOOLMESH_AUTH_ROLES (по умолчанию: owner, pro, admin).
API-ключи (программный доступ)
Определите API-ключи в config/apikeys.yaml с хешированными ключами:
keys:
- key_hash: "$2a$10$..."
user_id: claude-code-user
company_id: dunkelcloud
plan: pro
roles: [tool-executor]Каждый ключ сопоставляется с отдельной идентификацией пользователя с собственным планом и ролями, которые передаются в авторизацию OpenFGA.
Для настроек с одним ключом TOOLMESH_API_KEY по-прежнему работает как резервный вариант. Те же переменные TOOLMESH_AUTH_USER, TOOLMESH_AUTH_PLAN и TOOLMESH_AUTH_ROLES управляют идентификацией.
Ограничение частоты DCR
Динамическая регистрация клиентов (DCR) ограничена 5 регистрациями в час на IP-адрес для предотвращения злоупотреблений.
Режим авторизации
OPENFGA_MODE управляет тем, применяется ли авторизация OpenFGA:
Режим | Поведение |
| Все вызовы инструментов разрешены без проверок авторизации |
| OpenFGA обеспечивает авторизацию пользователь → план → инструмент (требуется |
Начните с bypass, чтобы быстро запустить систему, затем переключитесь на restrict после настройки OpenFGA.
Конфигурация
См. docs/configuration.md для получения информации обо всех переменных окружения.
Настройка тайм-аутов
Переменная | По умолчанию | Описание |
|
| Тайм-аут HTTP-клиента (в секундах) для вызовов нижестоящих MCP-серверов |
|
| Тайм-аут выполнения инструмента (в секундах) — дедлайн контекста для вызовов бэкенда |
Увеличьте эти значения для бэкендов, которым требуется больше времени (например, веб-парсерам на базе браузера):
TOOLMESH_MCP_TIMEOUT=180
TOOLMESH_EXEC_TIMEOUT=180Логирование
ToolMesh использует структурированное логирование через slog. Уровень по умолчанию — debug для полной отслеживаемости MCP «из коробки» — установите LOG_LEVEL=info или выше для продакшена, так как отладочные логи включают полные полезные нагрузки запросов/ответов. Файлы отладки для каждого бэкенда, форматы логов и все переменные логирования описаны в docs/configuration.md.
Архитектура
См. docs/architecture.md для получения полной документации по архитектуре.
┌─────────────────────────────────┐
│ ToolMesh │
│ │
│ Redis · OpenFGA · Audit │
│ Credential Store · JS Gate │
│ │
AI Agent ──MCP──────────▶ │ AuthZ ▸ Creds ▸ Gate ▸ Exec │
│ │
└──┬──────┬───────┬───────┬───────┘
│ │ │ │
MCP Client .dadl .dadl .dadl
│ │ │ │
▼ ▼ ▼ ▼
MCP Stripe GitHub Vikunja
Server API API APIДобавление внешнего MCP-сервера
Создайте или отредактируйте config/backends.yaml:
backends:
- name: memorizer
transport: http
url: "https://memorizer.example.com/mcp"
api_key_env: "MEMORIZER_API_KEY"Установите учетные данные в качестве переменной окружения:
CREDENTIAL_MEMORIZER_API_KEY=sk-mem-xxxxxИнструменты из каждого бэкенда предоставляются с префиксом (например, memorizer_retrieve_knowledge). Учетные данные внедряются исполнителем (Executor) во время выполнения через CredentialStore — LLM никогда не видит API-ключи.
Режим REST-прокси (DADL)
Когда MCP-сервер не предоставляет нужную вам конечную точку, опишите ее в файле .dadl, и ToolMesh вызовет REST API напрямую — сервер-обертка не нужен. Оба режима работают параллельно.
Добавьте REST-бэкенд в config/backends.yaml:
backends:
- name: vikunja
transport: rest
dadl: /app/dadl/vikunja.dadl
url: "https://vikunja.example.com/api/v1"Для внутренних сервисов с частными IP-адресами или самоподписанными сертификатами:
backends:
- name: internal-api
transport: rest
dadl: internal.dadl
url: "https://192.168.1.50:8443/api"
allow_private_url: true # allow private/loopback addresses (default: true)
tls_skip_verify: true # accept self-signed certificates (default: false)Хотите, чтобы Claude выводил список тикетов GitHub? Вот все, что для этого нужно:
tools:
list_issues:
method: GET
path: /repos/{owner}/{repo}/issues
description: "List issues for a repository"
params:
owner: { type: string, in: path, required: true }
repo: { type: string, in: path, required: true }
state: { type: string, in: query }ToolMesh обрабатывает аутентификацию, пагинацию, повторные попытки и сопоставление ошибок. DADL поддерживает bearer-токены, OAuth2, сессионную аутентификацию, API-ключи, автоматическую пагинацию, повторные попытки с экспоненциальной задержкой, преобразование ответов, составные инструменты и многое другое.
Полную спецификацию, примеры и реестр сообщества см. на dadl.ai. Самый быстрый способ создать файл .dadl — попросить любую LLM, которая знает этот формат.
Режим кода
Подключить 15 MCP-серверов к одному ИИ-агенту? Без ToolMesh это просто не работает — контекстное окно заполняется, клиент «задыхается». Режим кода делает это возможным.
Вместо того чтобы предоставлять сотни отдельных определений инструментов (50 000+ токенов), ToolMesh предоставляет два мета-инструмента: list_tools и execute_code. LLM получает компактные интерфейсы TypeScript (~1 000 токенов) и пишет JavaScript для работы с ними:
const repos = await toolmesh.github_list_repos({ sort: "updated" });
const issues = await toolmesh.github_list_issues({
owner: repos[0].owner.login,
repo: repos[0].name,
state: "open"
});Несколько вызовов API за один цикл. ToolMesh анализирует код, извлекает вызовы инструментов и направляет их через полный конвейер выполнения.
Модель расширений
ToolMesh использует модель расширений на основе реестра, вдохновленную паттерном драйверов database/sql в Go. Три типа компонентов расширяемы через регистрацию init():
Компонент | Встроенный | Конфигурация |
Хранилище учетных данных |
|
|
Бэкенд инструментов |
|
|
Оценщик шлюза (Gate) |
|
|
Корпоративные расширения (InfisicalStore, VaultStore, Compliance-LLM и т. д.) запланированы и будут включены через теги сборки Go: go build -tags enterprise ./cmd/toolmesh.
См. docs/architecture.md для получения подробной информации.
Участие в разработке
См. CONTRIBUTING.md.
Лицензия
Apache 2.0 — Copyright 2025–2026 Dunkel Cloud GmbH
This server cannot be deployed
Maintenance
Related MCP Connectors
Zero-setup MCP gateway securely connecting AI to your tools with authentication and workflows
- gatewayOAuthai.sealgate
MCP gateway with runtime security policy, tool-call-level control, and audit of agent actions.
AgentGuard — 20-tool AI safety MCP: policy preflight, risk scoring, audit logging, rate limits.
Zero-secret MCP gateway for AI agents: risk-scored, audited calls with human-in-the-loop approval.
Related MCP Servers
AlicenseNot gradedqualityAmaintenanceOpen-source MCP proxy that enforces security policies, content scanning, and audit logging between AI agents and tool servers25AGPL 3.0- AlicenseNot gradedqualityDmaintenanceMCPGate aggregates multiple MCP servers into a single unified endpoint, enabling centralized tool management with granular filtering, automatic namespacing, and observability. Features a real-time web dashboard and optional PostgreSQL-backed audit trails for monitoring and controlling AI tool access across local and remote deployments.6 npmApache 2.0
- AlicenseNot gradedqualityDmaintenanceA secure tool-execution plane for agentic AI that enforces JWT authentication, rate limiting, prompt-injection inspection, and audit logging, while ingesting downstream OpenAPI endpoints as MCP tools.MIT
- FlicenseNot gradedqualityBmaintenanceA production-style MCP gateway that aggregates multiple tool servers into one surface with semantic tool search, RBAC, audit logging, and rate limiting, enabling efficient tool selection for AI agents.-