PDX-0: fix(mcp): rename tool names from dot-notation to underscore fo…#141
Merged
Conversation
…r Copilot RCA: All 41 MCP tool names used dot-notation (provar.xxx.yyy) which violates the [a-z0-9_-] constraint enforced by GitHub Copilot and other MCP clients. Fix: Rename to underscore form across source, tests, scripts, and docs; restore 4 correctness fixes from pre-commit review; bump version to 1.5.0-beta.15. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Contributor
There was a problem hiding this comment.
Pull request overview
Renames MCP tool identifiers from dot notation to underscore form across the MCP server, tests, scripts, and user-facing docs so Copilot-compatible clients can call them. It also adds new plan-integrity warning plumbing in project validation and makes a small XML shape change in generated test cases.
Changes:
- Renamed MCP tool names and updated corresponding tests, smoke coverage, and prompt text references.
- Added
plan_integrity_warningshandling in project validation and adjusted generated test case XML output. - Bumped published package/server metadata to
1.5.0-beta.15.
Reviewed changes
Copilot reviewed 52 out of 52 changed files in this pull request and generated 8 comments.
Show a summary per file
| File | Description |
|---|---|
| test/unit/mcp/testSuiteValidate.test.ts | Updates suite-validation tests to renamed tool name. |
| test/unit/mcp/testPlanValidate.test.ts | Updates plan-validation tests to renamed tool name. |
| test/unit/mcp/testCaseStepTools.test.ts | Updates step-edit tool tests to renamed tool name. |
| test/unit/mcp/rcaTools.test.ts | Updates RCA/locate tool tests to renamed tool names. |
| test/unit/mcp/qualityHubTools.test.ts | Updates Quality Hub CLI wrapper tests to renamed tool names. |
| test/unit/mcp/qualityHubApiTools.test.ts | Updates corpus retrieval tests to renamed tool name. |
| test/unit/mcp/propertiesTools.test.ts | Updates properties tool tests and next-step assertions. |
| test/unit/mcp/projectValidateFromPath.test.ts | Updates project-validation-from-path tests to renamed tool name. |
| test/unit/mcp/pageObjectGenerate.test.ts | Updates page-object generator tests to renamed tool name. |
| test/unit/mcp/migrationPrompts.test.ts | Updates prompt tests for renamed tool references. |
| test/unit/mcp/loopPrompts.test.ts | Updates loop prompt tests for renamed tool references. |
| test/unit/mcp/defectTools.test.ts | Updates defect tool tests to renamed tool name. |
| test/unit/mcp/connectionTools.test.ts | Updates connection-list tests to renamed tool name. |
| test/unit/mcp/antTools.test.ts | Updates ANT tool tests to renamed tool names. |
| src/services/projectValidation.ts | Adds plan-integrity warning collection and coverage/path handling changes. |
| src/mcp/tools/testSuiteValidate.ts | Renames suite-validation MCP tool and log labels. |
| src/mcp/tools/testPlanValidate.ts | Renames plan-validation MCP tool and log labels. |
| src/mcp/tools/testCaseValidate.ts | Renames testcase-validation MCP tool and embedded guidance strings. |
| src/mcp/tools/testCaseStepTools.ts | Renames testcase step-edit MCP tool and messages. |
| src/mcp/tools/testCaseGenerate.ts | Renames testcase generator MCP tool and tweaks generated XML/help text. |
| src/mcp/tools/rcaTools.ts | Renames RCA-related MCP tools and guidance strings. |
| src/mcp/tools/qualityHubTools.ts | Renames Quality Hub MCP tools and related messages. |
| src/mcp/tools/qualityHubApiTools.ts | Renames corpus retrieval MCP tool and messaging. |
| src/mcp/tools/propertiesTools.ts | Renames properties MCP tools and related guidance. |
| src/mcp/tools/projectValidateFromPath.ts | Renames project-validation MCP tool and keeps response shaping logic. |
| src/mcp/tools/projectInspect.ts | Renames project-inspect MCP tool and log labels. |
| src/mcp/tools/pageObjectGenerate.ts | Renames page-object generator MCP tool and logs. |
| src/mcp/tools/defectTools.ts | Renames defect-creation MCP tool and related messages. |
| src/mcp/tools/connectionTools.ts | Renames connection-list MCP tool and messages. |
| src/mcp/tools/automationTools.ts | Renames automation MCP tools and related guidance text. |
| src/mcp/tools/antTools.ts | Renames ANT MCP tools and logs. |
| src/mcp/server.ts | Renames ping tool to underscore form. |
| src/mcp/prompts/migrationPrompts.ts | Updates prompt instructions to call renamed tools. |
| src/mcp/prompts/loopPrompts.ts | Updates loop prompt instructions to call renamed tools. |
| server.json | Bumps MCP package metadata version. |
| scripts/mcp-smoke.cjs | Updates smoke script to call renamed tools. |
| package.json | Bumps package version. |
| messages/sf.provar.mcp.start.md | Updates start-command help text and tool list. |
| messages/sf.provar.auth.clear.md | Updates auth-clear help text to renamed validator tool. |
| docs/university-of-provar-mcp-course.md | Updates training docs to renamed tool names. |
| docs/provar-mcp-public-docs.md | Updates public MCP docs to renamed tool names. |
| docs/PROVAR_TEST_STEP_REFERENCE.md | Updates step-reference doc to renamed helper tools. |
| docs/mcp-pilot-guide.md | Updates pilot guide examples to renamed tool names. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+275
to
+276
| // Only expose testCasePath when in-bounds — out-of-bounds paths must not affect coverage totals | ||
| return { testCase: { name: tcName, xml_content }, testCasePath: tcInBounds ? testCasePath : null, testCaseId }; |
Comment on lines
+327
to
+336
| // Always recurse for display; only forward coverage state when .planitem is present | ||
| testSuites.push( | ||
| readSuiteDirectory( | ||
| fullPath, | ||
| entry.name, | ||
| projectPath, | ||
| depth + 1, | ||
| hasPlanItem ? coveredPaths : undefined, | ||
| hasPlanItem ? idMap : undefined, | ||
| planIntegrityWarnings |
Comment on lines
+373
to
+382
| testSuites.push( | ||
| readSuiteDirectory( | ||
| fullPath, | ||
| entry.name, | ||
| projectPath, | ||
| 0, | ||
| hasPlanItem ? coveredPaths : undefined, | ||
| hasPlanItem ? idMap : undefined, | ||
| planIntegrityWarnings | ||
| ) |
Comment on lines
68
to
+71
| const coverage = { | ||
| ...coverageRest, | ||
| uncovered_test_cases: uncovered_shown, | ||
| ...(uncovered_truncated | ||
| ? { uncovered_truncated: true, uncovered_total: uncovered_test_cases.length } | ||
| : {}), | ||
| ...(uncovered_truncated ? { uncovered_truncated: true, uncovered_total: uncovered_test_cases.length } : {}), |
Comment on lines
11
to
+17
| Available tools: | ||
|
|
||
| Project & inspection: | ||
| - provar.project.inspect — inspect project folder inventory | ||
| - provar.project.validate — validate full project from disk: coverage, quality scores | ||
|
|
||
| Page Object: | ||
| - provar.pageobject.generate — generate a Java Page Object skeleton | ||
| - provar.pageobject.validate — validate Page Object quality and naming | ||
|
|
||
| Test Case: | ||
| - provar.testcase.generate — generate an XML test case skeleton | ||
| - provar.testcase.validate — validate test case XML (validity + best-practices scores) | ||
|
|
||
| Test Suite / Plan: | ||
| - provar.testsuite.validate — validate test suite hierarchy | ||
| - provar.testplan.validate — validate test plan metadata completeness | ||
| - provar.testplan.create-suite — create a test suite under a plan | ||
| - provar.testplan.add-instance — add a test instance to a plan | ||
| - provar.testplan.remove-instance — remove a test instance from a plan | ||
|
|
||
| Properties files: | ||
| - provar.properties.read — read a Provar properties file | ||
| - provar.properties.set — set a key in a Provar properties file | ||
| - provar.properties.validate — validate a properties file structure | ||
| - provar.properties.generate — generate a properties file skeleton | ||
|
|
||
| Quality Hub (sf provar quality-hub wrappers): | ||
| - provar.qualityhub.connect — connect to a Quality Hub org | ||
| - provar.qualityhub.display — display connected org info | ||
| - provar.qualityhub.testrun — trigger a Quality Hub test run | ||
| - provar.qualityhub.testrun.report — poll test run status | ||
| - provar.qualityhub.testrun.abort — abort a running test run | ||
| - provar.qualityhub.testcase.retrieve — retrieve test case results | ||
| - provar.qualityhub.defect.create — create defects for failed test executions | ||
|
|
||
| Automation (sf provar automation wrappers): | ||
| - provar.automation.setup — set up the Provar Automation runtime | ||
| - provar.automation.metadata.download — download Salesforce metadata | ||
| - provar.automation.compile — compile Provar test assets | ||
| - provar.automation.testrun — run Provar tests | ||
| - provar.automation.config.load — load a Provar configuration | ||
|
|
||
| ANT build: | ||
| - provar.ant.generate — generate an ANT build.xml | ||
| - provar.ant.validate — validate an ANT build.xml | ||
|
|
||
| Test result analysis: | ||
| - provar.testrun.rca — root cause analysis on a test result | ||
| - provar.testrun.report.locate — locate a test result report | ||
| Project & inspection: | ||
|
|
||
| - provar_project_inspect — inspect project folder inventory | ||
| - provar_project_validate — validate full project from disk: coverage, quality scores | ||
| - provar_connection_list — list connections and named environments from the project |
Comment on lines
+363
to
+376
| | `provardx_ping` | Sanity check — verifies the server is running | | ||
| | `provar_project_inspect` | Inventory project artefacts and surface coverage gaps | | ||
| | `provar_project_validate` | Full project quality validation from disk | | ||
| | `provar_pageobject_generate` | Generate a Java Page Object skeleton | | ||
| | `provar_pageobject_validate` | Validate Page Object quality (30+ rules) | | ||
| | `provar_testcase_generate` | Generate an XML test case skeleton | | ||
| | `provar_testcase_validate` | Validate test case XML (schema + best-practices scores) | | ||
| | `provar_testsuite_validate` | Validate a test suite hierarchy | | ||
| | `provar_testplan_validate` | Validate a test plan with metadata completeness checks | | ||
| | `provar_testplan_add-instance` | Wire a test case into a plan suite | | ||
| | `provar_testplan_create-suite` | Create a new test suite inside a plan | | ||
| | `provar_testplan_remove-instance` | Remove a test instance from a plan suite | | ||
| | `provar_properties_generate` | Generate a `provardx-properties.json` from the standard template | | ||
| | `provar_properties_read` | Read and parse a `provardx-properties.json` | |
Comment on lines
+585
to
+597
| | Run configuration | `provar_properties_generate`, `provar_properties_set`, `provar_automation_config_load` | | ||
| | Test execution | `provar_automation_testrun`, `provar_qualityhub_testrun`, `provar_testrun_report_locate` | | ||
| | Failure analysis | `provar_testrun_rca`, `provar_qualityhub_defect_create` | | ||
| | Plan management | `provar_testplan_add-instance`, `provar_testplan_create-suite`, `provar_testplan_remove-instance` | |
Comment on lines
+414
to
+417
| for (const entry of entries) { | ||
| if (!entry.isDirectory() || entry.name.startsWith('.') || entry.name === 'node_modules') continue; | ||
| const planPath = path.join(plansDir, entry.name); | ||
| plans.push(readPlanDirectory(planPath, entry.name, projectPath, coveredPaths, idMap)); | ||
| plans.push(readPlanDirectory(planPath, entry.name, projectPath, coveredPaths, idMap, planIntegrityWarnings)); |
…egisterTool() with human-readable titles
RCA: server.tool() is deprecated in MCP SDK v1.8+; tools lacked human-readable labels in the Claude Code /mcp picker, displaying raw underscore names instead of descriptive titles
Fix: migrated all 41 tool registrations to server.registerTool(name, {title, description, inputSchema}, handler) with approved title strings; added registerTool() method to all 17 MockMcpServer test classes and the CapturingServer in testCaseValidate tests
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…develop merge conflicts RCA: Out-of-bounds .testinstance paths could bypass coverage via idMap; suites without .planitem were still scored; slim response omitted plan_integrity_warnings; test files referenced old dot-notation tool name. Fix: Null testCaseId alongside testCasePath for OOB instances; skip suites and plans missing .planitem from hierarchy; expose plan_integrity_warnings in slim response; update 4 test calls provar.project.validate → provar_project_validate; fix testCaseGenerate to use literal id="1"; add missing tools (provar_connection_list, provar_testcase_step_edit, provar_testplan_create, provar_qualityhub_examples_retrieve, NitroX family) to public docs and course summary; resolve merge conflicts across 11 files. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
…r Copilot
RCA: All 41 MCP tool names used dot-notation (provar.xxx.yyy) which violates the [a-z0-9_-] constraint enforced by GitHub Copilot and other MCP clients.
Fix: Rename to underscore form across source, tests, scripts, and docs; restore 4 correctness fixes from pre-commit review; bump version to 1.5.0-beta.15.