feat(server): MCP endpoints API consolidation#2829
Conversation
Summary of ChangesHello, I'm Gemini Code Assist1! I'm currently reviewing this pull request and will post my feedback shortly. In the meantime, here's a summary to help you and other reviewers quickly get up to speed! This pull request represents a significant architectural shift, deprecating and removing all native Highlights
Using Gemini Code AssistThe full guide for Gemini Code Assist can be found on our documentation page, here are some quick tips. Invoking Gemini You can request assistance from Gemini at any point by creating a comment using either
Customization To customize Gemini Code Assist for GitHub experience, repository maintainers can create a configuration file and/or provide a custom code review style guide (such as PEP-8 for Python) by creating and adding files to a Limitations & Feedback Gemini Code Assist may make mistakes. Please leave feedback on any instances where its feedback is incorrect or counter productive. You can react with 👍 and 👎 on @gemini-code-assist comments. If you're interested in giving your feedback about your experience with Gemini Code Assist for GitHub and other Google products, sign up here. Footnotes
|
There was a problem hiding this comment.
Code Review
This pull request deprecates and removes the legacy /api native endpoints, transitioning the entire system to use the /mcp JSON-RPC endpoint for tool discovery and invocation. The /api routes now return a 410 Gone status with a message guiding users to the /mcp endpoint. Backend error handling logic previously associated with the /api endpoints has been refactored and moved to mcp.go for reuse. The frontend JavaScript (loadTools.js and runTool.js) has been updated to send JSON-RPC requests to /mcp for listing and invoking tools, and to correctly parse the new MCP response format. Tool details are now fetched once and cached client-side, improving performance by reducing redundant network calls. New Go types for MCP requests and responses have been introduced in tests/mcp_types.go to support testing the new MCP-based interactions. No specific feedback was provided in the review comments.
d8817ea to
163bba2
Compare
163bba2 to
cdcac23
Compare
5fcb79a to
c5fc0aa
Compare
c5fc0aa to
f8592e5
Compare
5c22f0e to
0d44d89
Compare
|
🧨 Preview deployments removed. Cloudflare Pages environments for |
🤖 I have created a release *beep* *boop* --- ## [0.32.0](v0.31.0...v0.32.0) (2026-04-08) ### ⚠ BREAKING CHANGES * update repo name ([#2968](#2968)) ### Features * Add MCP tool annotations to all remaining tools ([#2221](#2221)) ([ea09db9](ea09db9)) * **bigquery:** Add conversational analytics tools for Data Agents ([#2517](#2517)) ([2490a4b](2490a4b)) * **embeddingModel:** Add Backend API selection fields ([#2592](#2592)) ([912aa9e](912aa9e)) * **skills:** Add Claude Code support to generated scripts ([#2966](#2966)) ([a1609e1](a1609e1)) * **skills:** Add codex user agent ([#2973](#2973)) ([070e939](070e939)) * **skills:** Tool invocation via npx ([#2916](#2916)) ([377dc5b](377dc5b)) * **sources/singlestore:** Add ConnectionParams to SingleStore Config ([#2555](#2555)) ([73e2a8c](73e2a8c)) * **tool/dataplex-lookup-context:** Relax project constraint and enforce location ([#2952](#2952)) ([7ebfdf1](7ebfdf1)) * **tools/looker:** Looker agent management from MCP ([#2830](#2830)) ([649d4ad](649d4ad)) * **ui:** Update to use `/mcp` endpoint ([#2829](#2829)) ([c3059c2](c3059c2)) ### Bug Fixes * **bigquery:** Add impersonateServiceAccount to prebuilt config ([#2770](#2770)) ([9c3a748](9c3a748)) * **quickstart:** Robust tool lookup and modernize dependencies in Python samples ([#2863](#2863)) ([4c0845d](4c0845d)) * **skills:** Fix skill generation template ([#2914](#2914)) ([a01a15e](a01a15e)) * **skills:** Prevent empty strings overriding optional env vars in node scripts ([#2963](#2963)) ([c52adeb](c52adeb)) * **tests/bigquery:** Implement uuid-based isolation and reliable resource cleanup ([#2547](#2547)) ([479d842](479d842)) * **tests/Bigtable:** Implement uuid-based isolation and reliable resource cleanup ([#2880](#2880)) ([a769f15](a769f15)) * Update error for ConvertConfig function ([#2993](#2993)) ([62bdabb](62bdabb)) ### Code Refactoring * Update repo name ([#2968](#2968)) ([3aae809](3aae809)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com>
🤖 I have created a release *beep* *boop* --- ## [0.32.0](v0.31.0...v0.32.0) (2026-04-08) ### ⚠ BREAKING CHANGES * update repo name ([#2968](#2968)) ### Features * Add MCP tool annotations to all remaining tools ([#2221](#2221)) ([ea09db9](ea09db9)) * **bigquery:** Add conversational analytics tools for Data Agents ([#2517](#2517)) ([2490a4b](2490a4b)) * **embeddingModel:** Add Backend API selection fields ([#2592](#2592)) ([912aa9e](912aa9e)) * **skills:** Add Claude Code support to generated scripts ([#2966](#2966)) ([a1609e1](a1609e1)) * **skills:** Add codex user agent ([#2973](#2973)) ([070e939](070e939)) * **skills:** Tool invocation via npx ([#2916](#2916)) ([377dc5b](377dc5b)) * **sources/singlestore:** Add ConnectionParams to SingleStore Config ([#2555](#2555)) ([73e2a8c](73e2a8c)) * **tool/dataplex-lookup-context:** Relax project constraint and enforce location ([#2952](#2952)) ([7ebfdf1](7ebfdf1)) * **tools/looker:** Looker agent management from MCP ([#2830](#2830)) ([649d4ad](649d4ad)) * **ui:** Update to use `/mcp` endpoint ([#2829](#2829)) ([c3059c2](c3059c2)) ### Bug Fixes * **bigquery:** Add impersonateServiceAccount to prebuilt config ([#2770](#2770)) ([9c3a748](9c3a748)) * **quickstart:** Robust tool lookup and modernize dependencies in Python samples ([#2863](#2863)) ([4c0845d](4c0845d)) * **skills:** Fix skill generation template ([#2914](#2914)) ([a01a15e](a01a15e)) * **skills:** Prevent empty strings overriding optional env vars in node scripts ([#2963](#2963)) ([c52adeb](c52adeb)) * **tests/bigquery:** Implement uuid-based isolation and reliable resource cleanup ([#2547](#2547)) ([479d842](479d842)) * **tests/Bigtable:** Implement uuid-based isolation and reliable resource cleanup ([#2880](#2880)) ([a769f15](a769f15)) * Update error for ConvertConfig function ([#2993](#2993)) ([62bdabb](62bdabb)) ### Code Refactoring * Update repo name ([#2968](#2968)) ([3aae809](3aae809)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> b9ae1c6
🤖 I have created a release *beep* *boop* --- ## [0.32.0](googleapis/mcp-toolbox@v0.31.0...v0.32.0) (2026-04-08) ### ⚠ BREAKING CHANGES * update repo name ([googleapis#2968](googleapis#2968)) ### Features * Add MCP tool annotations to all remaining tools ([googleapis#2221](googleapis#2221)) ([ea09db9](googleapis@ea09db9)) * **bigquery:** Add conversational analytics tools for Data Agents ([googleapis#2517](googleapis#2517)) ([2490a4b](googleapis@2490a4b)) * **embeddingModel:** Add Backend API selection fields ([googleapis#2592](googleapis#2592)) ([912aa9e](googleapis@912aa9e)) * **skills:** Add Claude Code support to generated scripts ([googleapis#2966](googleapis#2966)) ([a1609e1](googleapis@a1609e1)) * **skills:** Add codex user agent ([googleapis#2973](googleapis#2973)) ([070e939](googleapis@070e939)) * **skills:** Tool invocation via npx ([googleapis#2916](googleapis#2916)) ([377dc5b](googleapis@377dc5b)) * **sources/singlestore:** Add ConnectionParams to SingleStore Config ([googleapis#2555](googleapis#2555)) ([73e2a8c](googleapis@73e2a8c)) * **tool/dataplex-lookup-context:** Relax project constraint and enforce location ([googleapis#2952](googleapis#2952)) ([7ebfdf1](googleapis@7ebfdf1)) * **tools/looker:** Looker agent management from MCP ([googleapis#2830](googleapis#2830)) ([649d4ad](googleapis@649d4ad)) * **ui:** Update to use `/mcp` endpoint ([googleapis#2829](googleapis#2829)) ([c3059c2](googleapis@c3059c2)) ### Bug Fixes * **bigquery:** Add impersonateServiceAccount to prebuilt config ([googleapis#2770](googleapis#2770)) ([9c3a748](googleapis@9c3a748)) * **quickstart:** Robust tool lookup and modernize dependencies in Python samples ([googleapis#2863](googleapis#2863)) ([4c0845d](googleapis@4c0845d)) * **skills:** Fix skill generation template ([googleapis#2914](googleapis#2914)) ([a01a15e](googleapis@a01a15e)) * **skills:** Prevent empty strings overriding optional env vars in node scripts ([googleapis#2963](googleapis#2963)) ([c52adeb](googleapis@c52adeb)) * **tests/bigquery:** Implement uuid-based isolation and reliable resource cleanup ([googleapis#2547](googleapis#2547)) ([479d842](googleapis@479d842)) * **tests/Bigtable:** Implement uuid-based isolation and reliable resource cleanup ([googleapis#2880](googleapis#2880)) ([a769f15](googleapis@a769f15)) * Update error for ConvertConfig function ([googleapis#2993](googleapis#2993)) ([62bdabb](googleapis@62bdabb)) ### Code Refactoring * Update repo name ([googleapis#2968](googleapis#2968)) ([3aae809](googleapis@3aae809)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> b9ae1c6
🤖 I have created a release *beep* *boop* --- ## [0.32.0](googleapis/mcp-toolbox@v0.31.0...v0.32.0) (2026-04-08) ### ⚠ BREAKING CHANGES * update repo name ([googleapis#2968](googleapis#2968)) ### Features * Add MCP tool annotations to all remaining tools ([googleapis#2221](googleapis#2221)) ([ea09db9](googleapis@ea09db9)) * **bigquery:** Add conversational analytics tools for Data Agents ([googleapis#2517](googleapis#2517)) ([2490a4b](googleapis@2490a4b)) * **embeddingModel:** Add Backend API selection fields ([googleapis#2592](googleapis#2592)) ([912aa9e](googleapis@912aa9e)) * **skills:** Add Claude Code support to generated scripts ([googleapis#2966](googleapis#2966)) ([a1609e1](googleapis@a1609e1)) * **skills:** Add codex user agent ([googleapis#2973](googleapis#2973)) ([070e939](googleapis@070e939)) * **skills:** Tool invocation via npx ([googleapis#2916](googleapis#2916)) ([377dc5b](googleapis@377dc5b)) * **sources/singlestore:** Add ConnectionParams to SingleStore Config ([googleapis#2555](googleapis#2555)) ([73e2a8c](googleapis@73e2a8c)) * **tool/dataplex-lookup-context:** Relax project constraint and enforce location ([googleapis#2952](googleapis#2952)) ([7ebfdf1](googleapis@7ebfdf1)) * **tools/looker:** Looker agent management from MCP ([googleapis#2830](googleapis#2830)) ([649d4ad](googleapis@649d4ad)) * **ui:** Update to use `/mcp` endpoint ([googleapis#2829](googleapis#2829)) ([c3059c2](googleapis@c3059c2)) ### Bug Fixes * **bigquery:** Add impersonateServiceAccount to prebuilt config ([googleapis#2770](googleapis#2770)) ([9c3a748](googleapis@9c3a748)) * **quickstart:** Robust tool lookup and modernize dependencies in Python samples ([googleapis#2863](googleapis#2863)) ([4c0845d](googleapis@4c0845d)) * **skills:** Fix skill generation template ([googleapis#2914](googleapis#2914)) ([a01a15e](googleapis@a01a15e)) * **skills:** Prevent empty strings overriding optional env vars in node scripts ([googleapis#2963](googleapis#2963)) ([c52adeb](googleapis@c52adeb)) * **tests/bigquery:** Implement uuid-based isolation and reliable resource cleanup ([googleapis#2547](googleapis#2547)) ([479d842](googleapis@479d842)) * **tests/Bigtable:** Implement uuid-based isolation and reliable resource cleanup ([googleapis#2880](googleapis#2880)) ([a769f15](googleapis@a769f15)) * Update error for ConvertConfig function ([googleapis#2993](googleapis#2993)) ([62bdabb](googleapis@62bdabb)) ### Code Refactoring * Update repo name ([googleapis#2968](googleapis#2968)) ([3aae809](googleapis@3aae809)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). --------- Co-authored-by: release-please[bot] <55107282+release-please[bot]@users.noreply.github.com> Co-authored-by: Yuan Teoh <45984206+Yuan325@users.noreply.github.com> b9ae1c6
Overview
This PR serves as the foundational layer that will eventually merge all upcoming PRs for the new test harness and new MCP integration tests for multiple databases.
Strategy
While the legacy integration tests continue to run over the legacy
/apiendpoints, we are introducing the new native MCP JSON-RPC harness in parallel. This allows us to verify both pathways side-by-side without breaking existing CI coverage.To support this, we utilize the
--enable-apiflag to control whether the server initializes the legacy API handlers or runs in MCP-only mode. This ensures that the new tests can accurately verify the behavior of the server when running in its final intended configuration.Changes
internal/server/server.goto support dynamic execution and flag-controlled initialization.loadTools.jsandrunTool.js) to streamline how tools are loaded and invoked in the UI, aligning it with the upcoming native MCP transition.Checklist