Права MCP¶
English · Русский
Tool discovery — перечень возможностей, а не разрешение на набор данных. Сначала сравните версию пакета и tools/list, затем настройте узкую политику фактического клиента.
Кто предоставляет доступ¶
| Слой | Ответственный | Что разрешает |
|---|---|---|
| MCP client | Оператор клиента | Discovery/calls и confirmation rules, если клиент их поддерживает |
| OS/контейнер | Администратор deployment | Process identity, readable inputs, writable outputs/tmp, secrets и outbound network |
| Application configuration | Администратор server | Workspace, DB allowlists, optional row tools и budgets |
| База данных | DBA | Read-only grants и metadata visibility |
| Workflow review | Человек | Exact synthetic spec; отдельно local controlling-TTY receipt для preservation |
Оба console servers используют stdio: клиент запускает локальный процесс и обменивается сообщениями через stdin/stdout. Эти entrypoints не требуют listening HTTP port, remote MCP login, MCP OAuth scopes или inbound firewall rule. Не придумывайте permissions/scopes keys в server config. DB authentication — отдельное исходящее подключение.
Client confirmation не ограничивает другой клиент и не создаёт OS sandbox. Нормальный server не предоставляет произвольный per-tool ACL; optional row-tool registration — отдельная настройка. Для строгой изоляции нужны отдельные process credentials, mounts и network policy.
Минимальные права процесса¶
Synthetic generation требует runtime, выбранные workspace inputs/spec/rules, запись новых bundles и bounded tmp. Ни DB/provider credentials, ни network не нужны. TEST_DATA_AGENT_WORKSPACE_ROOT должен быть узкой существующей папкой; без него используется cwd. Paths проверяются на выход за root и symlink escapes, но OS rights владельца процесса не исчезают.
Trino profiling требует только проверенные TLS/auth files, временное хранилище и outbound доступ к выбранному endpoint read-only ролью; generator workspace не нужен. Transformation читает только разрешённые snapshots/policies/mappings/receipt, пишет новый bundle и owned temporary work. Configured SQL capture отдельно требует DB authority и собственного provisioned network deployment.
Secrets хранятся вне client-accessible workspace. Root, sudo, весь home и Docker socket worker не нужны. Generator MCP не имеет folder-overwrite argument: CLI --overwrite не расширяет его права.
Generator tools¶
| Tool | Эффект и review |
|---|---|
| profile_csv | Прочитать выбранный CSV, создать безопасный profile |
| infer_dataset_spec | Создать spec из безопасного profile; без generation |
| plan_dataset | Создать planning directory; остановиться для human review |
| plan_trino_dataset | То же по bounded safe Trino profile; подключения к БД нет |
| inspect_dataset_plan | Прочитать состояние и current fingerprint |
| approve_dataset_plan | После human review exact reviewed_spec_sha256 создать synthetic output и completion |
| recover_dataset_plan | Revalidate ранее одобренный checkpoint без новых строк |
| generate_dataset | Прямая generation из reviewed spec/rules; сама не enforce planning sequence |
| export_dataset | Новая generation в выбранном формате, не конвертация source rows |
| validate_dataset | Прочитать matching spec/manifest/bundle; новый report только при output_path |
| review_transformation | Value-free review fixed snapshot; не approve/execute |
| execute_transformation | Exact digest и matching local receipt при preserve; новый mixed-origin bundle |
| common_transformation | Batch review/temporary validate/execute; local receipt потребляется, не выдаётся |
| configured_query_session | Open один раз захватывает разрешённые queries; дальнейшие review/validate/execute используют frozen capture без reconnect; expiry/close/shutdown очищают owned state |
Console composition регистрирует 14 tools. Module-level SDK object содержит 12 base tools; common/session extensions требуют явно внедрённого workspace/session owner и close при shutdown. Ответы содержат metadata, reports и paths, а не source/generated rows или mapping literals. Audit добавляет started/terminal events даже к read-only calls.
Synthetic approval проверяет hash, но не может доказать фактическое чтение spec человеком. Клиент обязан получить review перед approve; direct generation не должна обходить эту политику. Возобновление старого чата не расширяет scope: проверьте сохранённый plan и полный текущий spec перед новым consent.
Preservation receipt выдаёт только человек в local controlling-TTY. MCP не имеет issuer, approved boolean или права вводить APPROVE. Tool confirmation, database grant и новый hash не заменяют matching receipt. После изменения source/policy/classification/mapping нужен новый review/approval.
Trino tools¶
Default aggregate-only tools: list_catalogs, list_schemas, list_tables, describe_table, profile_table, profile_column, profile_table_safe и ограниченные rule probes profile_foreign_key, profile_temporal_ordering, profile_formula_rule, profile_conditional_required, profile_conditional_allowed_values, profile_aggregate_mapping.
Explicit opt-in run_safe_select отсутствует по умолчанию и включается только TRINO_ENABLE_SAFE_SELECT=true. Он возвращает bounded row-shaped результат: strings и распознанные sensitive values маскируются, другие source values могут сохраниться. Не используйте эти строки для генерации и не передавайте LLM.
Catalog/schema allowlists — независимые множества, а не пары. TRINO_ALLOWED_TABLE_COLUMNS сужает profile_table_safe, но не является универсальным ACL metadata/count/rule/row tools. Strict table/column visibility должна задаваться самой DB identity. Wildcard разворачивает разрешённую таблицу в bounded explicit columns, не даёт unrestricted SQL или право раскрывать категории.
Проверка политики¶
Разрешите plan/inspect; потребуйте human review перед approve; добавляйте profile/infer/validate/direct generation по задаче. Transformation и row-returning tools исключите из synthetic-only policy.
На вымышленной фикстуре проверьте отсутствие generated output до approval, confinement и responses без rows. Независимо проверьте DB grants и отказ вне allowlist. Missing tools требуют проверки версии/extras/runtime/client policy, а не расширения прав. Safety refusal исправляется сужением scope, paths или budgets; unrestricted/insecure flags не являются recovery.
MCP server не требует OpenAI/GigaChat keys и не предоставляет advisor tool. Собственный AI-клиент может использовать внешний model provider по своей политике; его shell/file access — отдельные возможности.