Crank
Crank Community — самостоятельная версия Crank для публикации REST API как MCP-инструментов.
Проект помогает подключать существующие HTTP API к LLM-клиентам без написания отдельного MCP-сервера для каждой интеграции. В Crank можно описать REST-операцию, проверить ее, опубликовать и открыть через MCP.
Возможности
- Создание REST-операций через веб-интерфейс или YAML.
- Преобразование входных параметров MCP-инструмента в параметры REST-запроса: путь, query string, заголовки и тело запроса.
- Преобразование ответа REST API в структурированный результат MCP-инструмента.
- Публикация выбранных операций в MCP-точках доступа конкретных агентов.
- Отдельный каталог инструментов для каждого агента.
- Хранение черновиков, версий, примеров запросов и ответов, правил преобразования, журналов и статистики в PostgreSQL.
- Простая авторизация администратора через email, пароль и сессию браузера.
- Хранение секретов и профилей авторизации для внешних REST API.
- Развертывание через Docker Compose.
Границы Community-версии
Этот репозиторий содержит только Community-возможности:
- только REST;
- одно самостоятельное развертывание;
- простая авторизация администратора;
- статические ключи агентов для MCP-доступа;
- PostgreSQL как основная база данных;
- необязательный Valkey или Redis для служебного кэша;
- CI/CD через Gitea Actions.
Архитектура
Основные сущности:
Workspace— граница данных для операций, агентов, секретов и журналов.Operation— версионируемое описание REST-интеграции.Agent— MCP-точка доступа с ограниченным набором опубликованных операций.
Рабочий сценарий:
- Оператор создает или импортирует REST-операцию.
- Crank проверяет схему входа, схему выхода и правила преобразования данных.
- Оператор выполняет пробный вызов внешнего REST API.
- Операция публикуется.
- Операция привязывается к агенту.
- MCP-клиент вызывает инструмент через
mcp-server.
Структура репозитория
apps/
admin-api/ HTTP API для интерфейса, авторизации, операций, агентов, журналов и настроек
mcp-server/ MCP-сервер поверх Streamable HTTP
ui/ веб-интерфейс
crates/
crank-core/ общая доменная модель
crank-registry/ работа с PostgreSQL
crank-runtime/ выполнение REST-операций, преобразование данных, кэш, лимиты
crank-adapter-rest/ REST-адаптер
crank-community-auth/ пароли и сессии
crank-community-mcp/ прикладной слой MCP
crank-mapping/ преобразование данных через JSONPath
crank-schema/ нормализация и проверка схем
deploy/community/
docker-compose.yml манифест развертывания Community-версии
.env.example пример переменных окружения
Требования
- Rust toolchain из
rust-toolchain.toml - Node.js и npm для веб-интерфейса
- PostgreSQL
- Docker и Docker Compose для развертывания
Локальная разработка
Запустите PostgreSQL и задайте переменные окружения:
export POSTGRES_HOST=127.0.0.1
export POSTGRES_PORT=5432
export POSTGRES_DB=crank
export POSTGRES_USER=crank
export POSTGRES_PASSWORD=crank
export CRANK_MASTER_KEY=0000000000000000000000000000000000000000000000000000000000000000
export CRANK_SESSION_SECRET=dev-session-secret
export CRANK_PASSWORD_PEPPER=dev-password-pepper
export CRANK_BOOTSTRAP_ADMIN_EMAIL=owner@crank.local
export CRANK_BOOTSTRAP_ADMIN_PASSWORD=change-me-admin-password
export CRANK_BOOTSTRAP_ADMIN_DISPLAY_NAME="Crank Owner"
export CRANK_STORAGE_ROOT=.tmp/storage
export CRANK_BASE_URL=http://127.0.0.1:3000
Запустите серверные приложения:
cargo run -p admin-api
cargo run -p mcp-server
Соберите веб-интерфейс:
cd apps/ui
npm ci
npm run build
Проверки
Rust:
cargo fmt --all --check
cargo clippy --workspace --all-targets --all-features -- -D warnings
cargo test --workspace --all-targets
Веб-интерфейс:
cd apps/ui
npm ci
npm run build
npx playwright test
Playwright поднимает локальный проверочный стенд с PostgreSQL, admin-api, mcp-server и сервером веб-интерфейса.
Развертывание
Манифест Community-версии находится в deploy/community/docker-compose.yml.
Для рабочего развертывания нужны:
- внешний PostgreSQL;
- контейнерные образы для
admin-api,mcp-serverиui; - секреты и настройки через переменные окружения;
- обратный прокси перед портами
3000,3001,3002.
Процесс развертывания в .gitea/workflows/deploy.yml собирает образы, читает настройки из OpenBao, записывает .env на сервер развертывания и запускает Docker Compose.
Ключевые переменные окружения:
POSTGRES_HOST,POSTGRES_PORT,POSTGRES_DB,POSTGRES_USER,POSTGRES_PASSWORDCRANK_MASTER_KEYCRANK_SESSION_SECRETCRANK_PASSWORD_PEPPERCRANK_BOOTSTRAP_ADMIN_EMAILCRANK_BOOTSTRAP_ADMIN_PASSWORDCRANK_BASE_URLCRANK_PUBLISH_BIND
Дополнительная документация:
MCP
Crank публикует MCP-точки доступа для отдельных агентов через Streamable HTTP. Каждый агент имеет собственный каталог инструментов, поэтому MCP-клиент видит только REST-инструменты, явно привязанные к этому агенту.
Типовой сценарий:
- Создать REST-операцию.
- Проверить REST-операцию пробным вызовом.
- Опубликовать REST-операцию.
- Привязать операцию к агенту.
- Создать ключ агента.
- Подключить MCP-клиент к точке доступа агента.
Английская документация
Английский вариант README находится в docs/en/README.md.
Лицензия
MIT
