Skip to main content
Glama
yanivshoval0104

siebel-mcp-gateway

Siebel MCP Gateway

Предоставляет Oracle Siebel REST API в виде MCP-инструментов через потоковый HTTP, чтобы агентный клиент мог запрашивать/создавать/обновлять/удалять записи Siebel и получать каталог объектов, не храня у себя учётные данные Siebel.

Режим mock моделирует синтетическую демо-схему направления в здравоохранении (пациент → направление в сообщество/больницу → обязательство по форме 17 → история лечения), созданную так, чтобы честно отражать набор задокументированных, намеренных дефектов качества данных, а не сглаживать их — дублирующиеся записи пациентов в двух организациях, поле статуса, которое на самом деле содержит срочность, скрипт, который молча переопределяет заявленные ограничения Workflow, два поля «осталось визитов», которые расходятся. Все данные синтетические.

Стек

Python 3.12+, официальный SDK mcp (MCPServer, текущее название того, что в старых версиях SDK называлось FastMCP), httpx для исходящих вызовов Siebel, uvicorn в качестве ASGI-сервера.

Related MCP server: MuleSoft Code MCP

Локальный запуск

python3 -m venv .venv && source .venv/bin/activate
pip install -r requirements.txt
cp .env.example .env
# Fill in .env, or for a first run without a live Siebel instance:
#   MOCK_MODE=true
#   MCP_GATEWAY_TOKEN=<any string you'll also give your client>
MOCK_MODE=true MCP_GATEWAY_TOKEN=dev-token \
  uvicorn app.server:app --host 0.0.0.0 --port 8000

Проверка здоровья: curl http://localhost:8000/healthz{"status":"ok"} (аутентификация не требуется, поэтому внешние проверки работоспособности работают).

Конечная точка MCP: http://localhost:8000/mcp — каждый запрос должен содержать Authorization: Bearer <MCP_GATEWAY_TOKEN>, так как сама конечная точка не имеет другого контроля доступа после публичного развёртывания.

Тесты

python3 -m pytest -v

Все тесты выполняются против хранилища в памяти или имитированного HTTP-транспорта — без сетевых вызовов, без необходимости в реальном экземпляре Siebel.

Развёртывание на Render

  1. Запушьте этот репозиторий на GitHub.

  2. Сначала предоставьте Render доступ к репозиторию, если он ещё не подключён. GitHub App от Render видит только те репозитории, к которым ему явно предоставлен доступ — новый репозиторий не появится в списке выбора репозиториев Render только потому, что вы его владелец. Перейдите на github.com/settings/installations → найдите RenderConfigure → либо переключитесь на «All repositories», либо добавьте этот репозиторий в список разрешённых → Save. Только после этого он снова появится на экране подключения Render.

  3. В панели Render: New → Blueprint (не «Web Service» — в этом репозитории есть render.yaml, и именно Blueprint его читает). Подключите репозиторий, подтвердите ветку main и путь по умолчанию render.yaml.

  4. Render покажет форму для каждой переменной окружения, помеченной sync: false в render.yaml — заполните их перед развёртыванием:

    • MCP_GATEWAY_TOKEN — сгенерируйте, например, openssl rand -hex 32

    • MOCK_MODEtrue, чтобы сразу начать обслуживать mock-данные (рекомендуется, пока реальный экземпляр Siebel ещё не готов), false, если у вас уже есть реальные учётные данные Siebel для ввода ниже

    • SIEBEL_BASE_URL / SIEBEL_USERNAME / SIEBEL_PASSWORD — требуются только если MOCK_MODE=false; оставьте пустыми, если начинаете в mock-режиме

  5. Нажмите Deploy Blueprint. Render назначит https://<your-service>.onrender.com.

Чтобы позже изменить любые из этих значений (например, переключить MOCK_MODE, когда реальный экземпляр Siebel будет готов): откройте сервис (не Blueprint) → вкладка Environment → измените значение → Save Changes, что вызовет повторное развёртывание.

Подключение вашего MCP-клиента к развёрнутому шлюзу

  • URL: https://<your-service>.onrender.com/mcp

  • Транспорт: потоковый HTTP

  • Аутентификация: статический bearer-токен/API-ключ, не OAuth — установите заголовок Authorization: Bearer <MCP_GATEWAY_TOKEN> (то же значение из шага 4 выше). Если интерфейс аутентификации вашего клиента запрашивает имя заголовка и значение по отдельности, а не один объединённый заголовок, имя заголовка — Authorization, значение — Bearer <token> (включая слово «Bearer») — если это даёт 401, попробуйте передать только сам токен, так как некоторые клиенты добавляют префикс Bearer сами.

Заметки из реального развёртывания

  • Mock-хранилище только в памяти. Всё, что создано/обновлено/удалено во время сеанса, сохраняется только до тех пор, пока работает процесс сервера. Повторное развёртывание или остановка бесплатного экземпляра Render после ~15 минут простоя и холодный старт при следующем запросе сбрасывают его обратно к исходным данным. Это ожидаемое поведение mock-режима, а не ошибка.

  • Зависимость клиентского транспорта Python SDK mcp — это httpx2, а не обычный httpx — это актуально только если вы пишете собственного MCP-клиента для этого шлюза, используя хелпер streamable_http_client из SDK, а не высокоуровневое клиентское приложение; он ожидает httpx2.AsyncClient для аргумента http_client=, а не обычный httpx.AsyncClient.

Контрольный список перехода на реальный экземпляр

Когда реальный экземпляр Siebel будет готов:

  • Установите SIEBEL_BASE_URL на реальный экземпляр (без завершающего слэша), например https://<siebel-host>/siebel/v1.0

  • Установите SIEBEL_USERNAME / SIEBEL_PASSWORD

  • Установите SIEBEL_VERIFY_TLS=false только если экземпляр всё ещё использует самоподписанный сертификат — верните true, когда появится настоящий

  • Установите MOCK_MODE=false

  • Повторно разверните, затем проведите смоук-тест с помощью siebel_list_objects и search_facilities, прежде чем направлять реальный трафик агентов

Инструменты

Универсальные (работают с любым бизнес-компонентом: Contact, Employee, Medical Facility, Appointment Slot, Referral Request, Commitment Form, Treatment History):

Инструмент

Назначение

siebel_query

Список/поиск записей: searchspec, fields, page_size, start_row

siebel_get

Получить одну запись по row_id

siebel_create

Создать запись из словаря fields

siebel_update

Обновить fields записи по row_id

siebel_delete

Удалить запись по row_id

siebel_list_objects

Список бизнес-компонентов, доступных учётной записи

Удобные обёртки, более тонкая поверхность для типовых демо-запросов:

Инструмент

Назначение

search_facilities

По коду специальности и/или точному городу

search_contacts

По префиксу фамилии

create_referral

Пациент + врач + специальность + срочность; начинается с Stage Code = COMMUNITY_SEARCH

Примечания о допущениях Siebel REST API, заложенных здесь

  • Аутентификация — HTTP Basic на каждом исходящем вызове (отдельно от собственной проверки bearer-токена этого шлюза на входящих MCP-запросах — два разных уровня аутентификации, не путайте их).

  • Грамматика URL: {BASE}/data/{BusinessObject}/{BusinessComponent}. BO и BC не всегда имеют одинаковые имена — например, Referral Request — дочерний BC в BO Patient Referral, Appointment Slot — дочерний BC в Appointment Management. Инструменты принимают имя BC; клиент внутренне находит нужный BO. Сегменты пути URL-кодируются, поэтому многословные имена работают.

  • Ответы списков приходят как {"items": [...]}; массив "links" в каждой записи удаляется перед возвратом модели, чтобы экономить токены.

  • Ответы с кодом не 2xx отображаются как HTTP-код статуса плюс собственный текст сообщения Siebel; при 401 добавляется явный префикс «проверьте учётные данные Siebel». Исходящие вызовы имеют тайм-аут 30 секунд.

  • Некоторые поля вычисляются, а не хранятся (Age, Days Waiting, Visits Remaining, Is Expired, Entry Gap Days, а также поля соединения Facility/Doctor/Patient) — они вычисляются заново при каждом чтении, что соответствует поведению реальных вычисляемых/соединительных полей бизнес-компонента, а не физических колонок.

F
license - not found
Not graded
quality - not tested
C
maintenance

Maintenance

Maintainers
Response time
Release cycle
Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Salesforce that exposes CLI, REST, Connect, Data 360, Bulk 2.0, and Einstein Models APIs as tools for any MCP-compatible client to manage orgs, data, and metadata.
    Apache 2.0
  • F
    license
    Not graded
    quality
    B
    maintenance
    A generic MCP gateway that exposes any HTTP-based SQL portal as LLM-friendly MCP tools and standard REST endpoints, serving both human users and AI agents simultaneously.
  • F
    license
    Not graded
    quality
    D
    maintenance
    MCP server for Siebel CRM with HTTP/SSE transport, enabling secure access to Siebel data and operations like accounts, contacts, opportunities, and queries. Designed to be deployed on Phala Cloud TEE for credential protection.

View all related MCP servers

Related MCP Connectors

  • AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.

  • MCP server exposing the Backtest360 engine API as tools for AI agents.

  • MCP server for AI access to Swagger by SmartBear.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/yanivshoval0104/siebel-mcp-gateway'

If you have feedback or need assistance with the MCP directory API, please join our Discord server