Formul.io MCP-сервер
Подключите свои рецепты и библиотеку ингредиентов к Claude, ChatGPT и любому MCP-совместимому ассистенту — и работайте над рецептурой прямо в диалоге.
https://api.formul.io/mcp Что такое MCP-сервер Formul.io?
MCP (Model Context Protocol) — открытый стандарт, позволяющий ИИ-ассистентам вызывать внешние инструменты. MCP-сервер Formul.io даёт прямо в диалоге доступ к вашим сохранённым рецептам, вашим ингредиентам и библиотеке из более чем 10 000 ингредиентов, а также к тому же научному движку, что стоит за нашими калькуляторами.
Подключитесь один раз и попросите ассистента прочитать рецепт, оценить активность воды и срок годности, смоделировать изменения, найти проблемы, подобрать замены или собрать рецепты в коллекции — не покидая чат. Контроль остаётся за вами: ассистент делает только то, что разрешают выданные области доступа, а удаление требует явного подтверждения.
Инструменты для ассистента
Инструменты сгруппированы по задачам. Инструменты чтения получают данные или выполняют расчёты без сохранения изменений; для записи нужны выданные вами разрешения.
На любом тарифе, включая Free, можно пользоваться инструментами чтения, сохранять новые рецепты через create_recipe и import_recipe, сохранять заметки рецепта через save_recipe_note и запускать импорт с проверкой. Остальные инструменты записи — update_recipe, delete_recipe, delete_recipe_note, set_recipe_dag, save_collection, delete_collection, create_ingredient и update_ingredient — требуют Pro. Каждый вызов учитывается в лимитах запросов вашего тарифа.
-
list_recipesНайти и отфильтровать ваши сохранённые рецепты. -
get_recipeПолный состав и метрики одного рецепта. -
list_recipe_versionsСохранённые версии рецепта, новые сверху, и признак того, сохранено ли текущее состояние.
-
create_recipeСоздать и сохранить новую авторскую рецептуру из известных ингредиентов или клонировать существующий рецепт. -
update_recipeИзменить название, настройки, теги или полный состав — у ингредиентов есть флаг «excluded», чтобы оставить ингредиент в рецепте, но исключить из всех расчётов (например, для настаивания). Передайте revision из get_recipe как expected_revision — и если рецепт успели изменить в другом месте, обновление будет отклонено, а не записано поверх. -
import_recipeИмпортировать один внешний рецепт, уже структурированный ассистентом: проверить каждую строку ингредиента по порядку, затем атомарно сохранить описание, фазы, примечания к строкам, необязательные этапы процесса и все пошаговые инструкции источника как заметки рецепта. -
delete_recipeУдалить рецепт — требует подтверждения.
-
start_importЗапустить импорт с предпросмотром для сырого или содержащего несколько рецептов файла .xlsx/.xlsm, .csv/.tsv, .md/.txt, .pdf или .docx (base64). Форматы без читателя (.xls, .ods, .doc, .rtf, изображения), экспорт Formul.io и скан PDF отклоняются с указанием формата для конвертации или раздела приложения, который их читает. Язык источника определяется автоматически, если не передать его явно. Документ разбирается ИИ-моделью OpenAI; загруженный файл удаляется через 30 дней, задача импорта хранится до удаления аккаунта. Возвращает задачу для планирования и предпросмотра. -
get_import_previewОграниченный предпросмотр без записи: серверные статусы готовности рецептов, точные итоги по всему импорту, число затронутых рецептов, до 100 рецептов/исправлений на страницу и 5 кандидатов на пункт. -
resolve_import_itemРешить один помеченный пункт: сопоставить или создать ингредиент, принять оценочный вес, исключить непересчитываемую строку или строку с неподтверждённым названием, добавить или пропустить нераспознанную ячейку источника, подтвердить частично прочитанный файл либо включить/исключить сегмент. Возвращает стабильную квитанцию плана; затем заново запросите предпросмотр по job ID. -
commit_importСоздать рецепты именно из просмотренного плана, передав expected_plan_id: устаревшее превью отклоняется, повторный импорт остаётся идемпотентным, а повторный коммит уже созданного плана возвращает его результаты.
-
search_ingredientsИскать в ваших и в общей библиотеке. Возвращает состав, аллергены и массу, которую записанные компоненты не объясняют; полный вид добавляет углеводы и источник справочных данных. Если ничего не найдено, предлагает продукты из баз USDA/CIQUAL. -
resolve_ingredientsСопоставить весь список названий ингредиентов рецепта с id из библиотеки за один вызов. -
find_substitutesЗамены, ранжированные по составу, диете и вкусу: состав, аллергены и готовая замена для симуляции; полный вид добавляет углеводы и источник справочных данных. -
create_ingredientДобавить свой ингредиент с полным составом, включая измеренные общие полиолы и каждый названный полиол (эритрит, сорбит, мальтит, изомальт, ксилит, маннит, лактит, глицерин), а также вещества, которые не выражаются макронутриентами (кислоты, алкалоиды какао, разрыхлители), — через components. В ответе указывается неучтённая масса, если она осталась. -
update_ingredientИзменить только переданные поля своего ингредиента; null сбрасывает nullable-значение, поэтому вычисляемые поля могут быть рассчитаны заново; components заменяет всю карту прочих веществ; неизвестные и защищённые поля отклоняются.
-
analyze_recipeОценка качества, проблемы, проверка правил и предложения по улучшению. -
get_recipe_metricsАктивность воды, срок годности, состав и пищевая ценность — для сохранённого рецепта или произвольного списка ингредиентов. Срок годности приходит как микроорганизмы, способные расти при этой активности воды, и условия хранения, которые нужны продукту, со справочным числом дней. Каждая метрика приходит с целевым диапазоном для этого калькулятора и стиля и с отклонением от него. -
simulate_changesСравнить множество вариантов рецептуры за один вызов, ничего не сохраняя. Отправной точкой может быть сохранённый рецепт или произвольный список ингредиентов; каждый сценарий возвращается дельтами «до/после» вместе с диапазонами, по которым он оценивается, и сообщает, когда меняется класс срока годности или нужные продукту условия хранения. Укажите нужные метрики, чтобы добавить их.
-
advise_formulationЕсли метрика не выходит в диапазон, показывает, чего ещё можно достичь текущими ингредиентами и какой класс ингредиента откроет остальное. Рецепт не предлагает и компромисс за вас не выбирает. -
get_calculator_guideОптимальные диапазоны, классы срока годности по активности воды, правила рецептур и схема настроек для калькулятора; отдельные секции отдают глоссарий метрик и шаблон технологического графа. Каждый стиль перечислен с фразой о том, что это такое, чтобы можно было выбрать; передайте его (сорбет, соус, трюфель…) — и диапазоны вернутся для этого стиля, потому что у разных стилей они сильно отличаются.
-
list_recipe_notesПрочитать оговорки и советы, сохранённые в рецепте: закреплённые первыми, постранично. -
save_recipe_noteСохранить оговорку, совет или обоснование. -
delete_recipe_noteУдалить заметку — требует подтверждения.
-
list_collectionsПросмотреть ваши или публичные коллекции. -
get_collectionКоллекция с входящими рецептами и вашими приватными инструкциями и требованиями проекта. -
save_collectionСоздать или обновить коллекцию, включая инструкции и требования проекта. -
delete_collectionУдалить коллекцию — требует подтверждения.
-
get_recipe_dagПрочитать многоэтапный граф процесса рецепта, включая исходные заметки и инструкции для кондитера на каждом этапе, и токен графа для безопасной записи. -
set_recipe_dagСоздать или заменить граф процесса, включая исходные заметки и инструкции для кондитера на этапах; не перезапишет граф, изменённый после чтения.
Claude.ai в браузере Рекомендуется · без ключа
Самый простой путь. Claude.ai сам проходит весь поток OAuth.
- 1 Откройте claude.ai и перейдите в Settings → Connectors.
- 2 Нажмите Add custom connector.
- 3 Назовите его Formul.io и вставьте адрес MCP-сервера ниже. Поля OAuth Client ID и Secret оставьте пустыми — они определяются автоматически.
- 4 Нажмите Add. Claude.ai перенаправит вас на Formul.io для авторизации.
- 5 Войдите, если потребуется, проверьте запрашиваемые разрешения и нажмите Allow.
- 6 Начните новый чат и спросите Formul.io — примеры запросов ниже.
https://api.formul.io/mcp api.formul.io запрашивает доступ к вашему аккаунту Formul.io.
https://claude.ai/api/mcp/auth_callback - Запуск расчётов рецептур
- Чтение ваших рецептов
- Создание и изменение рецептов
- Поиск по базе ингредиентов
- Создание и изменение ингредиентов
- Диагностика проблем рецепта
Claude Desktop API-ключ
Для Claude Desktop или любого клиента со статическим bearer-токеном.
1. Создайте API-ключ
Войдите в Formul.io, откройте Settings → Security и создайте API-ключ. Выберите только нужные разрешения:
- Запуск расчётов рецептур
- Чтение ваших рецептов
- Создание и изменение рецептов
- Поиск по базе ингредиентов
- Создание и изменение ингредиентов
- Диагностика проблем рецепта
2. Добавьте его в конфигурацию
Отредактируйте claude_desktop_config.json (macOS: ~/Library/Application Support/Claude/, Windows: %APPDATA%\Claude\):
{
"mcpServers": {
"formulio": {
"url": "https://api.formul.io/mcp",
"headers": {
"Authorization": "Bearer fio_YOUR_KEY_HERE"
}
}
}
} Перезапустите Claude Desktop — инструменты Formul.io появятся в списке.
ChatGPT
Для собственного подключения включите Developer mode в Settings → Security and login, если это разрешено вашим аккаунтом или рабочим пространством. Откройте ChatGPT Plugins, нажмите + и добавьте адрес MCP, указанный выше. Войдите в Formul.io, проверьте разрешения и добавьте подключение в новый диалог.
Инструкция подключения OpenAIСвои агенты и OAuth 2.1
Для собственного MCP-клиента или программного доступа. Аутентификация по API-ключу (Bearer fio_…) или токену доступа OAuth 2.1.
Транспорт
POST https://api.formul.io/mcp GET https://api.formul.io/mcp Конечные точки OAuth 2.1
Используйте authorization_code с PKCE S256. Issuer: https://api.formul.io. Resource: https://api.formul.io/mcp — передавайте его в запросах authorize, token и refresh. Метод аутентификации публичного клиента — none. Токен доступа живёт 15 минут; каждое обновление заменяет прежнюю пару и начинает новый 30-дневный срок refresh-токена.
| Назначение | Адрес |
|---|---|
| Обнаружение (RFC 8414) | https://api.formul.io/.well-known/oauth-authorization-server |
| Авторизация | https://app.formul.io/oauth/authorize |
| Обмен токена | https://api.formul.io/api/v1/oauth/token |
| Регистрация клиента | https://api.formul.io/api/v1/oauth/register |
| Отзыв токена | https://api.formul.io/api/v1/oauth/revoke |
Быстрый старт
# 1. Register your client once
curl -X POST https://api.formul.io/api/v1/oauth/register \
-H "Content-Type: application/json" \
-d '{
"client_name": "My App",
"redirect_uris": ["https://myapp.example.com/callback"],
"grant_types": ["authorization_code", "refresh_token"],
"scope": ["calculate", "recipes:read", "ingredients:read"]
}'
# Save the returned client_id. This is a public client with no client secret.
# 2. Send the user to authorize (PKCE, S256)
https://app.formul.io/oauth/authorize
?client_id=YOUR_CLIENT_ID
&redirect_uri=https://myapp.example.com/callback
&response_type=code
&scope=calculate+recipes:read+ingredients:read
&code_challenge=BASE64URL(SHA256(code_verifier))
&code_challenge_method=S256
&resource=https%3A%2F%2Fapi.formul.io%2Fmcp
&state=RANDOM_STATE
# 3. Exchange the code for tokens
curl -X POST https://api.formul.io/api/v1/oauth/token \
-d "grant_type=authorization_code" \
-d "code=AUTH_CODE" \
-d "redirect_uri=https://myapp.example.com/callback" \
-d "client_id=YOUR_CLIENT_ID" \
-d "code_verifier=YOUR_VERIFIER" \
--data-urlencode "resource=https://api.formul.io/mcp"
# -> { "access_token": "...", "refresh_token": "...", "expires_in": 900 }
# 4. Call the MCP server
curl -X POST https://api.formul.io/mcp \
-H "Authorization: Bearer ACCESS_TOKEN" \
-H "Content-Type: application/json" \
-d '{"jsonrpc":"2.0","method":"tools/list","id":1}' Ваши данные и подключённые ассистенты
Ассистент получает данные рецептов, ингредиентов, коллекций и расчётов, которые возвращают вызванные им инструменты в пределах выданных разрешений. Полученная копия обрабатывается по его политике конфиденциальности. Отключите интеграцию в настройках ассистента, чтобы прекратить её использование; ключи API можно отозвать в Formul.io: Настройки → Безопасность. Отключение не удаляет копии, уже полученные ассистентом.
Политика конфиденциальностиОбласти доступа
Выдавайте только необходимые разрешения. Если инструменту потребуется дополнительный доступ, клиент сможет запросить ваше согласие, сохранив прежние разрешения. Ограничения подписки действуют отдельно от разрешений OAuth.
| Область | Что разрешает |
|---|---|
recipes:read | Просмотр рецептов, коллекций, заметок и графов процесса. |
recipes:write | Создание, изменение и удаление рецептов, заметок и коллекций; графы процесса. |
ingredients:read | Поиск в библиотеке ингредиентов и подбор замен. |
ingredients:write | Создание собственных ингредиентов. |
calculate | Расчёт метрик и симуляций, чтение справочников калькуляторов. |
diagnose | Анализ рецептов — оценка качества, проблемы и исправления. |
Попробуйте после подключения
Ассистент работает с вашим собственным аккаунтом.
Решение проблем
Нужна помощь?
Эта страница — основная документация MCP-сервера Formul.io. Остались вопросы? Мы читаем каждое сообщение.