MCP 2026-07-28 · Streamable HTTP · ADR 0010 / 0011

Same server.
Two placements.

TacLab is not a stdio subprocess. It is POST /mcp with a lab static bearer. There is no OAuth Protected Resource Metadata. Clients that require PRM will not discover this server. Full contract: docs/MCP.md.

Local MCP

Client and taclabd share a host, or you SSH-tunnel port 8080. Start the lab from quick start first.

{
  "mcpServers": {
    "taclab": {
      "url": "http://127.0.0.1:8080/mcp",
      "headers": {
        "Authorization": "Bearer REPLACE_ME",
        "MCP-Protocol-Version": "2026-07-28"
      }
    }
  }
}

Works in Claude Desktop / Claude Code, Cursor (.cursor/mcp.json), and VS Code Copilot HTTP servers. Token file after labgen: deployments/compose/secrets/api_admin_token.

If the client only speaks stdio MCP, it cannot attach. TacLab is Streamable HTTP only.

Agent card

You are operating TacLab via MCP 2026-07-28 Streamable HTTP.
Do not look for OAuth PRM. Send Authorization: Bearer.
Use tools/list; a missing tool means a missing scope.
Mutations need expected_revision. Overlay is memory-only.
subscriptions/listen is URI-only — pull events.list.
This is a lab, not production AAA.