Кратко
Превратите любой сервис OData V2 или V4, включая SAP Gateway, в инструменты MCP для Claude, ChatGPT и Copilot. Читает $metadata: названия, ключи, единицы.
Коротко: В AnythingMCP есть тип коннектора OData. Укажите ему сервис OData V2 или V4 либо SAP Gateway, и Claude, ChatGPT и Copilot получат пять инструментов: находить сервисы, читать их наборы сущностей и поля с бизнес-названиями, запрашивать строки и получать одну сущность по ключу. Запросы проверяются по $metadata перед отправкой, серверная постраничная выдача обрабатывается автоматически, а ответы V2 и V4 возвращаются в виде простых строк. Кроме того, $metadata сервиса можно импортировать как именованные инструменты: по одному инструменту list и get на каждый набор сущностей.
| Основное | |
|---|---|
| Протоколы | OData V2 и V4, версия определяется по $metadata |
| SAP | Каталог сервисов Gateway (V2 и V4), sap-client, sap-language, CSRF-токены для записи |
| Встроенные инструменты | 5, только чтение: список сервисов, описание сервиса, описание сущности, запрос, получение сущности |
| Импорт | $metadata → инструменты <set>_list и <set>_get для каждого набора сущностей |
| Аутентификация | Любой метод REST: Basic, OAuth 2.0, API-ключ, сертификаты, токен входа |
| Проверено | Northwind V2 и V4 и TripPin V4 на services.odata.org |
| Размещение | На своём сервере (open source, AGPL-3.0) или AnythingMCP Cloud |
Почему OData нужно больше, чем импорт REST
Сервис OData описывает сам себя. Его документ $metadata перечисляет все наборы сущностей, их ключи, тип каждого поля, а в случае SAP ещё и название, которое пользователь видит на экране, валюту или единицу измерения каждой суммы и то, какие поля являются измерениями, а какие показателями. Универсальный импорт REST отбрасывает большую часть этого, и модели приходится угадывать, что сумма NetAmount указана в валюте из TransactionCurrency или что аналитический сервис нужно фильтровать по параметру.
Коннектор OData читает $metadata и передаёт его модели. Claude видит, что у NetAmount название Net Amount и валюта в TransactionCurrency, а если он ошибётся в имени поля, коннектор ответит «Unknown field … Did you mean …», вместо того чтобы передавать ошибку серверу.
Два способа подключения
- Тип коннектора OData. Выберите OData при создании коннектора. Для системы SAP отметьте SAP Gateway (S/4HANA, ECC, BW): базовым URL будет хост, например
https://s4.example.com:44300, а сервисы берутся из каталога SAP. Для отдельного сервиса OData оставьте флажок снятым: базовым URL будет корень сервиса, напримерhttps://services.example.com/odata/v4/Sales. - REST-коннектор с настройками OData. REST-коннектор, в настройках которого есть блок
odata, получает те же встроенные инструменты; его собственные инструменты остаются обычными вызовами REST. Так устроен адаптер SAP S/4HANA Cloud.
Оба варианта работают на движке REST, поэтому доступны все методы аутентификации REST, а также повторные попытки, защита исходящих запросов от SSRF и прокси.
Встроенные инструменты
Каждый коннектор OData получает пять инструментов с именами <prefix>_…. Префикс состоит из имени коннектора и _odata либо задаётся вами.
| Инструмент | Что делает |
|---|---|
<prefix>_list_services | SAP: ищет в каталоге сервисов Gateway, V2 и V4, с кешированием на час. В остальных случаях возвращает сервисы, перечисленные в настройках, или единственный корень сервиса. |
<prefix>_describe_service | Наборы сущностей с названиями, ключами и числом полей, с пометками analytical (агрегирует сервер), parameters (параметризованное представление), requiredInFilter или readOnly. $metadata кешируется на 24 часа. |
<prefix>_describe_entity | Каждое поле с названием, типом, признаком ключа, полем валюты или единицы, текстовым полем, возможностью фильтрации и сортировки и ролью измерения или показателя; навигационные свойства; подсказки для аналитических и параметризованных наборов. |
<prefix>_query | select, filter, orderby, top (до 1000), skip, expand, parameters, а для V4 ещё apply и search. Сначала проверяются имена полей, соблюдаются обязательные фильтры, серверная постраничная выдача обрабатывается только на хосте самого коннектора, а ответ приводится к плоскому виду: простые строки, даты в ISO, десятичные числа строками, общее количество и nextSkip. |
<prefix>_get_entity | Одна сущность по ключу, в том числе по составному, например {"SalesOrder": "1", "SalesOrderItem": "10"}. |
Встроенные инструменты только читают данные и помечены для MCP-клиентов как инструменты только для чтения.
Настройка
Шаг 1: Запустите AnythingMCP
Для публичного сервиса OData подойдёт AnythingMCP Cloud без дополнительной настройки. Для SAP Gateway или любого сервиса в вашей собственной сети разверните AnythingMCP на своём сервере там, откуда этот сервис доступен:
mkdir anythingmcp && cd anythingmcp
curl -fsSLo docker-compose.yml \
https://raw.githubusercontent.com/HelpCode-ai/anythingmcp/main/docker-compose.quickstart.yml
printf 'JWT_SECRET=%s\nENCRYPTION_KEY=%s\n' "$(openssl rand -hex 32)" "$(openssl rand -hex 32)" > .env
docker compose up -d # → http://localhost:3000
Добавьте внутренние имена хостов в SSRF_ALLOWED_HOSTS; по умолчанию AnythingMCP отклоняет частные адреса.
Шаг 2: Создайте коннектор OData
Создайте новый коннектор, выберите OData и введите базовый URL. Чтобы попробовать без регистрации где бы то ни было, возьмите публичный сервис Northwind: https://services.odata.org/V4/Northwind/Northwind.svc, флажок SAP Gateway снят, без аутентификации. Для SAP отметьте SAP Gateway и укажите трёхзначный мандант и язык.
Шаг 3: Настройте аутентификацию и ограничьте сервисы
Выберите аутентификацию, которую ожидает ваш сервис: Basic с техническим пользователем, OAuth 2.0 (client credentials или authorization code), API-ключ, клиентский сертификат или токен входа. В настройках OData коннектора перечислите в поле Allowed services пути сервисов, которые может вызывать модель (* работает как подстановочный знак); остальные сервисы отклоняются.
Шаг 4: Проверьте подключение и импортируйте инструменты
Test connection читает каталог SAP или $metadata сервиса. Если вам нужны именованные инструменты для наборов сущностей, которые модель использует чаще всего, откройте Import Tools → OData $metadata, укажите путь сервиса (SAP) или оставьте поле пустым (отдельный сервис) и выберите наборы сущностей. Подробнее ниже.
Шаг 5: Подключите Claude, ChatGPT или Copilot
- Claude: Customize → Connectors → Add custom connector, вставьте URL вашего MCP-сервера. Пошагово: как добавить пользовательский коннектор в Claude.
- ChatGPT: добавьте тот же публичный HTTPS-URL как коннектор (приложение) в настройках ChatGPT.
- Claude Code, Cursor, VS Code / Copilot: добавьте URL с заголовком
X-API-Key.
Импорт инструментов из $metadata
Import Tools → OData $metadata превращает наборы сущностей в именованные инструменты: <set>_list с filter, select, orderby, top, skip и expand и <set>_get с параметрами ключа. Документ загружается с учётными данными коннектора; можно также вставить документ $metadata вручную и ограничить импорт отдельными наборами сущностей. Повторный импорт сервиса обновляет его инструменты и выводит из использования только те инструменты этого сервиса, которые исчезли, но никогда не трогает встроенные инструменты или инструменты другого сервиса.
В коннекторе OData импортированные и написанные вручную HTTP-инструменты получают мандант и язык SAP, формат JSON для V2 и ответы в плоском виде. Операции записи в SAP (POST, PUT, PATCH, DELETE) сначала получают CSRF-токен вместе с cookie сессии. Запись выполняется только через инструменты, которые вы импортируете или пишете сами.
SAP Gateway: S/4HANA, ECC и BW
- Технический пользователь типа System с продуктивным паролем в том манданте, который вы хотите читать.
- Роль с
S_SERVICEдля сервисов, которые может вызывать модель, и бизнес-полномочиями только на просмотр. Для просмотра каталога также нужны сервис каталога V2/IWFND/CATALOGSERVICEи каталог V4. SAP проверяет эти полномочия при каждом вызове; именно они и являются настоящей границей. - Активные сервисы в
/IWFND/MAINT_SERVICE(V2) и/IWFND/V4_ADMIN(V4). - Сеть: порт Gateway обычно внутренний. Разверните AnythingMCP на своём сервере внутри сети или подключайтесь к нему через VPN.
Политика SAP в отношении API предполагает, что сторонние интеграции используют опубликованные API (сервисы API_* в SAP Business Accelerator Hub) или сервисы, созданные вами; ограничьте Allowed services соответствующим образом.
Для S/4HANA on-premise и Private Cloud есть готовый адаптер SAP S/4HANA (OData). Он настраивает всё это с префиксом s4 (s4_list_services, s4_describe_service, s4_describe_entity, s4_query, s4_get_entity) и добавляет готовые инструменты для позиций проводок, документов фактуры, заказов клиентов, бизнес-партнёров, запасов материалов и продуктов, а также s4_guide, руководство по фильтрам, аналитическим сервисам и KPI. Он устанавливается с аутентификацией Basic, а затем коннектор можно переключить на OAuth 2.0. Адаптер SAP S/4HANA Cloud содержит те же встроенные инструменты под именами s4_cloud_* поверх своих API на базе communication arrangement.
Если вы предпочитаете читать таблицы S/4HANA напрямую, см. SAP S/4HANA через HANA SQL.
Настройки
| Настройка | Значение |
|---|---|
| SAP Gateway | Поиск по каталогу и параметры SAP. Включается автоматически, если задан мандант SAP. |
| Мандант SAP | Трёхзначный мандант, отправляется как sap-client в каждом запросе. |
| Язык | Отправляется как sap-language, например EN. |
| Allowed services | Пути сервисов, которые может вызывать модель, * как подстановочный знак. |
| Версия | v2 или v4, чтобы переопределить версию, определённую по $metadata. |
| Max rows | Ограничение числа строк на запрос, не более 1000. |
| Префикс инструментов | Префикс имён встроенных инструментов. |
Любая настройка может содержать {{VARIABLES}} из переменных окружения коннектора.
Примеры запросов
- «Какие сервисы в каталоге работают с документами фактуры?»
- «Опиши сущность заказа клиента: какие поля содержат суммы и в какой валюте?»
- «Чистая выручка по сбытовым организациям за сентябрь, по документам фактуры»
- «Покажи заказ клиента 1 со всеми позициями»
- Для Northwind: «Какие десять товаров имеют самую высокую цену за единицу и какой поставщик их поставляет?»
FAQ
Какие версии OData поддерживаются?
V2 и V4. Версия определяется по $metadata; её можно переопределить в настройках.
Нужно ли сначала конвертировать $metadata в OpenAPI?
Нет. Коннектор OData читает $metadata напрямую, а Import Tools → OData $metadata создаёт на его основе инструменты.
Может ли Claude изменять данные через OData? Не через пять встроенных инструментов: они только читают. Для записи нужны инструменты, которые вы импортируете или пишете сами, и роль MCP-сервера может их исключить; при записи в SAP CSRF-токен получается автоматически.
Работает ли это с SAP S/4HANA on-premise и ECC? Да, через SAP Gateway, с AnythingMCP на своём сервере, из которого Gateway доступен. Адаптер SAP S/4HANA (OData) даёт самый быстрый старт для S/4HANA.
Как обрабатываются большие результаты?
Запрос возвращает не более 1000 строк. Коннектор следует серверной постраничной выдаче на том же хосте и возвращает nextSkip, чтобы модель могла запросить следующую страницу.
Работает ли это также с ChatGPT и Copilot? Да. Тот же MCP-сервер работает в Claude, ChatGPT, GitHub Copilot, Cursor и Claude Code.
См. также
- Подключить SAP к Claude: все коннекторы SAP в одном обзоре
- SAP S/4HANA через HANA SQL: подключение через базу данных, со словарём данных SAP в виде инструментов
- OpenAPI в MCP: REST API со спецификацией OpenAPI или Swagger
- SOAP в MCP: сервисы WSDL
- OData в документации AnythingMCP
Это руководство помогло?