Skip to main content
Glama

bloomgrowth-mcp

Bloom Growth MCP server — exposes the Bloom Growth REST API (EOS/Traction-style meetings, rocks, scorecards, to-dos, and org-chart management) as MCP tools.

Naming note: app.mspbots.ai calls this integration "Bloom Growth" (sys_integration.subject_code = BLOOMGROWTH). MSPbots' own integration only calls one endpoint (GET /api/v1/scorecard/user/mine). Per a 2026-08-04 scope decision, this build was trimmed from an original full-API 123-tool build down to 10 tools covering that endpoint's category (scorecard) plus measurables (the resource scorecards are a computed view over) — see Tool List below for the exact rationale.

Overview

This server implements the Model Context Protocol (Streamable HTTP/SSE transport) and wraps the Bloom Growth REST API v110 tools across 2 files / 2 API tag categories (scorecard, measurables), including write operations (create/update). It follows the MSPbots Vendor MCP Service SOP: stateless, no stored credentials, per-request header authentication.

The underlying API authenticates via OAuth2 Resource-Owner-Password-Credentials grant: POST https://app.bloomgrowth.com/Token with form-urlencoded body grant_type=password&userName=<email>&password=<password>, returning a bearer access token valid for ~2 weeks. This server does not perform that token exchange itself — it receives an already-obtained bearer access token per request; the caller (Agent Platform / upstream gateway) obtains and refreshes the token from the account's email/password, and only the resulting token reaches this server (same pattern as bizratings-mcp, connectwise-asio-mcp, and acronis-mcp in this MCP fleet).

Related MCP server: Workboard MCP

Quick Start

docker compose up --build

The server starts on http://localhost:8080.

Local (uv)

uv sync
python -m bloomgrowth_mcp

Health Check

curl http://localhost:8080/health
# {"status": "ok"}

No token is required for the health endpoint.

授权参数说明 (Authentication)

Every request to /mcp must include the following HTTP header:

Header

类型

是否必填

默认值

枚举值

字段描述

Example

X-BloomGrowth-Token

string

必填

无(自由文本)

OAuth2 bearer access token,由调用方(Agent Platform / 上游网关)通过 POST https://app.bloomgrowth.com/Token(form-urlencoded,grant_type=password&userName=<email>&password=<password>)预先换取,有效期约 2 周,过期后需重新换取。本服务从不接触 email/password,只转发已获取的 token。

X-BloomGrowth-Token: <access_token>

Missing the header returns 401 Unauthorized.

Environment Variables

Variable

Default

Description

MCP_HTTP_PORT

8080

Listening port

MCP_HTTP_HOST

0.0.0.0

Listening host

BLOOMGROWTH_BASE_URL

https://app.bloomgrowth.com

Bloom Growth API base URL

MCP Endpoint

POST http://localhost:8080/mcp

Connect your MCP client with:

  • Transport: http (Streamable HTTP / SSE)

  • Headers: X-BloomGrowth-Token: <access_token> (required)

Tool List

10 tools, trimmed down from an original 123-tool full-API build (2026-08-04). MSPbots' own integration only calls one endpoint (GET /api/v1/scorecard/user/mine -> bloomgrowth_get_my_scorecard); per the "actual usage + same-category core CRUD" scope decision, this build keeps the scorecard category plus measurables (the underlying resource a scorecard is a computed view over — Bloom Growth scorecards are tables of measurables and their weekly values, so there is no separate "scorecard" CRUD to speak of). Everything else from the original 123-tool build (L10 Meetings, Headlines, Issues, Milestones, Process, Rocks, Role, Seats, Teams, Todos, Users, Misc — 12 categories, ~113 tools) was removed as unused by MSPbots and out of scope for this server's purpose. If a removed category is needed later, the vendor's own OpenAPI/Swagger spec (linked below) still documents its exact operations and they can be re-added the same way the kept tools were generated.

Measurables (7)

Tool

功能

参数

bloomgrowth_create_measurable

创建计分卡指标

name?, direction?, target?, unit_type?, accountable_user_id?

bloomgrowth_get_my_measurables

查我的 measurables

include_origin?

bloomgrowth_get_user_measurables

查指定用户的 measurables

user_id, include_origin?

bloomgrowth_update_measurable

更新指标定义

measurable_id, name?, direction?, target?, unit_type?, alt_target?

bloomgrowth_get_measurable

查指标详情

measurable_id, include_origin?

bloomgrowth_get_measurable_scores

查指标的每周得分

measurable_id, include_origin?

bloomgrowth_set_measurable_week_value

设置指标某周的分值

measurable_id, week_id, value?

Scorecard (3)

Tool

功能

参数

bloomgrowth_get_meeting_scorecard

查会议计分卡

meeting_id

bloomgrowth_get_my_scorecard

查我的计分卡

无(MSPbots 现有集成实际使用的唯一接口)

bloomgrowth_get_user_scorecard

查指定用户的计分卡

user_id

测试示例 (Test Example)

Get the calling user's scorecard (matches MSPbots' existing integration usage):

{
  "method": "tools/call",
  "params": { "name": "bloomgrowth_get_my_scorecard", "arguments": {} }
}

Equivalent curl against the running server (streamable HTTP MCP endpoint):

curl -X POST http://localhost:8080/mcp \
  -H "Content-Type: application/json" \
  -H "X-BloomGrowth-Token: <access_token>" \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": { "name": "bloomgrowth_get_my_scorecard", "arguments": {} }
  }'

A parameterized call:

{
  "method": "tools/call",
  "params": {
    "name": "bloomgrowth_get_rock",
    "arguments": { "rock_id": 12345 }
  }
}

API Reference

Known Gaps / Implementation Notes

  • Trimmed from 123 to 10 tools on 2026-08-04. The original build covered the full public API across 18 tag categories per an earlier scope decision. A later scope decision cut this back to MSPbots' actually-used category (scorecard) plus measurables — see the Naming note and Tool List above for the exact rationale. If a removed category (L10 Meetings, Headlines, Issues, Milestones, Process, Rocks, Role, Seats, Teams, Todos, Users, Misc — ~113 tools total) is needed later, the vendor's OpenAPI/ Swagger spec (linked below) still documents its exact operations and they can be re-added the same way the kept tools were generated.

  • Not yet tested against a live Bloom Growth account — only protocol-level verification (health check, 401 on missing token, tools/list returning all 10 tools, and JSON-schema validation) has been done so far.

  • bloomgrowth_create_measurable and bloomgrowth_update_measurable expose their request bodies as named optional parameters rather than a generic body: dict, since the Bloom Growth schemas are shallow (no deep nesting) — this differs from the body/extra_params dict pattern used in larger/deeper-nested vendor APIs elsewhere in this MCP fleet.

  • Endpoints whose exact request/response shape wasn't fully described by the OpenAPI spec (a few return simple 200 with no documented body) are implemented to match the spec's declared parameters; verify against a real account before relying on edge-case behavior.

Related MCP Connectors

Related MCP Servers