OpenGMB

com.synectus.opengmbPublished by opengmb.synectus.comOfficial publisherv1.0.0Updated Oct 25, 2026

Manage Google Business Profiles: reviews, posts, hours and rankings, with human approval.

Overview

AI-generated overview

OpenGMB exposes Google Business Profile management — reviews, replies, posts, hours, performance and rank tracking — as MCP tools with human approval before…

What you can do
  • List and manage reviews across locations, assign them, add notes and draft replies
  • Draft, schedule and submit posts and profile edits (hours, categories, services) for approval
  • Pull performance metrics, health checks, reports and Maps rank tracking
  • Queue work in an approvals inbox and check what is scheduled or published
  • Read-only or read-and-write access depending on the API token used
When to use it
Useful for local businesses and agencies that manage many Google Business Profiles and want an assistant to draft replies, posts and edits while a person still approves everything before it reaches Google.
Requirements
Remote Streamable HTTP endpoint; an OpenGMB account and a bearer token created under Settings > API tokens, sent in the Authorization header. The hosted version is paid; the self-hosted community edition needs Docker, a Google Cloud project with Business Profile API approval, and optional Anthropic and DataForSEO keys.
Before you install
The token grants access to live business profiles; a read-and-write token can submit replies, posts and profile edits, though a human-in-the-loop token cannot approve or publish. Writes are queued for approval and checked by guardrail rules, but review the queue before approving. Self-hosting requires Google API approval and stores credentials and audit data on your own server.

Installation

In SourceWeft

  1. Open OpenGMB in the dashboard and add it to a workspace.
  2. Connect Authorization token credentials. They are stored privately and never shown on public pages.
  3. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/com.synectus.opengmb%2Fserver/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "opengmb": {
      "type": "http",
      "url": "https://opengmb.synectus.com/mcp",
      "headers": {
        "Authorization": "Bearer <YOUR_TOKEN>"
      }
    }
  }
}

README

[OpenGMB, the open-source Google Business Profile manager with approval rules and an MCP server]

[License: MIT] [CI] [GitHub stars] [MCP server] [Self-host with Docker] [Next.js 16] [PostgreSQL]

Website · Docs · Self-host guide · MCP tools · Roadmap · Hosted version

OpenGMB

OpenGMB manages Google Business Profiles for local businesses and the agencies that run them. Reviews, review replies, posts, profile edits, performance, reports and Maps rank tracking, for every location, in one place.

Two things make it different. Every reply, post and profile edit passes a set of rules and waits for a person to approve it before Google sees it. And every action in the app is also an MCP tool, so Claude, Cursor or any MCP client can do the routine work while you keep the final say.

This repository is the community edition: MIT licensed, self-hosted with Docker Compose, your own keys, one owner login for as many clients and locations as you need. It talks to Google only through the official Business Profile API.

[The OpenGMB reviews inbox with filters, replied badges and a review assigned to a teammate]

Why we built it

We run an SEO agency and manage Google Business Profiles for clinics and local businesses. The tools we paid for charged per location, so the bill grew with every client before any work got done. And when we tried AI for replies and posts, we wanted it to draft the routine work while a person still signed off on everything that went live.

So we built the tool we wanted, used it for our own work, and opened the core.

What it does

[The posts list with drafts waiting for approval, published posts and posts made on Google] Posts
Write, schedule and approve posts for one location or many. A calendar shows what is scheduled, published or made directly on Google.
[A five-star review with its assignee, due date and an internal note] Reviews
One inbox for every location's Google reviews. Assign them, add internal notes, and draft replies yourself, with templates or with AI.
[The location health page with a score ring and a list of passing and failing checks] Profile health and edits
A health score with the checks behind it. Edit hours, categories and services across many locations in one change, and catch edits made outside OpenGMB.
[Performance with a plain-language summary and tiles for impressions, calls, website clicks and directions] Performance and reports
Calls, website clicks, direction requests and impressions per location, search keywords by month, and reports you can share with a client.

Also in the community edition:

  • Rank tracking on a geo-grid around each location, next to its competitors, with your own DataForSEO account.
  • AI drafts for replies, posts and descriptions with your own Anthropic key. No credits, no markup.
  • Review requests with tracked links, QR codes and public location pages, and no review gating.
  • Approvals inbox, location groups, white-label branding on reports.
  • REST API (v1), outgoing webhooks, and the source of the Zapier app.
  • Two-factor sign-in (required) and an append-only, hash-chained audit log.

Built for AI agents

The MCP server exposes around 250 tools, one for every action in the app: list reviews, draft and submit replies, schedule posts, edit hours, pull performance, run a health check, and more. Writes go through the same guardrails and approvals as the web app.

Create a token in Settings → API tokens (read only, or read and write), then add the server to your client. For Claude Code:

sh
claude mcp add --transport http opengmb https://your-mcp-host/mcp \  --header "Authorization: Bearer sgmb_your_token"

Then ask in plain words:

Draft replies for this week's 1- and 2-star reviews at every location, and put them in the approval queue.

Which locations lost the most calls last month compared with the month before?

Schedule a holiday hours post for all dental clients for Friday, and send it for approval.

A human-in-the-loop token can draft and submit, but it cannot approve or publish. Every tool, with its inputs and the permission it needs, is listed at opengmb.synectus.com/docs/mcp/tools.

Nothing goes live without a person

WhatRule
Posts and profile editsAlways need a person's approval
Replies to 1 to 3 star reviewsAlways need a person, never published automatically
Replies to 4 and 5 star reviewsNeed a person, unless the owner turns on auto-approve for that client
Every reply, post and editChecked by guardrail rules first: links, emails, phone numbers, offers, bad hours, banned words. Blocks cannot be overridden; warnings must be acknowledged
Healthcare and law firm clientsExtra rule packs (HIPAA-style checks for names, clinical terms and dates; legal ethics)

The rules run again just before anything is sent to Google.

Quick start

You need Docker Engine 24 or newer with the Compose plugin, about 4 GB of free RAM while the images build, and a public HTTPS hostname if you want Google sign-in.

sh
git clone https://github.com/synectus/OpenGMB.gitcd OpenGMB/deploy/selfhostcp .env.example .env     # set OWNER_EMAIL and OWNER_PASSWORD; the comments explain every valuedocker compose up -d --build

Open http://localhost:8080 and sign in with the owner email and password. Two-factor sign-in is required, so have an authenticator app ready and keep the backup codes it shows.

The Google client starts in mock mode: under Settings → Google, press "Use the sample Google account" to import sample locations and click through everything without any Google keys. Going live needs Google's approval of Business Profile API access for your own Google Cloud project, which you request yourself and which can take a few days.

SETUP.md covers every step: ports, email, Google, backups and upgrades. The same guide is online at opengmb.synectus.com/docs/self-hosting.

How it fits together

mermaid
flowchart LR  you([You and your team]) --> web[Web app<br/>Next.js]  agent([Claude, Cursor or any<br/>MCP client]) --> mcp[MCP server]  zap([Zapier and scripts]) --> mcp  web --> core[Core<br/>actions, permissions,<br/>guardrails, audit log]  mcp --> core  worker[Worker<br/>sync, publishing,<br/>reports, schedules] --> core  core --> db[(PostgreSQL)]  core --> google[Google Business<br/>Profile API]  core -. optional .-> ai[Anthropic API]  core -. optional .-> dfs[DataForSEO]

Every surface (web, MCP, REST, worker) runs the same actions through one executor, so permissions, guardrails and the audit log apply the same way no matter who or what makes the change.

PathWhat
apps/webThe Next.js app
apps/mcpThe MCP server (Streamable HTTP) and REST API
apps/workerBackground jobs: review sync, publishing, reports, schedules, Pub/Sub push
packages/coreAuth, tenancy, the action registry, the Google client, guardrail rules, the audit log
packages/dbDrizzle schema and migrations
deploy/selfhostThe self-host stack (Docker Compose). Use this to run OpenGMB
integrations/zapierThe Zapier app source

The docker-compose.yml at the repository root is only a development Postgres for contributors.

Community edition or hosted

Community edition (this repo)Hosted OpenGMB
PriceFree, MIT$10 a month per account, as usage credit
Who runs itYou, on your serverWe do
Google Cloud project and API approvalYoursOurs
Clients and locationsUnlimitedUnlimited
Reviews, posts, edits, reports, rank trackingYesYes
MCP server, REST API, webhooksYesYes
AIYour Anthropic keyIncluded, paid from credit
Teams and rolesOne owner loginYes
Client portal with your brandingNoYes
Custom domainsNoYes

If you would rather not run servers or wait for Google's API approval, the hosted version gives you $0.50 of trial credit with no card.

Roadmap

What we are working on and what comes next is public at opengmb.synectus.com/roadmap. Ideas and bug reports are welcome as GitHub issues.

Contributing

Pull requests are welcome. Read CONTRIBUTING.md first: commits need a DCO sign-off, and accepted changes are merged in our main repository and then synced here, with credit to you. Report vulnerabilities privately, as described in SECURITY.md.

License and trademarks

The code is released under the MIT license. Third-party notices are in THIRD_PARTY_NOTICES.md.

The license covers the code, not the OpenGMB name or logo, which are trademarks of Synectus Private Limited. A fork needs its own name and logo. See TRADEMARKS.md.

OpenGMB is made by Synectus. It is not affiliated with or endorsed by Google. Google Business Profile is a trademark of Google LLC.

Star history

[Star history chart for synectus/OpenGMB]

Source: README.md at commit 4241b6b

Tools

0
This server asks for a credential such as an API key, so SourceWeft could not read its tools without one and has not indexed them.

Version history

1
  1. v1.0.0LatestOct 25, 2026

Score

85% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listed15 pts

    Answer tools/list without a credential, or ship a package that starts in a sandbox without one.

  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts