- Add Server-Sent Events (SSE) transport implementation with test coverage - Add detailed documentation for both SSE and STDIO transports - Extract common test logic into abstract base classes - Add testcontainers support for SSE integration tests - Replace System.out with SLF4J logging - Externalize dependency versions to properties - Implement endpoint event handling per MCP spec - Add message endpoint sink for reliable message routing - Improve error handling and graceful shutdown - Update core module README with expanded features and examples - Add dependency version properties and logging configuration - Update architecture and class diagrams Resolves #4
1 line
No EOL
30 KiB
XML
1 line
No EOL
30 KiB
XML
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" contentStyleType="text/css" height="1094px" preserveAspectRatio="none" style="width:790px;height:1094px;background:#FFFFFF;" version="1.1" viewBox="0 0 790 1094" width="790px" zoomAndPan="magnify"><defs/><g><!--class McpTransport--><g id="elem_McpTransport"><rect codeLine="1" fill="#F1F1F1" height="145.7813" id="McpTransport" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="257.0957" x="448.74" y="618"/><ellipse cx="524.8308" cy="634" fill="#B4A7E5" rx="11" ry="11" style="stroke:#181818;stroke-width:1;"/><path d="M520.7527,629.7656 L520.7527,627.6094 L528.1433,627.6094 L528.1433,629.7656 L525.6746,629.7656 L525.6746,637.8438 L528.1433,637.8438 L528.1433,640 L520.7527,640 L520.7527,637.8438 L523.2214,637.8438 L523.2214,629.7656 L520.7527,629.7656 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="96.4141" x="545.3308" y="638.8467">McpTransport</text><line style="stroke:#181818;stroke-width:0.5;" x1="449.74" x2="704.8357" y1="650" y2="650"/><line style="stroke:#181818;stroke-width:0.5;" x1="449.74" x2="704.8357" y1="658" y2="658"/><ellipse cx="459.74" cy="671.6484" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="77.6084" x="468.74" y="674.9951">void start()</text><ellipse cx="459.74" cy="687.9453" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="81.0605" x="468.74" y="691.292">void close()</text><ellipse cx="459.74" cy="704.2422" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="215.2568" x="468.74" y="707.5889">Mono<Void> closeGracefully()</text><ellipse cx="459.74" cy="720.5391" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="231.0957" x="468.74" y="723.8857">void setInboudMessageHandler()</text><ellipse cx="459.74" cy="736.8359" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="213.2881" x="468.74" y="740.1826">void setInboundErrorHandler()</text><ellipse cx="459.74" cy="753.1328" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="202.8633" x="468.74" y="756.4795">Mono<Void> sendMessage()</text></g><!--class AbstractMcpTransport--><g id="elem_AbstractMcpTransport"><rect codeLine="10" fill="#F1F1F1" height="113.1875" id="AbstractMcpTransport" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="224.7891" x="464.74" y="833"/><ellipse cx="496.6629" cy="849" fill="#A9DCDF" rx="11" ry="11" style="stroke:#181818;stroke-width:1;"/><path d="M496.7723,844.3438 L495.616,849.4219 L497.9442,849.4219 L496.7723,844.3438 Z M495.2879,842.1094 L498.2723,842.1094 L501.6317,854.5 L499.1785,854.5 L498.4129,851.4375 L495.1317,851.4375 L494.3817,854.5 L491.9442,854.5 L495.2879,842.1094 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="155.1826" x="514.4235" y="853.8467">AbstractMcpTransport</text><line style="stroke:#181818;stroke-width:0.5;" x1="465.74" x2="688.5291" y1="865" y2="865"/><polygon fill="none" points="475.74,873.6484,479.74,877.6484,475.74,881.6484,471.74,877.6484" style="stroke:#B38D22;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="198.7891" x="484.74" y="881.9951">ObjectMapper objectMapper</text><line style="stroke:#181818;stroke-width:0.5;" x1="465.74" x2="688.5291" y1="889.2969" y2="889.2969"/><polygon fill="#FFFF44" points="475.74,897.9453,479.74,901.9453,475.74,905.9453,471.74,901.9453" style="stroke:#B38D22;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="120.7568" x="484.74" y="906.292">getInboundSink()</text><polygon fill="#FFFF44" points="475.74,914.2422,479.74,918.2422,475.74,922.2422,471.74,918.2422" style="stroke:#B38D22;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="133.1367" x="484.74" y="922.5889">getOutboundSink()</text><polygon fill="#FFFF44" points="475.74,930.5391,479.74,934.5391,475.74,938.5391,471.74,934.5391" style="stroke:#B38D22;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="98.3486" x="484.74" y="938.8857">getErrorSink()</text></g><!--class McpSession--><g id="elem_McpSession"><rect codeLine="17" fill="#F1F1F1" height="96.8906" id="McpSession" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="247.833" x="444.24" y="213"/><ellipse cx="522.867" cy="229" fill="#B4A7E5" rx="11" ry="11" style="stroke:#181818;stroke-width:1;"/><path d="M518.7888,224.7656 L518.7888,222.6094 L526.1795,222.6094 L526.1795,224.7656 L523.7107,224.7656 L523.7107,232.8438 L526.1795,232.8438 L526.1795,235 L518.7888,235 L518.7888,232.8438 L521.2576,232.8438 L521.2576,224.7656 L518.7888,224.7656 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" font-style="italic" lengthAdjust="spacing" textLength="82.0791" x="543.367" y="233.8467">McpSession</text><line style="stroke:#181818;stroke-width:0.5;" x1="445.24" x2="691.073" y1="245" y2="245"/><line style="stroke:#181818;stroke-width:0.5;" x1="445.24" x2="691.073" y1="253" y2="253"/><ellipse cx="455.24" cy="266.6484" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="213.0967" x="464.24" y="269.9951"><T> Mono<T> sendRequest()</text><ellipse cx="455.24" cy="282.9453" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="221.833" x="464.24" y="286.292">Mono<Void> sendNotification()</text><ellipse cx="455.24" cy="299.2422" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="215.2568" x="464.24" y="302.5889">Mono<Void> closeGracefully()</text></g><!--class DefaultMcpSession--><g id="elem_DefaultMcpSession"><rect codeLine="23" fill="#F1F1F1" height="80.5938" id="DefaultMcpSession" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="224.7891" x="455.74" y="427.5"/><ellipse cx="497.5405" cy="443.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1;"/><path d="M500.5092,449.1406 Q499.9311,449.4375 499.2905,449.5781 Q498.6499,449.7344 497.9467,449.7344 Q495.4467,449.7344 494.1186,448.0938 Q492.8061,446.4375 492.8061,443.3125 Q492.8061,440.1875 494.1186,438.5313 Q495.4467,436.875 497.9467,436.875 Q498.6499,436.875 499.2905,437.0313 Q499.9467,437.1875 500.5092,437.4844 L500.5092,440.2031 Q499.8842,439.625 499.2905,439.3594 Q498.6967,439.0781 498.0717,439.0781 Q496.728,439.0781 496.0405,440.1563 Q495.353,441.2188 495.353,443.3125 Q495.353,445.4063 496.0405,446.4844 Q496.728,447.5469 498.0717,447.5469 Q498.6967,447.5469 499.2905,447.2813 Q499.8842,447 500.5092,446.4219 L500.5092,449.1406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="133.2324" x="517.4962" y="448.3467">DefaultMcpSession</text><line style="stroke:#181818;stroke-width:0.5;" x1="456.74" x2="679.5291" y1="459.5" y2="459.5"/><rect fill="none" height="6" style="stroke:#C82930;stroke-width:1;" width="6" x="463.74" y="470.1484"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="165.5527" x="475.74" y="476.4951">McpTransport transport</text><rect fill="none" height="6" style="stroke:#C82930;stroke-width:1;" width="6" x="463.74" y="486.4453"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="198.7891" x="475.74" y="492.792">ObjectMapper objectMapper</text><line style="stroke:#181818;stroke-width:0.5;" x1="456.74" x2="679.5291" y1="500.0938" y2="500.0938"/></g><!--class McpClient--><g id="elem_McpClient"><rect codeLine="28" fill="#F1F1F1" height="80.5938" id="McpClient" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="101.1934" x="50.74" y="221"/><ellipse cx="65.74" cy="237" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1;"/><path d="M68.7088,242.6406 Q68.1306,242.9375 67.49,243.0781 Q66.8494,243.2344 66.1463,243.2344 Q63.6462,243.2344 62.3181,241.5938 Q61.0056,239.9375 61.0056,236.8125 Q61.0056,233.6875 62.3181,232.0313 Q63.6462,230.375 66.1463,230.375 Q66.8494,230.375 67.49,230.5313 Q68.1463,230.6875 68.7088,230.9844 L68.7088,233.7031 Q68.0838,233.125 67.49,232.8594 Q66.8963,232.5781 66.2713,232.5781 Q64.9275,232.5781 64.24,233.6563 Q63.5525,234.7188 63.5525,236.8125 Q63.5525,238.9063 64.24,239.9844 Q64.9275,241.0469 66.2713,241.0469 Q66.8963,241.0469 67.49,240.7813 Q68.0838,240.5 68.7088,239.9219 L68.7088,242.6406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="69.1934" x="79.74" y="241.8467">McpClient</text><line style="stroke:#181818;stroke-width:0.5;" x1="51.74" x2="150.9334" y1="253" y2="253"/><line style="stroke:#181818;stroke-width:0.5;" x1="51.74" x2="150.9334" y1="261" y2="261"/><ellipse cx="61.74" cy="274.6484" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" text-decoration="underline" textLength="51.6523" x="70.74" y="277.9951">async()</text><ellipse cx="61.74" cy="290.9453" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" text-decoration="underline" textLength="43.0732" x="70.74" y="294.292">sync()</text></g><!--class McpAsyncClient--><g id="elem_McpAsyncClient"><rect codeLine="33" fill="#F1F1F1" height="162.0781" id="McpAsyncClient" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="344.7256" x="68.74" y="610"/><ellipse cx="181.3928" cy="626" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1;"/><path d="M184.3616,631.6406 Q183.7835,631.9375 183.1428,632.0781 Q182.5022,632.2344 181.7991,632.2344 Q179.2991,632.2344 177.971,630.5938 Q176.6585,628.9375 176.6585,625.8125 Q176.6585,622.6875 177.971,621.0313 Q179.2991,619.375 181.7991,619.375 Q182.5022,619.375 183.1428,619.5313 Q183.7991,619.6875 184.3616,619.9844 L184.3616,622.7031 Q183.7366,622.125 183.1428,621.8594 Q182.5491,621.5781 181.9241,621.5781 Q180.5803,621.5781 179.8928,622.6563 Q179.2053,623.7188 179.2053,625.8125 Q179.2053,627.9063 179.8928,628.9844 Q180.5803,630.0469 181.9241,630.0469 Q182.5491,630.0469 183.1428,629.7813 Q183.7366,629.5 184.3616,628.9219 L184.3616,631.6406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="110.9199" x="201.8928" y="630.8467">McpAsyncClient</text><line style="stroke:#181818;stroke-width:0.5;" x1="69.74" x2="412.4656" y1="642" y2="642"/><line style="stroke:#181818;stroke-width:0.5;" x1="69.74" x2="412.4656" y1="650" y2="650"/><ellipse cx="79.74" cy="663.6484" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="237.7471" x="88.74" y="666.9951">Mono<InitializeResult> initialize()</text><ellipse cx="79.74" cy="679.9453" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="230.1387" x="88.74" y="683.292">Mono<CallToolResult> callTool()</text><ellipse cx="79.74" cy="696.2422" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="239.5723" x="88.74" y="699.5889">Mono<ListToolsResult> listTools()</text><ellipse cx="79.74" cy="712.5391" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="310.707" x="88.74" y="715.8857">Mono<ListResourcesResult> listResources()</text><ellipse cx="79.74" cy="728.8359" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="318.7256" x="88.74" y="732.1826">Mono<ReadResourceResult> readResource()</text><ellipse cx="79.74" cy="745.1328" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="281.9824" x="88.74" y="748.4795">Mono<ListPromptsResult> listPrompts()</text><ellipse cx="79.74" cy="761.4297" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="270.2998" x="88.74" y="764.7764">Mono<GetPromptResult> getPrompt()</text></g><!--class McpSyncClient--><g id="elem_McpSyncClient"><rect codeLine="43" fill="#F1F1F1" height="162.0781" id="McpSyncClient" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="283.1816" x="114.74" y="387"/><ellipse cx="200.613" cy="403" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1;"/><path d="M203.5818,408.6406 Q203.0037,408.9375 202.363,409.0781 Q201.7224,409.2344 201.0193,409.2344 Q198.5193,409.2344 197.1912,407.5938 Q195.8787,405.9375 195.8787,402.8125 Q195.8787,399.6875 197.1912,398.0313 Q198.5193,396.375 201.0193,396.375 Q201.7224,396.375 202.363,396.5313 Q203.0193,396.6875 203.5818,396.9844 L203.5818,399.7031 Q202.9568,399.125 202.363,398.8594 Q201.7693,398.5781 201.1443,398.5781 Q199.8005,398.5781 199.113,399.6563 Q198.4255,400.7188 198.4255,402.8125 Q198.4255,404.9063 199.113,405.9844 Q199.8005,407.0469 201.1443,407.0469 Q201.7693,407.0469 202.363,406.7813 Q202.9568,406.5 203.5818,405.9219 L203.5818,408.6406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="102.9355" x="221.113" y="407.8467">McpSyncClient</text><line style="stroke:#181818;stroke-width:0.5;" x1="115.74" x2="396.9216" y1="419" y2="419"/><line style="stroke:#181818;stroke-width:0.5;" x1="115.74" x2="396.9216" y1="427" y2="427"/><ellipse cx="125.74" cy="440.6484" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="176.2031" x="134.74" y="443.9951">InitializeResult initialize()</text><ellipse cx="125.74" cy="456.9453" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="168.5947" x="134.74" y="460.292">CallToolResult callTool()</text><ellipse cx="125.74" cy="473.2422" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="178.0283" x="134.74" y="476.5889">ListToolsResult listTools()</text><ellipse cx="125.74" cy="489.5391" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="249.1631" x="134.74" y="492.8857">ListResourcesResult listResources()</text><ellipse cx="125.74" cy="505.8359" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="257.1816" x="134.74" y="509.1826">ReadResourceResult readResource()</text><ellipse cx="125.74" cy="522.1328" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="220.4385" x="134.74" y="525.4795">ListPromptsResult listPrompts()</text><ellipse cx="125.74" cy="538.4297" fill="#84BE84" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="208.7559" x="134.74" y="541.7764">GetPromptResult getPrompt()</text></g><!--class StdioServerTransport--><g id="elem_StdioServerTransport"><rect codeLine="53" fill="#F1F1F1" height="80.5938" id="StdioServerTransport" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="238.3242" x="338.24" y="1007"/><ellipse cx="378.8654" cy="1023" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1;"/><path d="M381.8341,1028.6406 Q381.256,1028.9375 380.6154,1029.0781 Q379.9748,1029.2344 379.2716,1029.2344 Q376.7716,1029.2344 375.4435,1027.5938 Q374.131,1025.9375 374.131,1022.8125 Q374.131,1019.6875 375.4435,1018.0313 Q376.7716,1016.375 379.2716,1016.375 Q379.9748,1016.375 380.6154,1016.5313 Q381.2716,1016.6875 381.8341,1016.9844 L381.8341,1019.7031 Q381.2091,1019.125 380.6154,1018.8594 Q380.0216,1018.5781 379.3966,1018.5781 Q378.0529,1018.5781 377.3654,1019.6563 Q376.6779,1020.7188 376.6779,1022.8125 Q376.6779,1024.9063 377.3654,1025.9844 Q378.0529,1027.0469 379.3966,1027.0469 Q380.0216,1027.0469 380.6154,1026.7813 Q381.2091,1026.5 381.8341,1025.9219 L381.8341,1028.6406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="149.3789" x="398.5599" y="1027.8467">StdioServerTransport</text><line style="stroke:#181818;stroke-width:0.5;" x1="339.24" x2="575.5642" y1="1039" y2="1039"/><rect fill="none" height="6" style="stroke:#C82930;stroke-width:1;" width="6" x="346.24" y="1049.6484"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="156.0918" x="358.24" y="1055.9951">Process serverProcess</text><rect fill="none" height="6" style="stroke:#C82930;stroke-width:1;" width="6" x="346.24" y="1065.9453"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="212.3242" x="358.24" y="1072.292">ServerParameters parameters</text><line style="stroke:#181818;stroke-width:0.5;" x1="339.24" x2="575.5642" y1="1079.5938" y2="1079.5938"/></g><!--class SseServerTransport--><g id="elem_SseServerTransport"><rect codeLine="58" fill="#F1F1F1" height="64.2969" id="SseServerTransport" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="171.8037" x="611.24" y="1015.5"/><ellipse cx="626.8469" cy="1031.5" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1;"/><path d="M629.8156,1037.1406 Q629.2375,1037.4375 628.5969,1037.5781 Q627.9563,1037.7344 627.2531,1037.7344 Q624.7531,1037.7344 623.425,1036.0938 Q622.1125,1034.4375 622.1125,1031.3125 Q622.1125,1028.1875 623.425,1026.5313 Q624.7531,1024.875 627.2531,1024.875 Q627.9563,1024.875 628.5969,1025.0313 Q629.2531,1025.1875 629.8156,1025.4844 L629.8156,1028.2031 Q629.1906,1027.625 628.5969,1027.3594 Q628.0031,1027.0781 627.3781,1027.0781 Q626.0344,1027.0781 625.3469,1028.1563 Q624.6594,1029.2188 624.6594,1031.3125 Q624.6594,1033.4063 625.3469,1034.4844 Q626.0344,1035.5469 627.3781,1035.5469 Q628.0031,1035.5469 628.5969,1035.2813 Q629.1906,1035 629.8156,1034.4219 L629.8156,1037.1406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="138.4551" x="640.9817" y="1036.3467">SseServerTransport</text><line style="stroke:#181818;stroke-width:0.5;" x1="612.24" x2="782.0437" y1="1047.5" y2="1047.5"/><rect fill="none" height="6" style="stroke:#C82930;stroke-width:1;" width="6" x="619.24" y="1058.1484"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="145.8037" x="631.24" y="1064.4951">WebClient webClient</text><line style="stroke:#181818;stroke-width:0.5;" x1="612.24" x2="782.0437" y1="1071.7969" y2="1071.7969"/></g><!--class McpSchema--><g id="elem_McpSchema"><rect codeLine="62" fill="#F1F1F1" height="129.4844" id="McpSchema" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="221.002" x="350.74" y="7"/><ellipse cx="414.5159" cy="23" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1;"/><path d="M417.4846,28.6406 Q416.9065,28.9375 416.2659,29.0781 Q415.6253,29.2344 414.9221,29.2344 Q412.4221,29.2344 411.094,27.5938 Q409.7815,25.9375 409.7815,22.8125 Q409.7815,19.6875 411.094,18.0313 Q412.4221,16.375 414.9221,16.375 Q415.6253,16.375 416.2659,16.5313 Q416.9221,16.6875 417.4846,16.9844 L417.4846,19.7031 Q416.8596,19.125 416.2659,18.8594 Q415.6721,18.5781 415.0471,18.5781 Q413.7034,18.5781 413.0159,19.6563 Q412.3284,20.7188 412.3284,22.8125 Q412.3284,24.9063 413.0159,25.9844 Q413.7034,27.0469 415.0471,27.0469 Q415.6721,27.0469 416.2659,26.7813 Q416.8596,26.5 417.4846,25.9219 L417.4846,28.6406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="84.9502" x="435.0159" y="27.8467">McpSchema</text><line style="stroke:#181818;stroke-width:0.5;" x1="351.74" x2="570.742" y1="39" y2="39"/><ellipse cx="361.74" cy="52.6484" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="117.0176" x="370.74" y="55.9951">class ErrorCodes</text><ellipse cx="361.74" cy="68.9453" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="124.3867" x="370.74" y="72.292">interface Request</text><ellipse cx="361.74" cy="85.2422" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="190.7021" x="370.74" y="88.5889">interface JSONRPCMessage</text><ellipse cx="361.74" cy="101.5391" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="195.002" x="370.74" y="104.8857">interface ResourceContents</text><ellipse cx="361.74" cy="117.8359" fill="none" rx="3" ry="3" style="stroke:#038048;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="122.5684" x="370.74" y="121.1826">interface Content</text><line style="stroke:#181818;stroke-width:0.5;" x1="351.74" x2="570.742" y1="128.4844" y2="128.4844"/></g><!--class McpError--><g id="elem_McpError"><rect codeLine="70" fill="#F1F1F1" height="80.5938" id="McpError" rx="2.5" ry="2.5" style="stroke:#181818;stroke-width:0.5;" width="135.1494" x="606.74" y="31"/><ellipse cx="639.6534" cy="47" fill="#ADD1B2" rx="11" ry="11" style="stroke:#181818;stroke-width:1;"/><path d="M642.6222,52.6406 Q642.0441,52.9375 641.4034,53.0781 Q640.7628,53.2344 640.0597,53.2344 Q637.5597,53.2344 636.2316,51.5938 Q634.9191,49.9375 634.9191,46.8125 Q634.9191,43.6875 636.2316,42.0313 Q637.5597,40.375 640.0597,40.375 Q640.7628,40.375 641.4034,40.5313 Q642.0597,40.6875 642.6222,40.9844 L642.6222,43.7031 Q641.9972,43.125 641.4034,42.8594 Q640.8097,42.5781 640.1847,42.5781 Q638.8409,42.5781 638.1534,43.6563 Q637.4659,44.7188 637.4659,46.8125 Q637.4659,48.9063 638.1534,49.9844 Q638.8409,51.0469 640.1847,51.0469 Q640.8097,51.0469 641.4034,50.7813 Q641.9972,50.5 642.6222,49.9219 L642.6222,52.6406 Z " fill="#000000"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="63.3418" x="657.6342" y="51.8467">McpError</text><line style="stroke:#181818;stroke-width:0.5;" x1="607.74" x2="740.8894" y1="63" y2="63"/><rect fill="none" height="6" style="stroke:#C82930;stroke-width:1;" width="6" x="614.74" y="73.6484"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="56.4648" x="626.74" y="79.9951">int code</text><rect fill="none" height="6" style="stroke:#C82930;stroke-width:1;" width="6" x="614.74" y="89.9453"/><text fill="#000000" font-family="sans-serif" font-size="14" lengthAdjust="spacing" textLength="109.1494" x="626.74" y="96.292">String message</text><line style="stroke:#181818;stroke-width:0.5;" x1="607.74" x2="740.8894" y1="103.5938" y2="103.5938"/></g><!--reverse link McpTransport to AbstractMcpTransport--><g id="link_McpTransport_AbstractMcpTransport"><path codeLine="75" d="M577.24,782.05 C577.24,804.73 577.24,811.41 577.24,832.77 " fill="none" id="McpTransport-backto-AbstractMcpTransport" style="stroke:#181818;stroke-width:1;stroke-dasharray:7.0,7.0;"/><polygon fill="none" points="577.24,764.05,571.24,782.05,583.24,782.05,577.24,764.05" style="stroke:#181818;stroke-width:1;"/></g><!--reverse link AbstractMcpTransport to StdioServerTransport--><g id="link_AbstractMcpTransport_StdioServerTransport"><path codeLine="76" d="M523.2756,960.6475 C507.9456,980.5775 501.97,988.35 487.89,1006.66 " fill="none" id="AbstractMcpTransport-backto-StdioServerTransport" style="stroke:#181818;stroke-width:1;"/><polygon fill="none" points="534.25,946.38,518.5197,956.9893,528.0314,964.3056,534.25,946.38" style="stroke:#181818;stroke-width:1;"/></g><!--reverse link AbstractMcpTransport to SseServerTransport--><g id="link_AbstractMcpTransport_SseServerTransport"><path codeLine="77" d="M631.1969,960.6456 C649.0869,983.8956 658.2,995.75 673.37,1015.48 " fill="none" id="AbstractMcpTransport-backto-SseServerTransport" style="stroke:#181818;stroke-width:1;"/><polygon fill="none" points="620.22,946.38,626.4417,964.3046,635.9521,956.9867,620.22,946.38" style="stroke:#181818;stroke-width:1;"/></g><!--reverse link McpSession to DefaultMcpSession--><g id="link_McpSession_DefaultMcpSession"><path codeLine="78" d="M568.24,328.19 C568.24,363.83 568.24,393.98 568.24,427.49 " fill="none" id="McpSession-backto-DefaultMcpSession" style="stroke:#181818;stroke-width:1;"/><polygon fill="none" points="568.24,310.19,562.24,328.19,574.24,328.19,568.24,310.19" style="stroke:#181818;stroke-width:1;"/></g><!--reverse link DefaultMcpSession to McpAsyncClient--><g id="link_DefaultMcpSession_McpAsyncClient"><path codeLine="79" d="M494.8663,518.5887 C453.2563,546.7087 410.82,575.39 359.8,609.87 " fill="none" id="DefaultMcpSession-backto-McpAsyncClient" style="stroke:#181818;stroke-width:1;"/><polygon fill="none" points="509.78,508.51,491.5067,513.6174,498.2258,523.5599,509.78,508.51" style="stroke:#181818;stroke-width:1;"/></g><!--link McpClient to McpAsyncClient--><g id="link_McpClient_McpAsyncClient"><path codeLine="80" d="M78.61,302.27 C49.14,359.76 6,468.04 47.24,549 C59.05,572.19 72.145,588.5085 92.015,605.8985 " fill="none" id="McpClient-to-McpAsyncClient" style="stroke:#181818;stroke-width:1;stroke-dasharray:7.0,7.0;"/><polygon fill="#181818" points="96.53,609.85,92.3918,600.9127,92.7675,606.5571,87.1231,606.9328,96.53,609.85" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="48.3247" x="48.24" y="472.5669">creates</text></g><!--link McpClient to McpSyncClient--><g id="link_McpClient_McpSyncClient"><path codeLine="81" d="M131.49,302.42 C149.73,326.48 169.9858,353.1983 191.9658,382.1983 " fill="none" id="McpClient-to-McpSyncClient" style="stroke:#181818;stroke-width:1;stroke-dasharray:7.0,7.0;"/><polygon fill="#181818" points="195.59,386.98,193.3415,377.3912,192.5698,382.9952,186.9658,382.2235,195.59,386.98" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="48.3247" x="171.24" y="353.0669">creates</text></g><!--reverse link McpSyncClient to McpAsyncClient--><g id="link_McpSyncClient_McpAsyncClient"><path codeLine="82" d="M249.9881,561.0725 C248.6481,580.8325 248.02,590.03 246.68,609.8 " fill="none" id="McpSyncClient-backto-McpAsyncClient" style="stroke:#181818;stroke-width:1;"/><polygon fill="none" points="250.8,549.1,246.4032,554.8156,249.9881,561.0725,254.3849,555.3569,250.8,549.1" style="stroke:#181818;stroke-width:1;"/></g><!--reverse link DefaultMcpSession to McpTransport--><g id="link_DefaultMcpSession_McpTransport"><path codeLine="83" d="M570.3369,520.5001 C571.5669,550.7901 572.82,581.44 574.3,617.78 " fill="none" id="DefaultMcpSession-backto-McpTransport" style="stroke:#181818;stroke-width:1;"/><polygon fill="none" points="569.85,508.51,566.0967,514.6674,570.3369,520.5001,574.0902,514.3428,569.85,508.51" style="stroke:#181818;stroke-width:1;"/></g><!--reverse link McpSchema to McpSession--><g id="link_McpSchema_McpSession"><path codeLine="84" d="M500.4281,141.3644 C514.7381,166.5044 527.93,189.67 541.19,212.97 " fill="none" id="McpSchema-backto-McpSession" style="stroke:#181818;stroke-width:1;stroke-dasharray:7.0,7.0;"/><polygon fill="#181818" points="497.46,136.15,498.4359,145.9504,499.9334,140.4954,505.3885,141.9929,497.46,136.15" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="29.7832" x="522.24" y="179.0669">uses</text></g><!--link McpError to McpSession--><g id="link_McpError_McpSession"><path codeLine="85" d="M651.76,112.37 C635.23,141.69 615.6374,176.4338 598.1374,207.4638 " fill="none" id="McpError-to-McpSession" style="stroke:#181818;stroke-width:1;stroke-dasharray:7.0,7.0;"/><polygon fill="#181818" points="595.19,212.69,603.0952,206.8157,597.6462,208.3349,596.127,202.8858,595.19,212.69" style="stroke:#181818;stroke-width:1;"/><text fill="#000000" font-family="sans-serif" font-size="13" lengthAdjust="spacing" textLength="44.04" x="622.24" y="179.0669">throws</text></g><!--SRC=[ZLJBRjim4BphAmZqqYAmFo0m30HkaQIeOyCosZDDhHssDAcIL88qoRzt9P8A7qhHcpWxt9qTQfTB2_f86P0rQ_UQIjCgRSbpHSZ5W-8DCPPg-_7JU6P26N3djP9gyHt1fKElDUOvTa8yHNm3zbOULDUimHXwWXig6m5wWY6RBrehdH2Y4WPao86nrwgY1sEneiNYr1XovOz57nysXv-0E6rRq4H5Xpvu6glNNFuQglROfhCbEEZp20hWiNSrIkDAEkSM-oKPfE-TxXtyxi3OoPxkbEL7pgZ5s__XAzPr_Nw68-s4pKhFalPj-EeZxzimviJBAy51-X_W6H_VSlPAg7cIp8aRCG_5TwzwB4umT78hkULKy3-m0uEAbuIFIDJmYWgnLqe44lFdYFAD6zj39d14038InbMd6IJ44Op8Ew1Dm0DNHrYMTwlLkRL9LWz5n6lmOA2T0f3PLMTkvKOLFgKMPGvbvkJUJDWovKffo8GVXHMb4va9qnxKjk6g1lq0EXtP6N9Hai41wOF-r0SSUqirFGDEdo7j-1dbDJ2PzGSSlD-FuIjz47OFP-eUmu73nAzK0ttnYxU1zmETWb_hpTrkk_9BAh_W35mfXAJDqdaq4JEKThgHI1YA60omciiJEViYU2EP-CNBV3wv2gl9_RXucSqcd-5VzCBTAbf20wNOJLMvhGPYkZIgj_qpdo_pZN996FwA5f-YeDNli29SbTLAJPwKDkP-YWNw6Z4lIMTS3VTEGSWOjlTQFPg_]--></g></svg> |