chore: rebrand project to crank
This commit is contained in:
+22
-22
@@ -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
@@ -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`.
|
||||
|
||||
Следующим логическим шагом после этого документа должна стать схема БД, в которой эти сущности будут разложены по таблицам и связям.
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
## 1. Назначение документа
|
||||
|
||||
Этот документ фиксирует структуру хранения конфигураций, версий операций, загруженных артефактов и published runtime-view. Его цель - дать основу для SQL-миграций и для реализации `mcpaas-registry`.
|
||||
Этот документ фиксирует структуру хранения конфигураций, версий операций, загруженных артефактов и published runtime-view. Его цель - дать основу для SQL-миграций и для реализации `crank-registry`.
|
||||
|
||||
В документе предполагается реляционная модель, ориентированная на `PostgreSQL`. Канонической считается схема, совместимая с `PostgreSQL`.
|
||||
|
||||
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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
@@ -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
@@ -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.
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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
@@ -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;
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
Reference in New Issue
Block a user