qyl-mcp-server 3.0.0 → 4.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +21 -25
- package/dist/config.d.ts +0 -2
- package/dist/config.js +0 -2
- package/dist/config.js.map +1 -1
- package/dist/contract-validation.d.ts +0 -18
- package/dist/contract-validation.js +0 -19
- package/dist/contract-validation.js.map +1 -1
- package/dist/mcp-app.html +5 -5
- package/dist/mcp-dashboard.html +4 -4
- package/dist/mcp-home.html +6 -7
- package/dist/oauth.d.ts +0 -1
- package/dist/oauth.js +1 -2
- package/dist/oauth.js.map +1 -1
- package/dist/server.js +1 -4
- package/dist/server.js.map +1 -1
- package/package.json +4 -4
- package/dist/observe-graph.html +0 -214
- package/dist/workflow-data.d.ts +0 -13
- package/dist/workflow-data.js +0 -189
- package/dist/workflow-data.js.map +0 -1
- package/dist/workflow-layout.d.ts +0 -24
- package/dist/workflow-layout.js +0 -165
- package/dist/workflow-layout.js.map +0 -1
- package/dist/workflow-reducer.d.ts +0 -37
- package/dist/workflow-reducer.js +0 -114
- package/dist/workflow-reducer.js.map +0 -1
- package/dist/workflow-tools.d.ts +0 -10
- package/dist/workflow-tools.js +0 -170
- package/dist/workflow-tools.js.map +0 -1
package/dist/mcp-home.html
CHANGED
|
@@ -6,14 +6,14 @@
|
|
|
6
6
|
<meta name="color-scheme" content="dark">
|
|
7
7
|
<meta name="description" content="Bring qyl traces, logs, and MCP telemetry into your coding agent.">
|
|
8
8
|
<title>qyl · MCP telemetry for coding agents</title>
|
|
9
|
-
<script type="module" crossorigin>(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e={name:`qyl-mcp-server`,version:`
|
|
9
|
+
<script type="module" crossorigin>(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var e={name:`qyl-mcp-server`,version:`4.0.0`,type:`module`,description:`qyl telemetry MCP Apps server: trace explorer and MCP dashboard for a live collector or explicit demo mode`,repository:{type:`git`,url:`https://github.com/ANcpLua/qyl.mcp`,directory:`server`},license:`MIT`,main:`dist/server.js`,types:`dist/server.d.ts`,exports:{".":{types:`./dist/server.d.ts`,default:`./dist/server.js`},"./contract-validation":{types:`./dist/contract-validation.d.ts`,default:`./dist/contract-validation.js`},"./secret-redactor":{types:`./dist/secret-redactor.d.ts`,default:`./dist/secret-redactor.js`},"./atomic-json-store":{types:`./dist/atomic-json-store.d.ts`,default:`./dist/atomic-json-store.js`},"./execution-evidence":{types:`./dist/execution-evidence.d.ts`,default:`./dist/execution-evidence.js`},"./execution-result":{types:`./dist/execution-result.d.ts`,default:`./dist/execution-result.js`},"./mcp-semconv":{types:`./dist/mcp-semconv.d.ts`,default:`./dist/mcp-semconv.js`},"./observability-suppression":{types:`./dist/observability-suppression.d.ts`,default:`./dist/observability-suppression.js`},"./telemetry":{types:`./dist/telemetry.d.ts`,default:`./dist/telemetry.js`}},bin:{"qyl-mcp-server":`dist/main.js`},files:[`dist`],scripts:{clean:`node -e "require('node:fs').rmSync('dist', { recursive: true, force: true }); require('node:fs').rmSync('dist-test', { recursive: true, force: true })"`,build:`bun run clean && tsc --noEmit && vite build --mode mcp-home && vite build --mode mcp-app && vite build --mode mcp-dashboard && tsc -p tsconfig.server.json && node -e "require('node:fs').chmodSync('dist/main.js', 0o755)"`,postbuild:`bun run verify:deployment-guidance`,"verify:deployment-guidance":`node verify-deployment-guidance.mjs`,"verify:shapes":`node verify-generated-shapes.mjs`,"verify:readme":`node verify-package-readme.mjs`,"snapshot:tools":`bun run build && tsc -p tsconfig.test.json && node update-tool-manifest-snapshot.mjs`,test:`bun run verify:shapes && bun run verify:readme && bun run build && tsc -p tsconfig.test.json && node -e "const fs=require('node:fs'); for (const name of ['mcp-app.html','mcp-dashboard.html']) fs.copyFileSync('dist/'+name,'dist-test/'+name)" && node --test dist-test/*.test.js`,smoke:`node smoke-test.mjs`,prepack:`bun run build`},dependencies:{"@ancplua/qyl-api-schema":`9.0.0`,"@modelcontextprotocol/core":`2.0.0`,"@modelcontextprotocol/server":`2.0.0`,"@opentelemetry/api":`^1.9.1`,"@opentelemetry/api-logs":`^0.221.0`,"@opentelemetry/core":`^2.10.0`,"@opentelemetry/exporter-logs-otlp-proto":`^0.221.0`,"@opentelemetry/exporter-metrics-otlp-proto":`^0.221.0`,"@opentelemetry/exporter-trace-otlp-proto":`^0.221.0`,"@opentelemetry/resources":`^2.10.0`,"@opentelemetry/sdk-logs":`^0.221.0`,"@opentelemetry/sdk-metrics":`^2.10.0`,"@opentelemetry/sdk-trace-base":`^2.10.0`,"@opentelemetry/sdk-trace-node":`^2.10.0`,"@opentelemetry/semantic-conventions":`^1.43.0`,jose:`^6.2.3`,zod:`^4.5.0`},devDependencies:{"@modelcontextprotocol/client":`2.0.0`,"@types/node":`26.4.0`,typescript:`7.0.2`,vite:`8.2.2`,"vite-plugin-singlefile":`2.3.3`},engines:{node:`24.x`}},t=`https://mcp.qyl.at/mcp`,n={codex:{title:`terminal`,value:`codex mcp add qyl --url ${t}`},claude:{title:`terminal`,value:`claude mcp add --transport http qyl ${t}`},cursor:{title:`mcp.json`,value:`{
|
|
10
10
|
"mcpServers": {
|
|
11
11
|
"qyl": {
|
|
12
12
|
"url": "${t}"
|
|
13
13
|
}
|
|
14
14
|
}
|
|
15
15
|
}`}},r=document.getElementById(`install-command`),i=document.getElementById(`terminal-title`),a=document.getElementById(`copy-status`),o=document.getElementById(`copy-install`),s=`codex`,c;function l(){let e=n[s];i.textContent=e.title,r.textContent=e.value}function u(e){a.textContent=e,a.classList.add(`visible`),c!==void 0&&clearTimeout(c),c=setTimeout(()=>a.classList.remove(`visible`),1800)}async function d(e,t){try{await navigator.clipboard.writeText(e),u(`${t} copied`)}catch{u(`Select the text and copy it manually`)}}for(let e of document.querySelectorAll(`[data-client]`))e.addEventListener(`click`,()=>{s=e.dataset.client;for(let t of document.querySelectorAll(`[data-client]`))t.setAttribute(`aria-selected`,String(t===e));l()});document.getElementById(`copy-endpoint`).addEventListener(`click`,()=>{d(t,`Endpoint`)}),o.addEventListener(`click`,()=>{d(n[s].value,`Configuration`)}),document.getElementById(`release-version`).textContent=`v${e.version}`,l();</script>
|
|
16
|
-
<style rel="stylesheet" crossorigin>:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#ecf2f8;--muted:#8c9aae;--faint:#596679;--base:#080b10;--panel:#0d1219;--panel-raised:#111923;--line:#263141;--line-strong:#3a495e;--cyan:#4dd8d0;--cyan-strong:#78eee7;--cyan-wash:#4dd8d01a;--green:#63dda1;--amber:#f1bd68;--red:#ff7a85;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--sans:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--base);min-width:320px;color:var(--ink);margin:0}body:before{z-index:-1;content:"";pointer-events:none;background:linear-gradient(#ffffff05 1px,#0000 1px) 0 0/48px 48px,linear-gradient(90deg,#ffffff05 1px,#0000 1px) 0 0/48px 48px,radial-gradient(circle at 72% 2%,#4dd8d01a,#0000 31rem);position:fixed;inset:0}a{color:inherit;text-decoration:none}button{font:inherit}.site-header,main,footer{width:min(1180px,100% - 48px);margin-inline:auto}.site-header{border-bottom:1px solid var(--line);grid-template-columns:1fr auto 1fr;align-items:center;height:72px;display:grid}.brand{font:750 1.08rem/1 var(--mono);letter-spacing:-.07em}.brand span{color:var(--cyan)}.site-header nav{color:var(--muted);gap:2rem;font-size:.76rem;display:flex}.site-header nav a{transition:color .12s}.site-header nav a:hover{color:var(--ink)}.release-badge{background:var(--cyan-wash);color:var(--cyan-strong);font:700 .62rem/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;border:1px solid #4dd8d059;border-radius:999px;justify-self:end;padding:.26rem .58rem}.hero{grid-template-columns:minmax(0,.92fr) minmax(460px,1.08fr);align-items:center;gap:clamp(3rem,7vw,7rem);min-height:680px;padding:7.25rem 0 7.75rem;display:grid}.eyebrow,.section-index{color:var(--cyan);font:700 .66rem/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase}.eyebrow{align-items:center;gap:.65rem;margin:0 0 1.55rem;display:flex}.eyebrow span{background:var(--green);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 5px #63dda11a}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.075em;margin-bottom:1.6rem;font-size:clamp(3.2rem,6vw,6.15rem);line-height:.91}h1 em{color:var(--cyan);font-style:normal}.hero-lede{max-width:590px;color:var(--muted);margin-bottom:2rem;font-size:1.04rem;line-height:1.7}.endpoint{border:1px solid var(--line-strong);background:#0d1219e0;border-radius:6px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;width:min(100%,560px);height:54px;display:grid;overflow:hidden}.endpoint-protocol{border-right:1px solid var(--line);height:100%;color:var(--faint);font:.68rem var(--mono);place-items:center;padding:0 .9rem;display:grid}.endpoint code{color:#b9d8ff;min-width:0;font:.76rem var(--mono);text-overflow:ellipsis;white-space:nowrap;padding:0 .85rem;overflow:hidden}.endpoint button,.terminal-bar button{color:var(--cyan);cursor:pointer;font:700 .66rem var(--mono);letter-spacing:.04em;background:0 0;border:0}.endpoint button{border-left:1px solid var(--line);height:100%;padding:0 1rem}.endpoint button:hover,.terminal-bar button:hover{color:var(--cyan-strong);background:var(--cyan-wash)}.protocol-facts{color:var(--muted);font:.64rem var(--mono);flex-wrap:wrap;gap:1.2rem;margin-top:1.15rem;display:flex}.protocol-facts span{align-items:center;gap:.42rem;display:inline-flex}.fact-dot{background:var(--faint);border-radius:50%;width:5px;height:5px}.fact-live{background:var(--green)}.trace-window{border:1px solid var(--line-strong);background:#090e14f0;border-radius:9px;overflow:hidden;transform:rotate(.45deg);box-shadow:0 38px 90px #00000059}.trace-titlebar{border-bottom:1px solid var(--line);background:var(--panel);height:48px;font:.65rem var(--mono);justify-content:space-between;align-items:center;padding:0 .9rem;display:flex}.trace-titlebar>div,.traffic-lights{align-items:center;display:flex}.traffic-lights{gap:5px;margin-right:.75rem}.traffic-lights i,.terminal-bar i{background:var(--line-strong);border-radius:50%;width:7px;height:7px}.traffic-lights i:first-child,.terminal-bar i:first-child{background:var(--red)}.traffic-lights i:nth-child(2),.terminal-bar i:nth-child(2){background:var(--amber)}.traffic-lights i:last-child,.terminal-bar i:last-child{background:var(--green)}.trace-name{color:var(--muted)}.trace-duration{color:var(--cyan)}.trace-ruler{border-bottom:1px solid var(--line);height:32px;color:var(--faint);font:.54rem var(--mono);grid-template-columns:repeat(5,1fr);align-items:end;padding:0 12px 7px 174px;display:grid}.trace-ruler span:not(:first-child){text-align:right}.trace-rows{padding:.55rem 0;position:relative}.trace-rows:after{content:"";pointer-events:none;background:repeating-linear-gradient(90deg,#0000 0 calc(25% - 1px),#ffffff0b 25%);position:absolute;inset:0 12px 0 174px}.trace-row{z-index:1;border-bottom:1px solid #2631418c;grid-template-columns:174px minmax(0,1fr);align-items:center;min-height:54px;display:grid;position:relative}.trace-row:last-child{border-bottom:0}.span-label{min-width:0;font-family:var(--mono);gap:.22rem;padding:0 .8rem;display:grid}.span-label b,.span-label small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.span-label b{font-size:.61rem;font-weight:600}.span-label small{color:var(--faint);font-size:.54rem}.span-track{height:13px;margin-right:12px;position:relative}.span-track i{top:0;bottom:0;left:var(--start);width:var(--size);background:linear-gradient(90deg,#1f6e6b,#27827e);border:1px solid #329f9a;border-radius:2px;position:absolute;box-shadow:inset 0 0 0 1px #ffffff0a}.root-span .span-track i{background:linear-gradient(90deg,#31598e,#4777b8);border-color:#527bbb}.trace-footer{border-top:1px solid var(--line);background:var(--panel);height:47px;color:var(--faint);font:.57rem var(--mono);align-items:center;gap:1.1rem;padding:0 .9rem;display:flex}.trace-footer b{color:var(--ink)}.trace-footer .trace-ok b{color:var(--green)}.trace-id{margin-left:auto}.tool-surface,.protocol-section,.install-section{border-top:1px solid var(--line);padding:7rem 0}.tool-surface{grid-template-columns:.72fr 1.28fr;gap:clamp(3rem,8vw,8rem);display:grid}.section-index{margin-bottom:1.35rem}h2{letter-spacing:-.055em;margin-bottom:1.15rem;font-size:clamp(2rem,4vw,3.7rem);line-height:1.02}.section-intro>p:last-child,.protocol-heading p,.install-copy>p:last-of-type{color:var(--muted);line-height:1.65}.tool-list{counter-reset:tools;margin:0;padding:0;list-style:none}.tool-list li{border-bottom:1px solid var(--line);counter-increment:tools;grid-template-columns:28px 1.15fr 1.6fr auto;align-items:center;gap:1.2rem;min-height:68px;display:grid}.tool-list li:first-child{border-top:1px solid var(--line)}.tool-list li:before{content:"0" counter(tools);color:var(--faint);font:.55rem var(--mono)}.tool-list code{color:var(--ink);font:.7rem var(--mono)}.tool-list span{color:var(--muted);font-size:.75rem}.tool-list b{color:var(--cyan);font:600 .53rem var(--mono);letter-spacing:.05em;text-transform:uppercase}.protocol-heading{grid-template-columns:1fr .65fr;align-items:end;gap:4rem;display:grid}.protocol-heading p{max-width:430px;margin-bottom:1.2rem}.protocol-grid{border:1px solid var(--line);grid-template-columns:repeat(4,1fr);margin-top:3.2rem;display:grid}.protocol-grid article{border-right:1px solid var(--line);background:#0d12197a;min-height:230px;padding:1.35rem}.protocol-grid article:last-child{border-right:0}.protocol-grid article>span{color:var(--cyan);font:.6rem var(--mono)}.protocol-grid h3{letter-spacing:-.02em;margin:4rem 0 .7rem;font-size:.95rem}.protocol-grid p{color:var(--muted);margin-bottom:0;font-size:.73rem;line-height:1.6}.install-section{grid-template-columns:.78fr 1.22fr;align-items:center;gap:clamp(3rem,8vw,8rem);padding-bottom:8rem;display:grid}.client-tabs{flex-wrap:wrap;gap:.4rem;margin-top:2rem;display:flex}.client-tabs button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:5px;padding:.52rem .72rem;font-size:.7rem}.client-tabs button:hover{border-color:var(--line-strong);color:var(--ink)}.client-tabs button[aria-selected=true]{background:var(--cyan-wash);color:var(--cyan-strong);border-color:#329f9a}.install-terminal{border:1px solid var(--line-strong);background:#090e14;border-radius:8px;overflow:hidden;box-shadow:0 28px 70px #00000045}.terminal-bar{border-bottom:1px solid var(--line);background:var(--panel);grid-template-columns:1fr auto 1fr;align-items:center;height:43px;padding:0 .8rem;display:grid}.terminal-bar>span{gap:5px;display:flex}.terminal-bar b{color:var(--faint);font:500 .59rem var(--mono)}.terminal-bar button{justify-self:end;height:100%;padding:0 .7rem}.install-terminal pre{color:#b9d8ff;min-height:150px;font:.74rem/1.75 var(--mono);white-space:pre-wrap;align-items:center;margin:0;padding:1.5rem;display:flex;overflow:auto}.install-terminal>p{border-top:1px solid var(--line);color:var(--faint);font:.58rem var(--mono);margin:0;padding:.75rem 1rem}.install-terminal>p span{color:var(--cyan);margin-right:.45rem}footer{border-top:1px solid var(--line);min-height:120px;color:var(--faint);grid-template-columns:1fr auto 1fr;align-items:center;font-size:.66rem;display:grid}footer p{margin:0}footer>div{font-family:var(--mono);justify-self:end;gap:1.2rem;display:flex}footer a:hover{color:var(--ink)}.copy-status{z-index:10;background:var(--panel-raised);color:var(--cyan-strong);opacity:0;pointer-events:none;font:.65rem var(--mono);border:1px solid #4dd8d066;border-radius:5px;padding:.65rem .85rem;transition:opacity .12s,transform .12s;position:fixed;bottom:1rem;right:1rem;transform:translateY(8px)}.copy-status.visible{opacity:1;transform:translateY(0)}@media (width<=900px){.site-header,main,footer{width:min(100% - 32px,720px)}.hero{grid-template-columns:1fr;gap:4rem;min-height:auto;padding:5.5rem 0 6rem}.trace-window{transform:none}.tool-surface,.install-section{grid-template-columns:1fr;gap:3rem}.protocol-grid{grid-template-columns:repeat(2,1fr)}.protocol-grid article:nth-child(2){border-right:0}.protocol-grid article:nth-child(-n+2){border-bottom:1px solid var(--line)}footer{grid-template-columns:1fr auto}footer p{display:none}}@media (width<=620px){.site-header{grid-template-columns:1fr auto}.site-header nav{display:none}h1{font-size:clamp(3rem,15vw,4.7rem)}.hero{padding-top:4.5rem}.trace-ruler{padding-left:124px}.trace-rows:after{left:124px}.trace-row{grid-template-columns:124px minmax(0,1fr)}.trace-footer{gap:.65rem}.trace-id{display:none}.tool-list li{grid-template-columns:1fr auto;padding:.85rem 0}.tool-list li:before{display:none}.tool-list span{grid-area:2/1/auto/-1}.protocol-heading{grid-template-columns:1fr;gap:0}.protocol-grid{grid-template-columns:1fr}.protocol-grid article{border-right:0;border-bottom:1px solid var(--line);min-height:185px}.protocol-grid article:last-child{border-bottom:0}.protocol-grid h3{margin-top:2.7rem}.endpoint-protocol{display:none}.endpoint{grid-template-columns:minmax(0,1fr) auto}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
|
|
16
|
+
<style rel="stylesheet" crossorigin>:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--ink:#ecf2f8;--muted:#8c9aae;--faint:#596679;--base:#080b10;--panel:#0d1219;--panel-raised:#111923;--line:#263141;--line-strong:#3a495e;--cyan:#4dd8d0;--cyan-strong:#78eee7;--cyan-wash:#4dd8d01a;--green:#63dda1;--amber:#f1bd68;--red:#ff7a85;--mono:"SFMono-Regular", Consolas, "Liberation Mono", monospace;--sans:Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;font-family:var(--sans);font-synthesis:none;text-rendering:optimizelegibility}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--base);min-width:320px;color:var(--ink);margin:0}body:before{z-index:-1;content:"";pointer-events:none;background:linear-gradient(#ffffff05 1px,#0000 1px) 0 0/48px 48px,linear-gradient(90deg,#ffffff05 1px,#0000 1px) 0 0/48px 48px,radial-gradient(circle at 72% 2%,#4dd8d01a,#0000 31rem);position:fixed;inset:0}a{color:inherit;text-decoration:none}button{font:inherit}.site-header,main,footer{width:min(1180px,100% - 48px);margin-inline:auto}.site-header{border-bottom:1px solid var(--line);grid-template-columns:1fr auto 1fr;align-items:center;height:72px;display:grid}.brand{font:750 1.08rem/1 var(--mono);letter-spacing:-.07em}.brand span{color:var(--cyan)}.site-header nav{color:var(--muted);gap:2rem;font-size:.76rem;display:flex}.site-header nav a{transition:color .12s}.site-header nav a:hover{color:var(--ink)}.hero{grid-template-columns:minmax(0,.92fr) minmax(460px,1.08fr);align-items:center;gap:clamp(3rem,7vw,7rem);min-height:680px;padding:7.25rem 0 7.75rem;display:grid}.eyebrow,.section-index{color:var(--cyan);font:700 .66rem/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase}.eyebrow{align-items:center;gap:.65rem;margin:0 0 1.55rem;display:flex}.eyebrow span{background:var(--green);border-radius:50%;width:7px;height:7px;box-shadow:0 0 0 5px #63dda11a}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.075em;margin-bottom:1.6rem;font-size:clamp(3.2rem,6vw,6.15rem);line-height:.91}h1 em{color:var(--cyan);font-style:normal}.hero-lede{max-width:590px;color:var(--muted);margin-bottom:2rem;font-size:1.04rem;line-height:1.7}.endpoint{border:1px solid var(--line-strong);background:#0d1219e0;border-radius:6px;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;width:min(100%,560px);height:54px;display:grid;overflow:hidden}.endpoint-protocol{border-right:1px solid var(--line);height:100%;color:var(--faint);font:.68rem var(--mono);place-items:center;padding:0 .9rem;display:grid}.endpoint code{color:#b9d8ff;min-width:0;font:.76rem var(--mono);text-overflow:ellipsis;white-space:nowrap;padding:0 .85rem;overflow:hidden}.endpoint button,.terminal-bar button{color:var(--cyan);cursor:pointer;font:700 .66rem var(--mono);letter-spacing:.04em;background:0 0;border:0}.endpoint button{border-left:1px solid var(--line);height:100%;padding:0 1rem}.endpoint button:hover,.terminal-bar button:hover{color:var(--cyan-strong);background:var(--cyan-wash)}.protocol-facts{color:var(--muted);font:.64rem var(--mono);flex-wrap:wrap;gap:1.2rem;margin-top:1.15rem;display:flex}.protocol-facts span{align-items:center;gap:.42rem;display:inline-flex}.fact-dot{background:var(--faint);border-radius:50%;width:5px;height:5px}.fact-live{background:var(--green)}.trace-window{border:1px solid var(--line-strong);background:#090e14f0;border-radius:9px;overflow:hidden;transform:rotate(.45deg);box-shadow:0 38px 90px #00000059}.trace-titlebar{border-bottom:1px solid var(--line);background:var(--panel);height:48px;font:.65rem var(--mono);justify-content:space-between;align-items:center;padding:0 .9rem;display:flex}.trace-titlebar>div,.traffic-lights{align-items:center;display:flex}.traffic-lights{gap:5px;margin-right:.75rem}.traffic-lights i,.terminal-bar i{background:var(--line-strong);border-radius:50%;width:7px;height:7px}.traffic-lights i:first-child,.terminal-bar i:first-child{background:var(--red)}.traffic-lights i:nth-child(2),.terminal-bar i:nth-child(2){background:var(--amber)}.traffic-lights i:last-child,.terminal-bar i:last-child{background:var(--green)}.trace-name{color:var(--muted)}.trace-duration{color:var(--cyan)}.trace-ruler{border-bottom:1px solid var(--line);height:32px;color:var(--faint);font:.54rem var(--mono);grid-template-columns:repeat(5,1fr);align-items:end;padding:0 12px 7px 174px;display:grid}.trace-ruler span:not(:first-child){text-align:right}.trace-rows{padding:.55rem 0;position:relative}.trace-rows:after{content:"";pointer-events:none;background:repeating-linear-gradient(90deg,#0000 0 calc(25% - 1px),#ffffff0b 25%);position:absolute;inset:0 12px 0 174px}.trace-row{z-index:1;border-bottom:1px solid #2631418c;grid-template-columns:174px minmax(0,1fr);align-items:center;min-height:54px;display:grid;position:relative}.trace-row:last-child{border-bottom:0}.span-label{min-width:0;font-family:var(--mono);gap:.22rem;padding:0 .8rem;display:grid}.span-label b,.span-label small{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.span-label b{font-size:.61rem;font-weight:600}.span-label small{color:var(--faint);font-size:.54rem}.span-track{height:13px;margin-right:12px;position:relative}.span-track i{top:0;bottom:0;left:var(--start);width:var(--size);background:linear-gradient(90deg,#1f6e6b,#27827e);border:1px solid #329f9a;border-radius:2px;position:absolute;box-shadow:inset 0 0 0 1px #ffffff0a}.root-span .span-track i{background:linear-gradient(90deg,#31598e,#4777b8);border-color:#527bbb}.trace-footer{border-top:1px solid var(--line);background:var(--panel);height:47px;color:var(--faint);font:.57rem var(--mono);align-items:center;gap:1.1rem;padding:0 .9rem;display:flex}.trace-footer b{color:var(--ink)}.trace-footer .trace-ok b{color:var(--green)}.trace-id{margin-left:auto}.tool-surface,.protocol-section,.install-section{border-top:1px solid var(--line);padding:7rem 0}.tool-surface{grid-template-columns:.72fr 1.28fr;gap:clamp(3rem,8vw,8rem);display:grid}.section-index{margin-bottom:1.35rem}h2{letter-spacing:-.055em;margin-bottom:1.15rem;font-size:clamp(2rem,4vw,3.7rem);line-height:1.02}.section-intro>p:last-child,.protocol-heading p,.install-copy>p:last-of-type{color:var(--muted);line-height:1.65}.tool-list{counter-reset:tools;margin:0;padding:0;list-style:none}.tool-list li{border-bottom:1px solid var(--line);counter-increment:tools;grid-template-columns:28px 1.15fr 1.6fr auto;align-items:center;gap:1.2rem;min-height:68px;display:grid}.tool-list li:first-child{border-top:1px solid var(--line)}.tool-list li:before{content:"0" counter(tools);color:var(--faint);font:.55rem var(--mono)}.tool-list code{color:var(--ink);font:.7rem var(--mono)}.tool-list span{color:var(--muted);font-size:.75rem}.tool-list b{color:var(--cyan);font:600 .53rem var(--mono);letter-spacing:.05em;text-transform:uppercase}.protocol-heading{grid-template-columns:1fr .65fr;align-items:end;gap:4rem;display:grid}.protocol-heading p{max-width:430px;margin-bottom:1.2rem}.protocol-grid{border:1px solid var(--line);grid-template-columns:repeat(4,1fr);margin-top:3.2rem;display:grid}.protocol-grid article{border-right:1px solid var(--line);background:#0d12197a;min-height:230px;padding:1.35rem}.protocol-grid article:last-child{border-right:0}.protocol-grid article>span{color:var(--cyan);font:.6rem var(--mono)}.protocol-grid h3{letter-spacing:-.02em;margin:4rem 0 .7rem;font-size:.95rem}.protocol-grid p{color:var(--muted);margin-bottom:0;font-size:.73rem;line-height:1.6}.install-section{grid-template-columns:.78fr 1.22fr;align-items:center;gap:clamp(3rem,8vw,8rem);padding-bottom:8rem;display:grid}.client-tabs{flex-wrap:wrap;gap:.4rem;margin-top:2rem;display:flex}.client-tabs button{border:1px solid var(--line);color:var(--muted);cursor:pointer;background:0 0;border-radius:5px;padding:.52rem .72rem;font-size:.7rem}.client-tabs button:hover{border-color:var(--line-strong);color:var(--ink)}.client-tabs button[aria-selected=true]{background:var(--cyan-wash);color:var(--cyan-strong);border-color:#329f9a}.install-terminal{border:1px solid var(--line-strong);background:#090e14;border-radius:8px;overflow:hidden;box-shadow:0 28px 70px #00000045}.terminal-bar{border-bottom:1px solid var(--line);background:var(--panel);grid-template-columns:1fr auto 1fr;align-items:center;height:43px;padding:0 .8rem;display:grid}.terminal-bar>span{gap:5px;display:flex}.terminal-bar b{color:var(--faint);font:500 .59rem var(--mono)}.terminal-bar button{justify-self:end;height:100%;padding:0 .7rem}.install-terminal pre{color:#b9d8ff;min-height:150px;font:.74rem/1.75 var(--mono);white-space:pre-wrap;align-items:center;margin:0;padding:1.5rem;display:flex;overflow:auto}.install-terminal>p{border-top:1px solid var(--line);color:var(--faint);font:.58rem var(--mono);margin:0;padding:.75rem 1rem}.install-terminal>p span{color:var(--cyan);margin-right:.45rem}footer{border-top:1px solid var(--line);min-height:120px;color:var(--faint);grid-template-columns:1fr auto 1fr;align-items:center;font-size:.66rem;display:grid}footer p{margin:0}footer>div{font-family:var(--mono);justify-self:end;gap:1.2rem;display:flex}footer a:hover{color:var(--ink)}.copy-status{z-index:10;background:var(--panel-raised);color:var(--cyan-strong);opacity:0;pointer-events:none;font:.65rem var(--mono);border:1px solid #4dd8d066;border-radius:5px;padding:.65rem .85rem;transition:opacity .12s,transform .12s;position:fixed;bottom:1rem;right:1rem;transform:translateY(8px)}.copy-status.visible{opacity:1;transform:translateY(0)}@media (width<=900px){.site-header,main,footer{width:min(100% - 32px,720px)}.hero{grid-template-columns:1fr;gap:4rem;min-height:auto;padding:5.5rem 0 6rem}.trace-window{transform:none}.tool-surface,.install-section{grid-template-columns:1fr;gap:3rem}.protocol-grid{grid-template-columns:repeat(2,1fr)}.protocol-grid article:nth-child(2){border-right:0}.protocol-grid article:nth-child(-n+2){border-bottom:1px solid var(--line)}footer{grid-template-columns:1fr auto}footer p{display:none}}@media (width<=620px){.site-header{grid-template-columns:1fr auto}.site-header nav{display:none}h1{font-size:clamp(3rem,15vw,4.7rem)}.hero{padding-top:4.5rem}.trace-ruler{padding-left:124px}.trace-rows:after{left:124px}.trace-row{grid-template-columns:124px minmax(0,1fr)}.trace-footer{gap:.65rem}.trace-id{display:none}.tool-list li{grid-template-columns:1fr auto;padding:.85rem 0}.tool-list li:before{display:none}.tool-list span{grid-area:2/1/auto/-1}.protocol-heading{grid-template-columns:1fr;gap:0}.protocol-grid{grid-template-columns:1fr}.protocol-grid article{border-right:0;border-bottom:1px solid var(--line);min-height:185px}.protocol-grid article:last-child{border-bottom:0}.protocol-grid h3{margin-top:2.7rem}.endpoint-protocol{display:none}.endpoint{grid-template-columns:minmax(0,1fr) auto}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
|
|
17
17
|
/*$vite$:1*/</style>
|
|
18
18
|
</head>
|
|
19
19
|
<body>
|
|
@@ -24,7 +24,6 @@
|
|
|
24
24
|
<a href="#install">Install</a>
|
|
25
25
|
<a href="https://github.com/ANcpLua/qyl.mcp" rel="noreferrer">GitHub</a>
|
|
26
26
|
</nav>
|
|
27
|
-
<span class="release-badge">Beta</span>
|
|
28
27
|
</header>
|
|
29
28
|
|
|
30
29
|
<main>
|
|
@@ -33,8 +32,8 @@
|
|
|
33
32
|
<p class="eyebrow"><span aria-hidden="true"></span> Hosted MCP endpoint</p>
|
|
34
33
|
<h1 id="hero-title">Your telemetry,<br><em>inside the agent.</em></h1>
|
|
35
34
|
<p class="hero-lede">
|
|
36
|
-
Give coding agents direct read access to qyl traces, logs, sessions,
|
|
37
|
-
|
|
35
|
+
Give coding agents direct read access to qyl traces, logs, sessions, metrics,
|
|
36
|
+
and CI evidence—without leaving the work.
|
|
38
37
|
</p>
|
|
39
38
|
|
|
40
39
|
<div class="endpoint" aria-label="MCP endpoint">
|
|
@@ -96,7 +95,7 @@
|
|
|
96
95
|
<div class="section-intro">
|
|
97
96
|
<p class="section-index">01 / TOOL SURFACE</p>
|
|
98
97
|
<h2 id="tools-title">Ask from the place you’re already fixing.</h2>
|
|
99
|
-
<p><code>qyl:read</code> covers evidence and views
|
|
98
|
+
<p><code>qyl:read</code> covers every tool: evidence and views, read-only throughout.</p>
|
|
100
99
|
</div>
|
|
101
100
|
<ol class="tool-list">
|
|
102
101
|
<li><code>display_traces</code><span>Open a correlated waterfall and its logs.</span><b>MCP App</b></li>
|
|
@@ -104,7 +103,7 @@
|
|
|
104
103
|
<li><code>get_trace</code><span>Inspect the complete span tree for one trace.</span><b>Read</b></li>
|
|
105
104
|
<li><code>display_mcp_dashboard</code><span>See tool traffic, latency, and failures.</span><b>MCP App</b></li>
|
|
106
105
|
<li><code>ci_log</code><span>Bring CI execution evidence into the investigation.</span><b>Read</b></li>
|
|
107
|
-
<li><code>
|
|
106
|
+
<li><code>query_metric</code><span>Answer a windowed question over an instrument.</span><b>Read</b></li>
|
|
108
107
|
</ol>
|
|
109
108
|
</section>
|
|
110
109
|
|
package/dist/oauth.d.ts
CHANGED
|
@@ -3,7 +3,6 @@ import { type OAuthMetadata, type OAuthTokenVerifier } from "@modelcontextprotoc
|
|
|
3
3
|
export declare const QYL_MCP_ISSUER = "https://qyl-eu.eu.auth0.com/";
|
|
4
4
|
export declare const QYL_MCP_RESOURCE = "https://mcp.qyl.at/mcp";
|
|
5
5
|
export declare const QYL_MCP_SCOPE = "qyl:read";
|
|
6
|
-
export declare const QYL_MCP_CONTROL_SCOPE = "qyl:control";
|
|
7
6
|
export interface HostedOAuth {
|
|
8
7
|
readonly requiredScopes: string[];
|
|
9
8
|
readonly scopesSupported: string[];
|
package/dist/oauth.js
CHANGED
|
@@ -5,7 +5,6 @@ const DISCOVERY_TIMEOUT_MS = 10_000;
|
|
|
5
5
|
export const QYL_MCP_ISSUER = "https://qyl-eu.eu.auth0.com/";
|
|
6
6
|
export const QYL_MCP_RESOURCE = "https://mcp.qyl.at/mcp";
|
|
7
7
|
export const QYL_MCP_SCOPE = "qyl:read";
|
|
8
|
-
export const QYL_MCP_CONTROL_SCOPE = "qyl:control";
|
|
9
8
|
function readIssuer(environment) {
|
|
10
9
|
const configured = environment.MCP_OAUTH_ISSUER;
|
|
11
10
|
if (!configured) {
|
|
@@ -114,7 +113,7 @@ export async function loadHostedOAuth(resourceServerUrl, environment = process.e
|
|
|
114
113
|
}
|
|
115
114
|
return {
|
|
116
115
|
requiredScopes: [QYL_MCP_SCOPE],
|
|
117
|
-
scopesSupported: [QYL_MCP_SCOPE
|
|
116
|
+
scopesSupported: [QYL_MCP_SCOPE],
|
|
118
117
|
oauthMetadata,
|
|
119
118
|
verifier: createJwtTokenVerifier({
|
|
120
119
|
issuer: oauthMetadata.issuer,
|
package/dist/oauth.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,SAAS,GAGV,MAAM,MAAM,CAAC;AACd,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AACjE,OAAO,EACL,UAAU,EACV,cAAc,GAIf,MAAM,8BAA8B,CAAC;AAEtC,MAAM,oBAAoB,GAAG,MAAM,CAAC;AACpC,MAAM,CAAC,MAAM,cAAc,GAAG,8BAA8B,CAAC;AAC7D,MAAM,CAAC,MAAM,gBAAgB,GAAG,wBAAwB,CAAC;AACzD,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"oauth.js","sourceRoot":"","sources":["../src/oauth.ts"],"names":[],"mappings":"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"}
|
package/dist/server.js
CHANGED
|
@@ -16,7 +16,7 @@ import { McpServer, ResourceNotFoundError } from "@modelcontextprotocol/server";
|
|
|
16
16
|
import fs from "node:fs/promises";
|
|
17
17
|
import path from "node:path";
|
|
18
18
|
import packageMetadata from "../package.json" with { type: "json" };
|
|
19
|
-
import { DASHBOARD_RESOURCE_URI, RESOURCE_URI
|
|
19
|
+
import { DASHBOARD_RESOURCE_URI, RESOURCE_URI } from "./config.js";
|
|
20
20
|
import { CollectorError } from "./collector.js";
|
|
21
21
|
import { DisplayMcpDashboardInputSchema, DisplayMcpDashboardOutputSchema, DisplayTracesInputSchema, DisplayTracesOutputSchema, FetchTelemetryInputSchema, compactOutputSchema, } from "./contract-validation.js";
|
|
22
22
|
import { fetchLogs, fetchMcpStats, fetchTrace, fetchTraces, fetchTracesForDisplay, } from "./data.js";
|
|
@@ -24,7 +24,6 @@ import { humanizeNs, rootSpanName, shortId, summarizeMcpStats, } from "./summari
|
|
|
24
24
|
import { READ_ONLY_TELEMETRY_TOOL_ANNOTATIONS, registerTelemetryTools, toolError, } from "./tools.js";
|
|
25
25
|
import { registerCiTools } from "./ci.js";
|
|
26
26
|
import { registerMetricsTools } from "./metrics-tools.js";
|
|
27
|
-
import { registerWorkflowTools } from "./workflow-tools.js";
|
|
28
27
|
import { telemetryToolResult } from "./telemetry-redaction.js";
|
|
29
28
|
import { assertNativeExecutionRecordingArmed, defaultNativeExecutionRuntime, installNativeExecutionRecording, } from "./native-execution.js";
|
|
30
29
|
const RESOURCE_MIME_TYPE = "text/html;profile=mcp-app";
|
|
@@ -169,7 +168,6 @@ export function createServer(options = {}) {
|
|
|
169
168
|
registerTelemetryTools(server);
|
|
170
169
|
registerCiTools(server);
|
|
171
170
|
registerMetricsTools(server);
|
|
172
|
-
registerWorkflowTools(server);
|
|
173
171
|
server.registerTool("fetch_telemetry", {
|
|
174
172
|
title: "Fetch Telemetry",
|
|
175
173
|
description: "Fetch traces, a single trace, or logs for the trace explorer UI. " +
|
|
@@ -221,7 +219,6 @@ export function createServer(options = {}) {
|
|
|
221
219
|
});
|
|
222
220
|
registerViewerResource(server, RESOURCE_URI, "mcp-app.html");
|
|
223
221
|
registerViewerResource(server, DASHBOARD_RESOURCE_URI, "mcp-dashboard.html");
|
|
224
|
-
registerViewerResource(server, WORKFLOW_GRAPH_RESOURCE_URI, "observe-graph.html");
|
|
225
222
|
if (options.nativeExecution !== false)
|
|
226
223
|
assertNativeExecutionRecordingArmed(server);
|
|
227
224
|
return server;
|
package/dist/server.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAUH,OAAO,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAEhF,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,eAAe,MAAM,iBAAiB,CAAC,OAAO,IAAI,EAAE,MAAM,EAAE,CAAC;AACpE,OAAO,
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "qyl-mcp-server",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "4.0.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "qyl telemetry MCP Apps server: trace explorer and MCP dashboard for a live collector or explicit demo mode",
|
|
6
6
|
"repository": {
|
|
@@ -57,18 +57,18 @@
|
|
|
57
57
|
],
|
|
58
58
|
"scripts": {
|
|
59
59
|
"clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true }); require('node:fs').rmSync('dist-test', { recursive: true, force: true })\"",
|
|
60
|
-
"build": "bun run clean && tsc --noEmit && vite build --mode mcp-home && vite build --mode mcp-app && vite build --mode mcp-dashboard &&
|
|
60
|
+
"build": "bun run clean && tsc --noEmit && vite build --mode mcp-home && vite build --mode mcp-app && vite build --mode mcp-dashboard && tsc -p tsconfig.server.json && node -e \"require('node:fs').chmodSync('dist/main.js', 0o755)\"",
|
|
61
61
|
"postbuild": "bun run verify:deployment-guidance",
|
|
62
62
|
"verify:deployment-guidance": "node verify-deployment-guidance.mjs",
|
|
63
63
|
"verify:shapes": "node verify-generated-shapes.mjs",
|
|
64
64
|
"verify:readme": "node verify-package-readme.mjs",
|
|
65
65
|
"snapshot:tools": "bun run build && tsc -p tsconfig.test.json && node update-tool-manifest-snapshot.mjs",
|
|
66
|
-
"test": "bun run verify:shapes && bun run verify:readme && bun run build && tsc -p tsconfig.test.json && node -e \"const fs=require('node:fs'); for (const name of ['mcp-app.html','mcp-dashboard.html'
|
|
66
|
+
"test": "bun run verify:shapes && bun run verify:readme && bun run build && tsc -p tsconfig.test.json && node -e \"const fs=require('node:fs'); for (const name of ['mcp-app.html','mcp-dashboard.html']) fs.copyFileSync('dist/'+name,'dist-test/'+name)\" && node --test dist-test/*.test.js",
|
|
67
67
|
"smoke": "node smoke-test.mjs",
|
|
68
68
|
"prepack": "bun run build"
|
|
69
69
|
},
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"@ancplua/qyl-api-schema": "
|
|
71
|
+
"@ancplua/qyl-api-schema": "9.0.0",
|
|
72
72
|
"@modelcontextprotocol/core": "2.0.0",
|
|
73
73
|
"@modelcontextprotocol/server": "2.0.0",
|
|
74
74
|
"@opentelemetry/api": "^1.9.1",
|