Skip to content

F7.1: MCP read tools (sith serve --mcp) #37

Description

@gnanirahulnutakki

Part of epic #25 (E7). Milestone: Phase L (day-0 adoption wedge). Source: docs/EPICS.md / docs/SITH-NOTION.md.

F7.1 — MCP read tools

What it is. Read tools (fleet.inventory, fleet.health, fleet.correlate,
fleet.cve-search) carrying readOnlyHint: true, hitting the fleet model, scoped to the caller's
workspace.

How it works.

  1. An external agent calls a read tool over MCP.
  2. The MCP layer is a thin client onto the same PEP; the read is tenant-scoped to the caller's
    workspace.
  3. The fleet model (E2) answers, including cross-cluster correlation and CVE search.
  4. The read is audited like any other (E6); no gate beyond tenant scope is needed for reads.
sequenceDiagram
    autonumber
    participant AG as External agent (MCP client)
    participant MCP as Sith MCP server
    participant PEP as PEP (tenant scope)
    participant FM as Fleet model (E2)
    AG->>MCP: call fleet.correlate (readOnlyHint: true)
    MCP->>PEP: same path as UI — resolve workspace scope
    PEP->>FM: query within caller's workspace
    FM-->>PEP: cross-cluster answer (stale flagged)
    PEP-->>MCP: result (audited)
    MCP-->>AG: result
Loading

Acceptance criteria.

  • Read tools return workspace-scoped fleet answers, including correlation and CVE search.
  • Reads are audited and carry readOnlyHint.

Key risk / guardrail. A read tool that ignored tenant scope would leak cross-tenant fleet
data. Guardrail: MCP reads go through the same PEP tenant scoping and DB RLS as the UI — the MCP
layer has no privileged data path.


Spec & slice. Slice 6 of docs/BUILD-SEQUENCE.md (PR #40). AC: the four read tools carry readOnlyHint:true, are workspace-scoped and audited; MCP reads use the same scope-resolution path as CLI/UI (no privileged data path — asserted by test); sith serve --mcp binds loopback only in local mode. Adopts MCP-2026 auth hardening from E7 #25 (audience-bound tokens, enforce-at-execution).

Metadata

Metadata

Assignees

No one assigned

    Labels

    featureFeature / child issuemcpGoverned MCP server surfacephase-LPhase L: local mode (day 0 adoption wedge)

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions