siebel-mcp-gateway
Siebel MCP Gateway
Expone la API REST de Oracle Siebel como herramientas MCP sobre HTTP transmisible, de modo que un cliente agéntico pueda consultar/crear/actualizar/eliminar registros de Siebel y obtener el catálogo de objetos sin tener que gestionar credenciales de Siebel por sí mismo.
El modo simulado modela un esquema sintético de demostración de derivaciones sanitarias (paciente → derivación a comunidad/hospital → compromiso del Formulario 17 → historial de tratamiento), construido para reflejar fielmente un conjunto documentado de hallazgos deliberados de calidad de datos en lugar de suavizarlos: registros de pacientes duplicados en dos organizaciones, un campo de estado que en realidad contiene urgencia, un script que sobrescribe silenciosamente los límites declarados de un Workflow, dos campos de "visitas restantes" que divergen. Todos los datos son sintéticos.
Stack
Python 3.12+, el SDK oficial mcp (MCPServer, el nombre actual de lo que en versiones anteriores del SDK se llamaba FastMCP), httpx para las llamadas salientes a Siebel, uvicorn como servidor ASGI.
Related MCP server: MuleSoft Code MCP
Ejecución local
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 8000Comprobación de salud: curl http://localhost:8000/healthz → {"status":"ok"} (sin autenticación requerida, para que funcionen los comprobadores de salud de la plataforma).
Endpoint MCP: http://localhost:8000/mcp — cada solicitud necesita Authorization: Bearer <MCP_GATEWAY_TOKEN>, ya que el endpoint en sí no tiene otro control de acceso una vez desplegado públicamente.
Pruebas
python3 -m pytest -vTodas las pruebas se ejecutan contra el almacén simulado en memoria o un transporte HTTP simulado — sin llamadas de red, sin necesidad de una instancia real de Siebel.
Despliegue en Render
Sube este repositorio a GitHub.
Concede acceso a Render al repositorio primero, si aún no está conectado. La aplicación de GitHub de Render solo ve repositorios a los que se le ha dado acceso explícitamente — un repositorio recién creado no aparecerá en el selector de repositorios de Render solo porque lo poseas. Ve a github.com/settings/installations → busca Render → Configurar → o cambia a "Todos los repositorios" o añade este repositorio a la lista permitida → Guardar. Solo entonces aparecerá de nuevo en la pantalla de conexión de Render.
En el panel de Render: Nuevo → Blueprint (no "Web Service" — este repositorio tiene un
render.yaml, y Blueprint es lo que lo lee). Conecta el repositorio, confirma la ramamainy la ruta predeterminadarender.yaml.Render muestra un formulario para cada variable de entorno marcada con
sync: falseenrender.yaml— rellena estos campos antes de desplegar:MCP_GATEWAY_TOKEN— genera uno, p. ej.openssl rand -hex 32MOCK_MODE—truepara empezar a servir datos simulados inmediatamente (recomendado mientras la instancia real de Siebel no esté lista),falsesi ya tienes credenciales reales de Siebel para introducir a continuaciónSIEBEL_BASE_URL/SIEBEL_USERNAME/SIEBEL_PASSWORD— solo se requieren siMOCK_MODE=false; déjalos en blanco si empiezas en modo simulado
Haz clic en Deploy Blueprint. Render asigna
https://<your-service>.onrender.com.
Para cambiar cualquiera de estos valores más adelante (p. ej. cambiar MOCK_MODE cuando la instancia real de Siebel esté lista): abre el servicio (no el Blueprint) → pestaña Environment → edita el valor → Save Changes, lo que desencadena un redespliegue.
Apuntar tu cliente MCP al gateway desplegado
URL:
https://<your-service>.onrender.com/mcpTransporte: HTTP transmisible
Autenticación: un token estático de portador/clave de API, no OAuth — establece la cabecera a
Authorization: Bearer <MCP_GATEWAY_TOKEN>(el mismo valor del paso 4 anterior). Si la interfaz de autenticación de tu cliente pide un nombre de cabecera y un valor bruto por separado en lugar de una cabecera combinada, el nombre de cabecera esAuthorizationy el valor esBearer <token>(incluye la palabra "Bearer") — si eso da un 401, prueba a darle solo el token bruto, ya que algunos clientes añaden el prefijoBearerellos mismos.
Notas de un despliegue real
El almacén simulado es solo en memoria. Cualquier cosa creada/actualizada/eliminada durante una sesión persiste solo mientras ese proceso de servidor siga activo. Un redespliegue, o la instancia del nivel gratuito de Render que se apaga tras ~15 minutos de inactividad y arranca en frío en la siguiente solicitud, lo restablece a los datos iniciales sembrados. Eso es el comportamiento esperado del modo simulado, no un error.
La dependencia de transporte del lado del cliente del SDK de Python
mcpeshttpx2, nohttpxsimple — solo relevante si escribes tu propio cliente MCP contra este gateway usando el helperstreamable_http_clientdel SDK en lugar de una aplicación cliente de nivel superior; espera unhttpx2.AsyncClientpara el argumentohttp_client=, no unhttpx.AsyncClientnormal.
Lista de verificación para pasar a producción
Una vez que la instancia real de Siebel esté disponible:
Establece
SIEBEL_BASE_URLa la instancia real (sin barra final), p. ej.https://<siebel-host>/siebel/v1.0Establece
SIEBEL_USERNAME/SIEBEL_PASSWORDEstablece
SIEBEL_VERIFY_TLS=falsesolo si la instancia aún usa un certificado autofirmado — vuelve atruecuando tenga uno realEstablece
MOCK_MODE=falseRedespliega y luego haz una prueba de humo con
siebel_list_objectsysearch_facilitiesantes de dirigir tráfico real de agentes hacia él
Herramientas
Genéricas (funcionan con cualquier Business Component: Contact, Employee, Medical Facility, Appointment Slot, Referral Request, Commitment Form, Treatment History):
Herramienta | Propósito |
| Listar/buscar registros: |
| Obtener un registro por |
| Crear un registro a partir de un dict |
| Actualizar los |
| Eliminar un registro por |
| Listar los business components que expone la cuenta |
Envoltorios de conveniencia, superficie más reducida para peticiones comunes de demostración:
Herramienta | Propósito |
| Por código de especialidad y/o ciudad exacta |
| Por prefijo de apellido |
| Paciente + médico + especialidad + urgencia; comienza en Stage Code = COMMUNITY_SEARCH |
Notas sobre los supuestos de la API REST de Siebel integrados aquí
La autenticación es HTTP Basic en cada llamada saliente (separada de la comprobación de token de portador de este gateway en las solicitudes MCP entrantes — dos capas de autenticación distintas, no las confundas).
La gramática de URL es
{BASE}/data/{BusinessObject}/{BusinessComponent}. BO y BC no siempre tienen el mismo nombre aquí — p. ej.Referral Requestes un BC hijo bajo el BOPatient Referral,Appointment Slotes un BC hijo bajoAppointment Management. Las herramientas toman el nombre del BC; el cliente busca el BO correcto internamente. Los segmentos de ruta están codificados en URL, por lo que los nombres con varias palabras funcionan.Las respuestas de listado llegan como
{"items": [...]}; el array"links"de cada registro se elimina antes de devolverlo al modelo, para ahorrar tokens.Las respuestas no-2xx se muestran como el código de estado HTTP más el texto de mensaje propio de Siebel; un 401 recibe un prefijo claro de "comprueba las credenciales de Siebel". Las llamadas salientes tienen un tiempo de espera de 30s.
Varios campos son calculados, no almacenados (Age, Days Waiting, Visits Remaining, Is Expired, Entry Gap Days, y los campos de unión Facility/Doctor/Patient) — se derivan de nuevo en cada lectura, coincidiendo con cómo se comportarían como campos calculados/de unión reales de un Business Component en lugar de columnas físicas.
This server cannot be installed
Maintenance
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
- 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 gradedqualityCmaintenanceRemote MCP server for MuleSoft APIs that enables agents to discover operations and execute validated API calls with a fixed low-context tool surface.
- 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.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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