chore: rebrand project to crank

This commit is contained in:
a.tolmachev
2026-03-28 00:58:56 +03:00
parent 6821d0c64a
commit 26335e8d9b
101 changed files with 550 additions and 538 deletions
+22 -22
View File
@@ -279,7 +279,7 @@ gRPC target:
## 9. Основные компоненты
### `mcpaas-core`
### `crank-core`
Ответственность:
@@ -288,7 +288,7 @@ gRPC target:
- статусы и базовые protocol-specific target types,
- общие ошибки.
### `mcpaas-schema`
### `crank-schema`
Ответственность:
@@ -296,7 +296,7 @@ gRPC target:
- представление типов и полей для UI и runtime,
- валидация JSON относительно внутренней схемы.
### `mcpaas-mapping`
### `crank-mapping`
Ответственность:
@@ -305,7 +305,7 @@ gRPC target:
- применение input/output mapping,
- генерация чернового mapping по sample-данным и схемам.
### `mcpaas-proto`
### `crank-proto`
Ответственность:
@@ -314,7 +314,7 @@ gRPC target:
- извлечение services, methods и message schemas,
- преобразование protobuf metadata в нормализованные схемы.
### `mcpaas-registry`
### `crank-registry`
Ответственность:
@@ -323,7 +323,7 @@ gRPC target:
- выдача списка активных tools,
- инвалидация кэша и сигналы на reload.
### `mcpaas-runtime`
### `crank-runtime`
Ответственность:
@@ -333,7 +333,7 @@ gRPC target:
- применение output mapping,
- единообразные runtime-ошибки.
### `mcpaas-adapter-rest`
### `crank-adapter-rest`
Ответственность:
@@ -341,7 +341,7 @@ gRPC target:
- отправка запроса через `reqwest`,
- нормализация HTTP-ответа в JSON.
### `mcpaas-adapter-graphql`
### `crank-adapter-graphql`
Ответственность:
@@ -350,7 +350,7 @@ gRPC target:
- отправка запроса,
- извлечение `data` и ошибок из GraphQL-ответа.
### `mcpaas-adapter-grpc`
### `crank-adapter-grpc`
Ответственность:
@@ -358,7 +358,7 @@ gRPC target:
- вызов unary RPC метода,
- преобразование protobuf response обратно в нормализованный JSON.
### `mcpaas-admin-api`
### `crank-admin-api`
Ответственность:
@@ -370,7 +370,7 @@ gRPC target:
- endpoints для тестового выполнения операций,
- discovery endpoints для gRPC metadata.
### `mcpaas-mcp-server`
### `crank-mcp-server`
Ответственность:
@@ -379,7 +379,7 @@ gRPC target:
- делегирование выполнения в runtime,
- возврат нормализованного результата MCP-клиенту.
### `mcpaas-ui`
### `crank-ui`
Ответственность:
@@ -407,21 +407,21 @@ gRPC target:
Для реализации рекомендуется workspace-структура:
```text
mcpaas/
crank/
apps/
admin-api/
mcp-server/
ui/
crates/
mcpaas-core/
mcpaas-schema/
mcpaas-mapping/
mcpaas-proto/
mcpaas-registry/
mcpaas-runtime/
mcpaas-adapter-rest/
mcpaas-adapter-graphql/
mcpaas-adapter-grpc/
crank-core/
crank-schema/
crank-mapping/
crank-proto/
crank-registry/
crank-runtime/
crank-adapter-rest/
crank-adapter-graphql/
crank-adapter-grpc/
docs/
```
+4 -4
View File
@@ -169,7 +169,7 @@
"method": "PATCH",
"path_template": "/v1/users/{userId}",
"static_headers": {
"X-App-Source": "mcpaas"
"X-App-Source": "crank"
}
}
```
@@ -437,7 +437,7 @@
},
"auth_profile_ref": "auth_01hr7x8rj2d8nq8v0c4m4t1r9e",
"headers": {
"X-Client": "mcpaas"
"X-Client": "crank"
},
"protocol_options": {
"rest": null,
@@ -717,10 +717,10 @@ operation:
Эта модель задает основу для:
- Rust structs в `mcpaas-core`, `mcpaas-schema`, `mcpaas-mapping`;
- Rust structs в `crank-core`, `crank-schema`, `crank-mapping`;
- DTO для `admin-api`;
- таблиц `operations`, `operation_versions`, `operation_samples`, `operation_descriptors`;
- import/export layer для `YAML` конфигураций;
- runtime view, который будет передаваться в `mcpaas-runtime`.
- runtime view, который будет передаваться в `crank-runtime`.
Следующим логическим шагом после этого документа должна стать схема БД, в которой эти сущности будут разложены по таблицам и связям.
+1 -1
View File
@@ -2,7 +2,7 @@
## 1. Назначение документа
Этот документ фиксирует структуру хранения конфигураций, версий операций, загруженных артефактов и published runtime-view. Его цель - дать основу для SQL-миграций и для реализации `mcpaas-registry`.
Этот документ фиксирует структуру хранения конфигураций, версий операций, загруженных артефактов и published runtime-view. Его цель - дать основу для SQL-миграций и для реализации `crank-registry`.
В документе предполагается реляционная модель, ориентированная на `PostgreSQL`. Канонической считается схема, совместимая с `PostgreSQL`.
+4 -4
View File
@@ -2,14 +2,14 @@
## 1. Цель документа
Этот документ фиксирует минимальный воспроизводимый сценарий запуска и демонстрации MCPaaS без знания внутренней структуры кода.
Этот документ фиксирует минимальный воспроизводимый сценарий запуска и демонстрации Crank без знания внутренней структуры кода.
## 2. Предусловия
- доступен `PostgreSQL`;
- задан `MCPAAS_DATABASE_URL`;
- задан `MCPAAS_STORAGE_ROOT`;
- доступны `MCPAAS_ADMIN_BIND` и `MCPAAS_MCP_BIND`;
- задан `CRANK_DATABASE_URL`;
- задан `CRANK_STORAGE_ROOT`;
- доступны `CRANK_ADMIN_BIND` и `CRANK_MCP_BIND`;
- для UI установлен `Node.js`;
- для Rust-части установлен toolchain из `rust-toolchain.toml`.
+1 -1
View File
@@ -169,7 +169,7 @@ services:
- не публиковать внутренние сервисы наружу без необходимости;
- содержать healthchecks.
Практически это должно быть управляемо через env вроде `MCPAAS_PUBLISH_HOST`:
Практически это должно быть управляемо через env вроде `CRANK_PUBLISH_HOST`:
- `127.0.0.1` для local reverse proxy на том же Linux host;
- конкретный внутренний IP или `0.0.0.0` для отдельного центрального reverse proxy в LAN.
+5 -5
View File
@@ -55,10 +55,10 @@
### 5.1. Что пишется через TDD обязательно
- `mcpaas-schema`
- `mcpaas-mapping`
- `mcpaas-registry`
- `mcpaas-runtime`
- `crank-schema`
- `crank-mapping`
- `crank-registry`
- `crank-runtime`
- YAML import/export
- versioning logic
@@ -171,7 +171,7 @@
Удаленный репозиторий проекта:
```text
git@github.com:bsodfather/rmcp.git
git@github.com:bsodfather/crank.git
```
### 8.2. Ветки
+16 -16
View File
@@ -15,15 +15,15 @@
```mermaid
flowchart LR
UI[mcpaas-ui]
UI[crank-ui]
ADMIN[admin-api]
MCP[mcp-server]
REG[mcpaas-registry]
RUN[mcpaas-runtime]
CORE[mcpaas-core]
SCHEMA[mcpaas-schema]
MAP[mcpaas-mapping]
PROTO[mcpaas-proto]
REG[crank-registry]
RUN[crank-runtime]
CORE[crank-core]
SCHEMA[crank-schema]
MAP[crank-mapping]
PROTO[crank-proto]
REST[adapter-rest]
GQL[adapter-graphql]
GRPC[adapter-grpc]
@@ -58,15 +58,15 @@ flowchart LR
```mermaid
flowchart TD
CORE[mcpaas-core]
SCHEMA[mcpaas-schema]
MAP[mcpaas-mapping]
PROTO[mcpaas-proto]
REG[mcpaas-registry]
RUN[mcpaas-runtime]
REST[mcpaas-adapter-rest]
GQL[mcpaas-adapter-graphql]
GRPC[mcpaas-adapter-grpc]
CORE[crank-core]
SCHEMA[crank-schema]
MAP[crank-mapping]
PROTO[crank-proto]
REG[crank-registry]
RUN[crank-runtime]
REST[crank-adapter-rest]
GQL[crank-adapter-graphql]
GRPC[crank-adapter-grpc]
ADMIN[apps/admin-api]
MCP[apps/mcp-server]
+17 -17
View File
@@ -25,15 +25,15 @@
- `apps/admin-api`
- `apps/mcp-server`
- `apps/ui`
- `crates/mcpaas-core`
- `crates/mcpaas-schema`
- `crates/mcpaas-mapping`
- `crates/mcpaas-proto`
- `crates/mcpaas-registry`
- `crates/mcpaas-runtime`
- `crates/mcpaas-adapter-rest`
- `crates/mcpaas-adapter-graphql`
- `crates/mcpaas-adapter-grpc`
- `crates/crank-core`
- `crates/crank-schema`
- `crates/crank-mapping`
- `crates/crank-proto`
- `crates/crank-registry`
- `crates/crank-runtime`
- `crates/crank-adapter-rest`
- `crates/crank-adapter-graphql`
- `crates/crank-adapter-grpc`
Результат:
@@ -87,7 +87,7 @@ DoD:
Цель:
- реализовать `mcpaas-schema`.
- реализовать `crank-schema`.
Фичи:
@@ -113,7 +113,7 @@ DoD:
Цель:
- реализовать `mcpaas-mapping`.
- реализовать `crank-mapping`.
Фичи:
@@ -139,7 +139,7 @@ DoD:
Цель:
- реализовать `mcpaas-registry` и миграции.
- реализовать `crank-registry` и миграции.
Фичи:
@@ -171,8 +171,8 @@ DoD:
Фичи:
- `mcpaas-adapter-rest`
- `mcpaas-runtime` для REST
- `crank-adapter-rest`
- `crank-runtime` для REST
- REST test run
- создание REST operation
- publish REST operation
@@ -282,7 +282,7 @@ DoD:
Фичи:
- `mcpaas-adapter-graphql`
- `crank-adapter-graphql`
- GraphQL target support;
- variables mapping;
- `response_path`;
@@ -309,11 +309,11 @@ DoD:
Фичи:
- `mcpaas-proto`
- `crank-proto`
- descriptor loading;
- service/method discovery;
- protobuf normalization;
- `mcpaas-adapter-grpc`
- `crank-adapter-grpc`
- unary test runs;
- publish и вызов через MCP.
+2 -2
View File
@@ -18,7 +18,7 @@
Причина:
- проект задуман как `MCPaaS`, а не как локальный single-process adapter;
- проект задуман как `Crank`, а не как локальный single-process adapter;
- нужен удаленный доступ к опубликованным tools;
- published tools должны обновляться без пересборки и без локального обертывания каждого клиента.
@@ -127,7 +127,7 @@ MVP-контракт `mcp-server` строится вокруг JSON-RPC мет
1. MCP client вызывает tool.
2. `mcp-server` находит published runtime view.
3. Валидирует input относительно schema.
4. Делегирует вызов в `mcpaas-runtime`.
4. Делегирует вызов в `crank-runtime`.
5. Возвращает результат.
## 9. Обновление tools
+56 -56
View File
@@ -2,7 +2,7 @@
## 1. Цель документа
Этот документ фиксирует детальную структуру проекта до начала активной разработки. Его задача - заранее ограничить ответственность каждого компонента, избежать разрастания `mcpaas-core`, не допустить появления "универсальных" структур на все случаи жизни и сохранить понятные границы между доменной логикой, runtime, адаптерами, API и UI.
Этот документ фиксирует детальную структуру проекта до начала активной разработки. Его задача - заранее ограничить ответственность каждого компонента, избежать разрастания `crank-core`, не допустить появления "универсальных" структур на все случаи жизни и сохранить понятные границы между доменной логикой, runtime, адаптерами, API и UI.
Основной принцип: каждый crate отвечает за один слой системы. Внутри crate модули должны быть маленькими, тематическими и с минимальным количеством публичных сущностей.
@@ -20,7 +20,7 @@
### 2.2. Что запрещено
- помещать SQL, HTTP-клиенты или gRPC-клиенты в `mcpaas-core`;
- помещать SQL, HTTP-клиенты или gRPC-клиенты в `crank-core`;
- хранить в `core` "общие утилиты", не относящиеся к доменной модели;
- делать `runtime`, который напрямую читает БД;
- писать mapping-логику внутри REST, GraphQL или gRPC адаптеров;
@@ -41,28 +41,28 @@
Рекомендуемая структура:
```text
mcpaas/
crank/
apps/
admin-api/
mcp-server/
ui/
crates/
mcpaas-core/
mcpaas-registry/
mcpaas-runtime/
mcpaas-adapter-rest/
mcpaas-adapter-graphql/
mcpaas-adapter-grpc/
mcpaas-mapping/
mcpaas-schema/
mcpaas-proto/
crank-core/
crank-registry/
crank-runtime/
crank-adapter-rest/
crank-adapter-graphql/
crank-adapter-grpc/
crank-mapping/
crank-schema/
crank-proto/
```
Дополнительные crates `mcpaas-mapping`, `mcpaas-schema` и `mcpaas-proto` нужны затем, чтобы не перегружать `mcpaas-core`.
Дополнительные crates `crank-mapping`, `crank-schema` и `crank-proto` нужны затем, чтобы не перегружать `crank-core`.
## 4. Детальная декомпозиция по crate
### 4.1. `mcpaas-core`
### 4.1. `crank-core`
Назначение:
@@ -74,7 +74,7 @@ mcpaas/
Что должно лежать в crate:
```text
mcpaas-core/
crank-core/
src/
lib.rs
ids.rs
@@ -119,9 +119,9 @@ mcpaas-core/
Причина:
`mcpaas-core` должен быть максимально стабильным и независимым. Если положить туда все подряд, он станет точкой связности всей системы.
`crank-core` должен быть максимально стабильным и независимым. Если положить туда все подряд, он станет точкой связности всей системы.
### 4.2. `mcpaas-schema`
### 4.2. `crank-schema`
Назначение:
@@ -133,7 +133,7 @@ mcpaas-core/
Структура:
```text
mcpaas-schema/
crank-schema/
src/
lib.rs
schema/
@@ -173,7 +173,7 @@ mcpaas-schema/
Схемы будут использоваться почти везде, но это не повод тащить их в `core`. Иначе `core` станет тяжелым и начнет менять версию при каждом изменении схемной логики.
### 4.3. `mcpaas-mapping`
### 4.3. `crank-mapping`
Назначение:
@@ -186,7 +186,7 @@ mcpaas-schema/
Структура:
```text
mcpaas-mapping/
crank-mapping/
src/
lib.rs
model/
@@ -229,7 +229,7 @@ mcpaas-mapping/
не помещать mapping-правила в строковые поля, которые потом интерпретируются каждым адаптером по-своему. Mapping должен быть единым движком.
### 4.4. `mcpaas-proto`
### 4.4. `crank-proto`
Назначение:
@@ -240,7 +240,7 @@ mcpaas-mapping/
Структура:
```text
mcpaas-proto/
crank-proto/
src/
lib.rs
descriptor/
@@ -272,14 +272,14 @@ mcpaas-proto/
- `descriptor/registry.rs` - индексирование описаний для поиска services/methods.
- `reflect/client.rs` - клиент server reflection, если будет добавлен.
- `model/*` - protobuf-ориентированная промежуточная модель.
- `convert/to_schema.rs` - перевод protobuf message в `mcpaas-schema`.
- `convert/to_schema.rs` - перевод protobuf message в `crank-schema`.
- `convert/to_json.rs` и `from_json.rs` - преобразование runtime payload.
Почему отдельный crate:
protobuf-логика объемная и быстро начнет загрязнять gRPC adapter, если не отделить ее сразу.
### 4.5. `mcpaas-registry`
### 4.5. `crank-registry`
Назначение:
@@ -290,7 +290,7 @@ protobuf-логика объемная и быстро начнет загряз
Структура:
```text
mcpaas-registry/
crank-registry/
src/
lib.rs
model/
@@ -332,7 +332,7 @@ mcpaas-registry/
`registry` не выполняет операции и не знает о `reqwest`/`tonic`. Он только хранит и отдает согласованные представления.
### 4.6. `mcpaas-runtime`
### 4.6. `crank-runtime`
Назначение:
@@ -343,7 +343,7 @@ mcpaas-registry/
Структура:
```text
mcpaas-runtime/
crank-runtime/
src/
lib.rs
executor/
@@ -380,7 +380,7 @@ mcpaas-runtime/
`runtime` не должен знать, где хранится операция. Он получает уже готовую `runtime_operation`.
### 4.7. `mcpaas-adapter-rest`
### 4.7. `crank-adapter-rest`
Назначение:
@@ -389,7 +389,7 @@ mcpaas-runtime/
Структура:
```text
mcpaas-adapter-rest/
crank-adapter-rest/
src/
lib.rs
client.rs
@@ -411,7 +411,7 @@ mcpaas-adapter-rest/
REST adapter не валидирует MCP input и не знает о registry. Он получает уже подготовленный request contract.
### 4.8. `mcpaas-adapter-graphql`
### 4.8. `crank-adapter-graphql`
Назначение:
@@ -420,7 +420,7 @@ REST adapter не валидирует MCP input и не знает о registry.
Структура:
```text
mcpaas-adapter-graphql/
crank-adapter-graphql/
src/
lib.rs
client.rs
@@ -443,7 +443,7 @@ GraphQL adapter не занимается introspection по умолчанию
один GraphQL tool соответствует одному заранее определенному `query` или `mutation`. Адаптер не должен принимать от LLM произвольный GraphQL-документ, потому что в MCP-модели операция должна оставаться узкой, предсказуемой и валидируемой по фиксированной схеме.
### 4.9. `mcpaas-adapter-grpc`
### 4.9. `crank-adapter-grpc`
Назначение:
@@ -452,7 +452,7 @@ GraphQL adapter не занимается introspection по умолчанию
Структура:
```text
mcpaas-adapter-grpc/
crank-adapter-grpc/
src/
lib.rs
channel.rs
@@ -470,7 +470,7 @@ mcpaas-adapter-grpc/
Правило:
gRPC adapter не должен сам парсить `.proto`. Этим занимается `mcpaas-proto`. Иначе в адаптере смешаются discovery и execution.
gRPC adapter не должен сам парсить `.proto`. Этим занимается `crank-proto`. Иначе в адаптере смешаются discovery и execution.
Дополнительное ограничение:
@@ -609,22 +609,22 @@ UI должен декомпозироваться по пользователь
Целевой граф зависимостей:
```text
mcpaas-core
mcpaas-schema -> mcpaas-core
mcpaas-mapping -> mcpaas-core
mcpaas-proto -> mcpaas-core, mcpaas-schema
mcpaas-registry -> mcpaas-core, mcpaas-schema, mcpaas-mapping
mcpaas-adapter-rest -> mcpaas-core
mcpaas-adapter-graphql -> mcpaas-core
mcpaas-adapter-grpc -> mcpaas-core, mcpaas-proto
mcpaas-runtime -> mcpaas-core, mcpaas-schema, mcpaas-mapping, adapters
admin-api -> mcpaas-core, mcpaas-schema, mcpaas-mapping, mcpaas-proto, mcpaas-registry, mcpaas-runtime
mcp-server -> mcpaas-core, mcpaas-registry, mcpaas-runtime
crank-core
crank-schema -> crank-core
crank-mapping -> crank-core
crank-proto -> crank-core, crank-schema
crank-registry -> crank-core, crank-schema, crank-mapping
crank-adapter-rest -> crank-core
crank-adapter-graphql -> crank-core
crank-adapter-grpc -> crank-core, crank-proto
crank-runtime -> crank-core, crank-schema, crank-mapping, adapters
admin-api -> crank-core, crank-schema, crank-mapping, crank-proto, crank-registry, crank-runtime
mcp-server -> crank-core, crank-registry, crank-runtime
```
Критические ограничения:
- `mcpaas-core` ни от кого не зависит;
- `crank-core` ни от кого не зависит;
- адаптеры не зависят от `registry`;
- `runtime` не зависит от `admin-api` и `mcp-server`;
- `registry` не зависит от адаптеров;
@@ -675,17 +675,17 @@ mcp-server -> mcpaas-core, mcpaas-registry, mcpaas-runtime
Рекомендуемый порядок разработки:
1. `mcpaas-core`
2. `mcpaas-schema`
3. `mcpaas-mapping`
4. `mcpaas-registry`
5. `mcpaas-adapter-rest`
6. `mcpaas-runtime`
1. `crank-core`
2. `crank-schema`
3. `crank-mapping`
4. `crank-registry`
5. `crank-adapter-rest`
6. `crank-runtime`
7. `admin-api`
8. `ui`
9. `mcpaas-proto`
10. `mcpaas-adapter-grpc`
11. `mcpaas-adapter-graphql`
9. `crank-proto`
10. `crank-adapter-grpc`
11. `crank-adapter-graphql`
12. `mcp-server`
Причина такого порядка:
@@ -699,7 +699,7 @@ mcp-server -> mcpaas-core, mcpaas-registry, mcpaas-runtime
Если придерживаться этой декомпозиции, то:
- `mcpaas-core` останется маленьким и стабильным;
- `crank-core` останется маленьким и стабильным;
- schema и mapping не смешаются с transport-логикой;
- protobuf discovery не загрязнит gRPC runtime;
- `admin-api` и `mcp-server` останутся тонкими входными слоями;
+13 -13
View File
@@ -28,7 +28,7 @@
Рекомендуемая структура:
```text
var/mcpaas/
var/crank/
samples/
descriptors/
yaml-imports/
@@ -57,24 +57,24 @@ var/mcpaas/
Минимально ожидаются:
- `MCPAAS_DATABASE_URL`
- `MCPAAS_STORAGE_ROOT`
- `MCPAAS_ADMIN_BIND`
- `MCPAAS_MCP_BIND`
- `MCPAAS_MCP_REFRESH_MS`
- `MCPAAS_LOG_LEVEL`
- `MCPAAS_SECRET_PROVIDER`
- `MCPAAS_PUBLIC_BASE_URL`
- `MCPAAS_MCP_PUBLIC_URL`
- `CRANK_DATABASE_URL`
- `CRANK_STORAGE_ROOT`
- `CRANK_ADMIN_BIND`
- `CRANK_MCP_BIND`
- `CRANK_MCP_REFRESH_MS`
- `CRANK_LOG_LEVEL`
- `CRANK_SECRET_PROVIDER`
- `CRANK_PUBLIC_BASE_URL`
- `CRANK_MCP_PUBLIC_URL`
Опционально:
- `MCPAAS_ADMIN_TOKEN`
- `MCPAAS_MASTER_KEY`
- `CRANK_ADMIN_TOKEN`
- `CRANK_MASTER_KEY`
Стартовое значение для refresh published tools:
- `MCPAAS_MCP_REFRESH_MS=5000`
- `CRANK_MCP_REFRESH_MS=5000`
## 6. Логирование и трассировка
+6 -6
View File
@@ -343,35 +343,35 @@ where
## 11. Рекомендуемые `impl`-блоки по проекту
### В `mcpaas-core`
### В `crank-core`
- маленькие `impl` на domain types;
- status helpers;
- derived metadata methods.
### В `mcpaas-schema`
### В `crank-schema`
- schema validation;
- field traversal;
- shape helpers.
### В `mcpaas-mapping`
### В `crank-mapping`
- JSONPath validation;
- mapping rule helpers;
- execution helpers.
### В `mcpaas-proto`
### В `crank-proto`
- metadata conversion helpers;
- descriptor lookup helpers.
### В `mcpaas-registry`
### В `crank-registry`
- service methods, а не методы на доменных структурах;
- repository implementations.
### В `mcpaas-runtime`
### В `crank-runtime`
- orchestration services;
- adapter dispatch;
+6 -6
View File
@@ -17,10 +17,10 @@
Покрывают:
- `mcpaas-schema`
- `mcpaas-mapping`
- `mcpaas-proto`
- небольшие части `mcpaas-core`
- `crank-schema`
- `crank-mapping`
- `crank-proto`
- небольшие части `crank-core`
Что проверять:
@@ -35,8 +35,8 @@
Покрывают:
- `mcpaas-registry` с реальной БД;
- `mcpaas-runtime` с реальными adapter contracts;
- `crank-registry` с реальной БД;
- `crank-runtime` с реальными adapter contracts;
- `admin-api` на поднятом приложении;
- publish flow и YAML import/export.