Skip to content

OraclePersonal/Oracle-messages

Repository files navigation

oracle-messages

A vendor-neutral MCP mailbox for AI coding agents — a message bus any MCP-compatible agent (Claude Code, Codex, Gemini CLI, Cline, OpenCode, Clew Code, etc.) can use to send, receive, and coordinate.

What it does

oracle-messages is an MCP server exposing a durable JSONL-backed mailbox. Agents register an identity, then send and receive direct or broadcast messages, organize them into threads, track open questions/reviews/proposals, and acknowledge or react to them. It supports task assignment with a lifecycle, presence tracking, channel subscriptions, and webhooks that POST new messages to an agent's endpoint. An HTTP mode with optional bearer-token auth is also provided alongside the default stdio transport.

Install / Build

npm install        # install dependencies
npm run build      # compile TypeScript to dist/
npm run check      # type-check only
npm test           # run the vitest suite

Bin entry point: oracle-messages -> dist/index.js.

Usage / Run

Run directly (stdio, the default transport):

npm run dev        # tsx src/index.ts
# or after build:
node dist/index.js
# or via the bin:
oracle-messages

Run over HTTP (Streamable HTTP at http://host:port/mcp):

oracle-messages --http --port 8770 --host 127.0.0.1
# a /health endpoint is also exposed

Register it with an MCP client via the stdio command oracle-messages (or node dist/index.js).

MCP tools

The server registers 43 tools, grouped below.

Agents (identity & roster)

  • onboard — register an agent and return status, open threads, and unread count in one call
  • register_identity — register or update an agent's identity and capabilities
  • get_status — mailbox status: counts, agents, latest activity
  • get_agent_instructions — instructions and metadata for a registered agent
  • list_agents — list all registered agents
  • add_agent — register a new agent explicitly
  • retire_agent — remove an agent and clean up its card, subscriptions, and cursors
  • set_agent_role — set/update an agent's role
  • set_agent_group — set/update an agent's group

Messaging

  • send_message — send a durable message to an agent (recipient="*" broadcasts)
  • broadcast — send an event visible to every agent except the sender
  • wait_for_message — block/poll for new messages to an agent
  • sync_messages — pull unread direct and broadcast messages (marks them read)
  • list_messages — browse history with filters (agent, sender, kind, channel, query)
  • search_messages — full-text search across message bodies
  • get_message — fetch a single message by ID
  • reply_message — reply preserving thread linkage
  • get_thread — get a root message and its direct replies
  • list_open_threads — list unresolved threads (questions, review-requests, proposals) for an agent
  • delete_message — delete a single message by ID

Acknowledgements

  • acknowledge_message — record status: received | accepted | completed | rejected | failed
  • get_acknowledgements — list all acknowledgements for a message

Cursors

  • advance_cursor — record an agent's read position up to a message

Tasks

  • create_task — create a task (starts pending)
  • transition_task — change task status: pending → assigned → in_progress → completed | failed | cancelled
  • get_task — get a task by ID
  • list_tasks — list tasks filtered by status, assignee, or sender

Discovery

  • set_agent_card — publish a discoverable card (name, description, contact, channels)
  • get_agent_card — get an agent's card
  • find_agents — find agents by name, role, group, or capability keyword

Channels

  • subscribe — subscribe an agent to a channel
  • unsubscribe — unsubscribe an agent from a channel

Presence

  • update_presence — set status: online | busy | idle | offline
  • get_presence — get an agent's current presence
  • list_presences — list all agents and their presence

Reactions

  • react — react to a message with an emoji
  • list_reactions — list reactions on a message

Webhooks

  • set_webhook — register a webhook URL; new messages to the agent are POSTed there
  • get_webhook — get the agent's registered webhook
  • remove_webhook — remove the agent's webhook

Server

  • mailbox_stats — total messages/agents and oldest/newest timestamps
  • prune — remove messages, reads, and acknowledgements older than a retention period
  • server_status — server health, uptime, session count, and data directory

Resources

  • oracle://instructions — server usage guide
  • oracle://roster — all registered agents
  • oracle://messages — latest messages
  • oracle://threads/open — all open threads across agents
  • oracle://stats — mailbox statistics
  • oracle://agent/{name}/unread — unread messages for an agent
  • oracle://message/{id} — a single message
  • oracle://thread/{id} — a message thread (root + replies)

Prompt templates

  • standup — summarize activity since last check-in
  • triage_unread — triage unread messages and open threads
  • handoff — hand a task from one agent to another
  • review_request — request a code review from another agent

Configuration (environment variables)

The CLI reads these from the environment (overridable by flags where noted):

  • ORACLE_MESSAGES_DIR — data directory for the JSONL store (default .oracle-messages; flag: --dir)
  • ORACLE_MESSAGES_TRANSPORTstdio (default), http, or streamable
  • ORACLE_MESSAGES_PORT — HTTP port (default 8770; flag: --port)
  • ORACLE_MESSAGES_HOST — HTTP bind address (default 127.0.0.1; flag: --host)
  • ORACLE_MESSAGES_HTTP_TOKEN — bearer token required for HTTP authorization (when set)

About

Multi-agent MCP message bus for AI coding agents — send, receive, and coordinate across agents via atomic JSONL files. No database, no daemon.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors