kgraph-mcp-agent-platform
/
archive
/development_logs
/site
/testing
/comprehensive-mcp-test-plan
/index.html
| <html lang=en class=no-js> <head><meta charset=utf-8><meta name=viewport content="width=device-width,initial-scale=1"><meta name=description content="KGraph-MCP: An intelligent orchestration layer for MCP servers using Knowledge Graphs and AI Agents for autonomous tool discovery, planning, and execution."><meta name=author content="KGraph-MCP Development Team"><link href=https://basalganglia.github.io/kgraph-mcp-hackathon/testing/comprehensive-mcp-test-plan/ rel=canonical><link rel=icon href=../../assets/favicon.png><meta name=generator content="mkdocs-1.6.1, mkdocs-material-9.6.14"><title>Comprehensive MCP Testing Suite Plan - KGraph-MCP - The Self-Orchestrating Tool Network</title><link rel=stylesheet href=../../assets/stylesheets/main.342714a4.min.css><link rel=stylesheet href=../../assets/stylesheets/palette.06af60db.min.css><link rel=preconnect href=https://fonts.gstatic.com crossorigin><link rel=stylesheet href="https://fonts.googleapis.com/css?family=Roboto:300,300i,400,400i,700,700i%7CRoboto+Mono:400,400i,700,700i&display=fallback"><style>:root{--md-text-font:"Roboto";--md-code-font:"Roboto Mono"}</style><link rel=stylesheet href=../../assets/_mkdocstrings.css><link rel=stylesheet href=../../overrides/stylesheets/extra.css><script>__md_scope=new URL("../..",location),__md_hash=e=>[...e].reduce(((e,_)=>(e<<5)-e+_.charCodeAt(0)),0),__md_get=(e,_=localStorage,t=__md_scope)=>JSON.parse(_.getItem(t.pathname+"."+e)),__md_set=(e,_,t=localStorage,a=__md_scope)=>{try{t.setItem(a.pathname+"."+e,JSON.stringify(_))}catch(e){}}</script><script id=__analytics>function __md_analytics(){function e(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],e("js",new Date),e("config",""),document.addEventListener("DOMContentLoaded",(function(){document.forms.search&&document.forms.search.query.addEventListener("blur",(function(){this.value&&e("event","search",{search_term:this.value})}));document$.subscribe((function(){var t=document.forms.feedback;if(void 0!==t)for(var a of t.querySelectorAll("[type=submit]"))a.addEventListener("click",(function(a){a.preventDefault();var n=document.location.pathname,d=this.getAttribute("data-md-value");e("event","feedback",{page:n,data:d}),t.firstElementChild.disabled=!0;var r=t.querySelector(".md-feedback__note [data-md-value='"+d+"']");r&&(r.hidden=!1)})),t.hidden=!1})),location$.subscribe((function(t){e("config","",{page_path:t.pathname})}))}));var t=document.createElement("script");t.async=!0,t.src="https://www.googletagmanager.com/gtag/js?id=",document.getElementById("__analytics").insertAdjacentElement("afterEnd",t)}</script><script>if("undefined"!=typeof __md_analytics){var consent=__md_get("__consent");consent&&consent.analytics&&__md_analytics()}</script> <link href="../../assets/stylesheets/glightbox.min.css" rel="stylesheet"/><style> | |
| html.glightbox-open { overflow: initial; height: 100%; } | |
| .gslide-title { margin-top: 0px; user-select: text; } | |
| .gslide-desc { color: #666; user-select: text; } | |
| .gslide-image img { background: white; } | |
| .gscrollbar-fixer { padding-right: 15px; } | |
| .gdesc-inner { font-size: 0.75rem; } | |
| body[data-md-color-scheme="slate"] .gdesc-inner { background: var(--md-default-bg-color);} | |
| body[data-md-color-scheme="slate"] .gslide-title { color: var(--md-default-fg-color);} | |
| body[data-md-color-scheme="slate"] .gslide-desc { color: var(--md-default-fg-color);}</style> <script src="../../assets/javascripts/glightbox.min.js"></script></head> <body dir=ltr data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo> <input class=md-toggle data-md-toggle=drawer type=checkbox id=__drawer autocomplete=off> <input class=md-toggle data-md-toggle=search type=checkbox id=__search autocomplete=off> <label class=md-overlay for=__drawer></label> <div data-md-component=skip> <a href=#comprehensive-mcp-testing-suite-plan class=md-skip> Skip to content </a> </div> <div data-md-component=announce> </div> <div data-md-color-scheme=default data-md-component=outdated hidden> </div> <header class="md-header md-header--shadow md-header--lifted" data-md-component=header> <nav class="md-header__inner md-grid" aria-label=Header> <a href=../.. title="KGraph-MCP - The Self-Orchestrating Tool Network" class="md-header__button md-logo" aria-label="KGraph-MCP - The Self-Orchestrating Tool Network" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19.5 17c-.14 0-.26 0-.39.04L17.5 13.8c.45-.45.75-1.09.75-1.8a2.5 2.5 0 0 0-2.5-2.5c-.14 0-.25 0-.4.04L13.74 6.3c.47-.46.76-1.09.76-1.8a2.5 2.5 0 0 0-5 0c0 .7.29 1.34.76 1.79L8.65 9.54c-.15-.04-.26-.04-.4-.04a2.5 2.5 0 0 0-2.5 2.5c0 .71.29 1.34.75 1.79l-1.61 3.25C4.76 17 4.64 17 4.5 17a2.5 2.5 0 0 0 0 5A2.5 2.5 0 0 0 7 19.5c0-.7-.29-1.34-.76-1.79l1.62-3.25c.14.04.26.04.39.04s.25 0 .38-.04l1.63 3.25c-.47.45-.76 1.09-.76 1.79a2.5 2.5 0 0 0 5 0A2.5 2.5 0 0 0 12 17c-.13 0-.26 0-.39.04L10 13.8c.45-.45.75-1.09.75-1.8 0-.7-.29-1.33-.75-1.79l1.61-3.25c.13.04.26.04.39.04s.26 0 .39-.04L14 10.21a2.5 2.5 0 0 0 1.75 4.29c.13 0 .25 0 .38-.04l1.63 3.25c-.47.45-.76 1.09-.76 1.79a2.5 2.5 0 0 0 5 0 2.5 2.5 0 0 0-2.5-2.5m-15 3.5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1m8.5-1c0 .55-.45 1-1 1s-1-.45-1-1 .45-1 1-1 1 .45 1 1M7.25 12c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.45-1-1M11 4.5c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.45-1-1m3.75 7.5c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.45-1-1m4.75 8.5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1"/></svg> </a> <label class="md-header__button md-icon" for=__drawer> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M3 6h18v2H3zm0 5h18v2H3zm0 5h18v2H3z"/></svg> </label> <div class=md-header__title data-md-component=header-title> <div class=md-header__ellipsis> <div class=md-header__topic> <span class=md-ellipsis> KGraph-MCP - The Self-Orchestrating Tool Network </span> </div> <div class=md-header__topic data-md-component=header-topic> <span class=md-ellipsis> Comprehensive MCP Testing Suite Plan </span> </div> </div> </div> <form class=md-header__option data-md-component=palette> <input class=md-option data-md-color-media=(prefers-color-scheme) data-md-color-scheme=default data-md-color-primary=indigo data-md-color-accent=indigo aria-label="Switch to light mode" type=radio name=__palette id=__palette_0> <label class="md-header__button md-icon" title="Switch to light mode" for=__palette_1 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="m14.3 16-.7-2h-3.2l-.7 2H7.8L11 7h2l3.2 9zM20 8.69V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12zm-9.15 3.96h2.3L12 9z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: light)" data-md-color-scheme=default data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Switch to dark mode" type=radio name=__palette id=__palette_1> <label class="md-header__button md-icon" title="Switch to dark mode" for=__palette_2 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 8a4 4 0 0 0-4 4 4 4 0 0 0 4 4 4 4 0 0 0 4-4 4 4 0 0 0-4-4m0 10a6 6 0 0 1-6-6 6 6 0 0 1 6-6 6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> <input class=md-option data-md-color-media="(prefers-color-scheme: dark)" data-md-color-scheme=slate data-md-color-primary=deep-purple data-md-color-accent=purple aria-label="Switch to system preference" type=radio name=__palette id=__palette_2> <label class="md-header__button md-icon" title="Switch to system preference" for=__palette_0 hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M12 18c-.89 0-1.74-.2-2.5-.55C11.56 16.5 13 14.42 13 12s-1.44-4.5-3.5-5.45C10.26 6.2 11.11 6 12 6a6 6 0 0 1 6 6 6 6 0 0 1-6 6m8-9.31V4h-4.69L12 .69 8.69 4H4v4.69L.69 12 4 15.31V20h4.69L12 23.31 15.31 20H20v-4.69L23.31 12z"/></svg> </label> </form> <script>var palette=__md_get("__palette");if(palette&&palette.color){if("(prefers-color-scheme)"===palette.color.media){var media=matchMedia("(prefers-color-scheme: light)"),input=document.querySelector(media.matches?"[data-md-color-media='(prefers-color-scheme: light)']":"[data-md-color-media='(prefers-color-scheme: dark)']");palette.color.media=input.getAttribute("data-md-color-media"),palette.color.scheme=input.getAttribute("data-md-color-scheme"),palette.color.primary=input.getAttribute("data-md-color-primary"),palette.color.accent=input.getAttribute("data-md-color-accent")}for(var[key,value]of Object.entries(palette.color))document.body.setAttribute("data-md-color-"+key,value)}</script> <label class="md-header__button md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> </label> <div class=md-search data-md-component=search role=dialog> <label class=md-search__overlay for=__search></label> <div class=md-search__inner role=search> <form class=md-search__form name=search> <input type=text class=md-search__input name=query aria-label=Search placeholder=Search autocapitalize=off autocorrect=off autocomplete=off spellcheck=false data-md-component=search-query required> <label class="md-search__icon md-icon" for=__search> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M9.5 3A6.5 6.5 0 0 1 16 9.5c0 1.61-.59 3.09-1.56 4.23l.27.27h.79l5 5-1.5 1.5-5-5v-.79l-.27-.27A6.52 6.52 0 0 1 9.5 16 6.5 6.5 0 0 1 3 9.5 6.5 6.5 0 0 1 9.5 3m0 2C7 5 5 7 5 9.5S7 14 9.5 14 14 12 14 9.5 12 5 9.5 5"/></svg> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M20 11v2H8l5.5 5.5-1.42 1.42L4.16 12l7.92-7.92L13.5 5.5 8 11z"/></svg> </label> <nav class=md-search__options aria-label=Search> <a href=javascript:void(0) class="md-search__icon md-icon" title=Share aria-label=Share data-clipboard data-clipboard-text data-md-component=search-share tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M18 16.08c-.76 0-1.44.3-1.96.77L8.91 12.7c.05-.23.09-.46.09-.7s-.04-.47-.09-.7l7.05-4.11c.54.5 1.25.81 2.04.81a3 3 0 0 0 3-3 3 3 0 0 0-3-3 3 3 0 0 0-3 3c0 .24.04.47.09.7L8.04 9.81C7.5 9.31 6.79 9 6 9a3 3 0 0 0-3 3 3 3 0 0 0 3 3c.79 0 1.5-.31 2.04-.81l7.12 4.15c-.05.21-.08.43-.08.66 0 1.61 1.31 2.91 2.92 2.91s2.92-1.3 2.92-2.91A2.92 2.92 0 0 0 18 16.08"/></svg> </a> <button type=reset class="md-search__icon md-icon" title=Clear aria-label=Clear tabindex=-1> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z"/></svg> </button> </nav> <div class=md-search__suggest data-md-component=search-suggest></div> </form> <div class=md-search__output> <div class=md-search__scrollwrap tabindex=0 data-md-scrollfix> <div class=md-search-result data-md-component=search-result> <div class=md-search-result__meta> Initializing search </div> <ol class=md-search-result__list role=presentation></ol> </div> </div> </div> </div> </div> <div class=md-header__source> <a href=https://github.com/BasalGanglia/kgraph-mcp-hackathon title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> BasalGanglia/kgraph-mcp-hackathon </div> </a> </div> </nav> <nav class=md-tabs aria-label=Tabs data-md-component=tabs> <div class=md-grid> <ul class=md-tabs__list> <li class=md-tabs__item> <a href=../.. class=md-tabs__link> Home </a> </li> <li class=md-tabs__item> <a href=../../user-guide/installation/ class=md-tabs__link> Documentation </a> </li> <li class=md-tabs__item> <a href=../../architecture/overview/ class=md-tabs__link> Architecture </a> </li> <li class=md-tabs__item> <a href=../../mvp/mvp1/ class=md-tabs__link> Project Management </a> </li> <li class=md-tabs__item> <a href=../../progress/ class=md-tabs__link> Progress Reports </a> </li> <li class=md-tabs__item> <a href=../../workflow/development/ class=md-tabs__link> Tools & Workflow </a> </li> <li class=md-tabs__item> <a href=../../resources/glossary/ class=md-tabs__link> Resources </a> </li> </ul> </div> </nav> </header> <div class=md-container data-md-component=container> <main class=md-main data-md-component=main> <div class="md-main__inner md-grid"> <div class="md-sidebar md-sidebar--primary" data-md-component=sidebar data-md-type=navigation> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--primary md-nav--lifted" aria-label=Navigation data-md-level=0> <label class=md-nav__title for=__drawer> <a href=../.. title="KGraph-MCP - The Self-Orchestrating Tool Network" class="md-nav__button md-logo" aria-label="KGraph-MCP - The Self-Orchestrating Tool Network" data-md-component=logo> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M19.5 17c-.14 0-.26 0-.39.04L17.5 13.8c.45-.45.75-1.09.75-1.8a2.5 2.5 0 0 0-2.5-2.5c-.14 0-.25 0-.4.04L13.74 6.3c.47-.46.76-1.09.76-1.8a2.5 2.5 0 0 0-5 0c0 .7.29 1.34.76 1.79L8.65 9.54c-.15-.04-.26-.04-.4-.04a2.5 2.5 0 0 0-2.5 2.5c0 .71.29 1.34.75 1.79l-1.61 3.25C4.76 17 4.64 17 4.5 17a2.5 2.5 0 0 0 0 5A2.5 2.5 0 0 0 7 19.5c0-.7-.29-1.34-.76-1.79l1.62-3.25c.14.04.26.04.39.04s.25 0 .38-.04l1.63 3.25c-.47.45-.76 1.09-.76 1.79a2.5 2.5 0 0 0 5 0A2.5 2.5 0 0 0 12 17c-.13 0-.26 0-.39.04L10 13.8c.45-.45.75-1.09.75-1.8 0-.7-.29-1.33-.75-1.79l1.61-3.25c.13.04.26.04.39.04s.26 0 .39-.04L14 10.21a2.5 2.5 0 0 0 1.75 4.29c.13 0 .25 0 .38-.04l1.63 3.25c-.47.45-.76 1.09-.76 1.79a2.5 2.5 0 0 0 5 0 2.5 2.5 0 0 0-2.5-2.5m-15 3.5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1m8.5-1c0 .55-.45 1-1 1s-1-.45-1-1 .45-1 1-1 1 .45 1 1M7.25 12c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.45-1-1M11 4.5c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.45-1-1m3.75 7.5c0-.55.45-1 1-1s1 .45 1 1-.45 1-1 1-1-.45-1-1m4.75 8.5c-.55 0-1-.45-1-1s.45-1 1-1 1 .45 1 1-.45 1-1 1"/></svg> </a> KGraph-MCP - The Self-Orchestrating Tool Network </label> <div class=md-nav__source> <a href=https://github.com/BasalGanglia/kgraph-mcp-hackathon title="Go to repository" class=md-source data-md-component=source> <div class="md-source__icon md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </div> <div class=md-source__repository> BasalGanglia/kgraph-mcp-hackathon </div> </a> </div> <ul class=md-nav__list data-md-scrollfix> <li class="md-nav__item md-nav__item--pruned md-nav__item--nested"> <a href=../.. class=md-nav__link> <span class=md-ellipsis> Home </span> <span class="md-nav__icon md-icon"></span> </a> </li> <li class="md-nav__item md-nav__item--pruned md-nav__item--nested"> <a href=../../user-guide/installation/ class=md-nav__link> <span class=md-ellipsis> Documentation </span> <span class="md-nav__icon md-icon"></span> </a> </li> <li class="md-nav__item md-nav__item--pruned md-nav__item--nested"> <a href=../../architecture/overview/ class=md-nav__link> <span class=md-ellipsis> Architecture </span> <span class="md-nav__icon md-icon"></span> </a> </li> <li class="md-nav__item md-nav__item--pruned md-nav__item--nested"> <a href=../../mvp/mvp1/ class=md-nav__link> <span class=md-ellipsis> Project Management </span> <span class="md-nav__icon md-icon"></span> </a> </li> <li class="md-nav__item md-nav__item--pruned md-nav__item--nested"> <a href=../../progress/ class=md-nav__link> <span class=md-ellipsis> Progress Reports </span> <span class="md-nav__icon md-icon"></span> </a> </li> <li class="md-nav__item md-nav__item--pruned md-nav__item--nested"> <a href=../../workflow/development/ class=md-nav__link> <span class=md-ellipsis> Tools & Workflow </span> <span class="md-nav__icon md-icon"></span> </a> </li> <li class="md-nav__item md-nav__item--pruned md-nav__item--nested"> <a href=../../resources/glossary/ class=md-nav__link> <span class=md-ellipsis> Resources </span> <span class="md-nav__icon md-icon"></span> </a> </li> </ul> </nav> </div> </div> </div> <div class="md-sidebar md-sidebar--secondary" data-md-component=sidebar data-md-type=toc> <div class=md-sidebar__scrollwrap> <div class=md-sidebar__inner> <nav class="md-nav md-nav--secondary" aria-label="On this page"> <label class=md-nav__title for=__toc> <span class="md-nav__icon md-icon"></span> On this page </label> <ul class=md-nav__list data-md-component=toc data-md-scrollfix> <li class=md-nav__item> <a href=#overview class=md-nav__link> <span class=md-ellipsis> π― Overview </span> </a> </li> <li class=md-nav__item> <a href=#phase-1-enhanced-current-infrastructure-completed class=md-nav__link> <span class=md-ellipsis> β Phase 1: Enhanced Current Infrastructure (COMPLETED) </span> </a> <nav class=md-nav aria-label="β Phase 1: Enhanced Current Infrastructure (COMPLETED)"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#current-servers-enhanced class=md-nav__link> <span class=md-ellipsis> Current Servers Enhanced </span> </a> </li> <li class=md-nav__item> <a href=#infrastructure-improvements class=md-nav__link> <span class=md-ellipsis> Infrastructure Improvements </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#phase-2-new-mcp-servers-planned class=md-nav__link> <span class=md-ellipsis> π Phase 2: New MCP Servers (PLANNED) </span> </a> <nav class=md-nav aria-label="π Phase 2: New MCP Servers (PLANNED)"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#1-image-processing-server-port-7862 class=md-nav__link> <span class=md-ellipsis> 1. Image Processing Server (port 7862) </span> </a> </li> <li class=md-nav__item> <a href=#2-code-analysis-server-port-7863 class=md-nav__link> <span class=md-ellipsis> 2. Code Analysis Server (port 7863) </span> </a> </li> <li class=md-nav__item> <a href=#3-web-scraper-server-port-7864 class=md-nav__link> <span class=md-ellipsis> 3. Web Scraper Server (port 7864) </span> </a> </li> <li class=md-nav__item> <a href=#4-math-calculator-server-port-7865 class=md-nav__link> <span class=md-ellipsis> 4. Math Calculator Server (port 7865) </span> </a> </li> <li class=md-nav__item> <a href=#5-file-processor-server-port-7866 class=md-nav__link> <span class=md-ellipsis> 5. File Processor Server (port 7866) </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#phase-3-advanced-integration-testing class=md-nav__link> <span class=md-ellipsis> π§ Phase 3: Advanced Integration Testing </span> </a> <nav class=md-nav aria-label="π§ Phase 3: Advanced Integration Testing"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#multi-tool-workflows class=md-nav__link> <span class=md-ellipsis> Multi-Tool Workflows </span> </a> </li> <li class=md-nav__item> <a href=#stress-testing-scenarios class=md-nav__link> <span class=md-ellipsis> Stress Testing Scenarios </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#phase-4-performance-monitoring class=md-nav__link> <span class=md-ellipsis> π Phase 4: Performance & Monitoring </span> </a> <nav class=md-nav aria-label="π Phase 4: Performance & Monitoring"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#infrastructure-components class=md-nav__link> <span class=md-ellipsis> Infrastructure Components </span> </a> </li> <li class=md-nav__item> <a href=#key-performance-metrics class=md-nav__link> <span class=md-ellipsis> Key Performance Metrics </span> </a> </li> <li class=md-nav__item> <a href=#load-testing-scenarios class=md-nav__link> <span class=md-ellipsis> Load Testing Scenarios </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#phase-5-real-world-integration class=md-nav__link> <span class=md-ellipsis> π Phase 5: Real-World Integration </span> </a> <nav class=md-nav aria-label="π Phase 5: Real-World Integration"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#claude-desktop-integration class=md-nav__link> <span class=md-ellipsis> Claude Desktop Integration </span> </a> </li> <li class=md-nav__item> <a href=#cursor-ide-integration class=md-nav__link> <span class=md-ellipsis> Cursor IDE Integration </span> </a> </li> <li class=md-nav__item> <a href=#api-client-testing class=md-nav__link> <span class=md-ellipsis> API Client Testing </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#testing-implementation class=md-nav__link> <span class=md-ellipsis> π§ͺ Testing Implementation </span> </a> <nav class=md-nav aria-label="π§ͺ Testing Implementation"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#test-suite-structure class=md-nav__link> <span class=md-ellipsis> Test Suite Structure </span> </a> </li> <li class=md-nav__item> <a href=#deployment-commands class=md-nav__link> <span class=md-ellipsis> Deployment Commands </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#success-metrics class=md-nav__link> <span class=md-ellipsis> π Success Metrics </span> </a> <nav class=md-nav aria-label="π Success Metrics"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#functional-requirements class=md-nav__link> <span class=md-ellipsis> Functional Requirements </span> </a> </li> <li class=md-nav__item> <a href=#performance-requirements class=md-nav__link> <span class=md-ellipsis> Performance Requirements </span> </a> </li> <li class=md-nav__item> <a href=#integration-requirements class=md-nav__link> <span class=md-ellipsis> Integration Requirements </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#implementation-roadmap class=md-nav__link> <span class=md-ellipsis> π Implementation Roadmap </span> </a> <nav class=md-nav aria-label="π Implementation Roadmap"> <ul class=md-nav__list> <li class=md-nav__item> <a href=#week-1-new-server-development class=md-nav__link> <span class=md-ellipsis> Week 1: New Server Development </span> </a> </li> <li class=md-nav__item> <a href=#week-2-integration-testing class=md-nav__link> <span class=md-ellipsis> Week 2: Integration Testing </span> </a> </li> <li class=md-nav__item> <a href=#week-3-real-world-testing class=md-nav__link> <span class=md-ellipsis> Week 3: Real-World Testing </span> </a> </li> <li class=md-nav__item> <a href=#week-4-documentation-optimization class=md-nav__link> <span class=md-ellipsis> Week 4: Documentation & Optimization </span> </a> </li> </ul> </nav> </li> <li class=md-nav__item> <a href=#expected-outcomes class=md-nav__link> <span class=md-ellipsis> π― Expected Outcomes </span> </a> </li> </ul> </nav> </div> </div> </div> <div class=md-content data-md-component=content> <article class="md-content__inner md-typeset"> <a href=https://github.com/BasalGanglia/kgraph-mcp-hackathon/edit/main/docs/testing/comprehensive-mcp-test-plan.md title="Edit this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M10 20H6V4h7v5h5v3.1l2-2V8l-6-6H6c-1.1 0-2 .9-2 2v16c0 1.1.9 2 2 2h4zm10.2-7c.1 0 .3.1.4.2l1.3 1.3c.2.2.2.6 0 .8l-1 1-2.1-2.1 1-1c.1-.1.2-.2.4-.2m0 3.9L14.1 23H12v-2.1l6.1-6.1z"/></svg> </a> <a href=https://github.com/BasalGanglia/kgraph-mcp-hackathon/raw/main/docs/testing/comprehensive-mcp-test-plan.md title="View source of this page" class="md-content__button md-icon"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M17 18c.56 0 1 .44 1 1s-.44 1-1 1-1-.44-1-1 .44-1 1-1m0-3c-2.73 0-5.06 1.66-6 4 .94 2.34 3.27 4 6 4s5.06-1.66 6-4c-.94-2.34-3.27-4-6-4m0 6.5a2.5 2.5 0 0 1-2.5-2.5 2.5 2.5 0 0 1 2.5-2.5 2.5 2.5 0 0 1 2.5 2.5 2.5 2.5 0 0 1-2.5 2.5M9.27 20H6V4h7v5h5v4.07c.7.08 1.36.25 2 .49V8l-6-6H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h4.5a8.2 8.2 0 0 1-1.23-2"/></svg> </a> <h1 id=comprehensive-mcp-testing-suite-plan>Comprehensive MCP Testing Suite Plan<a class=headerlink href=#comprehensive-mcp-testing-suite-plan title="Permanent link">¶</a></h1> <h2 id=overview>π― <strong>Overview</strong><a class=headerlink href=#overview title="Permanent link">¶</a></h2> <p>This document outlines a comprehensive testing strategy for the KGraph-MCP system, including: - Enhanced testing of existing MCP servers - Deployment of 5 new interesting MCP servers - Advanced integration and load testing scenarios - Real-world workflow testing</p> <h2 id=phase-1-enhanced-current-infrastructure-completed>β <strong>Phase 1: Enhanced Current Infrastructure (COMPLETED)</strong><a class=headerlink href=#phase-1-enhanced-current-infrastructure-completed title="Permanent link">¶</a></h2> <h3 id=current-servers-enhanced><strong>Current Servers Enhanced</strong><a class=headerlink href=#current-servers-enhanced title="Permanent link">¶</a></h3> <ul> <li><strong>Sentiment Analysis Server</strong> (port 7860)</li> <li>β Multilingual support testing (5 languages)</li> <li>β Edge cases (empty, emoji, special chars)</li> <li>β Batch processing capabilities</li> <li> <p>β Alternative transport method (Gradio API fallback)</p> </li> <li> <p><strong>Text Summarization Server</strong> (port 7861)</p> </li> <li>β Different text lengths (short, medium, long)</li> <li>β Quality metrics validation</li> <li>β Performance benchmarking</li> </ul> <h3 id=infrastructure-improvements><strong>Infrastructure Improvements</strong><a class=headerlink href=#infrastructure-improvements title="Permanent link">¶</a></h3> <ul> <li>β <strong>Alternative Transport Method</strong>: Automatic SSE to Gradio API fallback</li> <li>β <strong>Robust Error Handling</strong>: Graceful degradation and retry mechanisms</li> <li>β <strong>Performance Testing</strong>: Concurrent request handling</li> </ul> <h2 id=phase-2-new-mcp-servers-planned>π <strong>Phase 2: New MCP Servers (PLANNED)</strong><a class=headerlink href=#phase-2-new-mcp-servers-planned title="Permanent link">¶</a></h2> <h3 id=1-image-processing-server-port-7862><strong>1. Image Processing Server</strong> (port 7862)<a class=headerlink href=#1-image-processing-server-port-7862 title="Permanent link">¶</a></h3> <div class="language-python highlight"><pre><span></span><code><span id=__span-0-1><a id=__codelineno-0-1 name=__codelineno-0-1 href=#__codelineno-0-1></a><span class=n>mcp</span><span class=o>-</span><span class=n>image</span><span class=o>-</span><span class=n>processor</span><span class=p>:</span> | |
| </span><span id=__span-0-2><a id=__codelineno-0-2 name=__codelineno-0-2 href=#__codelineno-0-2></a> <span class=o>-</span> <span class=n>Image</span> <span class=n>captioning</span> <span class=k>with</span> <span class=n>BLIP</span> <span class=n>model</span> | |
| </span><span id=__span-0-3><a id=__codelineno-0-3 name=__codelineno-0-3 href=#__codelineno-0-3></a> <span class=o>-</span> <span class=n>Image</span> <span class=n>analysis</span> <span class=ow>and</span> <span class=n>description</span> | |
| </span><span id=__span-0-4><a id=__codelineno-0-4 name=__codelineno-0-4 href=#__codelineno-0-4></a> <span class=o>-</span> <span class=n>OCR</span> <span class=n>capabilities</span> | |
| </span><span id=__span-0-5><a id=__codelineno-0-5 name=__codelineno-0-5 href=#__codelineno-0-5></a> <span class=o>-</span> <span class=n>Visual</span> <span class=n>content</span> <span class=n>understanding</span> | |
| </span></code></pre></div> <p><strong>Testing Scenarios:</strong> - Upload various image formats - Test image captioning accuracy - Performance with different image sizes - Batch image processing</p> <h3 id=2-code-analysis-server-port-7863><strong>2. Code Analysis Server</strong> (port 7863)<a class=headerlink href=#2-code-analysis-server-port-7863 title="Permanent link">¶</a></h3> <div class="language-python highlight"><pre><span></span><code><span id=__span-1-1><a id=__codelineno-1-1 name=__codelineno-1-1 href=#__codelineno-1-1></a><span class=n>mcp</span><span class=o>-</span><span class=n>code</span><span class=o>-</span><span class=n>analyzer</span><span class=p>:</span> | |
| </span><span id=__span-1-2><a id=__codelineno-1-2 name=__codelineno-1-2 href=#__codelineno-1-2></a> <span class=o>-</span> <span class=n>Code</span> <span class=n>quality</span> <span class=n>assessment</span> | |
| </span><span id=__span-1-3><a id=__codelineno-1-3 name=__codelineno-1-3 href=#__codelineno-1-3></a> <span class=o>-</span> <span class=n>Bug</span> <span class=n>detection</span> <span class=ow>and</span> <span class=n>suggestions</span> | |
| </span><span id=__span-1-4><a id=__codelineno-1-4 name=__codelineno-1-4 href=#__codelineno-1-4></a> <span class=o>-</span> <span class=n>Security</span> <span class=n>vulnerability</span> <span class=n>scanning</span> | |
| </span><span id=__span-1-5><a id=__codelineno-1-5 name=__codelineno-1-5 href=#__codelineno-1-5></a> <span class=o>-</span> <span class=n>Multi</span><span class=o>-</span><span class=n>language</span> <span class=n>support</span> <span class=p>(</span><span class=n>Python</span><span class=p>,</span> <span class=n>JS</span><span class=p>,</span> <span class=n>Java</span><span class=p>,</span> <span class=n>etc</span><span class=o>.</span><span class=p>)</span> | |
| </span></code></pre></div> <p><strong>Testing Scenarios:</strong> - Analyze code samples with known issues - Test multiple programming languages - Validate security recommendations - Performance with large codebases</p> <h3 id=3-web-scraper-server-port-7864><strong>3. Web Scraper Server</strong> (port 7864)<a class=headerlink href=#3-web-scraper-server-port-7864 title="Permanent link">¶</a></h3> <div class="language-python highlight"><pre><span></span><code><span id=__span-2-1><a id=__codelineno-2-1 name=__codelineno-2-1 href=#__codelineno-2-1></a><span class=n>mcp</span><span class=o>-</span><span class=n>web</span><span class=o>-</span><span class=n>scraper</span><span class=p>:</span> | |
| </span><span id=__span-2-2><a id=__codelineno-2-2 name=__codelineno-2-2 href=#__codelineno-2-2></a> <span class=o>-</span> <span class=n>URL</span> <span class=n>content</span> <span class=n>extraction</span> | |
| </span><span id=__span-2-3><a id=__codelineno-2-3 name=__codelineno-2-3 href=#__codelineno-2-3></a> <span class=o>-</span> <span class=n>Structured</span> <span class=n>data</span> <span class=n>parsing</span> | |
| </span><span id=__span-2-4><a id=__codelineno-2-4 name=__codelineno-2-4 href=#__codelineno-2-4></a> <span class=o>-</span> <span class=n>News</span> <span class=n>article</span> <span class=n>summarization</span> | |
| </span><span id=__span-2-5><a id=__codelineno-2-5 name=__codelineno-2-5 href=#__codelineno-2-5></a> <span class=o>-</span> <span class=n>API</span> <span class=n>endpoint</span> <span class=n>testing</span> | |
| </span></code></pre></div> <p><strong>Testing Scenarios:</strong> - Scrape various website types - Handle rate limiting gracefully - Test with different content types - Validate data extraction accuracy</p> <h3 id=4-math-calculator-server-port-7865><strong>4. Math Calculator Server</strong> (port 7865)<a class=headerlink href=#4-math-calculator-server-port-7865 title="Permanent link">¶</a></h3> <div class="language-python highlight"><pre><span></span><code><span id=__span-3-1><a id=__codelineno-3-1 name=__codelineno-3-1 href=#__codelineno-3-1></a><span class=n>mcp</span><span class=o>-</span><span class=n>math</span><span class=o>-</span><span class=n>calculator</span><span class=p>:</span> | |
| </span><span id=__span-3-2><a id=__codelineno-3-2 name=__codelineno-3-2 href=#__codelineno-3-2></a> <span class=o>-</span> <span class=n>Complex</span> <span class=n>mathematical</span> <span class=n>calculations</span> | |
| </span><span id=__span-3-3><a id=__codelineno-3-3 name=__codelineno-3-3 href=#__codelineno-3-3></a> <span class=o>-</span> <span class=n>Scientific</span> <span class=n>computing</span> | |
| </span><span id=__span-3-4><a id=__codelineno-3-4 name=__codelineno-3-4 href=#__codelineno-3-4></a> <span class=o>-</span> <span class=n>Data</span> <span class=n>analysis</span> <span class=ow>and</span> <span class=n>statistics</span> | |
| </span><span id=__span-3-5><a id=__codelineno-3-5 name=__codelineno-3-5 href=#__codelineno-3-5></a> <span class=o>-</span> <span class=n>Graph</span> <span class=ow>and</span> <span class=n>chart</span> <span class=n>generation</span> | |
| </span></code></pre></div> <p><strong>Testing Scenarios:</strong> - Complex mathematical expressions - Statistical calculations - Data visualization tests - Performance with large datasets</p> <h3 id=5-file-processor-server-port-7866><strong>5. File Processor Server</strong> (port 7866)<a class=headerlink href=#5-file-processor-server-port-7866 title="Permanent link">¶</a></h3> <div class="language-python highlight"><pre><span></span><code><span id=__span-4-1><a id=__codelineno-4-1 name=__codelineno-4-1 href=#__codelineno-4-1></a><span class=n>mcp</span><span class=o>-</span><span class=n>file</span><span class=o>-</span><span class=n>processor</span><span class=p>:</span> | |
| </span><span id=__span-4-2><a id=__codelineno-4-2 name=__codelineno-4-2 href=#__codelineno-4-2></a> <span class=o>-</span> <span class=n>PDF</span> <span class=n>text</span> <span class=n>extraction</span> | |
| </span><span id=__span-4-3><a id=__codelineno-4-3 name=__codelineno-4-3 href=#__codelineno-4-3></a> <span class=o>-</span> <span class=n>CSV</span> <span class=n>data</span> <span class=n>analysis</span> | |
| </span><span id=__span-4-4><a id=__codelineno-4-4 name=__codelineno-4-4 href=#__codelineno-4-4></a> <span class=o>-</span> <span class=n>File</span> <span class=nb>format</span> <span class=n>conversion</span> | |
| </span><span id=__span-4-5><a id=__codelineno-4-5 name=__codelineno-4-5 href=#__codelineno-4-5></a> <span class=o>-</span> <span class=n>Document</span> <span class=n>processing</span> | |
| </span></code></pre></div> <p><strong>Testing Scenarios:</strong> - Process various file formats - Large file handling - Batch file processing - Data integrity validation</p> <h2 id=phase-3-advanced-integration-testing>π§ <strong>Phase 3: Advanced Integration Testing</strong><a class=headerlink href=#phase-3-advanced-integration-testing title="Permanent link">¶</a></h2> <h3 id=multi-tool-workflows><strong>Multi-Tool Workflows</strong><a class=headerlink href=#multi-tool-workflows title="Permanent link">¶</a></h3> <div class="language-markdown highlight"><pre><span></span><code><span id=__span-5-1><a id=__codelineno-5-1 name=__codelineno-5-1 href=#__codelineno-5-1></a>Workflow 1: Content Analysis Pipeline | |
| </span><span id=__span-5-2><a id=__codelineno-5-2 name=__codelineno-5-2 href=#__codelineno-5-2></a><span class=k>1.</span> Web Scraper β Extract article content | |
| </span><span id=__span-5-3><a id=__codelineno-5-3 name=__codelineno-5-3 href=#__codelineno-5-3></a><span class=k>2.</span> Summarizer β Create concise summary | |
| </span><span id=__span-5-4><a id=__codelineno-5-4 name=__codelineno-5-4 href=#__codelineno-5-4></a><span class=k>3.</span> Sentiment Analyzer β Analyze tone | |
| </span><span id=__span-5-5><a id=__codelineno-5-5 name=__codelineno-5-5 href=#__codelineno-5-5></a><span class=k>4.</span> File Processor β Generate report PDF | |
| </span><span id=__span-5-6><a id=__codelineno-5-6 name=__codelineno-5-6 href=#__codelineno-5-6></a> | |
| </span><span id=__span-5-7><a id=__codelineno-5-7 name=__codelineno-5-7 href=#__codelineno-5-7></a>Workflow 2: Development Assistant Pipeline | |
| </span><span id=__span-5-8><a id=__codelineno-5-8 name=__codelineno-5-8 href=#__codelineno-5-8></a><span class=k>1.</span> Code Analyzer β Review code quality | |
| </span><span id=__span-5-9><a id=__codelineno-5-9 name=__codelineno-5-9 href=#__codelineno-5-9></a><span class=k>2.</span> Math Calculator β Performance analysis | |
| </span><span id=__span-5-10><a id=__codelineno-5-10 name=__codelineno-5-10 href=#__codelineno-5-10></a><span class=k>3.</span> Image Processor β Generate diagrams | |
| </span><span id=__span-5-11><a id=__codelineno-5-11 name=__codelineno-5-11 href=#__codelineno-5-11></a><span class=k>4.</span> File Processor β Create documentation | |
| </span><span id=__span-5-12><a id=__codelineno-5-12 name=__codelineno-5-12 href=#__codelineno-5-12></a> | |
| </span><span id=__span-5-13><a id=__codelineno-5-13 name=__codelineno-5-13 href=#__codelineno-5-13></a>Workflow 3: Research Assistant Pipeline | |
| </span><span id=__span-5-14><a id=__codelineno-5-14 name=__codelineno-5-14 href=#__codelineno-5-14></a><span class=k>1.</span> Web Scraper β Gather information | |
| </span><span id=__span-5-15><a id=__codelineno-5-15 name=__codelineno-5-15 href=#__codelineno-5-15></a><span class=k>2.</span> Image Processor β Analyze visuals | |
| </span><span id=__span-5-16><a id=__codelineno-5-16 name=__codelineno-5-16 href=#__codelineno-5-16></a><span class=k>3.</span> Summarizer β Create research summary | |
| </span><span id=__span-5-17><a id=__codelineno-5-17 name=__codelineno-5-17 href=#__codelineno-5-17></a><span class=k>4.</span> Math Calculator β Statistical analysis | |
| </span></code></pre></div> <h3 id=stress-testing-scenarios><strong>Stress Testing Scenarios</strong><a class=headerlink href=#stress-testing-scenarios title="Permanent link">¶</a></h3> <ul> <li><strong>Concurrent Multi-Tool Usage</strong>: All 7 servers processing simultaneously</li> <li><strong>Load Balancing</strong>: Nginx distributing requests across servers</li> <li><strong>Resource Monitoring</strong>: Prometheus + Grafana dashboards</li> <li><strong>Failure Recovery</strong>: Server restart and reconnection testing</li> </ul> <h2 id=phase-4-performance-monitoring>π <strong>Phase 4: Performance & Monitoring</strong><a class=headerlink href=#phase-4-performance-monitoring title="Permanent link">¶</a></h2> <h3 id=infrastructure-components><strong>Infrastructure Components</strong><a class=headerlink href=#infrastructure-components title="Permanent link">¶</a></h3> <div class="language-yaml highlight"><pre><span></span><code><span id=__span-6-1><a id=__codelineno-6-1 name=__codelineno-6-1 href=#__codelineno-6-1></a><span class=nt>Monitoring Stack</span><span class=p>:</span> | |
| </span><span id=__span-6-2><a id=__codelineno-6-2 name=__codelineno-6-2 href=#__codelineno-6-2></a><span class=w> </span><span class="p p-Indicator">-</span><span class=w> </span><span class=nt>Prometheus</span><span class=p>:</span><span class=w> </span><span class="l l-Scalar l-Scalar-Plain">Metrics collection (port 9091)</span> | |
| </span><span id=__span-6-3><a id=__codelineno-6-3 name=__codelineno-6-3 href=#__codelineno-6-3></a><span class=w> </span><span class="p p-Indicator">-</span><span class=w> </span><span class=nt>Grafana</span><span class=p>:</span><span class=w> </span><span class="l l-Scalar l-Scalar-Plain">Visualization dashboards (port 3000)</span> | |
| </span><span id=__span-6-4><a id=__codelineno-6-4 name=__codelineno-6-4 href=#__codelineno-6-4></a><span class=w> </span><span class="p p-Indicator">-</span><span class=w> </span><span class=nt>Redis</span><span class=p>:</span><span class=w> </span><span class="l l-Scalar l-Scalar-Plain">Caching and session management (port 6380)</span> | |
| </span><span id=__span-6-5><a id=__codelineno-6-5 name=__codelineno-6-5 href=#__codelineno-6-5></a><span class=w> </span><span class="p p-Indicator">-</span><span class=w> </span><span class=nt>Nginx</span><span class=p>:</span><span class=w> </span><span class="l l-Scalar l-Scalar-Plain">Load balancing and routing (port 8080)</span> | |
| </span></code></pre></div> <h3 id=key-performance-metrics><strong>Key Performance Metrics</strong><a class=headerlink href=#key-performance-metrics title="Permanent link">¶</a></h3> <ul> <li><strong>Response Times</strong>: Average, min, max per server</li> <li><strong>Throughput</strong>: Requests per second capability</li> <li><strong>Resource Usage</strong>: CPU, memory, disk I/O</li> <li><strong>Error Rates</strong>: Success/failure ratios</li> <li><strong>Availability</strong>: Uptime and health check status</li> </ul> <h3 id=load-testing-scenarios><strong>Load Testing Scenarios</strong><a class=headerlink href=#load-testing-scenarios title="Permanent link">¶</a></h3> <ol> <li><strong>Baseline Testing</strong>: Single requests to each server</li> <li><strong>Concurrent Testing</strong>: Multiple simultaneous requests</li> <li><strong>Stress Testing</strong>: Maximum load until failure</li> <li><strong>Endurance Testing</strong>: Sustained load over time</li> <li><strong>Spike Testing</strong>: Sudden traffic increases</li> </ol> <h2 id=phase-5-real-world-integration>π <strong>Phase 5: Real-World Integration</strong><a class=headerlink href=#phase-5-real-world-integration title="Permanent link">¶</a></h2> <h3 id=claude-desktop-integration><strong>Claude Desktop Integration</strong><a class=headerlink href=#claude-desktop-integration title="Permanent link">¶</a></h3> <ul> <li>Test MCP servers with actual Claude Desktop client</li> <li>Validate SSE transport compatibility</li> <li>Test authentication and security</li> </ul> <h3 id=cursor-ide-integration><strong>Cursor IDE Integration</strong><a class=headerlink href=#cursor-ide-integration title="Permanent link">¶</a></h3> <ul> <li>Direct integration with development environment</li> <li>Code analysis workflow testing</li> <li>Real-time assistance scenarios</li> </ul> <h3 id=api-client-testing><strong>API Client Testing</strong><a class=headerlink href=#api-client-testing title="Permanent link">¶</a></h3> <ul> <li>Custom MCP clients</li> <li>Different transport methods</li> <li>Authentication mechanisms</li> </ul> <h2 id=testing-implementation>π§ͺ <strong>Testing Implementation</strong><a class=headerlink href=#testing-implementation title="Permanent link">¶</a></h2> <h3 id=test-suite-structure><strong>Test Suite Structure</strong><a class=headerlink href=#test-suite-structure title="Permanent link">¶</a></h3> <div class="language-text highlight"><pre><span></span><code><span id=__span-7-1><a id=__codelineno-7-1 name=__codelineno-7-1 href=#__codelineno-7-1></a>tests/ | |
| </span><span id=__span-7-2><a id=__codelineno-7-2 name=__codelineno-7-2 href=#__codelineno-7-2></a>βββ test_comprehensive_mcp.py (β IMPLEMENTED) | |
| </span><span id=__span-7-3><a id=__codelineno-7-3 name=__codelineno-7-3 href=#__codelineno-7-3></a>β βββ TestEnhancedSentimentAnalysis | |
| </span><span id=__span-7-4><a id=__codelineno-7-4 name=__codelineno-7-4 href=#__codelineno-7-4></a>β βββ TestEnhancedSummarization | |
| </span><span id=__span-7-5><a id=__codelineno-7-5 name=__codelineno-7-5 href=#__codelineno-7-5></a>β βββ TestPerformanceAndLoad | |
| </span><span id=__span-7-6><a id=__codelineno-7-6 name=__codelineno-7-6 href=#__codelineno-7-6></a>β βββ TestTransportMethods | |
| </span><span id=__span-7-7><a id=__codelineno-7-7 name=__codelineno-7-7 href=#__codelineno-7-7></a>βββ test_new_mcp_servers.py (π PLANNED) | |
| </span><span id=__span-7-8><a id=__codelineno-7-8 name=__codelineno-7-8 href=#__codelineno-7-8></a>β βββ TestImageProcessor | |
| </span><span id=__span-7-9><a id=__codelineno-7-9 name=__codelineno-7-9 href=#__codelineno-7-9></a>β βββ TestCodeAnalyzer | |
| </span><span id=__span-7-10><a id=__codelineno-7-10 name=__codelineno-7-10 href=#__codelineno-7-10></a>β βββ TestWebScraper | |
| </span><span id=__span-7-11><a id=__codelineno-7-11 name=__codelineno-7-11 href=#__codelineno-7-11></a>β βββ TestMathCalculator | |
| </span><span id=__span-7-12><a id=__codelineno-7-12 name=__codelineno-7-12 href=#__codelineno-7-12></a>β βββ TestFileProcessor | |
| </span><span id=__span-7-13><a id=__codelineno-7-13 name=__codelineno-7-13 href=#__codelineno-7-13></a>βββ test_multi_tool_workflows.py (π PLANNED) | |
| </span><span id=__span-7-14><a id=__codelineno-7-14 name=__codelineno-7-14 href=#__codelineno-7-14></a>β βββ TestContentAnalysisPipeline | |
| </span><span id=__span-7-15><a id=__codelineno-7-15 name=__codelineno-7-15 href=#__codelineno-7-15></a>β βββ TestDevelopmentAssistantPipeline | |
| </span><span id=__span-7-16><a id=__codelineno-7-16 name=__codelineno-7-16 href=#__codelineno-7-16></a>β βββ TestResearchAssistantPipeline | |
| </span><span id=__span-7-17><a id=__codelineno-7-17 name=__codelineno-7-17 href=#__codelineno-7-17></a>βββ test_infrastructure.py (π PLANNED) | |
| </span><span id=__span-7-18><a id=__codelineno-7-18 name=__codelineno-7-18 href=#__codelineno-7-18></a> βββ TestLoadBalancing | |
| </span><span id=__span-7-19><a id=__codelineno-7-19 name=__codelineno-7-19 href=#__codelineno-7-19></a> βββ TestMonitoring | |
| </span><span id=__span-7-20><a id=__codelineno-7-20 name=__codelineno-7-20 href=#__codelineno-7-20></a> βββ TestFailover | |
| </span></code></pre></div> <h3 id=deployment-commands><strong>Deployment Commands</strong><a class=headerlink href=#deployment-commands title="Permanent link">¶</a></h3> <div class="language-bash highlight"><pre><span></span><code><span id=__span-8-1><a id=__codelineno-8-1 name=__codelineno-8-1 href=#__codelineno-8-1></a><span class=c1># Start basic servers (existing)</span> | |
| </span><span id=__span-8-2><a id=__codelineno-8-2 name=__codelineno-8-2 href=#__codelineno-8-2></a>docker-compose<span class=w> </span>-f<span class=w> </span>docker-compose.test.yml<span class=w> </span>up<span class=w> </span>-d | |
| </span><span id=__span-8-3><a id=__codelineno-8-3 name=__codelineno-8-3 href=#__codelineno-8-3></a> | |
| </span><span id=__span-8-4><a id=__codelineno-8-4 name=__codelineno-8-4 href=#__codelineno-8-4></a><span class=c1># Start extended infrastructure (new) </span> | |
| </span><span id=__span-8-5><a id=__codelineno-8-5 name=__codelineno-8-5 href=#__codelineno-8-5></a>docker-compose<span class=w> </span>-f<span class=w> </span>docker-compose.extended.yml<span class=w> </span>up<span class=w> </span>-d | |
| </span><span id=__span-8-6><a id=__codelineno-8-6 name=__codelineno-8-6 href=#__codelineno-8-6></a> | |
| </span><span id=__span-8-7><a id=__codelineno-8-7 name=__codelineno-8-7 href=#__codelineno-8-7></a><span class=c1># Run comprehensive tests</span> | |
| </span><span id=__span-8-8><a id=__codelineno-8-8 name=__codelineno-8-8 href=#__codelineno-8-8></a>pytest<span class=w> </span>tests/test_comprehensive_mcp.py<span class=w> </span>-v | |
| </span><span id=__span-8-9><a id=__codelineno-8-9 name=__codelineno-8-9 href=#__codelineno-8-9></a> | |
| </span><span id=__span-8-10><a id=__codelineno-8-10 name=__codelineno-8-10 href=#__codelineno-8-10></a><span class=c1># Run new server tests</span> | |
| </span><span id=__span-8-11><a id=__codelineno-8-11 name=__codelineno-8-11 href=#__codelineno-8-11></a>pytest<span class=w> </span>tests/test_new_mcp_servers.py<span class=w> </span>-v | |
| </span><span id=__span-8-12><a id=__codelineno-8-12 name=__codelineno-8-12 href=#__codelineno-8-12></a> | |
| </span><span id=__span-8-13><a id=__codelineno-8-13 name=__codelineno-8-13 href=#__codelineno-8-13></a><span class=c1># Run integration workflows</span> | |
| </span><span id=__span-8-14><a id=__codelineno-8-14 name=__codelineno-8-14 href=#__codelineno-8-14></a>pytest<span class=w> </span>tests/test_multi_tool_workflows.py<span class=w> </span>-v | |
| </span><span id=__span-8-15><a id=__codelineno-8-15 name=__codelineno-8-15 href=#__codelineno-8-15></a> | |
| </span><span id=__span-8-16><a id=__codelineno-8-16 name=__codelineno-8-16 href=#__codelineno-8-16></a><span class=c1># Performance testing</span> | |
| </span><span id=__span-8-17><a id=__codelineno-8-17 name=__codelineno-8-17 href=#__codelineno-8-17></a>pytest<span class=w> </span>tests/test_infrastructure.py::TestLoadTesting<span class=w> </span>-v | |
| </span></code></pre></div> <h2 id=success-metrics>π <strong>Success Metrics</strong><a class=headerlink href=#success-metrics title="Permanent link">¶</a></h2> <h3 id=functional-requirements><strong>Functional Requirements</strong><a class=headerlink href=#functional-requirements title="Permanent link">¶</a></h3> <ul> <li>β All 7 MCP servers healthy and responsive</li> <li>β 95%+ success rate for individual tool calls</li> <li>β Multi-tool workflows complete successfully</li> <li>β Alternative transport methods working</li> </ul> <h3 id=performance-requirements><strong>Performance Requirements</strong><a class=headerlink href=#performance-requirements title="Permanent link">¶</a></h3> <ul> <li>π Response time < 10s for simple requests</li> <li>π Response time < 30s for complex requests </li> <li>π Handle 10+ concurrent requests per server</li> <li>π System uptime > 99% during testing</li> </ul> <h3 id=integration-requirements><strong>Integration Requirements</strong><a class=headerlink href=#integration-requirements title="Permanent link">¶</a></h3> <ul> <li>π Compatible with Claude Desktop MCP client</li> <li>π Works with custom API clients</li> <li>π Proper error handling and recovery</li> <li>π Comprehensive monitoring and alerting</li> </ul> <h2 id=implementation-roadmap>π <strong>Implementation Roadmap</strong><a class=headerlink href=#implementation-roadmap title="Permanent link">¶</a></h2> <h3 id=week-1-new-server-development><strong>Week 1: New Server Development</strong><a class=headerlink href=#week-1-new-server-development title="Permanent link">¶</a></h3> <ul class=task-list> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled><span class=task-list-indicator></span></label> Create 5 new MCP server implementations</li> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled><span class=task-list-indicator></span></label> Build Docker containers for each</li> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled><span class=task-list-indicator></span></label> Implement health checks and monitoring</li> </ul> <h3 id=week-2-integration-testing><strong>Week 2: Integration Testing</strong><a class=headerlink href=#week-2-integration-testing title="Permanent link">¶</a></h3> <ul class=task-list> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled><span class=task-list-indicator></span></label> Develop multi-tool workflow tests</li> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled><span class=task-list-indicator></span></label> Implement load balancing and monitoring</li> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled><span class=task-list-indicator></span></label> Create performance benchmarks</li> </ul> <h3 id=week-3-real-world-testing><strong>Week 3: Real-World Testing</strong><a class=headerlink href=#week-3-real-world-testing title="Permanent link">¶</a></h3> <ul class=task-list> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled><span class=task-list-indicator></span></label> Test with actual MCP clients</li> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled><span class=task-list-indicator></span></label> Validate security and authentication</li> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled><span class=task-list-indicator></span></label> Document best practices</li> </ul> <h3 id=week-4-documentation-optimization><strong>Week 4: Documentation & Optimization</strong><a class=headerlink href=#week-4-documentation-optimization title="Permanent link">¶</a></h3> <ul class=task-list> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled><span class=task-list-indicator></span></label> Complete test coverage analysis</li> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled><span class=task-list-indicator></span></label> Performance optimization</li> <li class=task-list-item><label class=task-list-control><input type=checkbox disabled><span class=task-list-indicator></span></label> Final documentation</li> </ul> <h2 id=expected-outcomes>π― <strong>Expected Outcomes</strong><a class=headerlink href=#expected-outcomes title="Permanent link">¶</a></h2> <p>This comprehensive testing suite will:</p> <ol> <li><strong>Validate Robustness</strong>: Ensure the MCP ecosystem can handle real-world workloads</li> <li><strong>Demonstrate Scalability</strong>: Show how multiple MCP servers can work together</li> <li><strong>Provide Benchmarks</strong>: Establish performance baselines for future development</li> <li><strong>Enable Innovation</strong>: Create a platform for developing new MCP tools</li> <li><strong>Support Production</strong>: Provide confidence for production deployments</li> </ol> <p>The testing infrastructure will serve as both a validation platform and a demonstration of the full potential of the KGraph-MCP ecosystem. </p> <aside class=md-source-file> <span class=md-source-file__fact> <span class=md-icon title="Last update"> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M21 13.1c-.1 0-.3.1-.4.2l-1 1 2.1 2.1 1-1c.2-.2.2-.6 0-.8l-1.3-1.3c-.1-.1-.2-.2-.4-.2m-1.9 1.8-6.1 6V23h2.1l6.1-6.1zM12.5 7v5.2l4 2.4-1 1L11 13V7zM11 21.9c-5.1-.5-9-4.8-9-9.9C2 6.5 6.5 2 12 2c5.3 0 9.6 4.1 10 9.3-.3-.1-.6-.2-1-.2s-.7.1-1 .2C19.6 7.2 16.2 4 12 4c-4.4 0-8 3.6-8 8 0 4.1 3.1 7.5 7.1 7.9l-.1.2z"/></svg> </span> <span class="git-revision-date-localized-plugin git-revision-date-localized-plugin-date" title="June 10, 2025 12:10:38 UTC">June 10, 2025</span> </span> </aside> </article> </div> <script>var tabs=__md_get("__tabs");if(Array.isArray(tabs))e:for(var set of document.querySelectorAll(".tabbed-set")){var labels=set.querySelector(".tabbed-labels");for(var tab of tabs)for(var label of labels.getElementsByTagName("label"))if(label.innerText.trim()===tab){var input=document.getElementById(label.htmlFor);input.checked=!0;continue e}}</script> <script>var target=document.getElementById(location.hash.slice(1));target&&target.name&&(target.checked=target.name.startsWith("__tabbed_"))</script> </div> <button type=button class="md-top md-icon" data-md-component=top hidden> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 24 24"><path d="M13 20h-2V8l-5.5 5.5-1.42-1.42L12 4.16l7.92 7.92-1.42 1.42L13 8z"/></svg> Back to top </button> </main> <footer class=md-footer> <div class="md-footer-meta md-typeset"> <div class="md-footer-meta__inner md-grid"> <div class=md-copyright> <div class=md-copyright__highlight> Copyright © 2024 KGraph-MCP Development Team - <a href=#__consent>Change cookie settings</a> </div> Made with <a href=https://squidfunk.github.io/mkdocs-material/ target=_blank rel=noopener> Material for MkDocs </a> </div> <div class=md-social> <a href=https://github.com/BasalGanglia/kgraph-mcp-hackathon target=_blank rel=noopener title=github.com class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 496 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M165.9 397.4c0 2-2.3 3.6-5.2 3.6-3.3.3-5.6-1.3-5.6-3.6 0-2 2.3-3.6 5.2-3.6 3-.3 5.6 1.3 5.6 3.6m-31.1-4.5c-.7 2 1.3 4.3 4.3 4.9 2.6 1 5.6 0 6.2-2s-1.3-4.3-4.3-5.2c-2.6-.7-5.5.3-6.2 2.3m44.2-1.7c-2.9.7-4.9 2.6-4.6 4.9.3 2 2.9 3.3 5.9 2.6 2.9-.7 4.9-2.6 4.6-4.6-.3-1.9-3-3.2-5.9-2.9M244.8 8C106.1 8 0 113.3 0 252c0 110.9 69.8 205.8 169.5 239.2 12.8 2.3 17.3-5.6 17.3-12.1 0-6.2-.3-40.4-.3-61.4 0 0-70 15-84.7-29.8 0 0-11.4-29.1-27.8-36.6 0 0-22.9-15.7 1.6-15.4 0 0 24.9 2 38.6 25.8 21.9 38.6 58.6 27.5 72.9 20.9 2.3-16 8.8-27.1 16-33.7-55.9-6.2-112.3-14.3-112.3-110.5 0-27.5 7.6-41.3 23.6-58.9-2.6-6.5-11.1-33.3 2.6-67.9 20.9-6.5 69 27 69 27 20-5.6 41.5-8.5 62.8-8.5s42.8 2.9 62.8 8.5c0 0 48.1-33.6 69-27 13.7 34.7 5.2 61.4 2.6 67.9 16 17.7 25.8 31.5 25.8 58.9 0 96.5-58.9 104.2-114.8 110.5 9.2 7.9 17 22.9 17 46.4 0 33.7-.3 75.4-.3 83.6 0 6.5 4.6 14.4 17.3 12.1C428.2 457.8 496 362.9 496 252 496 113.3 383.5 8 244.8 8M97.2 352.9c-1.3 1-1 3.3.7 5.2 1.6 1.6 3.9 2.3 5.2 1 1.3-1 1-3.3-.7-5.2-1.6-1.6-3.9-2.3-5.2-1m-10.8-8.1c-.7 1.3.3 2.9 2.3 3.9 1.6 1 3.6.7 4.3-.7.7-1.3-.3-2.9-2.3-3.9-2-.6-3.6-.3-4.3.7m32.4 35.6c-1.6 1.3-1 4.3 1.3 6.2 2.3 2.3 5.2 2.6 6.5 1 1.3-1.3.7-4.3-1.3-6.2-2.2-2.3-5.2-2.6-6.5-1m-11.4-14.7c-1.6 1-1.6 3.6 0 5.9s4.3 3.3 5.6 2.3c1.6-1.3 1.6-3.9 0-6.2-1.4-2.3-4-3.3-5.6-2"/></svg> </a> <a href=https://pypi.org/project/kgraph-mcp/ target=_blank rel=noopener title=pypi.org class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 448 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M439.8 200.5c-7.7-30.9-22.3-54.2-53.4-54.2h-40.1v47.4c0 36.8-31.2 67.8-66.8 67.8H172.7c-29.2 0-53.4 25-53.4 54.3v101.8c0 29 25.2 46 53.4 54.3 33.8 9.9 66.3 11.7 106.8 0 26.9-7.8 53.4-23.5 53.4-54.3v-40.7H226.2v-13.6h160.2c31.1 0 42.6-21.7 53.4-54.2 11.2-33.5 10.7-65.7 0-108.6M286.2 404c11.1 0 20.1 9.1 20.1 20.3 0 11.3-9 20.4-20.1 20.4-11 0-20.1-9.2-20.1-20.4.1-11.3 9.1-20.3 20.1-20.3M167.8 248.1h106.8c29.7 0 53.4-24.5 53.4-54.3V91.9c0-29-24.4-50.7-53.4-55.6-35.8-5.9-74.7-5.6-106.8.1-45.2 8-53.4 24.7-53.4 55.6v40.7h106.9v13.6h-147c-31.1 0-58.3 18.7-66.8 54.2-9.8 40.7-10.2 66.1 0 108.6 7.6 31.6 25.7 54.2 56.8 54.2H101v-48.8c0-35.3 30.5-66.4 66.8-66.4m-6.7-142.6c-11.1 0-20.1-9.1-20.1-20.3.1-11.3 9-20.4 20.1-20.4 11 0 20.1 9.2 20.1 20.4s-9 20.3-20.1 20.3"/></svg> </a> <a href=mailto:[email protected] target=_blank rel=noopener title class=md-social__link> <svg xmlns=http://www.w3.org/2000/svg viewbox="0 0 512 512"><!-- Font Awesome Free 6.7.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) Copyright 2024 Fonticons, Inc.--><path d="M498.1 5.6c10.1 7 15.4 19.1 13.5 31.2l-64 416c-1.5 9.7-7.4 18.2-16 23s-18.9 5.4-28 1.6L284 427.7l-68.5 74.1c-8.9 9.7-22.9 12.9-35.2 8.1S160 493.2 160 480v-83.6c0-4 1.5-7.8 4.2-10.8l167.6-182.8c5.8-6.3 5.6-16-.4-22s-15.7-6.4-22-.7L106 360.8l-88.3-44.2C7.1 311.3.3 300.7 0 288.9s5.9-22.8 16.1-28.7l448-256c10.7-6.1 23.9-5.5 34 1.4"/></svg> </a> </div> </div> </div> </footer> </div> <div class=md-dialog data-md-component=dialog> <div class="md-dialog__inner md-typeset"></div> </div> <div class=md-progress data-md-component=progress role=progressbar></div> <div class=md-consent data-md-component=consent id=__consent hidden> <div class=md-consent__overlay></div> <aside class=md-consent__inner> <form class="md-consent__form md-grid md-typeset" name=consent> <h4>Cookie consent</h4> <p>We use cookies to recognize your repeated visits and preferences, as well as to measure the effectiveness of our documentation and whether users find what they're searching for. With your consent, you're helping us to make our documentation better.</p> <input class=md-toggle type=checkbox id=__settings> <div class=md-consent__settings> <ul class=task-list> <li class=task-list-item> <label class=task-list-control> <input type=checkbox name=analytics checked> <span class=task-list-indicator></span> Google Analytics </label> </li> <li class=task-list-item> <label class=task-list-control> <input type=checkbox name=github checked> <span class=task-list-indicator></span> GitHub </label> </li> </ul> </div> <div class=md-consent__controls> <button class="md-button md-button--primary">Accept</button> <label class=md-button for=__settings>Manage settings</label> </div> </form> </aside> </div> <script>var consent=__md_get("__consent");if(consent)for(var input of document.forms.consent.elements)input.name&&(input.checked=consent[input.name]||!1);else"file:"!==location.protocol&&setTimeout((function(){document.querySelector("[data-md-component=consent]").hidden=!1}),250);var form=document.forms.consent;for(var action of["submit","reset"])form.addEventListener(action,(function(e){if(e.preventDefault(),"reset"===e.type)for(var n of document.forms.consent.elements)n.name&&(n.checked=!1);__md_set("__consent",Object.fromEntries(Array.from(new FormData(form).keys()).map((function(e){return[e,!0]})))),location.hash="",location.reload()}))</script> <script id=__config type=application/json>{"base": "../..", "features": ["navigation.instant", "navigation.instant.prefetch", "navigation.instant.progress", "navigation.tracking", "navigation.tabs", "navigation.tabs.sticky", "navigation.sections", "navigation.expand", "navigation.prune", "navigation.indexes", "navigation.top", "navigation.footer", "search.highlight", "search.share", "search.suggest", "header.autohide", "content.action.edit", "content.action.view", "content.code.annotate", "content.code.copy", "content.tabs.link", "content.tooltips", "announce.dismiss"], "search": "../../assets/javascripts/workers/search.d50fe291.min.js", "tags": null, "translations": {"clipboard.copied": "Copied to clipboard", "clipboard.copy": "Copy to clipboard", "search.result.more.one": "1 more on this page", "search.result.more.other": "# more on this page", "search.result.none": "No matching documents", "search.result.one": "1 matching document", "search.result.other": "# matching documents", "search.result.placeholder": "Type to start searching", "search.result.term.missing": "Missing", "select.version": "Select version"}, "version": {"default": "latest", "provider": "mike"}}</script> <script src=../../assets/javascripts/bundle.13a4f30d.min.js></script> <script id="init-glightbox">const lightbox = GLightbox({"touchNavigation": true, "loop": false, "zoomable": true, "draggable": true, "openEffect": "zoom", "closeEffect": "zoom", "slideEffect": "slide"}); | |
| document$.subscribe(() => { lightbox.reload() }); | |
| </script></body> </html> |