# MCP-коннектор

## Обзор

Expense Budget Tracker предоставляет размещенный MCP-коннектор (Model Context Protocol) по адресу:

`https://mcp.expense-budget-tracker.com/mcp`

Точка подключения работает по Streamable HTTP и использует OAuth. Укажите этот URL в MCP-клиенте, который поддерживает удаленные Streamable HTTP-серверы и OAuth discovery. В процессе авторизации откроется браузер, где вы сможете войти в аккаунт и подтвердить доступ.

Коннектор не использует API-ключ. Учетными данными MCP служат токены доступа и обновления OAuth. Долгоживущий `ApiKey`, описанный в [справочнике Agent API](/ru/docs/api/), относится к отдельной прямой HTTP-интеграции и не принимается точкой подключения MCP.

## OAuth discovery и подключение

Размещенный коннектор публикует метаданные защищенного ресурса по адресу:

`https://mcp.expense-budget-tracker.com/.well-known/oauth-protected-resource/mcp`

Эти метаданные направляют клиент к серверу авторизации. Метаданные сервера доступны по адресу:

`https://auth.expense-budget-tracker.com/.well-known/oauth-authorization-server`

Совместимый клиент выполняет следующие шаги:

1. Подключается к `https://mcp.expense-budget-tracker.com/mcp` и получает метаданные защищенного ресурса.
2. Динамически регистрируется как публичный OAuth-клиент. Секрет клиента не используется.
3. Запускает поток Authorization Code и открывает URL авторизации в браузере пользователя.
4. Использует PKCE для каждого запроса авторизации. Поддерживается только метод формирования кодовой проверки `S256`.
5. Запрашивает `expenses:read`. Область `expenses:write` добавляется только тогда, когда клиенту нужен вызов `sql_execute`.
6. Обменивает код авторизации на токены доступа и обновления, а затем обновляет доступ по мере необходимости.

Не копируйте токены в промпты, историю чатов, исходный код или логи. Храните их только в хранилище учетных данных MCP-клиента.

## Области доступа

- `expenses:read` обязательна. Она разрешает получать список рабочих пространств, просматривать схему и выполнять запросы только для чтения.
- `expenses:write` необязательна. Она отдельно разрешает деструктивный инструмент `sql_execute`.

Запрашивайте минимальный набор областей, необходимый для задачи. Клиенту, который только анализирует данные или готовит отчеты, достаточно `expenses:read` без `expenses:write`.

## Инструменты

### `list_workspaces`

Возвращает рабочие пространства, доступные вошедшему пользователю. Перед чтением или изменением данных явно укажите нужное пространство с помощью полученного идентификатора.

### `get_schema`

Возвращает отношения и столбцы, доступные MCP в выбранном рабочем пространстве. Вызывайте инструмент до написания SQL, не предполагая имена таблиц и столбцов.

### `sql_query`

Выполняет один ограниченный SQL-запрос только для чтения в выбранном рабочем пространстве. Путь запроса дополнительно защищен контуром базы данных с правами только на чтение. Результат ограничен 100 строками, а крайний срок выполнения составляет 20 секунд.

### `sql_execute`

Выполняет ограниченный SQL, который изменяет данные в выбранном рабочем пространстве. Этот инструмент деструктивен и требует отдельной области `expenses:write`. До подтверждения вызова проверьте рабочее пространство и точный текст инструкции.

MCP-сервер в целом не является сервером только для чтения, потому что он предоставляет `sql_execute`. Гарантии режима только для чтения относятся именно к `sql_query` и его контуру базы данных.

## Безопасное использование

1. Вызовите `list_workspaces` и подтвердите с пользователем нужное рабочее пространство.
2. Вызовите `get_schema` до генерации SQL.
3. Используйте `sql_query` для проверки данных, подсчета итогов, сверки и отчетов.
4. Запрашивайте `expenses:write` только для задачи, которая должна изменить данные.
5. Перед `sql_execute` покажите точную инструкцию и ожидаемый результат, затем еще раз подтвердите рабочее пространство.
6. После записи проверьте результат с помощью `sql_query`.

Сервер ограничивает доступную поверхность SQL и набор отношений. Эти меры дополняют, но не заменяют внимательную проверку сгенерированного SQL.

## Ограничения

- не более 100 строк в результатах SQL
- крайний срок выполнения — 20 секунд
- доступ только к рабочим пространствам вошедшего пользователя
- `sql_query` использует ограниченную поверхность SQL и контур базы данных только для чтения
- `sql_execute` требует `expenses:write` в дополнение к обязательной области чтения

## Конфиденциальность и самостоятельное размещение

Авторизованный MCP-клиент может читать финансовые данные, а с областью `expenses:write` — изменять их. Перед подключением ознакомьтесь с [Политикой конфиденциальности](/ru/privacy/) и правилами обработки данных самого клиента.

Приведенные выше размещенные URL относятся только к управляемому сервису Expense Budget Tracker. Для собственного развертывания начните с [руководства по самостоятельному размещению](/ru/docs/self-hosting/) и настройте точку подключения MCP и метаданные OAuth для своих доменов. Реализация доступна в [репозитории исходного кода](https://github.com/kirill-markin/expense-budget-tracker).

---
*[Открыть HTML-версию этой страницы](https://expense-budget-tracker.com/ru/docs/mcp-connector/)*

*Удаленные MCP-клиенты с поддержкой OAuth могут подключиться к `https://mcp.expense-budget-tracker.com/mcp` с доступом OAuth Bearer. Обязательное разрешение — `expenses:read`. Клиент также может запросить необязательное разрешение `expenses:write`: оно отображается на экране согласия OAuth и требуется для изменения данных.*

*Агенты командной строки и прямых HTTP-запросов могут использовать отдельный Agent API, начав с `GET https://api.expense-budget-tracker.com/v1/` и следуя ответу сервиса обнаружения, чтобы получить ApiKey.*

*Подсказка: добавьте `.md` к любому URL этого сайта, чтобы получить чистую Markdown-версию страницы.*