iiRecord
Agentic AI Atlas · GAP-MCPC-001: MCP Channel Integration (Inbound Messaging)
page:docs-harness-features-backlog-gaps-mcp-channels-gap-mcpc-001a5c.ai
II.
Page JSON

page:docs-harness-features-backlog-gaps-mcp-channels-gap-mcpc-001

Structured · live

GAP-MCPC-001: MCP Channel Integration (Inbound Messaging) json

Inspect the normalized record payload exactly as the atlas UI reads it.

File · wiki/docs/harness-features-backlog/gaps/mcp-channels/gap-mcpc-001.mdCluster · wiki
Record JSON
{
  "id": "page:docs-harness-features-backlog-gaps-mcp-channels-gap-mcpc-001",
  "_kind": "Page",
  "_file": "wiki/docs/harness-features-backlog/gaps/mcp-channels/gap-mcpc-001.md",
  "_cluster": "wiki",
  "attributes": {
    "nodeKind": "Page",
    "sourcePath": "docs/harness-features-backlog/gaps/mcp-channels/GAP-MCPC-001.md",
    "sourceKind": "repo-docs",
    "title": "GAP-MCPC-001: MCP Channel Integration (Inbound Messaging)",
    "displayName": "GAP-MCPC-001: MCP Channel Integration (Inbound Messaging)",
    "slug": "docs/harness-features-backlog/gaps/mcp-channels/gap-mcpc-001",
    "articlePath": "wiki/docs/harness-features-backlog/gaps/mcp-channels/GAP-MCPC-001.md",
    "article": "\n# GAP-MCPC-001: MCP Channel Integration (Inbound Messaging)\n\n| Field | Value |\n|-------|-------|\n| Category | mcp-channels |\n| Priority | High |\n| Effort | L |\n| Status | Missing |\n\n## Description\nSupport MCP servers as messaging channels (Slack, Discord, Telegram, iMessage,\nemail) that can push inbound messages into orchestration runs. A \"channel\" is\nan MCP server that sends `notifications/claude/channel` notifications for\ninbound messages and exposes tools for outbound messages.\n\n## CC Implementation\n\nCC's channel system (`src/services/mcp/channelNotification.ts`):\n- MCP servers declare channel capability in `capabilities.experimental['claude/channel']`\n- Inbound messages arrive as `notifications/claude/channel` notifications\n- Messages wrapped in `<channel source=\"...\" sender=\"...\">content</channel>` XML tags\n- SleepTool polls `hasCommandsInQueue()` and wakes within 1s to process inbound\n- The model sees the source channel and decides which tool to reply with\n- Channel allowlist (`channelAllowlist.ts`) controls which channels are active\n- Channel entries have: `serverName`, `displayName`, `channelId`, `channelType`\n- Requires explicit opt-in (not default-enabled)\n- Feature-gated: `tengu_harbor` / `KAIROS_CHANNELS`\n\n## Current State\nBabysitter has `mcp:serve` which exposes babysitter as an MCP SERVER. But there\nis no MCP CLIENT capability for connecting to external MCP servers as channels.\nNo channel notification handling. No inbound message queue. No channel allowlist.\n\n## Target State\nBabysitter can connect to MCP servers that act as messaging channels. Inbound\nmessages from channels are:\n1. Queued as journal events (`CHANNEL_MESSAGE` type)\n2. Routed to active runs based on channel binding\n3. Available as context during breakpoint decisions\n4. Trigger run wake-up if sleeping\n\nThis enables operators to receive breakpoint notifications on Slack and\napprove/reject from their phone.\n\n## Dependencies\n- [GAP-TOOLS-025](../tools-capabilities/GAP-TOOLS-025.md) -- MCP client capability\n\nNote: MCPC-002 and MCPC-003 depend on MCPC-001, not the other way around.\n\n## Key Files\n| Component | Path |\n|-----------|------|\n| Babysitter MCP server | `packages/sdk/src/mcp/` |\n| CC channel notifications | `src/services/mcp/channelNotification.ts` |\n| CC channel allowlist | `src/services/mcp/channelAllowlist.ts` |\n| CC MCP connection mgr | `src/services/mcp/MCPConnectionManager.tsx` |\n\n## Recommendation\nPhase 2-3. Requires MCP client capability first (GAP-TOOLS-025). Then implement\nchannel notification handler and message queue. Start with Slack as the first\nchannel (already has an MCP server in the CC ecosystem).\n",
    "documents": []
  },
  "outgoingEdges": [],
  "incomingEdges": [
    {
      "from": "page:docs-harness-features-backlog",
      "to": "page:docs-harness-features-backlog-gaps-mcp-channels-gap-mcpc-001",
      "kind": "contains_page"
    }
  ]
}