MCP сервер
MCP-сервер открывает данные FreshOffice внешним AI-инструментам по протоколу Model Context Protocol: модель получает доступ к нужным сущностям системы — компаниям, контактам, сделкам, задачам, почте — и работает с ними из своего интерфейса.
Параметры подключения:
| Параметр | Значение |
|---|---|
| Адрес (endpoint) | https://mcp.freshoffice.ru/mcp |
| Транспорт | Streamable HTTP |
| Авторизация | Вход через браузер (OAuth) или заголовок Authorization: Bearer <токен> |
Два способа авторизации
Вход через браузер (OAuth) — самый простой способ: добавьте сервер, войдите со своим логином и паролем — готово. Так подключаются claude.ai, Claude Code и другие клиенты с поддержкой OAuth.
Каждое такое подключение появляется в реестре токенов (Настройка → API) отдельной строкой «MCP OAuth: имя приложения». Отключите строку — и доступ этого приложения будет немедленно отозван.
Токен API — универсальный способ для клиентов без поддержки OAuth. Используется тот же токен, что и для публичного API. Как его получить — в разделе Быстрый старт API: Настройка → API.
Важно
Токен даёт доступ к данным вашего аккаунта FreshOffice. Не публикуйте его и не передавайте третьим лицам. Если токен скомпрометирован — отключите его в реестре токенов (Настройка → API), и весь трафик по нему будет остановлен.
Подключение
Токен не нужен — подключение через вход в аккаунт:
- Откройте Settings → Connectors → Add custom connector.
- Укажите адрес
https://mcp.freshoffice.ru/mcp. - Нажмите Connect — откроется страница входа FreshOffice. Войдите со своим логином и паролем.
После входа инструменты FreshOffice появятся в чате. Доступ можно отозвать в любой момент: удалите коннектор в claude.ai или отключите строку «MCP OAuth: Claude» в реестре (Настройка → API).
Токен не нужен — при первом обращении откроется браузер со страницей входа FreshOffice:
claude mcp add --transport http freshoffice https://mcp.freshoffice.ru/mcp
Инструменты появятся в новой сессии Claude Code. Проверить подключение и пройти авторизацию можно командой /mcp внутри сессии.
По умолчанию сервер добавляется только для текущего проекта. Чтобы он был доступен во всех проектах, добавьте флаг --scope user.
Вариант с токеном (если вход через браузер не подходит, например на сервере):
claude mcp add --transport http freshoffice https://mcp.freshoffice.ru/mcp \
--header "Authorization: Bearer <токен>"
Сохраните токен в переменную окружения и добавьте сервер в файл конфигурации ~/.codex/config.toml:
export FRESHOFFICE_MCP_TOKEN="<токен>"
[mcp_servers.freshoffice]
url = "https://mcp.freshoffice.ru/mcp"
bearer_token_env_var = "FRESHOFFICE_MCP_TOKEN"
enabled = true
Либо командой через CLI:
codex mcp add freshoffice --url https://mcp.freshoffice.ru/mcp
После этого перезапустите Codex — сервер появится в списке codex mcp list.
Откройте Settings → MCP → Add new MCP Server или создайте файл .cursor/mcp.json в корне проекта (для всех проектов — ~/.cursor/mcp.json):
{
"mcpServers": {
"freshoffice": {
"url": "https://mcp.freshoffice.ru/mcp",
"headers": {
"Authorization": "Bearer <токен>"
}
}
}
}
После сохранения сервер появится в списке Settings → MCP — переключатель должен стать зелёным.
В свежих версиях Cursor можно не указывать headers — тогда при подключении откроется страница входа FreshOffice (OAuth).
Создайте файл .vscode/mcp.json в рабочей папке:
{
"servers": {
"freshoffice": {
"type": "http",
"url": "https://mcp.freshoffice.ru/mcp",
"headers": {
"Authorization": "Bearer <токен>"
}
}
}
}
Затем запустите сервер из панели MCP (команда MCP: List Servers в палитре команд).
В свежих версиях VS Code можно не указывать headers — тогда при запуске сервера откроется страница входа FreshOffice (OAuth).
Подойдёт любой MCP-клиент с поддержкой транспорта Streamable HTTP. Если клиент поддерживает OAuth-авторизацию MCP — достаточно указать адрес https://mcp.freshoffice.ru/mcp, вход пройдёт через браузер. Иначе укажите в настройках:
- URL:
https://mcp.freshoffice.ru/mcp - Заголовок:
Authorization: Bearer <токен>
Пример прямого вызова для проверки подключения:
curl -X POST https://mcp.freshoffice.ru/mcp \
-H "Content-Type: application/json" \
-H "Accept: application/json, text/event-stream" \
-H "Authorization: Bearer <токен>" \
-d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-03-26","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}'
В ответе придёт информация о сервере и его инструкции — значит, подключение работает. Дальнейшие запросы (например, tools/list) отправляются с заголовком Mcp-Session-Id из заголовков этого ответа — MCP-клиенты делают это автоматически.
Платформам, которые пока не поддерживают Streamable HTTP (например, агенты Yandex AI Studio), укажите вместо этого адрес легаси-транспорта HTTP+SSE: https://mcp.freshoffice.ru/mcp/sse — с тем же заголовком авторизации.
Доступные инструменты
| Инструмент | Что делает |
|---|---|
list_records |
Универсальный постраничный список записей любого модуля: компании, задачи, документы, финансы, продажи, сделки, товары, почта, журнал — по всем компаниям сразу, с фильтрами по датам, ответственным и тегам |
list_users |
Список активных пользователей (менеджеров) |
get_directory |
Значения справочника по его ID: типы компаний, статусы сделок, категории |
list_custom_filters |
Пользовательские фильтры модуля |
list_additional_fields |
Дополнительные поля модуля |
insert_company |
Создание компании или частного лица — сразу с почтами, телефонами, контактными лицами и реквизитами (ИНН) |
update_company |
Частичное обновление карточки компании: статус, ответственный, примечание, адрес |
get_company |
Карточка компании целиком: поля, все email и телефоны, реквизиты, контактные лица |
lookup_company_official |
Официальные данные из ЕГРЮЛ/ЕГРИП по ИНН или названию: наименование, коды, адрес, статус, руководитель (только для российского контура) |
add_company_requisites |
Добавление реквизитов существующей компании: ИНН, КПП, ОГРН, адреса, руководитель, банк |
find_company_contacts |
Контакты компании с её собственного сайта: главная плюс страницы «Контакты», «О компании», «Реквизиты». Возвращает найденные email с указанием страницы и уровня доверия, телефоны и ИНН из подвала. Нужен, когда у карточки нет почты: в реестре её обычно нет или она давно мертва, а на сайте — живая |
list_contacts |
Контактные лица с телефонами и почтой: по компании или поиском по имени |
insert_contact |
Добавление контактного лица к существующей компании |
update_contact |
Частичное обновление контактного лица: должность, ФИО, статус, примечание |
add_company_phone |
Добавление телефона существующей компании или контактному лицу |
add_company_email |
Добавление email существующей компании или контактному лицу |
list_tasks |
Задачи одной компании или сделки; все задачи и за период — через list_records |
insert_task |
Создание задачи: текст, исполнитель, сроки, напоминание |
update_task |
Частичное обновление задачи, включая закрытие с результатом |
insert_deal |
Создание сделки, привязанной к компании |
list_deal_goods |
Товарные позиции сделки |
add_deal_goods |
Добавление товаров из каталога в сделку |
update_deal_good |
Изменение позиции сделки: количество, цена, скидка |
list_document_goods |
Товарные позиции документа |
add_document_goods |
Добавление товаров из каталога в документ |
list_documents |
Документы одной компании или сделки; за период и по всем компаниям — через list_records |
insert_document |
Создание документа с автогенерацией номера |
update_document |
Частичное обновление документа: сумма, статус, номер, даты |
list_finance |
Движения денежных средств одной компании или сделки; за период и по всем компаниям — через list_records |
insert_finance |
Добавление прихода или расхода по счёту |
update_finance |
Частичное обновление движения: сумма, статья, счёт, примечание |
update_deal |
Частичное обновление сделки: смена этапа, суммы, ответственного, дат — меняются только переданные поля |
list_goods |
Каталог товаров и услуг: поиск по названию, артикулу, разделу |
insert_good |
Добавление товара или услуги в каталог |
update_good |
Частичное обновление товара: цена, остаток, артикул |
list_mail_accounts |
Список почтовых аккаунтов пользователя |
send_email |
Отправка письма через настроенный почтовый аккаунт |
Набор инструментов постепенно расширяется. Подробное описание методов публичного API, на которые они опираются, — в разделе API.
Как это использовать
После подключения достаточно обычного запроса на естественном языке — модель сама выберет нужный инструмент:
- «Найди и добавь 10 новых потенциальных клиентов» — модель найдёт компании в открытых источниках, уточнит у вас ответственного и тип контрагента, и создаст карточки с телефонами, почтой и контактными лицами
- «Покажи список клиентов, добавленных вчера»
- «Найди компанию с ИНН 7801234567»
- «Создай компанию Ромашка с телефоном +7 812 123-45-67 и почтой info@romashka.ru»
- «Сколько сделок в работе у менеджера Екатерины за август?»
- «Какие поступления денег были сегодня?»
- «Переведи сделку с Ромашкой на этап Согласование и поставь сумму 250 000»
- «Поставь Владимиру задачу позвонить в Ромашку завтра в 15:00 с напоминанием за полчаса»
- «Зафиксируй приход 150 000 от Продстара на расчётный счёт по статье Продажи»
Частые вопросы
Как отозвать доступ AI-инструмента
Все подключения — и по токену, и через вход в браузере — видны в реестре токенов (Настройка → API). Подключения через браузер подписаны как «MCP OAuth: имя приложения». Отключите строку — и доступ будет остановлен: активные запросы перестанут проходить, а продлить доступ приложение не сможет.
Подключил сервер, но инструменты не появились
MCP-клиенты загружают список инструментов при старте сессии. Начните новую сессию (новый чат) — инструменты подтянутся автоматически.
Клиент видит старый набор инструментов
Список инструментов кешируется на время подключения. Если сервер обновился, а новые инструменты не видны — переподключите интеграцию или начните новую сессию.
Вызовы возвращают ошибку авторизации
При входе через браузер: проверьте, что подключение не отключено в реестре (Настройка → API, строка «MCP OAuth: …»). Если отключали и включили заново или доступ истёк — переподключите интеграцию, снова войдя в аккаунт.
При подключении по токену: проверьте, что токен активен в реестре (Настройка → API) и что заголовок передаётся именно в виде Authorization: Bearer <токен> — со словом Bearer и пробелом перед токеном.
Можно ли выдать AI-инструменту ограниченный доступ?
Доступ наследует права пользователя: для токена — того, кто его создал, для входа через браузер — того, кто вошёл. Чтобы ограничить возможности модели, подключайтесь от имени пользователя с подходящей ролью и правами доступа.