Skip to main content

MindSync MCP

CI

Local-first Model Context Protocol server for multi-agent memory sync and focus conflict detection.

Use it when several coding agents (Claude Code, Codex, Cursor, Gemini CLI, Grok, custom agents, …) share one developer machine and need:

  1. A shared session/focus registry (who is editing what)
  2. Conflict warnings when focuses overlap
  3. Optional durable fact sync to your remote host over SSH (offline queue when remote is down)

No cloud account. No hard-coded hosts or home directories.

Features

Tool Purpose
get_sync_context Load local state + compiled truth (optional remote pull)
update_focus Per-agent focus/project/branch (+ optional paths); conflict warnings
queue_durable_fact Write fact remotely, or queue offline if unreachable / unconfigured
sync_offline_facts Flush offline queue; consolidate + pull truth
pull_truth Windows-safe SCP pull of compiled-truth markdown
health Paths, queue depth, remote reachability

Design principles:

  1. Offline-first — local tools always work; remote is opt-in and best-effort.
  2. Locked local state — exclusive lockfiles around state/queue writes.
  3. Safe remote writes — identifier allowlists + base64 text transport over SSH.
  4. No false-positive conflicts — same project alone is not a conflict; token/path overlap is.
  5. Generic by default — zero personal paths in code; configure via env.

Install

git clone https://github.com/adityarya24/mindsync-mcp.git
cd mindsync-mcp
python -m pip install -e ".[dev]"

Quick start (local only)

No env vars required. State lives under ~/.mindsync.

MCP client config

After pip install -e .:

{
  "mcpServers": {
    "mindsync": {
      "command": "mindsync"
    }
  }
}

Or run the module path explicitly:

{
  "mcpServers": {
    "mindsync": {
      "command": "python",
      "args": ["-m", "mindsync.server"]
    }
  }
}

(Windows: use your venv’s python.exe if agents don’t see the same PATH.)

Optional remote sync

Remote features stay 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 host

See .env.example for the full list and examples/remote/ for sample server-side scripts (mindsync_fact.py, mindsync_consolidate.py).

Env var Default Meaning
MINDSYNC_HOME ~/.mindsync Local data root
MINDSYNC_SSH_HOST (empty) SSH host; empty disables remote
MINDSYNC_REMOTE_ROOT (empty) Remote project root; empty disables remote
MINDSYNC_REMOTE_ENV_FILE config/mindsync.env Optional file sourced on remote before commands
MINDSYNC_REMOTE_WRITE_SCRIPT tools/mindsync_fact.py Relative to remote root
MINDSYNC_REMOTE_CONSOLIDATE_SCRIPT tools/mindsync_consolidate.py Relative to remote root
MINDSYNC_REMOTE_TRUTH_SUBDIR compiled-truth Markdown summaries directory
MINDSYNC_SSH_TIMEOUT 3 SSH connect timeout (seconds)
MINDSYNC_FOCUS_STALE_SECS 7200 Ignore older focus entries
MINDSYNC_REMOTE_CACHE_TTL 30 Cache TTL for online probe
MINDSYNC_LOCK_TIMEOUT 5 Local lock wait (seconds)

SSH must be key-based / BatchMode-friendly (no interactive password prompts).

Local data layout

Under MINDSYNC_HOME (default ~/.mindsync):

  • local-state.json — active project + per-agent focus map
  • local-audit.jsonl — append-only action log
  • offline_queue.jsonl — durable facts waiting for remote
  • compiled-truth/*.md — pulled remote summaries
  • .locks/ — exclusive lockfiles

Agent usage pattern

  1. Start: get_sync_context(agent_name) (set refresh_remote=true when remote is configured).
  2. Work: update_focus(agent_name, project, branch, focus, paths=[...]).
  3. Milestone: queue_durable_fact(agent_name, entity, attribute, text).
  4. Reconnect: sync_offline_facts(agent_name).

Layout

mindsync-mcp/
├── mindsync/
│   ├── server.py      # FastMCP tools
│   ├── storage.py     # JSON/JSONL + locks
│   ├── bridge.py      # optional SSH/SCP
│   ├── conflict.py    # focus overlap
│   └── config.py      # env-based settings
├── examples/remote/   # sample remote hooks
├── tests/
├── .env.example
└── pyproject.toml

Develop / test

python -m pip install -e ".[dev]"
python -m pytest -q
python scripts/smoke_test.py

GitHub Actions runs the same suite on every push/PR to master (Python 3.10 + 3.12, Ubuntu + Windows).

Security & Trust Boundaries

Local Privileges & Trust Boundary

  • User Permissions: MindSync runs with the privileges of the executing user. It interacts with the local filesystem and performs SSH/SCP operations under this user context.
  • Client Isolation: The MCP interface is a trust boundary. MindSync is designed to be wired into trusted local agent clients only.

Untrusted Truth & Manifest Validation

  • Remote Data Injection Protection: Since the compiled truth is pulled from a remote server via SCP, MindSync treats all incoming files as untrusted:
    • Filename / Entity Validation: All pulled filenames must strictly match the regex pattern ^[A-Za-z0-9][A-Za-z0-9_.-]{0,127}$ and cannot contain path traversal characters (.., /, \), Alternate Data Streams (colon :), or reserved Windows device names (e.g. CON, PRN, AUX, NUL, COM1..9, LPT1..9).
    • UTF-8 Validation: Staged truth files are parsed as UTF-8; non-UTF-8 files fail manifest validation and are rejected.
    • Atomic Swapping: Truth updates are staged in a temp directory, validated, and swapped directory-wide under an exclusive lock (truth.lock). Partial/mixed staging states are impossible, and any filesystem errors immediately abort and roll back the swap.

Local Storage Isolation & Permissions Migration

  • Secure File/Directory Defaults: MindSync enforces Unix directory permission 0700 and file permission 0600 for all queue, spool, state, and audit logs.
  • Auto-Migration: Upon starting, MindSync scans the configured MINDSYNC_HOME directory and dynamically migrates permissions of all existing user files to 0600.

Shell Injection & Error Sanitation

  • Base64 Transport: Fact payloads are base64-encoded prior to transport and decoded on the remote side, avoiding raw shell interpolation of free text.
  • Secret Scrubbing: Raw SSH/SCP stdout/stderr errors are sanitized before being returned to clients to prevent leaking server paths, usernames, key files, or host metadata.

License

MIT

Metadata

Release files for mindsync-mcp 1.0.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for mindsync-mcp 1.0.1
File Size Uploaded Provenance
mindsync_mcp-1.0.1.tar.gz 36.4 kB With provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for mindsync-mcp 1.0.1
File Interpreter ABI Platform
mindsync_mcp-1.0.1-py3-none-any.whl Python 3 none any Details

Total release size: 61.2 kB

Release files / mindsync_mcp-1.0.1.tar.gz

Download URL mindsync_mcp-1.0.1.tar.gz
Size 36.4 kB
Tags Source
SHA-256 checksum
How to use checksums
b14bdbb6b853322c817ae3cc9257c17f2218de709b791c89951dfc8041a30d1a
BLAKE2b-256 checksum
How to use checksums
f35e2041a5cba804e9c3f6997ecfdf84feabb50b8c65d74782b1216a6f87b7ca
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.

Transparency log

Release files / mindsync_mcp-1.0.1-py3-none-any.whl

Download URL mindsync_mcp-1.0.1-py3-none-any.whl
Size 24.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
e06433ded82086d4d30ea2e34085fc40b4d3f80ebe17c666676862a8662ca89c
BLAKE2b-256 checksum
How to use checksums
3d886205e993e05b83bc4ce24960ea0311be8ed24bf08ef9fdfce0ec4de41f50
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.13

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.

Transparency log

Security for mindsync-mcp 1.0.1

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

Full provenance

All 2 files in this release have been uploaded with provenance metadata.

Select from 2 files

Attestation for mindsync_mcp-1.0.1.tar.gz

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 18, 2026.

Transparency log

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

1.0.1 This release

2 release files Full provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page