All notable changes to perfmon-mcp are documented here. The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Startup crash on the modern mcp SDK (#38). mcp SDK v2 removed the bundled
mcp.server.fastmcpmodule (FastMCP now ships as the standalonefastmcppackage), so a fresh resolve of the old unboundedmcp>=1.0pin pulled mcp 2.x and crashed at import withModuleNotFoundError: No module named 'mcp.server.fastmcp'. FastMCP is now imported from the standalonefastmcppackage,fastmcp>=2is an explicit dependency, and the mcp pin is a boundedmcp>=1,<3range. Tool names and behavior are unchanged. Addedtests/test_stdio_handshake.py(real JSON-RPCinitialize+tools/listover stdio) plus a FastMCP-source guard in the smoke test to lock the migration.
get_rss_distribution(log_id, adapter_filter, scenario_hint)— RSS-specific lens scoped to the 13 curated Mellanox WinOF-2 RSS counter names; split into per-CPU + per-RqNum + per-SqNum sections with hot/idle counts in each section header.discover_counter_instances(set_name, instance_filter, target)— enumerate per-instance counter paths for one PDH counter set via(Get-Counter -ListSet '<set>').PathsWithInstances; supports a regex filter (e.g.'Adapter #2').parse_counter_instances_output(text, set_name, instance_filter)— sibling parser for remote stdout.get_teardown_commands(collector_name, target)— emit-only force-cleanup runbook for the managed collector + straggler perfmon / typeperf / relog / logman processes.parse_teardown_output(text, collector_name)— sibling parser for remote teardown stdout.compute_rate_from_counter(log_id, counter_filter, interval_s)— per-counter rate aggregator for monotonic raw totals:(last - first) / DurationSeconds.get_per_queue_summarynow surfacesDelta,MaxMinRatio,Hot, andIdlepeer-group flags plus a footer summary.instance_filterkeyword argument onget_capture_commands/get_capture_instructions, narrowing per-instance counter enumeration.- Mellanox NIC RSS workflow absorbed the standalone
analyze-mellanox-rssPowerShell skill into a discoverable MCP surface so the LLM can drive every step through tool calls without leaving the model loop.
- Profile metadata now carries
priority_metricsanddefault_instance_filter.mellanox-percpudefaultsinstance_filterto'Adapter #2'.
analyze(log_id, sections)mega-tool that composes summary + timeline + per-queue overview into one call.- Log registry tools:
load_log,load_csv,unload_log,log_info,list_loaded_logs,list_blgs. - Discovery tools:
discover_counter_sets(vendor-tagged),discover_nics,get_capture_status(managed collector query). get_counter_throughput— NIC throughput convenience lens narrowing the per-counter summary to Network Adapter throughput rows.- LabLink-first remote runbooks (with JSON sidecars carrying
parse_with,shell,expected_runtime_s,timeout_s) across every emit-style tool.
load_blg— preserved as an alias ofload_logfor v0.2 compatibility; emits aDeprecationWarning.