Skip to content

feat(server): MCP endpoints API consolidation#2829

Merged
anubhav756 merged 2 commits intomainfrom
anubhav-api-consolidation
Mar 31, 2026
Merged

feat(server): MCP endpoints API consolidation#2829
anubhav756 merged 2 commits intomainfrom
anubhav-api-consolidation

Conversation

@anubhav756
Copy link
Copy Markdown
Contributor

@anubhav756 anubhav756 commented Mar 24, 2026

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.

Before After
image image

Strategy

While the legacy integration tests continue to run over the legacy /api endpoints, 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-api flag 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

  • Updates to internal/server/server.go to support dynamic execution and flag-controlled initialization.
  • Frontend files updated (loadTools.js and runTool.js) to streamline how tools are loaded and invoked in the UI, aligning it with the upcoming native MCP transition.

Checklist

  • Ensure the tests and linter pass
  • Manually verified functionality of Toolbox UI

@anubhav756 anubhav756 self-assigned this Mar 24, 2026
@anubhav756 anubhav756 added the release candidate Use label to signal PR should be included in the next release. label Mar 24, 2026
@gemini-code-assist
Copy link
Copy Markdown
Contributor

Summary of Changes

Hello, 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 /api endpoints in favor of a unified /mcp JSON-RPC interface. This change streamlines the server's API surface, enhances maintainability, and ensures a consistent interaction model for clients. To guide users through this transition, legacy API calls now receive a 410 Gone response, clearly indicating the new endpoint. The accompanying frontend updates ensure seamless integration with the new JSON-RPC standard.

Highlights

  • Native API Endpoints Removed: The legacy /api endpoints for toolset and tool operations have been completely removed from the server.
  • Consolidation on MCP: All API interactions are now consolidated onto the /mcp JSON-RPC endpoint, standardizing the communication protocol.
  • Legacy API Redirection: Requests to the old /api/* paths now receive an HTTP 410 Gone status with a message directing users to the /mcp endpoint.
  • Frontend Updates: The JavaScript frontend has been updated to exclusively use the new /mcp JSON-RPC format for listing tools, fetching details, and invoking tools.
  • Error Handling and Testing Refinements: Error response structures were moved to the MCP module, and new Go types were introduced to facilitate robust testing of MCP interactions.
Using Gemini Code Assist

The 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 /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands on the current page.

Feature Command Description
Code Review /gemini review Performs a code review for the current pull request in its current state.
Pull Request Summary /gemini summary Provides a summary of the current pull request in its current state.
Comment @gemini-code-assist Responds in comments when explicitly tagged, both in pull request comments and review comments.
Help /gemini help Displays a list of available commands.

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 .gemini/ folder in the base of the repository. Detailed instructions can be found here.

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

  1. Review the Privacy Notices, Generative AI Prohibited Use Policy, Terms of Service, and learn how to configure Gemini Code Assist in GitHub here. Gemini can make mistakes, so double check it and use code with caution.

Copy link
Copy Markdown
Contributor

@gemini-code-assist gemini-code-assist bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.

@anubhav756 anubhav756 marked this pull request as ready for review March 24, 2026 17:59
@anubhav756 anubhav756 requested a review from a team as a code owner March 24, 2026 17:59
@anubhav756 anubhav756 changed the title feat!: completely remove native api endpoints and consolidate on mcp feat!: consolidate on /mcp endpoints and remove native /api endpoints Mar 25, 2026
@anubhav756 anubhav756 force-pushed the anubhav-api-consolidation branch 2 times, most recently from d8817ea to 163bba2 Compare March 25, 2026 06:15
@anubhav756 anubhav756 changed the title feat!: consolidate on /mcp endpoints and remove native /api endpoints feat(main)!: consolidate on /mcp endpoints and remove native /api endpoints Mar 25, 2026
@Yuan325 Yuan325 removed the release candidate Use label to signal PR should be included in the next release. label Mar 26, 2026
@anubhav756 anubhav756 force-pushed the anubhav-api-consolidation branch from 163bba2 to cdcac23 Compare March 28, 2026 16:45
@anubhav756 anubhav756 force-pushed the anubhav-api-consolidation branch 2 times, most recently from 5fcb79a to c5fc0aa Compare March 30, 2026 12:40
@anubhav756 anubhav756 changed the title feat(main)!: consolidate on /mcp endpoints and remove native /api endpoints feat(server): MCP endpoints API consolidation Mar 30, 2026
@anubhav756 anubhav756 force-pushed the anubhav-api-consolidation branch from c5fc0aa to f8592e5 Compare March 30, 2026 13:50
Copy link
Copy Markdown
Contributor

@Yuan325 Yuan325 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you!

@anubhav756 anubhav756 force-pushed the anubhav-api-consolidation branch from 5c22f0e to 0d44d89 Compare March 30, 2026 21:42
@anubhav756 anubhav756 merged commit c3059c2 into main Mar 31, 2026
23 of 24 checks passed
@anubhav756 anubhav756 deleted the anubhav-api-consolidation branch March 31, 2026 10:37
@github-actions
Copy link
Copy Markdown
Contributor

🧨 Preview deployments removed.

Cloudflare Pages environments for pr-2829 have been deleted.

Yuan325 added a commit that referenced this pull request Apr 8, 2026
🤖 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>
github-actions bot pushed a commit that referenced this pull request Apr 8, 2026
🤖 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
github-actions bot pushed a commit to renovate-bot/googleapis-_-genai-toolbox that referenced this pull request Apr 8, 2026
🤖 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
github-actions bot pushed a commit to Jaleel-zhu/genai-toolbox that referenced this pull request Apr 8, 2026
🤖 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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants