Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
13 changes: 13 additions & 0 deletions docs/adr/0015-google-calendar-connection.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,17 @@ Calendar MCP передаёт `tenantId` и `actorId` в Connection Service. Т
Google Calendar этого пользователя и возвращает короткоживущий access token. Refresh token никогда
не покидает Connection Service.

Для первого среза Calendar MCP передаёт в Connection Service тот же короткоживущий service JWT,
который Action Service получил по Client Credentials и отправил через MCP Gateway. Это сохраняет
проверенный `tenant_id` без нового tenant-параметра в HTTP body. Токен содержит audience
`mcp-gateway`, `calendar-mcp` и `connection-service`, а также scopes `mcp:call`, `calendar:write` и
`connection:token`. Connection Service разрешает internal endpoint только `azp=action-service`.

Gateway и Calendar MCP не сохраняют этот токен и не пишут его в логи. Такая делегация ограничена
коротким сроком жизни токена и доверенным backend-контуром. Если сервисы выйдут из одного trust
boundary, отдельный ADR заменит делегацию на OAuth Token Exchange либо workload identity с ещё более
узкой аудиторией.

Если подключений нет или их несколько без выбранного default, действие не выполняется скрытно.
Пользователь получает понятный результат `connection_required` или выбирает календарь до нового
подтверждения.
Expand All @@ -65,6 +76,8 @@ Google-адаптер использует Calendar API `events.insert` и scope
- Публичные OAuth start/callback/disconnect принадлежат Connection Service.
- Внутренний token endpoint требует service JWT с audience `connection-service` и scope
`connection:token`.
- В первом срезе `azp` этого токена равен `action-service`; Calendar MCP не получает отдельный
статический client secret.
- Calendar MCP не принимает refresh token через MCP tool.
- MCP Gateway не хранит токены и не выбирает календарь.
- Action Service не шифрует provider credentials и не вызывает Google API.
Expand Down
9 changes: 5 additions & 4 deletions website/pnpm-lock.yaml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions website/pnpm-workspace.yaml
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
allowBuilds:
core-js: true
overrides:
fast-uri: 3.1.7
js-yaml: 4.3.2
serialize-javascript: 7.0.3
image-size: 2.0.3
Loading