{
  "id": "bbg-p0087-grpc-and-service-communication-service",
  "title": "MCP Client-Server Tool Bridge",
  "chapter": "ai-agents-and-tool-use",
  "batch": "36",
  "rank": 360,
  "sourcePage": 87,
  "sourcePointer": "p. 87",
  "status": "accepted",
  "reviewerStatus": "reviewed",
  "fidelityScore": 0.9,
  "canvas": {
    "width": 960,
    "height": 640
  },
  "fireworksTechGraph": {
    "style": "style-1-flat-icon",
    "diagramType": "architecture",
    "topologyNotes": [
      "source page render inspected",
      "extracted page text inspected",
      "source page render inspected",
      "preserve MCP topology: host app contains clients, clients speak protocol to servers, servers expose external data/tools; lower panel preserves client/server building blocks",
      "retargeted from service-communication extraction to ai-agents-and-tool-use chapter"
    ],
    "publicBoundary": [
      "original vector output",
      "no source pixels",
      "no source mark or long wording"
    ]
  },
  "callouts": [],
  "sourceReview": {
    "conceptAnchors": [
      "concept: host application",
      "concept: MCP client",
      "concept: MCP server",
      "concept: external resources",
      "concept: prompt resources tools"
    ],
    "labelSource": "curated",
    "semanticStatus": "reviewed"
  },
  "groups": [
    {
      "id": "host",
      "label": "Host environment",
      "x": 54,
      "y": 122,
      "w": 232,
      "h": 272
    },
    {
      "id": "servers",
      "label": "Protocol servers",
      "x": 344,
      "y": 122,
      "w": 254,
      "h": 272
    },
    {
      "id": "resources",
      "label": "External capabilities",
      "x": 660,
      "y": 122,
      "w": 230,
      "h": 272
    },
    {
      "id": "blocks",
      "label": "Core building blocks",
      "x": 122,
      "y": 460,
      "w": 716,
      "h": 72
    }
  ],
  "shapes": [
    {
      "id": "aiapp",
      "kind": "rect",
      "label": "AI app",
      "detail": "host",
      "x": 94,
      "y": 154,
      "w": 118,
      "h": 58,
      "tone": "blue"
    },
    {
      "id": "ide",
      "kind": "rect",
      "label": "IDE tools",
      "detail": "host tools",
      "x": 94,
      "y": 250,
      "w": 118,
      "h": 58,
      "tone": "purple"
    },
    {
      "id": "client",
      "kind": "gateway",
      "label": "MCP client",
      "detail": "per server",
      "x": 218,
      "y": 202,
      "w": 96,
      "h": 74,
      "tone": "orange"
    },
    {
      "id": "serverA",
      "kind": "rect",
      "label": "File server",
      "detail": "documents",
      "x": 404,
      "y": 146,
      "w": 124,
      "h": 58,
      "tone": "green"
    },
    {
      "id": "serverB",
      "kind": "rect",
      "label": "DB server",
      "detail": "records",
      "x": 404,
      "y": 238,
      "w": 124,
      "h": 58,
      "tone": "green"
    },
    {
      "id": "serverC",
      "kind": "rect",
      "label": "API server",
      "detail": "tools",
      "x": 404,
      "y": 330,
      "w": 124,
      "h": 58,
      "tone": "green"
    },
    {
      "id": "drive",
      "kind": "cylinder",
      "label": "Files",
      "detail": "external",
      "x": 714,
      "y": 146,
      "w": 112,
      "h": 72,
      "tone": "teal"
    },
    {
      "id": "db",
      "kind": "cylinder",
      "label": "Database",
      "detail": "external",
      "x": 714,
      "y": 244,
      "w": 112,
      "h": 72,
      "tone": "teal"
    },
    {
      "id": "webapi",
      "kind": "rect",
      "label": "Web APIs",
      "detail": "services",
      "x": 714,
      "y": 342,
      "w": 112,
      "h": 58,
      "tone": "teal"
    },
    {
      "id": "secure",
      "kind": "rect",
      "label": "Access",
      "detail": "permissions",
      "x": 160,
      "y": 474,
      "w": 104,
      "h": 46,
      "tone": "red"
    },
    {
      "id": "sampling",
      "kind": "rect",
      "label": "Sampling",
      "detail": "model calls",
      "x": 296,
      "y": 474,
      "w": 104,
      "h": 46,
      "tone": "purple"
    },
    {
      "id": "prompt",
      "kind": "rect",
      "label": "Prompt",
      "detail": "templates",
      "x": 432,
      "y": 474,
      "w": 104,
      "h": 46,
      "tone": "blue"
    },
    {
      "id": "resource",
      "kind": "rect",
      "label": "Resources",
      "detail": "context",
      "x": 568,
      "y": 474,
      "w": 104,
      "h": 46,
      "tone": "green"
    },
    {
      "id": "tools",
      "kind": "rect",
      "label": "Tools",
      "detail": "functions",
      "x": 704,
      "y": 474,
      "w": 104,
      "h": 46,
      "tone": "orange"
    }
  ],
  "connectors": [
    {
      "from": "aiapp",
      "to": "client",
      "label": "hosts",
      "flow": "control"
    },
    {
      "from": "ide",
      "to": "client",
      "label": "uses",
      "flow": "control"
    },
    {
      "from": "client",
      "to": "serverA",
      "label": "protocol",
      "flow": "main"
    },
    {
      "from": "client",
      "to": "serverB",
      "label": "protocol",
      "flow": "main"
    },
    {
      "from": "client",
      "to": "serverC",
      "label": "protocol",
      "flow": "main"
    },
    {
      "from": "serverA",
      "to": "drive",
      "label": "read",
      "flow": "data"
    },
    {
      "from": "serverB",
      "to": "db",
      "label": "query",
      "flow": "data"
    },
    {
      "from": "serverC",
      "to": "webapi",
      "label": "call",
      "flow": "data"
    }
  ]
}
