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: 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

  1. 将此仓库推送到 GitHub。

  2. 如果尚未连接,请先授予 Render 对仓库的访问权限。 Render 的 GitHub 应用只能看到被明确授予访问权限的仓库——一个全新的仓库不会仅仅因为你拥有它而出现在 Render 的仓库选择器中。前往 github.com/settings/installations → 找到 Render → Configure → 要么切换到“所有仓库”,要么将此仓库添加到允许列表 → 保存。只有这样它才会重新出现在 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_MODE — true 表示立即开始提供模拟数据(建议在真实 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_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

按 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 Request 是 Patient Referral BO 下的子 BC,Appointment Slot 是 Appointment 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 连接字段)——它们在每次读取时重新派生,与真实业务组件计算/连接字段的行为一致,而非物理列。

Related MCP Connectors

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.
    -
  • A
    license
    Not graded
    quality
    C
    maintenance
    A 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