Bootstrapper

Gluesync Bootstrapper is a configuration tool for setting up database schema mappings between source and target systems in an automated way, bypassing the need to manually configure entities in the Gluesync Core Hub Web UI. It also ships with an MCP (Model Context Protocol) server that exposes every CoreHub operation as AI-agent-callable tools, enabling natural-language pipeline management, debugging, and monitoring via Claude Desktop, Windsurf, Cursor, and other MCP-compatible clients.
This project is Open Source
Gluesync Automator UI
For users who prefer a graphical interface over command-line tools, the Bootstrapper is also available as a standalone executable with a web-based UI. The Gluesync Automator provides a user-friendly interface accessible via localhost:8080, featuring drag-and-drop configuration uploads, live log monitoring, and simplified authentication without requiring Python dependencies.
Overview
The Bootstrapper allows you to define table structures, column mappings, and connection properties using YAML configuration files, enabling precise control over how data is transferred and transformed across different database systems. This automation tool integrates directly with the Core Hub API to streamline entity configuration.
Key Features
-
Real-time Data Synchronization
-
Automated synchronization between source and target databases
-
Support for multiple database systems (MS SQL Server, Couchbase, etc.)
-
Configurable filtering and transformation rules
-
-
Schema Configuration
-
Table structure mapping
-
Column mapping with type safety
-
Custom document key generation
-
TTL (Time To Live) management for target documents
-
Schedules for recurring jobs (via Chronos)
-
…and much more
-
-
Pipeline Management
-
Flexible polling intervals and batch processing
-
Automatic agent configuration
-
Direct Core Hub API integration
-
-
AI Agent Integration (MCP Server)
-
48 tools exposing pipelines, agents, entities, sync commands, metrics, notifications, and more
-
Works with Claude Desktop, Windsurf, Cursor, and any MCP-compatible client
-
Automatic token sharing — no manual environment configuration needed
-
One-click client setup from the Automator Settings UI
-
AI Agent Integration (MCP Server)
The Bootstrapper includes a built-in MCP (Model Context Protocol) server that exposes every CoreHub operation as a callable tool. Any MCP-compatible AI client — Claude Desktop, Windsurf, Cursor, OpenClaw, or custom agents — can list pipelines, start and stop sync, inspect entity status, read metrics, and manage notifications using natural language prompts.
What AI agents can do
| Tool | Description |
|---|---|
|
List all pipelines with IDs and completion status |
|
Full config and agent details for a pipeline |
|
High-level health summary (syncing / idle / erroring / paused) |
|
Real-time runtime status for every entity ( |
|
Agent configuration (raw includes secrets, requires |
|
Attach or detach agents from pipelines |
|
Control replication and snapshots |
|
Pause and resume without losing checkpoints |
|
Browse and acknowledge CoreHub events |
|
Real-time throughput and raw Prometheus text |
|
Read UDF source code |
|
Export pipeline config to YAML for migration |
|
Instance metadata |
Full tool count: 48 (see the 2.7.0 release notes for the complete list).
Authentication
The MCP server needs a valid CoreHub JWT to call the REST API. You have three ways to provide it:
-
Automatic (recommended) — Log in via the Automator web UI. The token is written to
.gluesync_mcp_tokenin the project root and read automatically by the MCP server. -
Environment variable — Set
COREHUB_TOKENin the shell or client config. -
Tool argument — Pass
tokendirectly in any individual tool call.
Transport options
- SSE (via Automator)
-
When the Automator is running, the MCP server is available at
http://localhost:<AUTOMATOR_PORT>/mcp/sse. Connect any SSE-capable client (Cursor, Windsurf, custom agents) to that URL. Token is injected automatically from Automator state. - stdio (Claude Desktop, CLI agents)
-
Run the server as a subprocess over stdio:
# Automatic token (written by Automator login)
python -m mcp_server.server
# Or with explicit token
export COREHUB_TOKEN="your-token"
python -m mcp_server.server
Claude Desktop config (claude_desktop_config.json):
{
"mcpServers": {
"gluesync": {
"command": "python3",
"args": ["-m", "mcp_server.server"],
"cwd": "/path/to/gluesync-bootstrapper"
}
}
}
One-click client setup
The Automator Settings UI includes an AI Agent Integration card that detects installed MCP clients on your machine (Claude Desktop, Windsurf, Cursor). Select the clients you want to configure and click Setup MCP. The Automator will:
-
Detect each client’s config path
-
Safely merge the Gluesync MCP server entry
-
Preserve any existing servers you already have configured
After setup, restart the AI client app to activate the connection.
Example agent interactions
User: Which pipelines are currently configured?
Agent → list_pipelines()
User: Are there any errors on pipeline abc-123?
Agent → get_pipeline_status(pipeline_id="abc-123")
Agent → get_notifications(pipeline_id="abc-123", level=["ERROR"])
User: Start a full snapshot for all entities in pipeline abc-123
Agent → start_sync(pipeline_id="abc-123", with_snapshot=true)
User: Export the QA pipeline config so I can import it to production
Agent → export_pipeline_yaml(pipeline_id="abc-123", base_url="https://qa-corehub:1717")
User: What's the replication lag on the source agent?
Agent → get_agent_prometheus_metrics(pipeline_id="abc-123", agent_id="source-agent-id")
Configuration
The Bootstrapper works with two primary configuration files:
-
Schema configuration (
table-list-template.yaml) -
Agent configuration (
config.json)
Schema Configuration
The schema configuration defines how tables should be synchronized and transformed:
You can download a ready-to-use schema template here:
dbo: # Source schema
target: public # Target schema
customProperties: # Custom properties for both source and target
source: # Source custom properties
maxItemsCountPerIteration: 1000
pollingIntervalMilliseconds: 100
target: # Target custom properties
ttlValue: 10000000
tables: # Tables to be synchronized
whitelist: # Allowed tables to be synchronized, empty list means all tables
- DRIVERS
- VEHICLES
blacklist: # Forbidden tables to be synchronized, empty list means no restrictions
- TEST
Table Configuration
Each table can be configured with detailed mapping information:
DRIVERS:
keys:
- ID
documentKey:
prefix: "TESTPREFIX"
suffix: "TESTSUFFIX"
separator: "-"
keys:
- ID
- LAST_NAME
name: drivers
columns:
- FIRST_NAME: "FIRST_NAME"
- LAST_NAME: "LAST_NAME"
- AGE: "AGE"
- EMAIL: "EMAIL"
Usage
Getting Started
Before using the Bootstrapper, you need:
-
A running Gluesync deployment with Core Hub accessible
-
Authentication credentials for the Core Hub API
-
Proper network connectivity between source and target systems
Authentication
To use the tool, you need to get a valid authentication token from the Core Hub API. This can be done in several ways:
-
By logging in to the Core Hub Web UI and copying the token from the browser’s cookies
-
By using an HTTP client to request a token
curl -X POST https://<corehub-url>/authentication/login -H "Content-Type: application/json" -d '{"username":"<username>","password":"<password>"}'
Main Script Usage
The primary entry point is the main.py script which creates a new pipeline and configures the agents:
python main.py --config <path_to_config> --token <auth_token> [--skip-errors] [--chunk-size <number>]
Alternatively, you can use environment variables:
# Set environment variables
export FILE_CONF_PATH="./my-config.json"
export CORE_HUB_URL="https://my-corehub:1717"
export DEFAULT_PASSWORD="my-secure-password"
export CREATE_ENTITIES_FROM_SCHEMA="true"
export TARGET_SCHEMA="public"
export SOURCE_TYPE="SQL"
export TARGET_TYPE="NoSQL"
# Run the script
python main.py
Creating Entities
To create entities in the Core Hub based on your YAML configuration:
python create_all_entities.py --pipeline <pipeline_id> --source-schema <source_schema> --target-schema <target_schema> --source-type <source_agent_type> --target-type <target_agent_type> --yaml-file <path_to_yaml_config> --token <auth_token> [--skip-errors] [--chunk-size <number>]
Parameters:
-
--pipeline: Required. The ID of the pipeline to create entities for -
--source-schema: Required. Source schema name -
--target-schema: Required. Target schema name -
--source-type: Required. Source agent type (e.g.,SQLfor RDBMSs,NoSQLfor NoSQL databases) -
--target-type: Required. Target agent type (e.g.,NoSQLfor NoSQL databases,SQLfor RDBMSs) -
--yaml-file: Required. Path to the YAML configuration file -
--token: Required. Authentication token for API access -
--skip-errors: Optional. Continue execution even if errors occur -
--chunk-size: Optional. Number of entities to process in each chunk (default: 50)
Accepted values for source-type and target-type:
- SQL (for any RDBMS)
- NoSQL (for NoSQL databases, Kafka, AWSS3, etc.)
Best Practices
-
Store configuration files in version control
-
Create different configuration files for development, staging, and production environments
-
Validate configurations before applying them to production systems
-
Use consistent naming conventions for schemas, tables, and columns
-
Document custom transformations and rules
-
Test configurations thoroughly before deployment
Troubleshooting
Common Issues
| Issue | Possible Cause | Resolution |
|---|---|---|
Authentication failures |
Invalid or expired token |
Generate a new authentication token |
Entity creation errors |
Incorrect schema configuration |
Verify YAML configuration format and structure |
Connection issues |
Network connectivity problems |
Check network settings and firewall rules |
Type mapping errors |
Incompatible data types between source and target |
Verify column type definitions in the YAML configuration |
Release Notes
2.7.8
Released: September 21, 2026
-
Hotfix for Missing entity primary keys regression from 2.7.7 Field Functions (GSSD-1355): restore IT-style
{id: ID}shorthand mappings (no longer skipped as export metadata), fall back to discovery when mapping extraction yields no source columns, and setisPK=trueon matching columns so CoreHub CREATE succeeds for plain SQL entities;
2.7.7
Released: September 20, 2026
-
Fixed Field Functions round-trip in Automator/Bootstrapper export/import (GSSD-1355): read
target.entityType.fieldFunctions, emit documented YAMLexpressionblocks, and rebuild field functions on import; -
Entity-only export packages referenced UDF source files (
udf-*/ ZIP when present); full pipeline backup layout is unchanged;
2.7.6
Released: September 8, 2026
-
Fixed first-login password change:
change_passwordis now defined at module scope so HubchangeRequiredno longer raisesNameErrorand falls back to the default password;
2.7.5
Released: September 7, 2026
-
Fixed DbMoto converter YAML/report export on Windows: force UTF-8 encoding on text reads/writes so non-ASCII metadata (e.g. Hungarian Ő) no longer crashes with
UnicodeEncodeErrorunder the Windows locale encoding;
2.7.3
Released: August 21, 2026
-
No Bootstrapper runtime change. Tagged together with Automator 1.4.7 so the maintenance-mode backup skip ships on main;
2.7.2
Released: August 20, 2026
-
Restored the original credentials-then-cert-store order. Hub 2.2.11.1 now requires agent credentials before uploading a certificate store;
-
Safe on older Hub (2.2.10.12 and earlier);
2.7.0
Released: June 15, 2026
-
New MCP server exposing CoreHub pipeline operations as tools for AI agents (48 tools total). Supports both SSE (via Automator) and stdio (Claude Desktop, Windsurf, Cursor) transports;
-
Entity Operations:
get_pipeline_entities_status— returns real-time runtime status (isSyncActive,isMigrationActive,isBusy,errorState) for every entity in a pipeline. This is the same data the Gluesync MPP UI uses to display entity status (Active / Hold / Error); -
Agent Management:
get_agent,get_agent_raw(with secrets, requiresSUPER_ADMIN),get_agent_node_info,assign_agent,unassign_agent; -
Sync Commands:
redo_sync(restart from zero),one_time_snapshot,start_group_sync,stop_group_sync; -
Maintenance:
enter_maintenance_mode,exit_maintenance_mode; -
Global Configuration:
get_global_config,get_global_config_keys,get_release_channel,set_log_level; -
Notifications:
get_notification(by ID),get_notification_count,mark_notifications_read(by ID or all); -
Mapping Functions (UDF):
list_mapping_functions,get_mapping_function_code; -
Metrics:
get_pipeline_metrics,get_agent_metrics,get_entity_metrics,get_global_metrics,get_prometheus_metrics(raw OpenMetrics text),get_agent_prometheus_metrics; -
License & Version:
get_license_info,get_corehub_version; -
Automatic token sharing — token written to
.gluesync_mcp_tokenon login, read automatically by the MCP server. No manualCOREHUB_TOKENenvironment variable needed; -
One-click MCP client setup — added
/api/mcp/statusand/api/mcp/installendpoints to the Automator, with a setup card in the Settings UI for detected clients (Claude Desktop, Windsurf, Cursor); -
stdio transport stability — fixed
AttributeErrorduring initialization and redirectedsys.stdouttosys.stderrto prevent strayprint()calls from corrupting the JSON-RPC protocol stream; -
Entity status accuracy —
get_pipeline_statusnow calls the newGET /pipelines/{pid}/entities-statusREST endpoint (also added to the Kotlin backend) instead of scanning entity configuration objects for non-existent status fields. Status is now computed the same way as the MPP UI:erroriferrorState != null,activeifisSyncActive || isMigrationActive,holdotherwise;
-
2.6.1
Released: May 29, 2026
-
Table creation now does not attempt sending physical keys creation when source table doesn’t have any;
2.5.3
Released: May 19, 2026
-
Improved data type resolution during entity creation by normalizing mapped types against the target matrix canonical values and preserving valid YAML
typeoverrides when they match supported target types; -
Lowered log severity for expected Core Hub error statuses (for example 404 during table existence checks) to reduce false-positive error noise in normal flows;
2.4.10
Released: April 27, 2026
-
Fixed an issue where target defined columns were not picked up during entity creation;
2.4.8
Released: March 31, 2026
-
Fixed a bug with tables retrieval when using MultiTable entities and multiple schemas within the same yaml template;
2.4.7
Released: March 23, 2026
-
Fixed an issue with target columns not being properly mapped when having different cases;
2.4.2
Released: March 9, 2026
-
Fixed snapshot write method not being used when startin an entity;
-
Fixed a regression on legacy YAML format handling;
2.4.1
Released: March 7, 2026
-
Fixed an issue during import of tables with multiple occurrences of the same table name within a YAML file;
2.3.18
Released: February 26, 2026
-
Fixed an issue with target table creation and no keys at source;
-
Azure data lake data type mapping improvements;
2.3.17
Released: February 26, 2026
-
Create target table with declared keys when source tables has none;
2.3.15
Released: February 25, 2026
-
Major refactor on data types management with the introduction of data type matrix;
2.3.14
Released: February 25, 2026
-
Fixed an issue with create table processing and columns ids exports;
2.3.12
Released: February 19, 2026
-
Fixed an issue with case sensitiveness applied when attempting to perform table’s creation;
2.3.11
Released: February 15, 2026
-
Added support for pre & post snapshot queries as per Gluesync 2.1.11;
2.3.10
Released: February 2, 2026
-
Added support for SQL where clauses applied at source database level;
2.3.8
Released: January 16, 2026
-
Fixed import of document keys;
-
Fixed import of filters;
-
Minor fixes and improvements;
2.3.5
Released: December 10, 2025
-
It is not longer necessary to manually declare the source & target agents types, those will be derived from the embedded agents.json;
2.3.3
Released: December 6, 2025
-
GSSD-442: when using "targetOnlyColumns" with "lockedSchema" set to true, you’ll prompted with an error;
2.3.2
Released: December 6, 2025
-
Support for source & target type within .yaml (both for import & export);
2.1.16
Released: September 23, 2025
-
Support for conditional deletion ahead of snapshot task;
-
Support for custom snaphost method property (e.g. INSERT / UPSERT).