MindSync MCP
The MindSync MCP server is a local-first Model Context Protocol server that enables multiple AI coding agents to share memory, track focus, detect conflicts, and optionally sync durable facts to a remote host over SSH.
get_sync_context: Load local session state and compiled truth summaries for an agent, optionally pulling fresh data from a remote host first. Always returns local data even if remote is unreachable.update_focus: Register or update what an agent is working on (project, branch, focus, file paths) and receive warnings if another active agent has overlapping focus or is editing the same files/tokens.queue_durable_fact: Write a structured fact (entity, attribute, text, confidence) to the remote host, or store it in a local offline queue if the remote is unavailable.sync_offline_facts: Flush locally queued offline facts to the remote host, optionally triggering remote consolidation and pulling the latest compiled truth back to local cache.pull_truth: Explicitly pull compiled-truth markdown summaries from the remote host into the local cache via SCP.health: Inspect server state, including local data paths, offline queue depth, and whether the remote host is reachable.
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., "@MindSync MCPUpdate my focus to myapp/main focusing on auth module"
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.
MindSync AI
One Python MCP server for multi-agent teams: shared memory, focus conflict detection, an in-process event bus, and CLI agent dispatch (Codex, Claude, Gemini, Cursor, Aider, Grok).
Layer | What it does |
Core | Local-first focus registry + optional durable facts over SSH |
Bus | Typed events ( |
Dispatch | Spawn headless CLI agents, track jobs, cancel process trees |
No cloud account required. Remote sync is opt-in. Zero hard-coded hosts or personal paths.
Rename (v1.1.0): PyPI package and GitHub repo are now
mindsync-ai
(older installs usedmindsync-mcp). Import path and CLI stay the same:import mindsync·mindsync.
Install
pip install mindsync-aiRequires Python 3.10+.
From source:
git clone https://github.com/adityarya24/mindsync-ai.git
cd mindsync-ai
python -m pip install -e ".[dev]"Related MCP server: memory-mcp
MCP client config
{
"mcpServers": {
"mindsync": {
"command": "mindsync"
}
}
}Or:
{
"mcpServers": {
"mindsync": {
"command": "python",
"args": ["-m", "mindsync.server"]
}
}
}(Windows: point at your venv’s python.exe if agents don’t share PATH.)
Tools (13)
Core memory / focus
Tool | Purpose |
| Local state + compiled truth (optional remote pull) |
| Per-agent focus/project/branch/paths; conflict warnings → emits |
| Remote write or offline queue → emits |
| Flush offline queue; consolidate + pull truth |
| Windows-safe SCP pull of compiled-truth markdown |
| Paths, queue depth, remote reachability |
Event bus
Tool | Purpose |
| Publish a typed event with payload |
| Poll events since a sequence number |
| Subscribe an agent to event types |
Agent dispatch
Tool | Purpose |
| Run a CLI agent (foreground or background) |
| Job status + PID reconciliation |
| Read job result file |
| Cancel running job and kill its process tree |
Dispatch also auto-emits job.started, job.completed, and job.failed on the bus.
CLI (dispatch)
mindsync-dispatch agents
mindsync-dispatch run codex "summarize README" --background
mindsync-dispatch status
mindsync-dispatch result <job-id>
mindsync-dispatch cancel <job-id>Jobs live under ~/.claude/agent-dispatch/jobs/ (override with AGENT_DISPATCH_HOME).
Custom agents: ~/.claude/agent-dispatch/agents.json.
Built-in presets: codex, claude, gemini, cursor, aider, grok.
Quick start (local only)
No env vars required for core + bus + dispatch. State lives under ~/.mindsync.
Start:
get_sync_context(agent_name)Work:
update_focus(agent_name, project, branch, focus, paths=[...])Milestone:
queue_durable_fact(agent_name, entity, attribute, text)Delegate:
delegate_task(agent="codex", prompt="...", background=True)Reconnect:
sync_offline_facts(agent_name)when remote is configured
Optional remote sync
Remote stays disabled until both are set:
export MINDSYNC_SSH_HOST=my-server # SSH config Host or user@host
export MINDSYNC_REMOTE_ROOT=/opt/mindsync # directory on that hostSee .env.example and examples/remote/.
Env var | Default | Meaning |
|
| Local data root |
| (empty) | SSH host; empty disables remote |
| (empty) | Remote project root |
|
| Sourced on remote before commands |
|
| Relative to remote root |
|
| Relative to remote root |
|
| Markdown summaries directory |
|
| SSH connect timeout (seconds) |
|
| Ignore older focus entries |
|
| Cache TTL for online probe |
|
| Local lock wait (seconds) |
|
| Steal lock after holder stops renewing |
SSH must be key-based / BatchMode-friendly.
Two machines (VPS + laptop)
Run MindSync AI on each machine for local focus/state. Share durable facts via one always-on host:
VPS: deploy
examples/remote/scripts under e.g./opt/mindsync.Laptop: set
MINDSYNC_SSH_HOST+MINDSYNC_REMOTE_ROOTto that VPS.VPS itself: leave remote vars empty — it is the store.
Local data layout
Under MINDSYNC_HOME (default ~/.mindsync):
local-state.json— active project + per-agent focus maplocal-audit.jsonl— append-only action logoffline_queue.jsonl— durable facts waiting for remoteevents.jsonl— event bus logsubscriptions.json— event subscriptionscompiled-truth/*.md— pulled remote summaries.locks/— exclusive lockfiles
Layout
mindsync-ai/ # GitHub repo
├── mindsync/
│ ├── server.py # FastMCP tools (core + bus + dispatch)
│ ├── storage.py # JSON/JSONL + locks
│ ├── bridge.py # optional SSH/SCP
│ ├── conflict.py # focus overlap
│ ├── config.py # env-based settings
│ ├── bus/ # Event bus engine
│ └── dispatch/ # Agent dispatch (presets, runner, CLI)
├── examples/remote/
├── tests/
└── pyproject.toml # PyPI: mindsync-aiDevelop / test
python -m pip install -e ".[dev]"
python -m pytest -q
python scripts/smoke_test.pyCI runs on every push/PR to master (Python 3.10 / 3.12 / 3.13 × Ubuntu + Windows).
Design principles
Offline-first — local tools always work; remote is opt-in.
Locked local state — exclusive locks around state/queue/events.
Safe remote writes — identifier allowlists + base64 text over SSH.
No false-positive conflicts — same project alone is not a conflict.
Generic by default — zero personal paths in code.
Safe dispatch — model tokens validated; Windows
.cmd/.batarg-mode prompts blocked.
Security notes
Runs with the privileges of the executing user. Wire only into trusted local agents.
Pulled remote truth is treated as untrusted (filename/UTF-8 validation, atomic swap).
Local store defaults to Unix
0700dirs /0600files where the OS allows.SSH errors are scrubbed before return to clients.
Full details: SECURITY.md.
License
MIT
Maintenance
Resources
Unclaimed servers have limited discoverability.
Looking for Admin?
If you are the server author, to access and configure the admin panel.
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/adityarya24/mindsync-ai'
If you have feedback or need assistance with the MCP directory API, please join our Discord server