<mxfile host="app.diagrams.net" agent="mcp-architect drawio_kit" version="24.7.17" type="device"><diagram id="04-decision-framework" name="MCP governance decision framework — five questions, in order"><mxGraphModel dx="1800" dy="1150" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="1800" pageHeight="1150" background="#FFFFFF" math="0" shadow="0"><root><mxCell id="0"/><mxCell id="1" parent="0"/><mxCell id="title" value="MCP governance decision framework — five questions, in order" style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontFamily=Helvetica;fontSize=26;fontColor=#142B49;fontStyle=1;" vertex="1" parent="1"><mxGeometry x="40" y="20" width="1720" height="44" as="geometry"/></mxCell><mxCell id="subtitle" value="Run per MCP server request. Knock-out questions first; scored choices second. The mcp-architect plugin automates this (decide.py)." style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontFamily=Helvetica;fontSize=15;fontColor=#142B49;fontStyle=0;" vertex="1" parent="1"><mxGeometry x="40" y="62" width="1720" height="30" as="geometry"/></mxCell><mxCell id="footer" value="Thresholds are starting points for the Design Authority to calibrate after the pilot." style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontFamily=Helvetica;fontSize=12;fontColor=#5A6C86;fontStyle=0;" vertex="1" parent="1"><mxGeometry x="40" y="1104" width="1720" height="30" as="geometry"/></mxCell><mxCell id="b1" value="Q1" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EDB44C;strokeColor=none;fontFamily=Helvetica;fontSize=14;fontStyle=1;fontColor=#142B49;" vertex="1" parent="1"><mxGeometry x="40" y="140" width="34" height="34" as="geometry"/></mxCell><mxCell id="q1" value="Should this be MCP at all?" style="rhombus;rounded=0;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFF4DB;strokeColor=#B7791F;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=1;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="90" y="115" width="300" height="140" as="geometry"/></mxCell><mxCell id="q1y" value="MCP when: ≥2 agent consumers, discovery needed, or user-delegated access to many tools" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="90" y="300" width="300" height="120" as="geometry"/></mxCell><mxCell id="q1n" value="&lt;b&gt;Not MCP&lt;/b&gt;: single app calling its own API → keep a normal API + framework tool adapter" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#F4F6F8;strokeColor=#142B49;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="90" y="460" width="300" height="120" as="geometry"/></mxCell><mxCell id="e_q1_q1y" value="yes" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#2E7D32;strokeWidth=1.6;dashed=0;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="q1" target="q1y"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e_q1y_q1n" value="no" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#C7254E;strokeWidth=1.6;dashed=1;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="q1y" target="q1n"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="b2" value="Q2" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EDB44C;strokeColor=none;fontFamily=Helvetica;fontSize=14;fontStyle=1;fontColor=#142B49;" vertex="1" parent="1"><mxGeometry x="440" y="140" width="34" height="34" as="geometry"/></mxCell><mxCell id="q2" value="Which control plane?&#xa;(knock-outs first)" style="rhombus;rounded=0;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFF4DB;strokeColor=#B7791F;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=1;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="490" y="115" width="320" height="140" as="geometry"/></mxCell><mxCell id="ko1" value="&lt;b&gt;Multi-cloud / portability mandate?&lt;/b&gt;&lt;br&gt;→ self-managed MCP gateway (on EKS)" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="490" y="290" width="320" height="80" as="geometry"/></mxCell><mxCell id="ko2" value="&lt;b&gt;Target Region lacks AgentCore Policy and tool tier ≥ T1?&lt;/b&gt;&lt;br&gt;→ move to a Policy Region or defer" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="490" y="385" width="320" height="80" as="geometry"/></mxCell><mxCell id="ko3" value="&lt;b&gt;≤ 2 servers, one team, only T0, no user delegation?&lt;/b&gt;&lt;br&gt;→ direct MCP (no gateway)" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="490" y="480" width="320" height="80" as="geometry"/></mxCell><mxCell id="q2d" value="&lt;b&gt;Enterprise default&lt;/b&gt;: AgentCore Gateway per domain (managed authN/Z, Cedar, 3LO vault, sessions, search)" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#E8F5E9;strokeColor=#2E7D32;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="490" y="580" width="320" height="110" as="geometry"/></mxCell><mxCell id="e_q1y_q2" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#142B49;strokeWidth=1.6;dashed=0;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;exitX=1;exitY=0.5;exitDx=0;exitDy=0;entryX=0;entryY=0.5;entryDx=0;entryDy=0;" edge="1" parent="1" source="q1y" target="q2"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e_q2_ko1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#142B49;strokeWidth=1.6;dashed=0;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="q2" target="ko1"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="b3" value="Q3" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EDB44C;strokeColor=none;fontFamily=Helvetica;fontSize=14;fontStyle=1;fontColor=#142B49;" vertex="1" parent="1"><mxGeometry x="860" y="140" width="34" height="34" as="geometry"/></mxCell><mxCell id="q3" value="What is the worst credible effect of each tool?" style="rhombus;rounded=0;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFF4DB;strokeColor=#B7791F;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=1;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="910" y="115" width="320" height="140" as="geometry"/></mxCell><mxCell id="t0" value="&lt;b&gt;T0 · public / reference read&lt;/b&gt;&lt;br&gt;schema review, response caps" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="910" y="290" width="320" height="80" as="geometry"/></mxCell><mxCell id="t1" value="&lt;b&gt;T1 · sensitive read (orders, certificates, PII)&lt;/b&gt;&lt;br&gt;entity-scope tests, field minimisation, audit" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#EEF2FA;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="910" y="385" width="320" height="80" as="geometry"/></mxCell><mxCell id="t2" value="&lt;b&gt;T2 · reversible write (draft NCR, draft PO)&lt;/b&gt;&lt;br&gt;idempotency key, state checks, compensation" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFF4DB;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="910" y="480" width="320" height="80" as="geometry"/></mxCell><mxCell id="t3" value="&lt;b&gt;T3 · consequential (release hold, approve PO, pay)&lt;/b&gt;&lt;br&gt;bound human approval, limits, reconciliation, drill" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FDECEC;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="910" y="575" width="320" height="80" as="geometry"/></mxCell><mxCell id="t_note" value="Bulk extraction of a T1 read can deserve T3 controls." style="text;html=1;whiteSpace=wrap;strokeColor=none;fillColor=none;align=left;verticalAlign=middle;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;fontStyle=2;" vertex="1" parent="1"><mxGeometry x="910" y="670" width="320" height="60" as="geometry"/></mxCell><mxCell id="e_q2_q3" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#142B49;strokeWidth=1.6;dashed=0;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="q2" target="q3"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e_q3_t0" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#142B49;strokeWidth=1.6;dashed=0;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="q3" target="t0"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="b4" value="Q4" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EDB44C;strokeColor=none;fontFamily=Helvetica;fontSize=14;fontStyle=1;fontColor=#142B49;" vertex="1" parent="1"><mxGeometry x="1280" y="140" width="34" height="34" as="geometry"/></mxCell><mxCell id="q4" value="How strongly must entities / plants be isolated?" style="rhombus;rounded=0;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFF4DB;strokeColor=#B7791F;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=1;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="1330" y="115" width="320" height="140" as="geometry"/></mxCell><mxCell id="p1" value="&lt;b&gt;Pooled&lt;/b&gt; — one domain gateway, entity = JWT claim; Cedar + backend scope. Default." style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="1330" y="290" width="320" height="95" as="geometry"/></mxCell><mxCell id="p2" value="&lt;b&gt;Partitioned&lt;/b&gt; — separate gateway for export-controlled or regulated data (e.g. engineering specs)." style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="1330" y="400" width="320" height="95" as="geometry"/></mxCell><mxCell id="p3" value="&lt;b&gt;Siloed&lt;/b&gt; — dedicated account + gateway per legal entity/JV when contracts require it." style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="1330" y="510" width="320" height="95" as="geometry"/></mxCell><mxCell id="e_q3_q4" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#142B49;strokeWidth=1.6;dashed=0;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="q3" target="q4"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e_q4_p1" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#142B49;strokeWidth=1.6;dashed=0;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="q4" target="p1"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="b5" value="Q5" style="ellipse;whiteSpace=wrap;html=1;fillColor=#EDB44C;strokeColor=none;fontFamily=Helvetica;fontSize=14;fontStyle=1;fontColor=#142B49;" vertex="1" parent="1"><mxGeometry x="40" y="775" width="34" height="34" as="geometry"/></mxCell><mxCell id="q5" value="Build, reuse or wrap the MCP server?" style="rhombus;rounded=0;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFF4DB;strokeColor=#B7791F;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=1;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="90" y="755" width="300" height="140" as="geometry"/></mxCell><mxCell id="q5a" value="&lt;b&gt;Reuse vendor MCP&lt;/b&gt; (SAP, ServiceNow, Atlassian…) only behind the Gateway, with tool allow-list and capability-drift detection" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="440" y="780" width="380" height="90" as="geometry"/></mxCell><mxCell id="q5b" value="&lt;b&gt;Wrap&lt;/b&gt; existing API as Lambda/OpenAPI target with curated business verbs (preferred for SAP)" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#E8F5E9;strokeColor=#2E7D32;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="860" y="780" width="380" height="90" as="geometry"/></mxCell><mxCell id="q5c" value="&lt;b&gt;Build&lt;/b&gt; custom MCP server on AgentCore Runtime only when stateful sessions, elicitation or long-running jobs are needed" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#FFFFFF;strokeColor=#CBD1D6;strokeWidth=1.5;fontFamily=Helvetica;fontSize=12;fontColor=#142B49;fontStyle=0;dashed=0;align=center;spacing=6;" vertex="1" parent="1"><mxGeometry x="1280" y="780" width="370" height="90" as="geometry"/></mxCell><mxCell id="e_q5_q5a" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#142B49;strokeWidth=1.6;dashed=0;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="q5" target="q5a"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e_q5a_q5b" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#142B49;strokeWidth=1.6;dashed=0;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="q5a" target="q5b"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e_q5b_q5c" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#142B49;strokeWidth=1.6;dashed=0;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;" edge="1" parent="1" source="q5b" target="q5c"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell><mxCell id="e_p3_q5" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#142B49;strokeWidth=1.6;dashed=0;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.5;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="p3" target="q5"><mxGeometry relative="1" as="geometry"><Array as="points"><mxPoint x="1490" y="730"/><mxPoint x="240" y="730"/></Array></mxGeometry></mxCell><mxCell id="out" value="&lt;b&gt;Output of the framework (one ADR per MCP server)&lt;/b&gt;&lt;br&gt;Control plane + Region · per-tool tier and mandatory controls · partition model · server build/reuse decision · named owners (business, technical, risk) · open verification gates · cost envelope at expected volume · reconsideration triggers (portability mandate, Region without Policy, fail-open finding, cost becoming material)" style="rounded=1;arcSize=8;whiteSpace=wrap;html=1;fillColor=#F4F6F8;strokeColor=#142B49;strokeWidth=1.5;fontFamily=Helvetica;fontSize=14;fontColor=#142B49;fontStyle=0;dashed=0;align=left;spacing=6;" vertex="1" parent="1"><mxGeometry x="90" y="945" width="1560" height="130" as="geometry"/></mxCell><mxCell id="e_q5c_out" value="" style="edgeStyle=orthogonalEdgeStyle;rounded=1;html=1;endArrow=block;endFill=1;startArrow=none;startFill=1;strokeColor=#142B49;strokeWidth=1.6;dashed=0;fontFamily=Helvetica;fontSize=11;fontColor=#142B49;labelBackgroundColor=#FFFFFF;exitX=0.5;exitY=1;exitDx=0;exitDy=0;entryX=0.85;entryY=0;entryDx=0;entryDy=0;" edge="1" parent="1" source="q5c" target="out"><mxGeometry relative="1" as="geometry"></mxGeometry></mxCell></root></mxGraphModel></diagram></mxfile>
