Crank

Crank

Crank - платформа для публикации внешних API в виде MCP tools без написания отдельного backend-кода под каждую интеграцию. Целевая модель проекта строится вокруг связки workspace -> agent -> operations.

Цели

  • Разработать MCP server на Rust.
  • Поддержать динамическое добавление интеграций через UI или конфигурацию.
  • Обеспечить единый сценарий работы оператора для REST, GraphQL, gRPC, WebSocket и SOAP.
  • Нормализовать внешние протоколы в единую внутреннюю модель операции.
  • Ограничивать набор tools на уровне конкретного агента, а не отдавать один глобальный каталог.
  • Поддержать workspace-изоляцию, platform access и observability.

Целевая модель продукта

  • Workspace как tenant boundary.
  • Operation как интеграционный контракт.
  • Agent как curated MCP surface для LLM.
  • Поддержка REST для GET, POST, PUT, PATCH и DELETE.
  • Поддержка GraphQL для query и mutation.
  • Поддержка unary и bounded server-streaming для gRPC.
  • Поддержка WebSocket upstream integrations в bounded execution modes.
  • Поддержка SOAP/WSDL enterprise integrations.
  • Поддержка controlled streaming modes поверх MCP Streamable HTTP.
  • Platform API keys и membership layer.
  • Observability: invocation logs, usage aggregates, latency/error metrics.
  • Импорт и экспорт operation-конфигураций в YAML.
  • Использование JSONPath для точечного маппинга.

Структура документации

  • docs/architecture.md - целевая архитектура системы.
  • docs/as-is-to-be.md - переход as is -> to be, page-by-page gap analysis и архитектурные конфликты.
  • docs/backend-gap-plan.md - конкретный backend-план: сущности, API, БД и порядок реализации.
  • docs/operations-workspace-contracts.md - точные workspace-scoped контракты для экранов Operations и Wizard.
  • docs/alpine-ui-integration-plan.md - постраничный план подключения нового Alpine UI к реальному backend.
  • docs/module-decomposition.md - декомпозиция crates и модулей.
  • docs/data-model.md - целевая модель данных.
  • docs/database-schema.md - целевая схема БД.
  • docs/admin-api.md - целевые HTTP-контракты административного API.
  • docs/diagrams.md - диаграммы компонентов, сущностей и БД.
  • docs/mcp-interface.md - модель MCP transport и agent-scoped publishing.
  • docs/testing-strategy.md - стратегия тестирования.
  • docs/runtime-config.md - конфигурация окружения.
  • docs/deployment.md - деплой, reverse proxy и CI/CD.
  • docs/demo-runbook.md - демонстрационный сценарий.
  • docs/public-smoke-targets.md - готовые публичные upstream-сервисы и payload-ы для smoke-проверки MCP.
  • docs/secrets-auth-plan.md - целевая модель upstream secrets, auth profiles и пошаговый план реализации.
  • docs/streaming-mcp-plan.md - целевая модель MCP transport streaming, upstream streaming и поэтапный план реализации.
  • docs/rust-design.md - правила распределения поведения в Rust.
  • docs/development-rules.md - правила разработки и workflow.
  • docs/rust-code-rules.md - Rust-specific coding rules.
  • docs/implementation-plan.md - порядок перехода от текущего состояния к целевой модели.
  • docs/protocols/rest.md - требования и ограничения для REST.
  • docs/protocols/graphql.md - требования и ограничения для GraphQL.
  • docs/protocols/grpc.md - требования и ограничения для gRPC.
  • docs/protocols/websocket.md - требования и ограничения для WebSocket.
  • docs/protocols/soap.md - требования и ограничения для SOAP.

Ключевая идея продукта

Система строится вокруг трех уровней:

  • Workspace - граница данных и доступа команды.
  • Agent - curated MCP endpoint для конкретного сценария LLM.
  • Operation - низкоуровневый интеграционный контракт.

Operation описывает:

  • внешний протокол;
  • целевой endpoint или метод;
  • входную схему;
  • правила маппинга входных данных;
  • параметры выполнения;
  • правила маппинга выходных данных;
  • метаданные MCP tool.

Agent собирает ограниченный набор опубликованных операций в одну MCP-поверхность. Именно это решает проблему, когда один агент теряется в слишком большом наборе tools.

CI/CD статус

В репозитории настроены:

  • CI для Rust, UI и deployment manifests;
  • CD, который после успешного CI на main собирает versioned images, пушит их в GHCR и деплоит через docker compose pull;
  • containerized deployment через docker compose.

Поддерживаемые протоколы

В целевой модели платформа ориентируется на:

  • REST
  • GraphQL
  • gRPC
  • WebSocket
  • SOAP

Все пять протокольных семейств входят в целевой product scope. Разница только в очередности реализации.

Frontend e2e

Для UI настроен Playwright-контур, который поднимает локальный стек:

  • postgres в отдельном Docker-контейнере;
  • admin-api и mcp-server через cargo run;
  • apps/ui через локальный Node static+proxy server для e2e;
  • CRANK_DEMO_SEED=true для предсказуемых demo-данных.

Локальный запуск:

cd apps/ui
npm ci
npm run e2e:install
npm run e2e

Или через just:

just ui-e2e
S
Description
No description provided
Readme AGPL-3.0 6.1 MiB
Languages
Rust 57.3%
JavaScript 24.2%
HTML 9.3%
CSS 6.4%
Python 1.7%
Other 1%