All MCP Servers
Dev Tools & GitMCP RegistrynpmA · 84

Agent Comms MCP server

io.github.ExaDev · Updated

Cross-harness communication mesh for LLM agents — rooms, DMs, presence, and visibility over TCP

At a glance

Agent Comms is an MCP server in the Dev Tools & Git category. It runs locally over stdio via `npx -y agent-comms`, and declares no required credentials. It scores A (84/100) on the MCP Skills Hub health score as of Oct 28, 2026.

Source 35GitHub stars

One-click install

Opens your editor and pre-fills the config. Your editor will ask before adding it.

How to install Agent Comms in your AI client

Setup for Claude Code, Claude Desktop, Cursor, Codex, Windsurf, Cline and VS Code — copy-paste ready.

How to install Agent Comms in Claude CodeAnthropic's agentic CLI

  1. Add the server

    bash
    claude mcp add agent-comms -- npx -y agent-comms
  2. Verify it's connected

    bash
    claude mcp list
  3. Sharing it with your team?

    Add `--scope project` to write it to .mcp.json in the repository root, which you can commit (with the secrets left as environment variables).

  4. Use it in a session

    Ask Claude to use the tools this server exposes. It discovers them automatically.

What tools does Agent Comms expose?

This server runs as a local package. We only query remote servers for their tool list — asking this one would mean executing it, so its tools are listed in the documentation below.

What the code can do

Read from the published package source — never executed. Parsed 80 of 190 source files.

This server can run other programs on your machine, read and write files and make network requests.

Some of this package is bundled— its dependencies are compiled into the published files. The capabilities below are really in what runs on your machine, but they may come from a bundled library rather than the author's own source.

How it was published

  • Published by a verified CI identity (github trusted publishing) rather than a personal token.
  • Has a provenance attestation tying this artifact to the commit it was built from.
  • 1 npm maintainer — a single point of compromise · last published by GitHub Actions.

Maintainer of this package and think something here is wrong? Tell us and we'll correct it.

Before you install

Signals gathered from the source repo and package registry — not a safety verdict.

What it can reach

  • Runs code on your machine — Executes as a local process with your user's permissions, including filesystem access.
  • Downloads at launch — The package is fetched from its registry each run unless you pin a version.
  • Last commit today — Actively maintained.
  • 35 GitHub stars — Community adoption signal.

Client compatibility

Claude Code: NativeClaude Desktop: NativeCursor: NativeCodex CLI: NativeWindsurf: NativeCline: NativeVS Code: Native

Health score

A · 84

Maintenance, adoption, transparency and packaging — not a safety audit. How this is calculated

  • Maintenance30%100%

    Last commit 0 days ago.

  • Adoption20%47%

    35 stars.

  • Transparency20%75%

    3/4: ✓ public source repo, ✓ declared license, ✓ documentation, ✗ discoverable tool list.

  • Provenance15%100%

    Package and registry entry point at the same repository.

  • Packaging15%100%

    Publishes a pinned version (8.15.22).

Documentation

Full README

Agent Comms

Cross-harness communication mesh for LLM agents: rooms, DMs, presence, and visibility over TCP with zero filesystem dependencies.

Why

LLM agents on the same machine are isolated silos. A Claude Code session cannot see a pi session running in the next terminal. A Codex agent cannot ask a Claude agent to review its work. Each harness manages its own context, tools, and state, with no shared communication layer between them.

Agent Comms gives them one. Any agent, in any harness, can register itself, discover other agents, join rooms, send direct messages, and coordinate work, all over a lightweight TCP mesh on localhost.

The project began as a filesystem-based bus (~/.agents/bus/), where agents read and wrote JSON files to communicate. This worked but brought real problems: orphaned files from crashed agents, polling overhead, concurrent write races, and complex stale-agent detection. The key insight that shaped the current design was that each MCP server instance is already a running process. The bridge processes themselves can form the mesh, with no daemon, no filesystem, and no polling.

How it works

Each bridge instance is a peer in a TCP mesh on localhost. The first instance to start binds the well-known port (19876) and introduces later instances to the mesh; peers also find each other through first contact on UDP. Every instance establishes direct data connections with every other peer, and one of them, elected by gossiped claim, holds the coordinator role that runs the machine's housekeeping.

mermaid
graph LR
    subgraph Agent A ["Agent A (pi)"]
        A_LLM["LLM"]
        A_Bridge["pi bridge"]
    end
    subgraph Agent B ["Agent B (Claude Code)"]
        B_Bridge["Claude bridge"]
        B_LLM["LLM"]
    end
    A_LLM -- "agent_comms(send, ...)" --> A_Bridge
    A_Bridge -- "TCP localhost" --> B_Bridge
    B_Bridge -- "channel notification" --> B_LLM

All state is held in memory and synchronised between peers. Delivery events are pushed directly over TCP: no polling, no filesystem, no daemon process. Events that accumulate for an agent while its process is down are carried in the replicated delivery queues and replayed to it on return, so a restarted bridge is woken for what it missed rather than finding it only in history.

Coordinator pattern

mermaid
sequenceDiagram
    participant P1 as Peer 1 (first to start)
    participant P2 as Peer 2
    participant P3 as Peer 3
    P1->>P1: binds port 19876, then claims the coordinator role once no holder has announced itself
    P2->>P1: connect to 19876
    P1-->>P2: peer list [P1]
    P2->>P1: establish data connection
    P3->>P1: connect to 19876
    P1-->>P3: peer list [P1, P2]
    P3->>P1: establish data connection
    P3->>P2: establish data connection
    Note over P1,P3: All peers now connected directly
    rect rgb(255, 230, 230)
        Note over P1: Port holder and coordinator is killed
        P2->>P3: lowest device-id claims the coordinator role at a raised term
        P2->>P2: race to bind 19876
        P3->>P3: race to bind 19876
        Note over P2,P3: the operating system's bind picks one port winner
        P3->>P2: loser re-introduces itself to the winner
    end
  • Well-known port 19876 on localhost: the compatibility first-contact address and introduction path, not the coordinator role
  • The first instance to bind it answers every later instance that connects there with the peer list; it is not a router
  • On graceful shutdown, the port holder names its longest-running peer as successor and hands the listener over before closing
  • On a crash, every surviving peer independently races to rebind the port; the operating system's exclusive bind picks the single winner, and the losers re-introduce themselves to it

Either way, direct peer-to-peer data connections are untouched, so messages between survivors keep flowing throughout, and first contact keeps finding peers while nothing answers the port.

Excerpt — the full document is on GitHub.

Maintain Agent Comms? Add a badge to your README

Shows its health grade, and links readers to install steps for every client.

markdown
[![Agent Comms on MCP Skills Hub](https://mcp-skills-hub.vercel.app/badge/io-github-exadev-agent-comms)](https://mcp-skills-hub.vercel.app/mcps/io-github-exadev-agent-comms)

Catalog data refreshed . Something wrong? Report it.