Boomi API集成服务器

一个生产就绪的模型上下文协议(MCP)服务器,使Claude Code和其他MCP客户端能够通过OAuth 2.0认证和安全凭证存储与Boomi平台API交互。

  • by RenEra-ai
  • Python
  • 本地部署
  • 1 星标
  • 更新于
在 GitHub 查看 Glebuar/boomi-mcp-server

使用说明

Boomi MCP服务器

用于Boomi平台API与Claude Code集成的安全MCP服务器

一个生产就绪的模型上下文协议(MCP)服务器,使Claude Code和其他MCP客户端能够使用OAuth 2.0身份验证和安全凭据存储与Boomi平台API进行交互。

🌐 现场服务: https://boomi.renera.ai


特性

  • 🔐 谷歌OAuth 2.0 -使用同意屏幕进行安全身份验证
  • 🔒 GCP秘密经理 -加密的每个用户凭据存储
  • 👤 多配置文件支持 -每位用户最多可存储10个Boomi帐户配置文件
  • 🌐 Web用户界面 -基于浏览器的凭据管理
  • ✅ 凭证验证 -保存前测试凭据
  • 🚀 自动部署 -GitHub推送→ 云构建(固定KB版本)→ 云运行
  • 📦 MCP工具 -29种工具,涵盖贸易伙伴、流程、组件、运行时、部署、计划、账户管理等
  • 📚 Boomi Docs知识库 -可选检索增强 search_boomi_docs / read_boomi_doc_page 由固定知识库版本支持的工具
  • ☁️ 云原生 -在Google Cloud Run上运行

快速开始

对于用户

  1. 访问Web UI: https://boomi.renera.ai

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

  3. 添加Boomi凭据:

    • 电子邮件:您的Boomi帐户电子邮件
    • API代币:您的Boomi API代币
    • 帐号ID:您的Boomi帐号ID
    • 配置文件名称:此凭据集的名称(例如,“生产”、“沙盒”)
  4. 连接克劳德代码:

claude mcp add --transport http boomi https://boomi.renera.ai/mcp
  1. 授权 -打开浏览器以获取OAuth同意,单击“批准”

  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 和布米 回答——本演练遵循四个请求中的一个 边界,解释跟踪到达Python的位置。

14分钟。涵盖了门控工具注册的条件导入, @mcp.tool 在导入时运行,AnyIO的worker上的同步包装器 线, json.loads 在信任边界,通过 get_secret,以及 **params 进入动作路由器。

视频中显示的行号是指 main 在录制时。


可用的MCP工具

服务器公开了29个工具。所有工具都需要经过身份验证的会话和 有效的 profile 指向存储的Boomi凭据集的参数。

账户和个人资料管理

  • list_boomi_profiles() --列出当前用户的已保存凭据配置文件。
  • boomi_account_info(profile) --获取指定配置文件的帐户详细信息。
  • set_boomi_credentials(...) / delete_boomi_profile(...) --凭证CRUD。
  • 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 Docs知识库(可选)

仅在服务器启动时注册 BOOMI_DOCS_ENABLED=true 和一个 已填充KB BOOMI_DOCS_DB_PATH:

  • search_boomi_docs(query, ...) --跨索引的语义搜索 布米文献语料库。
  • read_boomi_doc_page(page_key) --获取特定商品的完整降价 文档页面。
  • 资源 kb://boomi-docs/corpus --语料库清单(发布标签,页面 计数,在元数据处生成)。

KB语料库由以下人员构建和发布 RenEra-ai/knowledge-base-builder 并在构建时通过以下方式嵌入到图像中 deploy/kb-release.env。参见 KB发布促销 在......下面

冷启动行为(操作员)。 繁重的KB构建(Chroma+嵌入 模型加载)被推迟到导入路径之外,因此服务器绑定了其HTTP端口 立即注册文档工具 之前 KB已准备就绪。每 docs调用以原子方式解析就绪状态,并进入以下三种状态之一:

  1. 正常块然后发球 --在冷启动期间 BOOMI_DOCS_WARMUP_MAX_WAITERS 医生的电话可以作为长期服务员接听 块(以 BOOMI_DOCS_WARMUP_WAIT_SECONDS)直到构建 完成后,返回真实结果。生产建设测度均值~49s, p95~58s,最大~63s,因此被接纳的呼叫者通常只会看到缓慢的第一个呼叫。
  2. 溢出或真正缓慢的构建 --进一步并发呼叫(或 服务员进来了,他等得很慢)回来了 error: warming_up 立即与a 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--kick 在第一个经过身份验证的基础上构建 /mcp 请求), BOOMI_DOCS_WARMUP_WAIT_SECONDS (默认值65——限制已入场的服务员 块的大小刚好高于测量的构建p95/max), 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 Operational Gotchas知识库(可选)

仅在服务器启动时注册 BOOMI_GOTCHAS_ENABLED=true这是 一 分离表面 来自文档知识库(作战现场知识vs官方知识 文档),并由其自己的独立标志进行门控:

  • search_boomi_gotchas(query, top_k=5, issue_ids=None) --搜索策划 已知Boomi无声故障模式和场陷阱目录。通过 issue_ids 对于通过gotcha id进行的确定性精确查找(它优先于 query).空/不匹配行为是明确的,从不捏造条目。
  • 资源 kb://boomi-operational-gotchas/catalog --每个产品的完整目录 条目的症状、检测/频率分类、来源和 verification_status.

与文档知识库不同,此目录 仅限stdlib:仓库内策划的数据集 使用确定性词汇排名,否 requirements-kb.txt /chromadb/ 嵌入依赖性。参赛作品为精选摘要(官方博米BSD-2-Clause 材料+当地问题/建筑师课程分类),而不是逐字复制,并携带 verification_status (live_verified / docs_corroborated / companion_unverified / course_unverified / disputed)因此,代理人可以权衡如何 每个说法都得到了很好的证实。


部署

当前生产部署

  • 托管:谷歌云运行(以美元为中心1)
  • 统一资源定位符: https://boomi.renera.ai
  • CI/CD:通过GitHub自动化
  • 区域:美国中央1
  • 认证:谷歌OAuth 2.0

CI/CD管道

推送时自动部署 main 分支:

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

管道采用源头控制 cloudbuild.yaml 和 将固定的Boomi Docs知识库版本嵌入到图像中。KB标签 居住于 deploy/kb-release.env 所以每个语料库 版本更改是一个可见的仓库编辑——构建过程中不得使用浮动 latest KB发布。

KB发布促销

  1. 在 RenEra-ai/knowledge-base-builder,剪切手册 workflow_dispatch 释放(例如 kb-13).发布必须公布 boomi_knowledge_db.tar.gz 作为一种资产。
  2. 在这个repo中,插入单行 deploy/kb-release.env:
    KB_RELEASE_TAG=kb-13
    
  3. 打开带有该更改的PR并合并到 main.
  4. Cloud Build触发器读取 cloudbuild.yaml,运行a curl -fI 对GitHub发布资产进行预检,然后使用以下命令构建映像 --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 启动时的资源。

云构建触发器迁移

现有触发器 8623a6fa-3295-430a-b018-7c728ba941e8 创建于 未通过的内联自动生成配置 KB_RELEASE_TAG 并且做到了 未设置KB运行时环境变量。将其指向受源代码控制的配置 一次:

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 确切地显示了 KB版本已上线。

手动部署

如果你需要手动部署(跳过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

配置

环境变量(云运行)

OAuth代理持久化

MCP OAuth流需要云运行实例睡眠/重启才能存活。 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缓存强化(可选)

填补了剩余的谷歌调用和跨实例差距。全船 安全违约;看见 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秒的grace缓存:grace缓存仍然提供即时服务 重放,恢复在数小时/数天后处理过时的令牌,只有这样 真正的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密钥管理器中:

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 在启动时注册知识库工具:

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 如果KB模块未设置或为false, 这个 requirements-kb.txt 未加载依赖项,KB工具和 kb://boomi-docs/corpus 资源未注册。

MCP无状态传输(工作流B--已在生产中启用)

BOOMI_MCP_STATELESS_HTTP=true 是 固定在 cloudbuild.yaml (因为 2026-06-01).生产运行FastMCP流式HTTP 无状态,其中 消除了每个实例的MCP会话及其导致的故障:在冷 启动有状态的工具调用POST可能会丢失其服务器→客户端响应通道 (当重新连接404连接到第二个实例时,被捕获或搁浅)并挂起 直到Cloud Run的300秒请求超时终止它。无状态地,每个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 (SSE在POST上)被发现失速严重 工具结果(例如 query_components action=返回约30KB的进程 XML)在Cloud Run托管的域映射代理中——响应从未 交付后,客户挂断,没有出现任何错误。缓冲JSON响应是 可靠交付。作为后盾,组件XML读取受 挂钟截止日期(BOOMI_COMPONENT_GET_DEADLINE_SECONDS,默认90秒, 箝位1–240),返回结构化 COMPONENT_GET_DEADLINE_EXCEEDED 如果后端获取本身停滞,则会出现错误而不是挂起。修复可以保存 缩放到零(没有最小实例)。启动日志说明POST帧是什么 活动状态以及流保护环境变量在无状态模式下是否处于惰性状态。 回滚是 BOOMI_MCP_JSON_RESPONSE=false +重新部署。真值惯例: true, 1, yes, on 不区分大小写


本地开发

先决条件

  • Python 3.11+
  • 谷歌云SDK
  • 启用密钥管理器访问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

安全功能

身份验证和授权

  • ✅ 谷歌OAuth 2.0与PKCE
  • ✅ OAuth同意屏幕(防止混淆的代理攻击)
  • ✅ 基于会话的加密签名身份验证
  • ✅ 每用户凭据隔离

数据保护

  • ✅ 仅HTTPS(由Cloud Run强制执行)
  • ✅ 静态加密凭据(GCP密钥管理器)
  • ✅ 传输中加密的凭据(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

云控制台

  • 服务: https://console.cloud.google.com/run/detail/us-central1/boomi-mcp-server
  • 正式记录: https://console.cloud.google.com/run/detail/us-central1/boomi-mcp-server/logs
  • 构建: https://console.cloud.google.com/cloud-build/builds?project=boomimcp

故障排除

无法连接到MCP服务器

  1. 检查服务是否正在运行:
curl https://boomi.renera.ai/
  1. 验证OAuth同意是否已完成:

    • 浏览器应在以下期间打开 claude mcp add
    • 在同意屏幕上单击“批准”
    • 检查成功消息
  2. 检查克劳德代码MCP配置:

claude mcp list

凭据未保存

  1. 验证web UI中是否填写了所有字段
  2. 检查凭证验证通过情况
  3. 查看浏览器控制台是否有错误(F12)
  4. 检查服务器日志中的错误消息

API错误

  1. 验证Boomi凭据是否正确:

    • 电子邮件应在Boomi中注册
    • API令牌应有效
    • 帐户ID应与您的帐户匹配
  2. 直接测试证书:

curl -u "BOOMI_TOKEN.email@example.com: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. 打开拉取请求

技术细节

FastMCP版本

目前固定到 FastMCP 3.1.1 在 requirements.txt。包括:

  • OAuth同意屏幕
  • 会话中间件支持
  • 谷歌OAuth提供商
  • 服务器品牌(自定义图标、网站URL)

会话管理

  • 用途 SessionMiddleware 来自Starlette
  • 会话密钥存储在GCP密钥管理器中
  • 会话通过加密签名的Cookie在请求之间持续存在
  • 最大年龄:1小时(可配置)

配置文件管理

  • 每位用户最多10个配置文件
  • 需要配置文件名称(无默认配置文件)
  • 每个用户的配置文件名称必须是唯一的
  • 示例:“生产”、“沙盒”、“开发”、“暂存”

资源

  • 现场服务: https://boomi.renera.ai
  • GitHub 仓库: https://github.com/RenEra-ai/boomi-mcp-server
  • FastMCP文档: https://gofastmcp.com
  • Boomi Python SDK: https://github.com/RenEra-ai/boomi-python
  • MCP规范: https://modelcontextprotocol.io
  • Boomi平台API: https://help.boomi.com/docs/atomsphere/integration/platform_management/c-atm-platform_api_2cf25c18-ca93-43d2-a53e-048017d0b102/

许可证

MIT许可证-请参阅 许可证 文件以获取详细信息。


支持

对于问题、疑问或功能请求:

  • 打开一个问题 GitHub
  • 包括相关日志(机密已编辑)
  • 描述您的环境和复制步骤

致谢


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