PerfLens MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
No arguments | |||
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| inspect_collection_capabilitiesA | Inspect perf, kernel policy, capabilities, and collection-mode availability without sampling or attaching to a process. |
| inspect_docker_capabilityA | Inspect the fixed local Docker endpoint and cgroup-v2 support without starting, stopping, building, pulling, or profiling a container. |
| inspect_docker_optimization_capabilityA | Inspect the fixed local Docker/Buildx/Builder identities, project build contract, Benchmark requirement, base-image presence, and Collector modes. This is read-only and never builds, pulls, runs, profiles, or modifies source. |
| preview_docker_optimization_sessionA | Capture the exact authorized build context and return the complete content-bound one-confirmation optimization summary. This does not build or pull. The user must confirm this exact Preview before authorization. |
| authorize_docker_optimization_sessionB | Authorize the exact Docker optimization Preview once. This stores a process-local secret and permits only its fixed paths, build recipe, modes, and budgets; it does not itself build, run, profile, modify source, commit, push, tag, or release. |
| build_docker_optimization_candidateB | Build one baseline or next candidate from the already-authorized immutable context and mutable Treatment paths. It accepts no image, command, path, build argument, network option, or Docker flag from the caller. |
| revoke_docker_optimization_sessionA | Revoke one in-memory Docker optimization authorization and conservatively clean only verified session-owned temporary image tags and private snapshots. |
| discover_docker_processesA | Observe bounded CPU deltas for one existing local container and return only container PID, host PID, executable name, and a safe recommendation. |
| resolve_docker_targetB | Re-resolve one container process against Docker, /proc, PID start time, namespaces, cgroup identity, and UID policy without profiling it. |
| authorize_docker_sessionA | Authorize one project-bound existing-container performance session. This stores only process-local authorization and does not execute or profile the target. A fresh user reply to the exact session summary is required; MCP tool permission is not workload consent. allowed_modes is required and must exactly equal the non-empty mode set shown in that summary; expanding it requires a new summary and fresh authorization. |
| authorize_managed_docker_sessionA | Authorize the exact immutable image, command, mounts, resource limits, modes, and budget pinned in this project's Docker policy. This never builds or pulls an image. A fresh user reply to that exact summary is required; MCP tool permission is not workload consent. allowed_modes is required and must exactly equal the non-empty mode set shown in that summary; expanding it requires a new summary and fresh authorization. |
| revoke_docker_sessionB | Revoke one Docker authorization held by this project MCP process without stopping or removing a user container. |
| collect_docker_targetB | Re-resolve one authorized existing-container process, consume one bounded session run, and collect it through the restricted Broker. The Docker adapter never enters the Collector or Helper. |
| collect_managed_docker_workloadB | Create one fixed-policy temporary container from an already-local immutable image, hold its exact workload at the package Gate until Broker collection is ready, then run, collect, wait, and conservatively clean only that verified container. |
| collect_docker_optimization_workloadA | Run and collect only a verified image Build produced by this one-confirmation optimization session. The caller selects bounded evidence, never an image, command, mount, network, Docker option, or host path. A failed attempt after workload-lease issuance is charged and stops further build/collection operations in that Session; it must not be retried unchanged. |
| plan_automatic_collectionA | Create a short-lived PID-bound collection plan. This does not sample or attach. |
| execute_collection_planA | Execute one previously planned PID collection through the restricted collector broker. Plans are short-lived and single-use. |
| collect_project_workloadA | Run one explicitly authorized executable inside a project as the MCP user, bind its exact PID incarnation, and collect it through the restricted Collector broker. After the user approves the exact scope, authorization must be exactly I_EXPLICITLY_AUTHORIZE_PROJECT_EXECUTION; do not substitute manual PID attachment. |
| analyze_collectionC | Analyze a stored CPU record collection artifact. |
| analyze_trace_evidenceA | Deterministically analyze a stored, normalized sched/off-CPU/lock TraceEvidence artifact and verify it before Agent use. |
| verify_trace_analysisA | Replay and verify a stored sched/off-CPU/lock analysis before Agent interpretation. |
| analyze_profileC | Analyze an allowed folded, perf-script, or perf.data profile and store JSON. |
| verify_analysisA | Independently verify a stored Analysis fingerprint, metadata consistency, and weight conservation before Agent interpretation. |
| list_hotspotsB | Return a bounded page of hotspots from a stored analysis. |
| get_hotspot_detailsB | Return one hotspot with bounded dominant paths, classifications, and limits. |
| get_call_pathsB | Return a bounded page of dominant call paths, optionally containing a symbol. |
| classify_hotspotsB | Apply generic candidate-only rules and return a bounded classification page. |
| build_diagnosis_bundleB | Build and store the full evidence-constrained diagnosis artifact. |
| read_artifact_pageB | Read at most 64 KiB from a stored JSON artifact. |
| resolve_sourceC | Resolve a verified module offset using an allowed ELF/debug file. |
| get_source_contextB | Read bounded source lines within one configured allowed workspace. |
| analyze_benchmarkA | Normalize a supported benchmark JSON file and store the typed artifact. |
| compare_profilesC | Compare two stored analyses and store bounded profile-difference evidence. |
| compare_benchmarksC | Compare repeated benchmark values with condition and impact checks. |
| compare_container_measurementsC | Compare two Docker measurements using bound profile, absolute benchmark, correctness, treatment, and whole-container resource evidence. |
| compare_docker_optimization_iterationsB | Deterministically compare one authorized baseline/candidate Build pair using bound container measurements, profiles, Benchmark correctness, resource deltas, and fixed-environment invariants. Different final image digests are accepted only as session-bound Treatment evidence. |
| finalize_docker_optimization_candidateB | Finalize the source-workspace choice for either one replay-verified Iteration or a stopped Session whose latest candidate could not be evaluated, revoke the bounded optimization Session, and clean only verified session resources. Retaining a non-verified candidate requires a fresh explicit user decision and never creates or upgrades an A/B conclusion. |
| collect_profileB | Run bounded perf record/stat/sched/lock/off-CPU collection only after explicit server and per-call authorization. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 38 tools
Several tool families have dangerously similar names and overlapping purposes, especially the three authorize_docker_*_session tools, the three collect_docker_* tools, and the inspect_*_capability/capabilities tools. Though the descriptions are explicit and clarify boundaries, an agent would need to read long, nuanced descriptions carefully to avoid misselecting the wrong authorization or collection mode.
Tool names overwhelmingly follow a clear verb_noun snake_case pattern, and there is no mixing of camelCase or wildly different conventions. Minor inconsistencies exist in modifier placement (managed_docker vs docker_optimization) and singular/plural mismatches like capabilities vs capability, but the overall naming style is predictable.
38 tools is well above the 25+ threshold that indicates an overgrown surface. The workflows are complex, but the count is unwieldy and many tools are fine-grained variations of the same operation family, making the set feel heavier than its core purpose requires.
The tool set covers the apparent performance-analysis and Docker-optimization domain broadly: inspection, authorization, collection, analysis, verification, comparison, source resolution, diagnosis, and cleanup. Minor gaps like generic artifact deletion or session-status listing exist, but agents can work around them via read_artifact_page and the existing lifecycle tools.