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: MCP Gateway
Локальный запуск
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
Запушьте этот репозиторий на GitHub.
Сначала предоставьте Render доступ к репозиторию, если он ещё не подключён. GitHub App от Render видит только те репозитории, к которым ему явно предоставлен доступ — новый репозиторий не появится в списке выбора репозиториев Render только потому, что вы его владелец. Перейдите на github.com/settings/installations → найдите Render → Configure → либо переключитесь на «All repositories», либо добавьте этот репозиторий в список разрешённых → Save. Только после этого он снова появится на экране подключения Render.
В панели Render: New → Blueprint (не «Web Service» — в этом репозитории есть
render.yaml, и именно Blueprint его читает). Подключите репозиторий, подтвердите веткуmainи путь по умолчаниюrender.yaml.Render покажет форму для каждой переменной окружения, помеченной
sync: falseвrender.yaml— заполните их перед развёртыванием:MCP_GATEWAY_TOKEN— сгенерируйте, например,openssl rand -hex 32MOCK_MODE—true, чтобы сразу начать обслуживать mock-данные (рекомендуется, пока реальный экземпляр Siebel ещё не готов),false, если у вас уже есть реальные учётные данные Siebel для ввода нижеSIEBEL_BASE_URL/SIEBEL_USERNAME/SIEBEL_PASSWORD— требуются только еслиMOCK_MODE=false; оставьте пустыми, если начинаете в mock-режиме
Нажмите 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):
Инструмент | Назначение |
| Список/поиск записей: |
| Получить одну запись по |
| Создать запись из словаря |
| Обновить |
| Удалить запись по |
| Список бизнес-компонентов, доступных учётной записи |
Удобные обёртки, более тонкая поверхность для типовых демо-запросов:
Инструмент | Назначение |
| По коду специальности и/или точному городу |
| По префиксу фамилии |
| Пациент + врач + специальность + срочность; начинается с Stage Code = COMMUNITY_SEARCH |
Примечания о допущениях Siebel REST API, заложенных здесь
Аутентификация — HTTP Basic на каждом исходящем вызове (отдельно от собственной проверки bearer-токена этого шлюза на входящих MCP-запросах — два разных уровня аутентификации, не путайте их).
Грамматика URL:
{BASE}/data/{BusinessObject}/{BusinessComponent}. BO и BC не всегда имеют одинаковые имена — например,Referral Request— дочерний BC в BOPatient 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) — они вычисляются заново при каждом чтении, что соответствует поведению реальных вычисляемых/соединительных полей бизнес-компонента, а не физических колонок.
This server cannot be deployed
Maintenance
Related MCP Connectors
Query, browse, and automate OmegaAI workspaces from any MCP client. Streamable HTTP with OAuth 2.0.
Remote MCP server exposing SMI Aware tools, resources, and skills over Streamable HTTP.
AI Reasoning Cache & Consensus Layer with 11 MCP tools via Streamable HTTP.
MCP server exposing the Backtest360 engine API as tools for AI agents.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceMCP 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
- FlicenseNot gradedqualityBmaintenanceA 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.-
- FlicenseNot gradedqualityDmaintenanceMCP 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.-
- AlicenseNot gradedqualityCmaintenanceA universal MCP server for registering internal, external, and OpenAPI-based APIs as MCP tools. It exposes them to MCP clients via Streamable HTTP and provides admin portal, RBAC/session auth, credential injection, and audit logging.Academic Free v1.1