MCP
Connect AI agents like Claude Code, Codex, and Cursor to your GalaxyBrain workspace. Read, write, search, and monitor your pages, templates, and layout in real time.
Setup
Prerequisites
- Bun runtime installed
- GalaxyBrain open in a Chromium-based browser (Chrome or Edge)
Install
Ask your AI assistant to install the GalaxyBrain MCP server (galaxybrain-mcp).
Or install manually. Add to your tool's MCP settings:
{
"mcpServers": {
"galaxybrain": {
"command": "npx",
"args": ["-y", "galaxybrain-mcp"]
}
}
}
The MCP server starts a local API server automatically if one isn't already running. It communicates with GalaxyBrain browser tabs over a local WebSocket connection (default port 1924).
Port override
{
"mcpServers": {
"galaxybrain": {
"command": "npx",
"args": ["-y", "galaxybrain-mcp"],
"env": { "GB_API_PORT": "3000" }
}
}
}
If you override the port, also pass ?gb_port=3000 in the GalaxyBrain browser URL.
How It Works
AI Tool (Claude Code, Cursor, etc.) ↕ MCP protocol (stdio)GalaxyBrain MCP Server↕ WebSocket (localhost:1924)GalaxyBrain API Server↕ WebSocketGalaxyBrain Browser Tab(s)
The MCP server is a thin translation layer. It receives tool calls from your AI assistant, converts them to WebSocket commands, sends them to the API server, and formats the responses.
Multiple MCP server processes can connect simultaneously. The API server is started automatically if not already running. When the MCP session that spawned the API server exits, it terminates the API server. Other connected MCP sessions will automatically re-spawn it on their next command.
Version Checking
The MCP server performs two version checks:
- Protocol compatibility — Before connecting to an API server, the MCP server checks the API server's protocol version. If the versions don't match, it returns an error with instructions.
- npm update check — On startup, the MCP server checks the npm registry for newer versions of
galaxybrain-mcp. If an update is available, it logs a warning.
Tools Overview
The MCP server provides 13 tools. Use galaxybrain_help to look up detailed schemas for complex nested payloads.
galaxybrain_status
Check whether the API server is running and list connected browser tabs. Shows each tab's state, project, and connection details. Use this first to confirm connectivity.
galaxybrain_project
Manage the project lifecycle: list available folders, open folder by ID, open demo by name, close the current project.
galaxybrain_read_pages
Read full serialized content of pages or templates. Manage selection by ID or read all open tabs. Control returned fields with icon, title, subtitle, blocks flags.
galaxybrain_query
Search and filter pages with text search, error search, references search, graph filters, count filters, field projection, sorting, and pagination.
galaxybrain_traverse
Build a recursive page-link tree starting from a root page:
- down (MAP) — walks outbound links.
- up (ANCESTORS) — walks inbound links.
galaxybrain_write_pages
Create, update, or delete pages or templates. Supports full replacement, surgical block-level edits, and image uploads via base64.
galaxybrain_create_from_template
Create a page from a template with automatic value resolution. A page link is inserted into the specified source block.
galaxybrain_items
Push (insert) or pop (remove) items from specific blocks. Useful for appending tasks, inserting links, or removing items.
galaxybrain_workspace
Read or write the workspace tab layout. Supports optimistic concurrency via readVersion.
galaxybrain_watch
Start watching for real-time events. Returns a shell command to run with your AI tool's process monitor.
galaxybrain_update
Warm the npx cache for galaxybrain-mcp@latest. On success, returns a message instructing the user to restart their MCP host.
galaxybrain_help
Look up detailed documentation on a specific topic during a session. Available topics include overview of tools, styles, units, errors, and troubleshooting.
Typical Workflow
galaxybrain_status→ check connectivity, see open instancesgalaxybrain_orient→ understand the project structuregalaxybrain_read_pages→ read contentgalaxybrain_query→ search and filtergalaxybrain_traverse→ explore link structuregalaxybrain_write_pages→ create/update/delete pagesgalaxybrain_items→ insert/remove itemsgalaxybrain_create_from_template→ create from template
If no project is open, use galaxybrain_project to list and open one first.
Data Model
GalaxyBrain organizes content in a hierarchy: Pages → Blocks → Items → Units.
Pages
| Field | Description |
|---|---|
pageId |
20-character alphanumeric ID |
icon |
Single emoji |
title |
Array of title units |
subtitle |
Array of units |
blocks |
Array of blocks |
Blocks
| Field | Description |
|---|---|
blockId |
Non-negative integer, unique within the page |
items |
Non-empty array of items |
linkOrder |
Optional sort rule for page-link items |
Items
| Type | Description |
|---|---|
text |
Styled text content |
var |
Named variable |
image |
Referenced image |
pageLink |
Standalone link to another page |
Units
| Type | Description |
|---|---|
text |
Plain or styled text |
webLink |
Hyperlink with display text and URL |
pageLink |
Inline reference to another page |
metaRef |
Live computed value |
templateValue |
Placeholder resolved when creating from a template |
Templates
Templates are special pages that serve as blueprints. They use the same structure as regular pages but can contain templateValue units.
Writing Content
Creating a Page
Pass a full page body to galaxybrain_write_pages with action: "create":
{
"action": "create",
"pages": [{
"icon": "📝",
"title": [{ "type": "text", "text": "My Page" }],
"blocks": [{
"blockId": 0,
"items": [{
"type": "text",
"content": [{ "type": "text", "text": "Hello world" }]
}]
}]
}]
}
Updating a Page
For a full replacement, pass the complete page body with a pageId:
{
"action": "update",
"pages": [{
"pageId": "AbcDef1234567890GhIj",
"icon": "🔥",
"title": [{ "type": "text", "text": "Updated Title" }],
"blocks": [{ "blockId": 0, "items": [...] }]
}]
}
Push and Pop
Use galaxybrain_items for targeted insertions and removals:
Push (insert items)
{
"action": "push",
"operations": [{
"pageId": "AbcDef1234567890GhIj",
"blockId": 0,
"items": [{
"type": "text",
"content": [{ "type": "text", "text": "New task" }]
}]
}]
}
Pop (remove items)
{
"action": "pop",
"operations": [{
"pageId": "AbcDef1234567890GhIj",
"blockId": 0,
"count": 1
}]
}
Normalization
Written content is normalized automatically; adjacent compatible units are merged.
Output Modes
| Mode | Description |
|---|---|
summary |
Human-readable formatted text |
raw |
Full JSON response from the API |
full |
Summary text with raw JSON appended |
Versions & Conflict Detection
Each page has an independent integer version that increments on every mutation. Pass readVersion with mutations for optimistic concurrency.
Troubleshooting
Prerequisites
- GalaxyBrain MCP requires Bun.
Updating
The MCP server checks for updates on startup.
Common Errors
| Error | Cause | Fix |
|---|---|---|
GalaxyBrain MCP requires Bun |
Bun not installed | Install Bun |
No GalaxyBrain browser tabs connected |
No browser tab connected | Open GalaxyBrain in Chrome |