openclaw-mcp
MCP-сервер OpenClaw
🦞 Сервер протокола контекста модели (MCP) для интеграции с ИИ-ассистентом OpenClaw.
Демонстрация
Почему я это создал
Привет! Я создал этот MCP-сервер, потому что не хотел полагаться только на мессенджеры для общения с OpenClaw. Что меня действительно вдохновляет, так это возможность подключить OpenClaw к веб-интерфейсу Claude. По сути, мой чат может делегировать задачи моему боту Claw, который затем берет на себя всё остальное — например, запуск Claude Code для исправления проблем за меня.
Представьте это как ИИ-ассистента, который управляет другим ИИ-ассистентом. Довольно круто, правда?
Быстрый старт
Docker (рекомендуется)
Готовые образы публикуются в GitHub Container Registry при каждом релизе.
docker pull ghcr.io/freema/openclaw-mcp:latestСоздайте docker-compose.yml:
services:
mcp-bridge:
image: ghcr.io/freema/openclaw-mcp:latest
container_name: openclaw-mcp
restart: unless-stopped
ports:
- "3000:3000"
environment:
- OPENCLAW_URL=http://host.docker.internal:18789
- OPENCLAW_GATEWAY_TOKEN=${OPENCLAW_GATEWAY_TOKEN}
- OPENCLAW_MODEL=openclaw
- AUTH_ENABLED=true
- MCP_CLIENT_ID=openclaw
- MCP_CLIENT_SECRET=${MCP_CLIENT_SECRET}
- MCP_ISSUER_URL=${MCP_ISSUER_URL:-}
- CORS_ORIGINS=https://claude.ai
extra_hosts:
- "host.docker.internal:host-gateway"
read_only: true
security_opt:
- no-new-privilegesСгенерируйте секреты и запустите:
export MCP_CLIENT_SECRET=$(openssl rand -hex 32)
export OPENCLAW_GATEWAY_TOKEN=your-gateway-token
docker compose up -dЗатем в Claude.ai добавьте пользовательский MCP-коннектор, указывающий на ваш сервер с MCP_CLIENT_ID=openclaw и вашим MCP_CLIENT_SECRET.
Совет: Для продакшена фиксируйте конкретную версию вместо
latest:ghcr.io/freema/openclaw-mcp:1.1.0
Локально (Claude Desktop)
npx openclaw-mcpДобавьте в конфигурацию Claude Desktop:
{
"mcpServers": {
"openclaw": {
"command": "npx",
"args": ["openclaw-mcp"],
"env": {
"OPENCLAW_URL": "http://127.0.0.1:18789",
"OPENCLAW_GATEWAY_TOKEN": "your-gateway-token",
"OPENCLAW_MODEL": "openclaw",
"OPENCLAW_TIMEOUT_MS": "300000"
}
}
}
}Удаленно (Claude.ai) без Docker
AUTH_ENABLED=true MCP_CLIENT_ID=openclaw MCP_CLIENT_SECRET=your-secret \
MCP_ISSUER_URL=https://mcp.your-domain.com \
CORS_ORIGINS=https://claude.ai OPENCLAW_GATEWAY_TOKEN=your-gateway-token \
npx openclaw-mcp --transport sse --port 3000Важно: При запуске за обратным прокси-сервером (Caddy, nginx и т.д.) вы обязаны установить
MCP_ISSUER_URL(или--issuer-url) на ваш публичный HTTPS URL. Без этого метаданные OAuth будут указывать наhttp://localhost:3000, и клиенты не смогут пройти аутентификацию.
Подробности см. в Руководстве по установке.
Архитектура
┌─────────────────────────────────────────────────────────────────┐
│ Your Server │
│ │
│ ┌─────────────────┐ ┌─────────────────────────┐ │
│ │ OpenClaw │ │ OpenClaw MCP │ │
│ │ Gateway │◄────►│ Bridge Server │ │
│ │ :18789 │ │ :3000 │ │
│ │ │ │ │ │
│ │ OpenAI-compat │ │ - OAuth 2.1 auth │ │
│ │ /v1/chat/... │ │ - CORS protection │ │
│ └─────────────────┘ │ - Input validation │ │
│ └──────────┬──────────────┘ │
│ │ │
└──────────────────────────────────────┼──────────────────────────┘
│ HTTPS + OAuth 2.1
▼
┌─────────────────┐
│ Claude.ai │
│ (MCP Client) │
└─────────────────┘Доступные инструменты
Синхронные инструменты
Инструмент | Описание |
| Отправка сообщений в OpenClaw и получение ответов |
| Проверка работоспособности шлюза OpenClaw |
| Список всех настроенных экземпляров OpenClaw |
Асинхронные инструменты (для длительных операций)
Инструмент | Описание |
| Постановка сообщения в очередь, немедленное получение task_id |
| Проверка прогресса задачи и получение результатов |
| Список всех задач с фильтрацией |
| Отмена ожидающей задачи |
Режим нескольких экземпляров
Управляйте несколькими шлюзами OpenClaw с одного MCP-сервера. Один мост, много «клешней» — направляйте запросы на продакшен, стейджинг, разработку или как вы их назовете (lobster-supreme и the-claw-abides — вполне подходящие имена).
┌──────────────────────────────────────────────────────────────────────┐
│ Claude.ai / Claude Desktop │
│ (MCP Client) │
└──────────────────────┬───────────────────────────────────────────────┘
│
▼
┌──────────────────────────────────────────────────────────────────────┐
│ OpenClaw MCP Bridge Server │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ Instance │ │ Instance │ │ Instance │ │
│ │ Registry │ │ Resolver │ │ Validator │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ ┌──────┴─────────────────┴──────────────────┴───────┐ │
│ │ Per-Instance OpenClaw Clients │ │
│ │ (separate auth, timeout, URL per instance) │ │
│ └────────┬──────────────┬──────────────┬────────────┘ │
└───────────┼──────────────┼──────────────┼────────────────────────────┘
│ │ │
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ 🦞 prod │ │ 🦞 staging │ │ 🦞 dev │
│ (default) │ │ │ │ │
│ :18789 │ │ :18789 │ │ :18789 │
│ OpenClaw GW │ │ OpenClaw GW │ │ OpenClaw GW │
└──────────────┘ └──────────────┘ └──────────────┘Настройка
OPENCLAW_INSTANCES='[
{"name": "prod", "url": "http://prod:18789", "token": "tok1", "default": true},
{"name": "staging", "url": "http://staging:18789", "token": "tok2"},
{"name": "dev", "url": "http://dev:18789", "token": "tok3"}
]'Использование
Все инструменты принимают необязательный параметр instance для выбора конкретного шлюза:
# Chat with staging instance
openclaw_chat message="Deploy status?" instance="staging"
# Check health of prod
openclaw_status instance="prod"
# List all configured instances
openclaw_instances
# Async task targeting dev
openclaw_chat_async message="Run tests" instance="dev"Если instance опущен, используется экземпляр по умолчанию. Каждый экземпляр имеет свой собственный токен аутентификации, тайм-аут и URL — полная изоляция.
Ключевые особенности
Обновление без миграции — существующие развертывания с одним экземпляром работают без изменения конфигурации
Изоляция экземпляров — отдельные токены аутентификации, тайм-ауты и URL
Динамическая маршрутизация — Claude выбирает нужный экземпляр для каждого запроса
Отслеживание задач — асинхронные задачи «помнят», на какой экземпляр они направлены
Безопасность — токены никогда не раскрываются через
openclaw_instances
Полное описание см. в Конфигурация — Режим нескольких экземпляров.
Документация
Установка — Настройка для Claude Desktop и Claude.ai
Конфигурация — Переменные окружения и опции
Развертывание — Docker и настройка для продакшена
Модель угроз — Что Claude может/не может инициировать, границы доверия и поверхности атаки
Логирование — Что логируется, где и что никогда не логируется
Разработка — Вклад в проект и добавление инструментов
Безопасность — Политика безопасности и лучшие практики
Безопасность
⚠️ Всегда включайте аутентификацию в продакшене!
# Generate secure client secret
export MCP_CLIENT_SECRET=$(openssl rand -hex 32)
# Run with auth enabled
AUTH_ENABLED=true MCP_CLIENT_ID=openclaw MCP_CLIENT_SECRET=$MCP_CLIENT_SECRET \
openclaw-mcp --transport sseНастройте CORS для ограничения доступа:
CORS_ORIGINS=https://claude.ai,https://your-app.comВсе опции безопасности см. в Конфигурации.
Требования
Node.js ≥ 20
Запущенный шлюз OpenClaw с включенным HTTP API:
// openclaw.json
{ "gateway": { "http": { "endpoints": { "chatCompletions": { "enabled": true } } } } }Лицензия
MIT
Автор
Создано Томашем Граслом
Связанные проекты
OpenClaw — ИИ-ассистент, к которому подключается этот MCP
Спецификация MCP — Документация протокола контекста модели
Latest Blog Posts
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/freema/openclaw-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server