MCP Server

ACMI ships as a Model Context Protocol (MCP) server with 14 tools, running over stdio transport. Works with Claude Desktop, Cursor, Cline, Windsurf, and any MCP-compatible client.

┌──────────────────┐ stdio ┌──────────────────┐ HTTP ┌──────────────┐ │ MCP Client │ ◄────────────► │ ACMI MCP Server │ ◄───────────► │ Upstash Redis │ │ (Claude/Cursor) │ │ (mcp-server.mjs)│ │ (KV Store) │ └──────────────────┘ └──────────────────┘ └──────────────┘ Client sends tool calls → Server translates to Redis commands → Returns JSON results

Setup Guide

Claude Desktop

Edit ~/Library/Application Support/Claude/claude_desktop_config.json:

{
  "mcpServers": {
    "acmi": {
      "command": "node",
      "args": ["/path/to/.openclaw/skills/acmi/mcp-server.mjs"],
      "env": {
        "UPSTASH_REDIS_REST_URL": "your-url",
        "UPSTASH_REDIS_REST_TOKEN": "your-token"
      }
    }
  }
}

Cursor / Cline / Windsurf

Same pattern — add to your MCP settings with command: "node", args: ["path/to/mcp-server.mjs"], and the two env vars. Restart your client after editing.

Tool Reference (14 Tools)

1. acmi_profile

Create or update an entity's hard state (name, stage, specs).

Params: namespace id profile (JSON string)

2. acmi_signal

Update AI-synthesized soft state (sentiment, priorities, scores). Mutable, changes frequently.

Params: namespace id signals (JSON string)

3. acmi_event

The workhorse. Log a timestamped event to the timeline. Follows Communication Standard v1.1.

Params: namespace id source summary kind (optional) correlationId (optional)

4. acmi_get

Fetch complete entity context: profile + signals + last 10 timeline events.

Params: namespace id

5. acmi_list

List all entity IDs in a namespace.

Params: namespace

6. acmi_work_create

Create a cross-session project, task, or idea.

Params: id profile (JSON string)

7. acmi_work_event

Log progress on a work item. Optionally bind to a session ID.

Params: id source summary sessionId (optional)

8. acmi_work_signal

Update work item signals (progress, blockers, metrics).

Params: id signals (JSON string)

9. acmi_work_get

Read a work item's full context: profile + signals + timeline (last 50) + sessions.

Params: id

10. acmi_work_list

List all work item IDs.

Params: none

11. acmi_cat

Multi-stream merge view. Combines timeline events from multiple entities, sorted by timestamp. Supports time filtering.

Params: keys (string array) since (e.g. "24h", "7d") limit

12. acmi_spawn

Log an agent session start. Records when an agent boots, with model and session info.

Params: agentId sessionId (optional) modelId (optional)

13. acmi_bootstrap

One-shot agent context bundle. Fetches everything a fresh session needs: profile, signals, active threads, rollup, recent timeline, and spawns.

Params: agentId

14. acmi_active

Track agent thread engagement. Add/remove threads or list current active threads.

Params: agentId action ("add"|"remove"|"list") threadKey role

Package Config

{
  "name": "@madezmedia/acmi-mcp-server",
  "version": "1.0.0",
  "type": "module",
  "main": "mcp-server.mjs",
  "dependencies": {
    "@modelcontextprotocol/sdk": "^1.29.0",
    "zod": "^3.24.0"
  }
}

Example: Multi-Agent Coordination

# Agent 1 claims a task
acmi_event("thread", "agent-coordination", "claude-engineer",
  "Claiming README rewrite for batch execution",
  { kind: "coord-claim", correlationId: "lock-readme-1745947200000" })

# Agent 2 sees the claim and defers
acmi_cat(["thread:agent-coordination"], { since: "10m" })
# → sees coord-claim from claude-engineer → defers

# Agent 1 completes the task
acmi_event("thread", "agent-coordination", "claude-engineer",
  "[done] README.md v1.2 — 320 lines",
  { kind: "coord-release", correlationId: "lock-readme-1745947200000" })