You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Sub-issue of #207 — Phase 2 of 3: Replace JavaScript client with Go binary.
Depends on: #216 (Phase 1 — documentation updates)
Reference branch: origin/dd/ql-mcp-client/1
Summary
Completely replace the JavaScript-based ql-mcp-client.js and its supporting library (client/src/) with an equivalent Go-based gh-ql-mcp-client binary. This phase focuses on the core CLI framework and integration test runner — no Code Scanning or SARIF-specific features are added until Phase 3.
Scope
Remove JavaScript client
Delete client/src/ — Remove ql-mcp-client.js and all client/src/lib/*.js modules:
Context
Sub-issue of #207 — Phase 2 of 3: Replace JavaScript client with Go binary.
Depends on: #216 (Phase 1 — documentation updates)
Reference branch:
origin/dd/ql-mcp-client/1Summary
Completely replace the JavaScript-based
ql-mcp-client.jsand its supporting library (client/src/) with an equivalent Go-basedgh-ql-mcp-clientbinary. This phase focuses on the core CLI framework and integration test runner — no Code Scanning or SARIF-specific features are added until Phase 3.Scope
Remove JavaScript client
client/src/— Removeql-mcp-client.jsand allclient/src/lib/*.jsmodules:aggregate-query-metadata.js,cli-parser.js,command-handler.js,file-utils.js,integration-test-runner.js,mcp-client-utils.js,mcp-test-suite.js,monitoring-integration-test-runner.js,process-query-metadata.js,queries-filter-metadata.js,resolve-all-queries.js,server-manager.js,test-logger.js,validate-source-root.jscommands/basic-commands.js,commands/metadata-commands.js,commands/query-commands.jsclient/package.json— Remove npm workspace package for clientclient/eslint.config.mjs— Remove JS-specific linting configclient/.gitignore— Replace JS/npm ignores with Go binary and build artifact ignorespackage-lock.json— Regenerate after removingclient/from npm workspacesGo module and CLI framework
client/go.mod/client/go.sum— Initialize Go modulegithub.com/advanced-security/codeql-development-mcp-server/clientwith dependencies:github.com/spf13/cobra— CLI frameworkgithub.com/mark3labs/mcp-go— MCP client SDKclient/main.go— Entry point, invokecmd.Execute()client/cmd/root.go— Root Cobra command with--server-command,--log-directory,--verboseflags, version infoclient/cmd/root_test.go— Unit tests for root command flag parsing and defaultsclient/cmd/helpers.go— Shared CLI helper utilitiesclient/cmd/helpers_test.go— Unit tests for helpersclient/Makefile— Build targets:build,test,lint,clean,integration-testMCP client library
client/internal/mcp/client.go— Go MCP client wrapper: connect via stdio transport, call tools, list tools/prompts/resources, handle JSON-RPCclient/internal/mcp/client_test.go— Unit tests for MCP clientIntegration test runner (Go port)
client/internal/testing/runner.go— Go port of JSintegration-test-runner.js:client/integration-tests/primitives/test-config.jsonto extract tool name, arguments, assertionsskipIf/requireAnnotationToolsconfig flagsclient/internal/testing/runner_test.go— Unit tests for test runnerclient/internal/testing/params.go— Test parameter parsing and substitution logicclient/internal/testing/params_test.go— Unit tests for parameter handlingclient/cmd/integration_tests.go—integration-tests runCobra subcommand wiringIntegration test fixture adjustments
test-config.jsonfiles referencingcustom_log_directory— adjust paths for Go binary locationBuild infrastructure
client/scripts/run-integration-tests.sh— Update to build Go binary and run./gh-ql-mcp-client integration-tests runpackage.json— Ensurenpm run build-and-testinvokesmake -C client build testCHANGELOG.md
[Unreleased]section with Phase 1 and Phase 2 changes using themaintain-changelogskill:Acceptance criteria
client/src/directory and all JS files are fully removedclient/is no longer an npm workspace — removed from rootpackage.jsonworkspaces arraygo build ./...succeeds inclient/and producesgh-ql-mcp-clientbinarygo test ./...passes all Go unit tests inclient/client/integration-tests/primitives/tools/pass with the Go test runnernpm run build-and-testpasses end-to-end (server + extension + client via Make)CHANGELOG.md[Unreleased]section documents Phase 1 and Phase 2 changesFiles changed (reference:
origin/dd/ql-mcp-client/1)Added
Removed
Modified