Skip to main content
Glama
yanivshoval0104

siebel-mcp-gateway

Siebel MCP 网关

通过流式 HTTP 将 Oracle Siebel REST API 暴露为 MCP 工具,使代理客户端能够查询/创建/更新/删除 Siebel 记录并拉取对象目录,而无需自身持有 Siebel 凭据。

模拟模式构建了一个合成的医疗转诊演示模式(患者 → 社区/医院转诊 → 表格 17 承诺 → 治疗历史),旨在忠实承载一组已记录的、有意的数据质量问题,而不是将其掩盖——两个组织中的重复患者记录、实际表示紧急程度的状态字段、静默覆盖工作流声明限制的脚本、两个“剩余就诊次数”字段逐渐偏离。所有数据均为合成数据。

技术栈

Python 3.12+、官方 mcp SDK(MCPServer,旧版 SDK 中称为 FastMCP 的当前名称)、用于出站 Siebel 调用的 httpx、作为 ASGI 服务器的 uvicorn

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 对仓库的访问权限。 Render 的 GitHub 应用只能看到被明确授予访问权限的仓库——一个全新的仓库不会仅仅因为你拥有它而出现在 Render 的仓库选择器中。前往 github.com/settings/installations → 找到 RenderConfigure → 要么切换到“所有仓库”,要么将此仓库添加到允许列表 → 保存。只有这样它才会重新出现在 Render 的连接界面中。

  3. 在 Render 仪表板中:New → Blueprint(不是“Web Service”——此仓库有 render.yaml,而 Blueprint 正是读取它的方式)。连接仓库,确认分支 main 和默认的 render.yaml 路径。

  4. Render 会为 render.yaml 中标记为 sync: false 的每个环境变量显示一个表单——在部署前填写这些:

    • MCP_GATEWAY_TOKEN — 生成一个,例如 openssl rand -hex 32

    • MOCK_MODEtrue 表示立即开始提供模拟数据(建议在真实 Siebel 实例尚未就绪时使用),false 表示你已经有真实的 Siebel 凭据需要输入

    • SIEBEL_BASE_URL / SIEBEL_USERNAME / SIEBEL_PASSWORD — 仅在 MOCK_MODE=false 时需要;如果以模拟模式启动,则留空

  5. 点击 Deploy Blueprint。Render 会分配 https://<your-service>.onrender.com

之后要更改这些设置(例如在真实 Siebel 实例就绪后切换 MOCK_MODE):打开服务(不是 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 前缀。

实际部署中的注意事项

  • 模拟存储仅存在于内存中。 会话期间创建/更新/删除的任何内容仅在服务器进程保持运行期间持续存在。重新部署,或 Render 免费层实例在闲置约 15 分钟后关闭并在下次请求时冷启动,都会将其重置回原始种子数据。这是预期的模拟模式行为,而非缺陷。

  • mcp Python SDK 的客户端传输依赖是 httpx2,而不是普通的 httpx——仅当你使用 SDK 的 streamable_http_client 辅助函数(而非更高级别的客户端应用)编写自己的 MCP 客户端时相关;它期望 http_client= 参数接受 httpx2.AsyncClient,而不是普通的 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_objectssearch_facilities 进行冒烟测试,再向真实代理流量开放

工具

通用(适用于任何业务组件:ContactEmployeeMedical FacilityAppointment SlotReferral RequestCommitment FormTreatment History):

工具

用途

siebel_query

列出/搜索记录:searchspecfieldspage_sizestart_row

siebel_get

row_id 获取单条记录

siebel_create

fields 字典创建记录

siebel_update

row_id 更新记录的 fields

siebel_delete

row_id 删除记录

siebel_list_objects

列出账户暴露的业务组件

便捷包装器,为常见演示需求提供更薄的接口:

工具

用途

search_facilities

按专业代码和/或精确城市搜索

search_contacts

按姓氏前缀搜索

create_referral

患者 + 医生 + 专业 + 紧急程度;从阶段代码 = COMMUNITY_SEARCH 开始

关于此处内置的 Siebel REST API 假设的说明

  • 每次出站调用都使用 HTTP Basic 认证(与网关自身对入站 MCP 请求的 bearer 令牌检查分开——两层不同的认证,不要混淆)。

  • URL 语法为 {BASE}/data/{BusinessObject}/{BusinessComponent}。此处 BO 和 BC 并非总是同名——例如,Referral RequestPatient Referral BO 下的子 BC,Appointment SlotAppointment Management 下的子 BC。工具接受 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