brain-operator-mcp
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@brain-operator-mcplist my brains"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
Brain Operator MCP
A TypeScript MCP server that lets ChatGPT and other MCP clients read and safely modify TheBrain through the TheBrain REST API.
Setup
npm install
cp .env.example .env
# edit .env and set THEBRAIN_API_KEY
npm run devThe server defaults to:
GET /healthPOST /mcpGET /brain/healthPOST /brain/mcpGET /brain/v012/healthPOST /brain/v012/mcpTheBrain Cloud API base URL:
https://api.bra.inTheBrain Local API base URL:
http://localhost:8001/api
Set THEBRAIN_MODE=local when you want the normal brain, thought, note, link, and attachment tools to use TheBrain desktop Local API instead of TheBrain Cloud API. In local mode those tools authenticate with THEBRAIN_LOCAL_API_TOKEN and use THEBRAIN_LOCAL_BASE_URL; THEBRAIN_API_KEY is only required in cloud mode.
Related MCP server: MCP Server
Health
curl http://localhost:3000/healthExpected:
{
"ok": true,
"name": "brain-operator-mcp",
"version": "0.1.5"
}MCP Inspector
npm run inspectUse http://localhost:3000/mcp as the Streamable HTTP endpoint.
ChatGPT App Endpoint
For development, expose the local server through HTTPS:
npm run dev
ngrok http 3000Then add this MCP server endpoint in ChatGPT developer mode:
https://<ngrok-subdomain>.ngrok.app/mcpIf MCP_API_TOKEN is set, clients must send:
Authorization: Bearer <MCP_API_TOKEN>Shared Domain Path Routing
If mcp.gamescrazy.win is already used by another MCP service, keep that service on /mcp and expose this server under /brain/mcp.
Cloudflared ingress example:
ingress:
- hostname: mcp.gamescrazy.win
path: /brain/.*
service: http://127.0.0.1:3000
- hostname: mcp.gamescrazy.win
service: http://127.0.0.1:7676
- service: http_status:404Then use this MCP endpoint:
https://mcp.gamescrazy.win/brain/mcpTools
Read-only:
health_checklist_brainsget_brainsearch_thoughtsget_thoughtget_thought_graphget_notelist_attachments
Safe writes:
create_thoughtupdate_thoughtcreate_linkappend_notereplace_noteadd_url_attachment
Local app control:
get_app_stateopen_brainactivate_thoughtclose_brain_tab
Plan workflow:
create_change_plancreate_note_update_planget_change_plandiscard_change_plancommit_change_plan
Batch plans support create_thought, create_link, append_note, and replace_note changes.
Use create_note_update_plan when a client hides or blocks the direct replace_note tool; it creates a pending plan for a full note update and still requires commit_change_plan with confirm: true before TheBrain is changed.
Local App Control
The MCP server can control the local TheBrain desktop client through TheBrain Local API.
In TheBrain desktop, enable Local API in settings.
Copy the Local API token into
THEBRAIN_LOCAL_API_TOKENin.env.Set
THEBRAIN_LOCAL_BASE_URLif your Local API is not onhttp://localhost:8001/api.
Local-only tools:
get_app_stateopen_brainactivate_thoughtclose_brain_tab
open_brain, activate_thought, and close_brain_tab require WRITE_TOOLS_ENABLED=true because they change local client UI state.
Safety
Never put a real API key in source, docs, tests, logs, screenshots, or commits.
Single-step write tools respect
WRITE_TOOLS_ENABLED.Destructive tools are not registered in v0.1.
Batch writes must be created as a plan, reviewed by the user, then committed by
planId.Notes are append-only and limited by
MAX_NOTE_CHARS.replace_noteis the explicit full-note content setting tool. It sends the provided Markdown body to TheBrain's note update endpoint and is kept separate fromappend_note.URL attachments reject local and private-network hosts.
Manual Smoke Tests
Read-only:
Call list_brains.
Pick a brainId.
Call search_thoughts with queryText = "test".
Call get_thought on one result.Single-step write:
Call create_thought:
- name: "[MCP_TEST] Brain Operator Smoke Test"
- label: "Created by brain-operator-mcp smoke test"
Call append_note on created thought:
- markdown: "This is a smoke test note."Batch plan/commit:
The example below uses redacted placeholders. Do not paste private source notes into public docs, issues, or screenshots.
{
"title": "[MCP_TEST] Redacted Import",
"changes": [
{
"id": "c1",
"op": "create_thought",
"clientRef": "t_root",
"name": "[MCP_TEST] REDACTED_ROOT_TOPIC",
"label": "[REDACTED_LABEL]"
},
{
"id": "c2",
"op": "create_thought",
"clientRef": "t_core_loop",
"name": "[MCP_TEST] REDACTED_CHILD_TOPIC"
},
{
"id": "c3",
"op": "create_link",
"fromRef": "t_root",
"toRef": "t_core_loop",
"relation": "child"
},
{
"id": "c4",
"op": "append_note",
"targetRef": "t_root",
"markdown": "[REDACTED_MARKDOWN_CONTENT]"
},
{
"id": "c5",
"op": "replace_note",
"targetRef": "t_core_loop",
"markdown": "[REDACTED_REPLACEMENT_MARKDOWN]"
}
]
}Then call commit_change_plan with:
{
"planId": "returned_plan_id",
"confirm": true
}Single-note update plan:
{
"brainId": "brain_id",
"thoughtId": "thought_id",
"title": "Update note",
"markdown": "[REDACTED_REPLACEMENT_MARKDOWN]"
}Then call commit_change_plan with the returned planId and confirm: true.
Common Errors
BRAIN_ID_REQUIRED: passbrainIdor setTHEBRAIN_DEFAULT_BRAIN_ID.WRITE_DISABLED: setWRITE_TOOLS_ENABLED=truewhen you intentionally want writes.UNSAFE_URL: use a publichttporhttpsURL.PLAN_NOT_PENDING: the plan was already committed, discarded, or expired.LOCAL_APP_TOKEN_REQUIRED: setTHEBRAIN_LOCAL_API_TOKENfrom TheBrain desktop Local API settings.LOCAL_APP_UNAVAILABLE: enable TheBrain Local API and checkTHEBRAIN_LOCAL_BASE_URL.LOCAL_APP_AUTH_FAILED: use the Local API token from TheBrain desktop settings.LOCAL_APP_ACTION_FAILED: check the brain/thought IDs and local client state.
Verification
npm run typecheck
npm run lint
npm test
npm run buildThis server cannot be installed
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
Related MCP Servers
- AlicenseAqualityAmaintenanceLocal-first MCP server for working with an Obsidian vault. No API key requiredLast updated173MIT
- Flicense-qualityCmaintenanceA basic MCP server implementation using Node.js and TypeScript that bridges AI models with external tools and data sources via JSON-RPC.Last updated2
- Alicense-qualityBmaintenanceTypeScript MCP server for Obsidian with core vault operations, graph analytics, and semantic search.Last updated12MIT
- Flicense-qualityDmaintenanceWraps TheBrain knowledge graph as an MCP server, enabling AI assistants to search, create, and manage thoughts, links, and notes via natural language.Last updated5
Related MCP Connectors
A TypeScript MCP server for Home Assistant, enabling programmatic management of entities, automati…
An MCP server that gives your AI access to the source code and docs of all public github repos
FastMCP server for TheBrain API — AI access to a personal knowledge graph, Tollbooth-monetized
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
MCP directory API
We provide all the information about MCP servers via our MCP API.
curl -X GET 'https://glama.ai/api/mcp/v1/servers/Gamecrazy/brain-operator-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server