mcpField
B
Boomi MCP Server

Boomi MCP Server

本地服务
renera.ai云与基础设施114 周前更新

关于 Boomi MCP Server

Boomi MCP Server 将 MCP 客户端连接到 Boomi Platform API,面向管理 Boomi 集成的团队。它提供账户配置与凭据管理,以及平台操作工具,并可选搜索 Boomi 文档和运维问题。

主要功能

  1. 01Boomi 账户与配置管理
  2. 02集成、部署和运行时工具
  3. 03凭据验证与安全存储
  4. 04可选文档和问题检索

适用场景

  1. 01查看 Boomi 账户和组件
  2. 02部署并监控集成
  3. 03查询官方文档或运维问题

MCP 相关

它向经过身份验证的客户端提供 Boomi Platform API 操作工具,并要求使用已保存的凭据配置。可选资源和工具提供文档及运维问题检索。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"boomi": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"pull"
]
}
}
}
启动命令docker run -i --rm pull

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocipull

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Boomi MCP Server

用于通过 Claude Code 集成 Boomi Platform API 的安全 MCP 服务

一个可用于生产环境的 Model Context Protocol(MCP)服务,支持 Claude Code 和其他 MCP 客户端通过 OAuth 2.0 身份验证和安全凭据存储与 Boomi Platform API 交互。

License Python FastMCP

🌐 在线服务:https://boomi.renera.ai


功能

  • 🔐 Google OAuth 2.0 - 通过同意屏幕进行安全身份验证
  • 🔒 GCP Secret Manager - 按用户加密存储凭据
  • 👤 多配置文件支持 - 每位用户最多可存储 10 个 Boomi 账户配置文件
  • 🌐 Web UI - 基于浏览器的凭据管理
  • ✅ 凭据验证 - 保存前测试凭据
  • 🚀 自动部署 - GitHub 推送 → Cloud Build(固定版本的 KB 发布)→ Cloud Run
  • 📦 MCP 工具 - 29 个工具,涵盖交易伙伴、流程、组件、运行时、部署、计划、账户管理等
  • 📚 Boomi 文档知识库 - 可选的检索增强型 search_boomi_docs / read_boomi_doc_page 工具,由固定版本的知识库发布提供支持
  • ☁️ 云原生 - 运行于 Google Cloud Run

快速开始

面向用户
  1. 访问 Web UI:https://boomi.renera.ai

  2. 使用 Google 登录 - OAuth 身份验证

  3. 添加 Boomi 凭据:

    • 电子邮件:你的 Boomi 账户邮箱
    • API 令牌:你的 Boomi API 令牌
    • 账户 ID:你的 Boomi 账户 ID
    • 配置文件名称:为这组凭据命名(例如,“production”、“sandbox”)
  4. 连接 Claude Code:

claude mcp add --transport http boomi https://boomi.renera.ai/mcp
  1. 授权 - 浏览器会打开 OAuth 同意页面,点击“Approve”

  2. 使用 MCP 工具:

Show me my Boomi account information from the production profile

架构

┌──────────────┐
│    User      │
│  (Browser)   │
└──────┬───────┘
       │ 1. Visit https://boomi.renera.ai
       │ 2. Google OAuth Login
       ▼
┌──────────────────────────────────────┐
│      Boomi MCP Server (Cloud Run)    │
│  ┌────────────┐    ┌──────────────┐ │
│  │  Web UI    │    │  MCP Server  │ │
│  │ (FastAPI)  │    │  (FastMCP)   │ │
│  └────────────┘    └──────────────┘ │
└───────┬──────────────────┬───────────┘
        │                  │
        │ Store            │ Retrieve
        │ Credentials      │ Credentials
        ▼                  ▼
┌──────────────────────────────────────┐
│      GCP Secret Manager              │
│  boomi-mcp-{user-id}-{profile-name}  │
└──────────────────────────────────────┘
                    │
                    │ API Calls
                    ▼
             ┌──────────────┐
             │  Boomi API   │
             └──────────────┘
观看:一个请求的端到端流程

上图展示了部署拓扑。对于代码路径——即 MCP 客户端调用 query_components 到 Boomi 返回结果之间实际发生的过程——本演示会跟踪一个请求经过四个边界,并解释执行路径所涉及的 Python 代码。

Boomi MCP Server — 一个请求的端到端流程

全长 14 分钟。涵盖控制工具注册的条件导入、导入时运行的 @mcp.tool、AnyIO 工作线程上的同步包装器、信任边界处的 json.loads、通过 get_secret 解析凭据,以及传入操作路由器的 **params。

视频中显示的行号对应录制时的 main 分支。


可用的 MCP 工具

该服务提供 29 个工具。所有工具都需要经过身份验证的会话,并且需要有效的 profile 参数来指向已存储的 Boomi 凭据组。

账户和配置文件管理
  • list_boomi_profiles() — 列出当前用户保存的凭据配置文件。
  • boomi_account_info(profile) — 获取指定配置文件的账户详情。
  • set_boomi_credentials(...) / delete_boomi_profile(...) — 凭据增删改查。
  • manage_account(...)、manage_account_groups(...) — Boomi 账户管理。
构建、部署和运行集成
  • manage_process(只读流程列表/获取)、manage_component、analyze_component、 query_components、build_integration、get_schema_template
  • manage_environments、manage_runtimes、manage_deployment、 execute_process、troubleshoot_execution、manage_schedules、 manage_listeners、manage_integration_packs
  • manage_trading_partner、manage_connector、manage_shared_resources、 manage_folders、monitor_platform
扩展入口
  • invoke_boomi_api(...) — 当没有专用工具时,调用任意 Boomi REST 端点。
  • list_capabilities() — 用于发现工具的辅助函数,概述所有已注册工具。
Boomi 文档知识库(可选)

仅当服务以 BOOMI_DOCS_ENABLED=true 启动,且 BOOMI_DOCS_DB_PATH 中有已填充的知识库时才会注册:

  • search_boomi_docs(query, ...) — 对已索引的 Boomi 文档语料进行语义搜索。
  • read_boomi_doc_page(page_key) — 获取特定文档页面的完整 Markdown。
  • 资源 kb://boomi-docs/corpus — 语料清单(发布标签、页面数量、生成时间元数据)。

知识库语料由 RenEra-ai/knowledge-base-builder 构建并发布,并在构建时通过 deploy/kb-release.env 嵌入镜像。请参阅下文的 知识库发布推广。

冷启动行为(运维人员)。 繁重的知识库构建(Chroma + 嵌入模型加载)会延后到导入流程之外执行,以便服务立即绑定其 HTTP 端口 — 文档工具会在知识库就绪之前注册。每次文档调用都会原子地解析就绪状态,并进入以下三种状态之一:

  1. 正常等待后提供服务 — 冷启动期间,最多允许 BOOMI_DOCS_WARMUP_MAX_WAITERS 次文档调用作为长等待者进入,并阻塞(最长不超过 BOOMI_DOCS_WARMUP_WAIT_SECONDS),直至构建完成,然后返回真实结果。生产构建的测量值为平均约 49 秒、p95 约 58 秒、最大约 63 秒,因此获准的调用者通常只会遇到首次调用较慢的情况。
  2. 超出限制或构建确实较慢 — 额外的并发调用(或获准的等待者等待时间达到上限)会立即返回 error: warming_up,并附带一个 retry_after_seconds 提示;该提示根据 BOOMI_DOCS_WARMUP_EXPECTED_SECONDS 剩余的比例计算(限制在 5–60 秒;超过预估时间后取下限)。
  3. 构建失败 — 所有获准的等待者都会立即被唤醒,并收到经过净化的 error: kb_unavailable;经过 BOOMI_DOCS_WARMUP_RETRY_COOLDOWN(默认 30 秒)后,后续调用会触发构建自动恢复。

可调节的环境变量(代码默认值与 cloudbuild.yaml 一致;无效值会回退并发出运维警告):BOOMI_DOCS_WARMUP_EAGER(默认 true — 在首个经过身份验证的 /mcp 请求时启动构建)、BOOMI_DOCS_WARMUP_WAIT_SECONDS(默认 65 — 限制获准等待者的阻塞时间,略高于测得的构建 p95/最大值)、BOOMI_DOCS_WARMUP_EXPECTED_SECONDS(默认 60 — 用于生成 warming_up 的重试等待提示)、BOOMI_DOCS_WARMUP_MAX_WAITERS(默认 4 — 长等待者准入上限;超出上限时立即返回 warming_up)。boomi.kb.warmup 日志记录器会输出 KB_WARMUP_STARTED/RETRY、 KB_RESOLVE_ADMITTED/OVERFLOW、KB_WARMUP_ELAPSED,以及各阶段的构建耗时,便于观测。

Boomi 运维注意事项知识库(可选)

仅当服务以 BOOMI_GOTCHAS_ENABLED=true 启动时才会注册。这是与文档知识库相互独立的服务面(运维现场知识与官方文档),由其自身独立的标志控制:

  • search_boomi_gotchas(query, top_k=5, issue_ids=None) — 搜索经过整理的已知 Boomi 静默故障模式和现场陷阱目录。传入 issue_ids 可按注意事项 ID 进行确定性的精确查找(优先于 query)。对于空结果或无匹配项,会明确说明,绝不编造条目。
  • 资源 kb://boomi-operational-gotchas/catalog — 完整目录,其中每条记录都包含症状、检测/频率分类、来源信息和 verification_status。

与文档知识库不同,此目录仅依赖标准库:它是仓库内整理的数据集,采用确定性的词法排序,不依赖 requirements-kb.txt / chromadb / 嵌入模型。条目是经过整理的摘要(OfficialBoomi BSD-2-Clause 材料 + 本地问题/架构师课程分诊),而非逐字副本,并带有 verification_status(live_verified / docs_corroborated / companion_unverified / course_unverified / disputed),以便 Agent 判断各项声明获得佐证的程度。


部署

当前生产部署
  • 托管:Google Cloud Run(us-central1)
  • URL:https://boomi.renera.ai
  • CI/CD:通过 GitHub 自动执行
  • 区域:us-central1
  • 身份验证:Google OAuth 2.0
CI/CD 流水线

推送到 main 分支时自动部署:

GitHub Push → Cloud Build (cloudbuild.yaml) → Docker Build (KB pin) → Artifact Registry → Cloud Run

流水线由 cloudbuild.yaml 进行源码控制,并将固定版本的 Boomi Docs 知识库版本嵌入映像中。知识库标签存放在 deploy/kb-release.env 中,因此每次语料库版本变更都会体现在仓库修改中——构建绝不能使用浮动的 latest 知识库版本。

知识库版本晋级
  1. 在 RenEra-ai/knowledge-base-builder 中,通过手动触发 workflow_dispatch 发布版本(例如 kb-13)。发布内容必须包含 boomi_knowledge_db.tar.gz 资源文件。
  2. 在此仓库中,更新 deploy/kb-release.env 中的唯一一行:
    KB_RELEASE_TAG=kb-13
    
  3. 提交包含此更改的 PR,并合并到 main。
  4. Cloud Build 触发器读取 cloudbuild.yaml,对 GitHub 发布资源文件执行 curl -fI 预检,然后使用 --build-arg KB_RELEASE_TAG=$KB_RELEASE_TAG 构建映像。若固定版本缺失或为空,构建会在任何 Docker 操作开始前失败。
  5. Cloud Run 会更新以下配置:BOOMI_DOCS_ENABLED=true、BOOMI_DOCS_DB_PATH=/app/kb/boomi_knowledge_db 和 BOOMI_DOCS_RELEASE_TAG=<tag>。这会使服务在启动时注册 search_boomi_docs 和 read_boomi_doc_page 工具,以及 kb://boomi-docs/corpus 资源。
Cloud Build 触发器迁移

现有触发器 8623a6fa-3295-430a-b018-7c728ba941e8 是通过内联自动生成的配置创建的,该配置既未传递 KB_RELEASE_TAG,也未设置知识库运行时环境变量。将其一次性指向源码控制的配置:

gcloud builds triggers update github 8623a6fa-3295-430a-b018-7c728ba941e8 \
  --project=boomimcp \
  --region=global \
  --build-config=cloudbuild.yaml

迁移后,每次推送到 main 都会运行 cloudbuild.yaml 中的步骤;执行 git log -- cloudbuild.yaml deploy/kb-release.env 可以准确查看当前生效的知识库版本。

手动部署

如果需要手动部署(跳过 GitHub 触发器):

# Authenticate with GCP
gcloud auth login
gcloud config set project boomimcp

# Submit the same pipeline that the trigger runs.
# REPO_NAME and COMMIT_SHA are populated by Cloud Build only for
# trigger-driven runs, so pass them explicitly via --substitutions
# when submitting from the CLI.
gcloud builds submit \
  --config=cloudbuild.yaml \
  --substitutions="REPO_NAME=boomi-mcp-server,COMMIT_SHA=$(git rev-parse HEAD)"

# Or use the trigger by pushing
git push origin main

配置

环境变量(Cloud Run)
OAuth 代理持久化

要让 MCP OAuth 流程在 Cloud Run 实例休眠或重启后继续运行,必须进行此项配置。 OAuth 状态使用 Fernet 加密存储在 MongoDB Atlas 中:

OIDC_CLIENT_ID          # Google OAuth client ID
OIDC_CLIENT_SECRET      # Google OAuth client secret
OIDC_BASE_URL           # https://boomi.renera.ai
SESSION_SECRET          # Session signing key for web UI
MONGODB_URI             # MongoDB Atlas connection string for OAuth state
JWT_SIGNING_KEY         # Stable key for signing MCP JWT tokens
STORAGE_ENCRYPTION_KEY  # Fernet key(s) for encrypting OAuth tokens at rest.
                        # Single value or comma-separated list (newest first)
                        # to enable zero-downtime key rotation via MultiFernet.
身份验证加固(可选)

这四项均提供安全默认值;仅在调试或轮换密钥时覆盖。完整回滚流程请参阅 docs/oauth-migration-runbook.md。

BOOMI_RT_GRACE_SECONDS          # default 60. Window during which a just-
                                # rotated refresh token still returns the
                                # same new tokens (defeats one-time-use
                                # replay race). Set 0 to disable.
BOOMI_RT_GRACE_MAX_SIZE         # default 512. LRU capacity for the grace cache.
BOOMI_OAUTH_DIAGNOSTICS_DISABLE # default off (diagnostics ON). Set true to
                                # silence the three OAuth diagnostic log
                                # patches. BOOMI_OAUTH_DIAGNOSTICS=false
                                # also works as a back-compat opt-out.
BOOMI_AUTH_HEAL_CORRUPT_CLIENTS # default true. When get_client raises
                                # InvalidToken/ValidationError, delete the
                                # corrupted MongoDB doc so the client can
                                # re-register cleanly.
OAuth 缓存加固(可选)

此项可弥补剩余的 Google 调用和跨实例问题。所有配置均提供安全默认值;发布和回滚流程请参阅 docs/oauth-migration-runbook.md。

BOOMI_TOKEN_CACHE_DISABLE           # default off (cache ON). Set true to
                                    # restore the per-tool-call Google
                                    # tokeninfo/userinfo round trip.
BOOMI_TOKEN_CACHE_TTL_SECONDS       # default 300. Upper bound on per-entry
                                    # TTL; caps Google-revocation latency.
BOOMI_TOKEN_CACHE_MAX_SIZE          # default 256. LRU capacity.
BOOMI_TOKEN_CACHE_SWR               # default false. Opt-in stale-while-
                                    # revalidate against short Google outages.
BOOMI_TOKEN_CACHE_SWR_WINDOW        # default 30. Seconds before expiry at
                                    # which SWR serves stale + refreshes.
BOOMI_TOKEN_CACHE_STALE_IF_ERROR_SECONDS  # default 0 (off); Cloud Run pins =0
                                    # (off). Opt in by raising it. When the
                                    # Google verifier returns None after a cache
                                    # entry expired, serve the last positive
                                    # token for this many seconds past expiry --
                                    # only while the token's own expiry is still
                                    # future. Note: the verifier returns None for
                                    # BOTH transient failures and explicit Google
                                    # rejections, so enabling this extends the
                                    # cache's revocation-latency window (see
                                    # BOOMI_TOKEN_CACHE_TTL_SECONDS) by up to this
                                    # many seconds. Negatives are never cached.

BOOMI_RT_GRACE_SHARED               # default true. Backs the refresh-token
                                    # grace cache with a MongoDB collection
                                    # (mcp-rt-grace, Fernet-encrypted) so
                                    # multi-replica deployments coalesce
                                    # rotations across instances.
BOOMI_RT_GRACE_SHARED_COLLECTION    # default mcp-rt-grace.
BOOMI_RT_GRACE_DISTRIBUTED_LOCK     # default false. Opt-in cross-instance
                                    # singleflight via mcp-rt-inflight-locks.
                                    # Enable only if logs show duplicate
                                    # orig_exchange calls within ms.
BOOMI_RT_GRACE_LOCK_TTL_SECONDS     # default 30. Auto-release safety bound.
BOOMI_RT_GRACE_LOCK_POLL_MS         # default 100. Follower poll interval.

BOOMI_RT_RECOVERY_ENABLED           # default true. Durable recovery of stale
                                    # refresh JWTs that still verify but whose
                                    # storage rows were deleted (hours/days
                                    # later). Uses an encrypted alias ledger
                                    # (mcp-rt-recovery) to mint fresh tokens.
BOOMI_RT_RECOVERY_MAX_AGE_SECONDS   # default 2592000 (30d, matches the sliding
                                    # refresh lifetime). Max durable alias
                                    # lifetime; older stale tokens must re-auth.
BOOMI_RT_RECOVERY_COLLECTION        # default mcp-rt-recovery.
BOOMI_RT_RECOVERY_MAX_HOPS          # default 64 (scaled with the 30d window).
                                    # Max alias-chain depth walked when resolving
                                    # a stale token to its latest live successor.
BOOMI_RT_REFRESH_JWT_LEEWAY_SECONDS # default 60. Clock-skew tolerance on the
                                    # refresh JWT exp, durable-recovery path only.
BOOMI_RT_SLIDING_REFRESH_EXPIRY     # default true. When upstream omits
                                    # refresh_expires_in, stamp the new FastMCP
                                    # refresh token with a fresh sliding window
                                    # (fixes the frozen 30-day expiry).
BOOMI_RT_SLIDING_REFRESH_TTL_SECONDS # default 2592000 (30d). Sliding lifetime.

BOOMI_AUTH_PROTECTION_STRICT        # default true in production / false in
                                    # local. Fail startup if an ENABLED shared-
                                    # grace or durable-recovery backend cannot
                                    # initialize, instead of silently degrading.
BOOMI_RT_PATCH_STRICT               # default true in production / false in
                                    # local. A FastMCP-contract incompatibility
                                    # raises instead of silently leaving
                                    # recovery/sliding unpatched.

持久化恢复层(refresh_token_recovery_patch)应用于 60 秒宽限缓存内部:宽限缓存仍处理即时重放,恢复机制处理数小时或数天后过期的令牌,之后才会运行实际的 FastMCP 轮换。恢复机制绝不会重放旧的缓存访问令牌,而是始终生成新的访问令牌/刷新令牌对。诊断事件(日志记录器 boomi.refresh_token_recovery):RT_DIAG event=rt_recovery_hit(已恢复过期的客户端)以及 event=rt_recovery_miss(已解析别名,但其后继令牌已失效)。要回滚,请设置 BOOMI_RT_RECOVERY_ENABLED=false(禁用恢复机制)或 BOOMI_RT_SLIDING_REFRESH_EXPIRY=false(恢复 FastMCP 的固定时窗行为);mcp-rt-recovery 条目会通过 TTL 过期,因此无需迁移数据。

用户凭据存储

用户的 Boomi API 凭据单独存储在 GCP Secret Manager 中:

SECRETS_BACKEND         # gcp
GCP_PROJECT_ID          # boomimcp
  • 格式:boomi-mcp-{user-id}-{profile-name}
  • 示例:boomi-mcp-glebuar-at-gmail-com-production
  • 加密:静态和传输中均加密
  • 访问:由 IAM 控制,并记录审计日志
Boomi Docs 知识库

通过 cloudbuild.yaml 在 Cloud Run 上设置,以便在启动时注册知识库工具:

BOOMI_DOCS_ENABLED       # true to register KB tools and resource
BOOMI_DOCS_DB_PATH       # /app/kb/boomi_knowledge_db (in-image corpus path)
BOOMI_DOCS_RELEASE_TAG   # operational marker, mirrors deploy/kb-release.env

当 BOOMI_DOCS_ENABLED 未设置或为 false 时,不会导入知识库模块,不会加载 requirements-kb.txt 依赖项,也不会注册知识库工具和 kb://boomi-docs/corpus 资源。

MCP 无状态传输(工作流 B — 已在生产环境启用)

BOOMI_MCP_STATELESS_HTTP=true 已固定在 cloudbuild.yaml 中(自 2026-06-01 起)。生产环境以无状态模式运行 FastMCP 可流式 HTTP,这消除了每个实例的 MCP 会话及其导致的故障:冷启动时,有状态工具调用 POST 可能会丢失其服务器→客户端响应通道(通道被回收,或在重连时因 404 而连接到第二个实例,导致响应滞留),并一直挂起,直到 Cloud Run 的 300s 请求超时将其终止。无状态模式下,每个 POST 都是一个自包含的请求→响应→终止流程,因此不会发生这种挂起,也不会在重新部署后出现 404 Session not found。

BOOMI_MCP_STATELESS_HTTP   # PINNED true in cloudbuild.yaml. Builds the MCP app
                           # with stateless_http=true and skips the stream guard,
                           # session-manager binding, JWT-issuer binding, and
                           # session reaper (none apply without per-instance
                           # sessions). Set false to revert to stateful.
BOOMI_MCP_JSON_RESPONSE    # PINNED true in cloudbuild.yaml (since 2026-06-07).
                           # Honored ONLY in stateless mode; passes
                           # json_response=true so each POST tool result is a
                           # single buffered JSON response instead of SSE-on-POST.
                           # Required: SSE-on-POST large results stalled in the
                           # Cloud Run managed-domain-mapping proxy and hung the
                           # client indefinitely. Set false only to debug.

✅ 已选定:stateless=true / json_response=true(自 2026-06-07 起固定)。此前默认的 json_response=false(POST 使用 SSE)被发现会导致 Cloud Run 托管式域名映射代理中较大的工具结果(例如 query_components 的 action=get 返回约 30 KB 的进程 XML)停滞——响应始终无法送达,客户端无错误提示地挂起。缓冲式 JSON 响应能够可靠送达。作为后备保护,组件 XML 读取受墙钟时间截止期限限制(BOOMI_COMPONENT_GET_DEADLINE_SECONDS,默认值为 90s,限制在 1–240 之间);如果后端提取本身发生停滞,则会返回结构化的 COMPONENT_GET_DEADLINE_EXCEEDED 错误,而不是一直挂起。此修复保留缩至零实例的能力(不设置 min-instances)。启动日志会说明当前启用的 POST 帧格式,以及流保护环境变量在无状态模式下是否不起作用。回滚方式为设置 BOOMI_MCP_JSON_RESPONSE=false 并重新部署。真值约定:true、1、yes、on(不区分大小写)。


本地开发

前提条件
  • Python 3.11+
  • Google Cloud SDK
  • 可访问已启用 Secret Manager 的 GCP 项目
设置
# Clone repository
git clone https://github.com/RenEra-ai/boomi-mcp-server.git
cd boomi-mcp-server

# Create virtual environment
python3 -m venv .venv
source .venv/bin/activate

# Install dependencies
pip install -r requirements.txt -r requirements-cloud.txt

# Configure environment
cp .env.example .env
# Edit .env with your OAuth credentials
本地运行
# Set environment variables
export OIDC_CLIENT_ID="your-google-oauth-client-id"
export OIDC_CLIENT_SECRET="your-google-oauth-client-secret"
export OIDC_BASE_URL="http://localhost:8080"
export SESSION_SECRET="$(python3 -c 'import secrets; print(secrets.token_urlsafe(32))')"
export SECRETS_BACKEND=gcp
export GCP_PROJECT_ID=boomimcp

# Run server
python server_http.py

访问 http://localhost:8080 以使用 Web UI。


项目结构

boomi-mcp-server/
├── server.py                  # Core MCP server (FastMCP, all tool definitions)
├── server_http.py             # HTTP wrapper with OAuth middleware
├── src/boomi_mcp/
│   ├── cloud_secrets.py       # Secret Manager backends (GCP/AWS/Azure)
│   ├── local_secrets.py       # Local filesystem secret backend
│   ├── sanitize.py            # Response sanitization helpers
│   ├── categories/            # Tool category groupings
│   ├── models/                # Pydantic models for SDK payloads
│   ├── utils/                 # Misc utilities
│   └── kb/                    # Boomi Docs knowledge-base (gated by BOOMI_DOCS_ENABLED)
│       ├── service.py         # Search + page retrieval over Chroma corpus
│       ├── manifest.py        # kb://boomi-docs/corpus resource
│       └── errors.py          # KB-specific exception types
├── templates/                 # Jinja2 web UI templates (credentials, login, ...)
├── static/                    # Web UI static assets
├── tests/                     # Unit + integration tests (incl. tests/kb)
├── docs/                      # Specs, plans, runbooks
├── agents/                    # Subagent configs (boomi-qa-tester, ...)
├── examples/                  # Usage examples
├── scripts/                   # Operational scripts
├── local_atom/                # Helpers for the local-atom dev profile
├── requirements.txt           # Core dependencies (FastMCP, ...)
├── requirements-cloud.txt     # Cloud provider SDKs
├── requirements-kb.txt        # KB dependencies (chromadb, sentence-transformers)
├── Dockerfile                 # Multi-stage Docker build (KB pin via ARG)
├── cloudbuild.yaml            # Cloud Build pipeline (pinned KB release)
├── deploy/
│   └── kb-release.env         # Pinned knowledge-base release tag
└── README.md                  # This file

安全功能

身份验证与授权
  • ✅ Google OAuth 2.0 with PKCE
  • ✅ OAuth 同意屏幕(防止混淆代理攻击)
  • ✅ 使用加密签名的基于会话的身份验证
  • ✅ 按用户隔离凭据
数据保护
  • ✅ 仅使用 HTTPS(由 Cloud Run 强制实施)
  • ✅ 静态加密凭据(GCP Secret Manager)
  • ✅ 传输中加密凭据(TLS)
  • ✅ 环境变量中不包含凭据
  • ✅ 通过 Cloud Logging 进行审计日志记录
访问控制
  • ✅ 基于 IAM 的密钥访问
  • ✅ 配置文件数量限制(每位用户 10 个)
  • ✅ 存储前验证凭据
  • ✅ 自动过期会话

监控与日志

查看日志
# Recent logs
gcloud run services logs read boomi-mcp-server \
  --region us-central1 --limit 50 --project boomimcp

# Follow logs in real-time
gcloud run services logs tail boomi-mcp-server \
  --region us-central1 --project boomimcp

# Check service status
gcloud run services describe boomi-mcp-server \
  --region us-central1 --project boomimcp
Cloud Console

故障排除

无法连接到 MCP 服务
  1. 检查服务是否正在运行:
curl https://boomi.renera.ai/
  1. 确认已完成 OAuth 同意:

    • 运行 claude mcp add 时,浏览器应会打开
    • 在同意屏幕上点击“批准”
    • 检查是否显示成功消息
  2. 检查 Claude Code MCP 配置:

claude mcp list
凭据未保存
  1. 确认 Web UI 中的所有字段均已填写
  2. 检查凭据验证是否通过
  3. 检查浏览器控制台是否有错误(F12)
  4. 检查服务器日志中的错误消息
API 错误
  1. 确认 Boomi 凭据正确:

    • 电子邮件地址应已在 Boomi 注册
    • API 令牌应有效
    • Account ID 应与您的账户匹配
  2. 直接测试凭据:

curl -u "[email protected]:your-token" \
  "https://api.boomi.com/api/rest/v1/YOUR_ACCOUNT_ID/Account/YOUR_ACCOUNT_ID"

贡献

欢迎贡献!请:

  1. 复刻代码仓库
  2. 创建功能分支(git checkout -b feature/amazing-feature)
  3. 提交更改(git commit -m 'Add amazing feature')
  4. 推送到分支(git push origin feature/amazing-feature)
  5. 发起 Pull Request

技术细节

FastMCP 版本

目前在 requirements.txt 中固定为 FastMCP 3.1.1。包含:

  • OAuth 同意屏幕
  • 会话中间件支持
  • Google OAuth 提供方
  • 服务品牌设置(自定义图标、网站 URL)
会话管理
  • 使用 Starlette 的 SessionMiddleware
  • 会话密钥存储在 GCP Secret Manager 中
  • 会话通过经过加密签名的 Cookie 在请求之间保持
  • 最大有效期:1 小时(可配置)
配置文件管理
  • 每位用户最多 10 个配置文件
  • 配置文件名称为必填项(无默认配置文件)
  • 每位用户的配置文件名称必须唯一
  • 示例:"production"、"sandbox"、"dev"、"staging"

资源


许可证

MIT 许可证 - 详情请参阅 LICENSE 文件。


支持

如有问题、疑问或功能请求:

  • 在 GitHub 上提交 issue
  • 附上相关日志(请先删除机密信息)
  • 描述你的环境和复现步骤

致谢


最后更新:2026-05-18 状态:✅ 生产环境(稳定) 版本:FastMCP 3.1.1

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。