0
0
via GitHub · Posted Aug 22, 2026 · 1 min read

Concord MCP — AI Agent Workspace

Get-Concord-AI/concord-mcp
MCP Server

"Google Workspace" for your AI Agents

238Stars
9Forks
9Open issues
1Watching
TypeScript MIT v0.10.0 Updated 2 hours ago

A Model Context Protocol server that provides shared workspace infrastructure for AI agents, enabling presence awareness, task coordination, ownership tracking, and evidence-rich handoffs across repositories. Built for multi-agent coding workflows, it replaces implicit chat history with explicit assignments, live rosters, and structured review state.

0 comments

README

⚠️ Early and under active development. The public surface is five workflow tools covering presence, task memory, versioned ownership, and evidence-rich handoffs.

One workspace. Every agent.

Google Workspace gave human teams a shared place to see, create, and coordinate work. Concord brings that collaboration layer to coding agents — local-first, model-agnostic, and built around the repository.

Without Concord With Concord
Agents discover collisions after editing Agents claim files and modules before work begins
Context disappears when a session ends Decisions, assumptions, and findings stay attached to the task
Ownership is implied by chat history Assignments and handoffs are explicit and acknowledged
Humans reconstruct progress from branches and diffs A live roster and work-state show what is happening now
Review starts with “what changed?” Review packets arrive with scope, tests, risks, and provenance

Concord is not another autonomous agent. It is the shared workspace around your agents: presence, task memory, ownership, handoffs, and review state through one small MCP server.

Quick start

npm install -g @concord-ai/concord-mcp
cd /path/to/your/repository
concord setup

concord setup creates the local .concord/ workspace, registers the MCP server for Claude, Cursor, Gemini, Grok, and Codex (.mcp.json, .cursor/mcp.json, .gemini/settings.json, .grok/config.toml, and ~/.codex/config.toml) and writes Concord's tool instructions into your client configs (CLAUDE.md, AGENTS.md, .codex/, .cursor/rules/). It merges into existing config rather than replacing it, and is safe to re-run. Setup also detects Claude Code, Codex, Cursor, Gemini CLI, and Grok Build and attempts to install their global Concord adapters independently. Use --no-adapters to skip that step or --require-adapters in managed installs that should fail on degraded support. Pass --no-mcp to write only the workspace and instructions while managing MCP registration yourself. Restart clients afterwards so they load new config.

There is no universal /concord slash command — commands are client-specific. Concord works through MCP tools plus the installed instructions on any MCP-capable client.

Upgrade

When a new Concord version is available, update the global package and confirm the installed version:

npm install -g @concord-ai/concord-mcp@latest
concord --version

Concord does not auto-update. Upgrading preserves each repository's local .concord/ workspace; any required database migrations run automatically when the workspace is next opened. The interactive concord CLI checks npm at most once per day and prints an update command when a newer stable release is available. Set CONCORD_NO_UPDATE_CHECK=1 to disable this best-effort check.

The tools

Tool Purpose
start_work registers presence, claims or accepts one task, and reports scope overlaps before editing
inspect_work reads workspace/task state, an agent inbox/outbox, or a durable prompt/reply thread
update_work records task context or immediately prompts/replies to another promptable workspace agent
transfer_work assigns, accepts, declines, releases, reassigns, offers handoffs, or reopens versioned work
finish_work records evidence and optionally marks a task review-ready, complete, or closed

Writes accept an agent_id, which keeps presence live just by working. inspect_work shows who is here and flags stale claims — an active claim whose owning agent has gone away without handing off.

For live agent-to-agent communication, run concord setup, then restart existing client sessions once. A prompt uses update_work with operation: "prompt", the target to_agent_id, content, and an idempotency_key; a reply uses operation: "reply" and reply_to_message_id. A receipt-bearing adapter steers a busy turn or starts an idle turn. Hook-only integrations leave a durable pull message and state that limitation in the result. Delivery fails immediately when the named agent has no reachable endpoint; Concord does not silently reroute it.

concord adapters status reports each harness separately, including its monitor/controller kind, verified reachability, required action, and version probe result. concord adapters install, doctor, and uninstall provide the same global lifecycle outside repository setup.

Concord resolves the repository workspace automatically. Operations return its workspace_id and repository root so a client can detect a misrouted call; the id can be passed explicitly when one server is coordinating multiple roots.

Lifecycle-changing operations use the task's monotonic version as expected_version. If two agents act on the same version, only the first transition succeeds. Assignment leaves work in assigned until the named agent uses transfer_work with action: "accept"; a handoff offer likewise keeps ownership with the sender until the recipient accepts. Every ownership change is retained in an append-only audit history.

Migrating from the granular surface

The five tools replace the earlier public names; there are no legacy aliases. Update the package and re-run concord setup to refresh generated instructions. concord doctor reports stale instruction blocks.

Earlier tools Replacement
register_agent, claim_work start_work
accept_task start_work or transfer_work with action: "accept"
get_work_state, get_task_context inspect_work
update_task update_work
assign_task, release_task, reassign_task transfer_work
offer_handoff, accept_handoff, decline_handoff transfer_work
handoff, review_ready, close_task, reopen_task finish_work or transfer_work

What you get

SQLite is the local source of truth, kept in the .concord/ at the root of the repo the work is happening in. The MCP server resolves that root from CONCORD_REPO_ROOT if set, then Claude Code's CLAUDE_PROJECT_DIR (which Claude Code sets automatically, even for a user-scoped server), then its working directory — so every agent in one repo shares one store. Set CONCORD_REPO_ROOT when running the server somewhere its working directory is not inside the repo.

Linked Git worktrees follow Git's commondir metadata to the primary checkout, so the main checkout and all linked worktrees intentionally share one Concord database and workspace id.

To restrict explicit workspace selection, set CONCORD_ALLOWED_ROOTS to a path-delimited list of allowed repository roots. Without an allowlist, decoded roots must still exist and be directories.

concord setup adds .concord/ to the repository's .gitignore, so the generated workspace stays local by default. Teams that want selected artifacts in PRs can remove that rule or force-add the human-readable files:

.concord/
├── concord.db          local source of truth
├── HANDOFF.md          human-readable handoff
├── REVIEW_PACKET.md    review-ready evidence
└── WORK_STATE.json     generated export (optional)

CLI

Concord supports both typed MCP tools and a regular CLI. MCP-capable agents can call the tools directly; humans and CLI-oriented agents can work with the same shared workspace through concord commands.

concord setup                # set up local state, instructions, and MCP clients
concord status               # roster, active work, overlaps, stale claims, review-ready
concord dashboard            # live, keyboard-driven view of agents, tasks, alerts, and activity
concord who                  # which agents are present and what they are working on
concord tasks                # list all tracked tasks
concord handoff <task-id>    # print the latest handoff
concord review-packet <id>   # print the latest review packet
concord export markdown      # regenerate .concord/ artifacts
concord doctor               # workspace checks + per-task tool adoption
concord adapters status      # global harness delivery capability matrix

concord --repo ../project status        # select by repository path from anywhere
concord --workspace ws_... status       # select an id returned by a Concord operation

--repo and --workspace are global, mutually exclusive options. The CLI uses the same CONCORD_REPO_ROOTCLAUDE_PROJECT_DIR → working-directory priority and the same linked-worktree canonicalization as MCP.

concord dashboard is a read-only, full-screen local TUI. It refreshes from the shared SQLite workspace every second while keeping agents, tasks, alerts, context, and timeline inside a fixed terminal viewport. Use Tab to change panes, j/k or the arrow keys to select work, / to filter, ? for help, and q to quit.

Try the demo

pnpm demo

Runs the Whack-a-Mole live demo: Claude and Codex claim overlapping work, resolve it through a live prompt/reply, build a playable app, transfer ownership with evidence, and hand the result to a separate Claude Code reviewer. Three visible tmux panes put both builders on the left and the full-height shared dashboard on the right; the reviewer runs in the background while the browser hot-reloads the result.

What this is / is not

Shared work-state and task memory for coding agents using the same local checkout. Not an orchestrator, code reviewer, hosted sync service, memory vector DB, or autonomous coding agent.

See also: Why not just use markdown?

Contributing

See CONTRIBUTING.md and CLAUDE.md. This repo is strictly typed (no any, no typecasts) and modular. Good first issues are labelled good first issue.

Star History

Privacy & telemetry

Concord sends anonymous product-usage metadata to getconcord.ai so we can measure active installations, feature adoption, errors, and performance. Events contain random installation/session identifiers, an irreversible per-install workspace pseudonym, Concord/Node/platform versions, normalized MCP client metadata, and MCP tool or CLI command names, outcomes, and durations.

Concord never sends code, raw file or repository paths, remotes, usernames, task or agent identifiers, command arguments, tool inputs/outputs, or task content. Set CONCORD_TELEMETRY_DISABLED=1 (or DO_NOT_TRACK=1) to disable telemetry. Delivery is best effort and can never make a Concord operation fail.

License

MIT

Comments (0)

Sign in to join the discussion.

No comments yet

Be the first to share your take.