Conversation
Summary of ChangesHello @Yuan325, 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 significantly enhances the Highlights
Changelog
Activity
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. You can also get AI-powered code generation, chat, as well as code reviews directly in the IDE at no cost with the Gemini Code Assist IDE Extension. Footnotes
|
3f04423 to
4517fdc
Compare
There was a problem hiding this comment.
Code Review
This pull request introduces a new serve subcommand and refactors command-line flag definitions for better modularity, enhancing flexibility by allowing the server to start without tool configurations. A security audit identified a medium-severity path traversal vulnerability in the skills-generate command, potentially allowing a local user to write files to arbitrary locations. Furthermore, there's an opportunity to improve maintainability by reducing code duplication between the new serve command's implementation and the root command's run function, and minor issues were noted in tests, such as a leftover debug print and an inconsistent test case.
5275b6a to
ba48dc5
Compare
de1063c to
0c947a4
Compare
Co-authored-by: Averi Kitsch <akitsch@google.com>
🤖 I have created a release *beep* *boop* --- ## [0.30.0](v0.29.0...v0.30.0) (2026-03-20) ### Features * **cli:** Add migrate subcommand ([#2679](#2679)) ([12171f7](12171f7)) * **cli:** Add serve subcommand ([#2550](#2550)) ([1e2c7c7](1e2c7c7)) * **skill:** One skill per toolset ([#2733](#2733)) ([5b85c65](5b85c65)) * **source/oracledb:** Add Oracle DB for MCP tools and configurations, updated tools and documentation ([#2625](#2625)) ([e350fc7](e350fc7)) * **tools/looker:** Support git_branch tools for looker. ([#2718](#2718)) ([70ed8a0](70ed8a0)) * **tools/dataplex-search-entries:** Add `scope` support to search_entries tool ([#2740](#2740)) ([10af468](10af468)) ### Bug Fixes * **cloudloggingadmin:** Increase log injesting time and add auth test ([#2772](#2772)) ([50b4457](50b4457)) * **oracle:** Normalize encoded proxy usernames in go-ora DSN ([#2469](#2469)) ([b1333cd](b1333cd)) * **postgres:** Update execute-sql tool to avoid multi-statements parameter ([#2707](#2707)) ([58bc772](58bc772)) * **skills:** Improve flag validation and silence unit test output ([#2759](#2759)) ([f3da6aa](f3da6aa)) * **test:** Address flaky healthcare integration test run ([#2742](#2742)) ([9590821](9590821)) ### Reverts * **ci:** Implement conditional sharding logic in integration tests ([#2763](#2763)) ([1528d7c](1528d7c)) --- 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.30.0](v0.29.0...v0.30.0) (2026-03-20) ### Features * **cli:** Add migrate subcommand ([#2679](#2679)) ([12171f7](12171f7)) * **cli:** Add serve subcommand ([#2550](#2550)) ([1e2c7c7](1e2c7c7)) * **skill:** One skill per toolset ([#2733](#2733)) ([5b85c65](5b85c65)) * **source/oracledb:** Add Oracle DB for MCP tools and configurations, updated tools and documentation ([#2625](#2625)) ([e350fc7](e350fc7)) * **tools/looker:** Support git_branch tools for looker. ([#2718](#2718)) ([70ed8a0](70ed8a0)) * **tools/dataplex-search-entries:** Add `scope` support to search_entries tool ([#2740](#2740)) ([10af468](10af468)) ### Bug Fixes * **cloudloggingadmin:** Increase log injesting time and add auth test ([#2772](#2772)) ([50b4457](50b4457)) * **oracle:** Normalize encoded proxy usernames in go-ora DSN ([#2469](#2469)) ([b1333cd](b1333cd)) * **postgres:** Update execute-sql tool to avoid multi-statements parameter ([#2707](#2707)) ([58bc772](58bc772)) * **skills:** Improve flag validation and silence unit test output ([#2759](#2759)) ([f3da6aa](f3da6aa)) * **test:** Address flaky healthcare integration test run ([#2742](#2742)) ([9590821](9590821)) ### Reverts * **ci:** Implement conditional sharding logic in integration tests ([#2763](#2763)) ([1528d7c](1528d7c)) --- 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> 5ef1c0d
🤖 I have created a release *beep* *boop* --- ## [0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0) (2026-03-20) ### Features * **cli:** Add migrate subcommand ([googleapis#2679](googleapis#2679)) ([12171f7](googleapis@12171f7)) * **cli:** Add serve subcommand ([googleapis#2550](googleapis#2550)) ([1e2c7c7](googleapis@1e2c7c7)) * **skill:** One skill per toolset ([googleapis#2733](googleapis#2733)) ([5b85c65](googleapis@5b85c65)) * **source/oracledb:** Add Oracle DB for MCP tools and configurations, updated tools and documentation ([googleapis#2625](googleapis#2625)) ([e350fc7](googleapis@e350fc7)) * **tools/looker:** Support git_branch tools for looker. ([googleapis#2718](googleapis#2718)) ([70ed8a0](googleapis@70ed8a0)) * **tools/dataplex-search-entries:** Add `scope` support to search_entries tool ([googleapis#2740](googleapis#2740)) ([10af468](googleapis@10af468)) ### Bug Fixes * **cloudloggingadmin:** Increase log injesting time and add auth test ([googleapis#2772](googleapis#2772)) ([50b4457](googleapis@50b4457)) * **oracle:** Normalize encoded proxy usernames in go-ora DSN ([googleapis#2469](googleapis#2469)) ([b1333cd](googleapis@b1333cd)) * **postgres:** Update execute-sql tool to avoid multi-statements parameter ([googleapis#2707](googleapis#2707)) ([58bc772](googleapis@58bc772)) * **skills:** Improve flag validation and silence unit test output ([googleapis#2759](googleapis#2759)) ([f3da6aa](googleapis@f3da6aa)) * **test:** Address flaky healthcare integration test run ([googleapis#2742](googleapis#2742)) ([9590821](googleapis@9590821)) ### Reverts * **ci:** Implement conditional sharding logic in integration tests ([googleapis#2763](googleapis#2763)) ([1528d7c](googleapis@1528d7c)) --- 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> 5ef1c0d
🤖 I have created a release *beep* *boop* --- ## [0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0) (2026-03-20) ### Features * **cli:** Add migrate subcommand ([googleapis#2679](googleapis#2679)) ([12171f7](googleapis@12171f7)) * **cli:** Add serve subcommand ([googleapis#2550](googleapis#2550)) ([1e2c7c7](googleapis@1e2c7c7)) * **skill:** One skill per toolset ([googleapis#2733](googleapis#2733)) ([5b85c65](googleapis@5b85c65)) * **source/oracledb:** Add Oracle DB for MCP tools and configurations, updated tools and documentation ([googleapis#2625](googleapis#2625)) ([e350fc7](googleapis@e350fc7)) * **tools/looker:** Support git_branch tools for looker. ([googleapis#2718](googleapis#2718)) ([70ed8a0](googleapis@70ed8a0)) * **tools/dataplex-search-entries:** Add `scope` support to search_entries tool ([googleapis#2740](googleapis#2740)) ([10af468](googleapis@10af468)) ### Bug Fixes * **cloudloggingadmin:** Increase log injesting time and add auth test ([googleapis#2772](googleapis#2772)) ([50b4457](googleapis@50b4457)) * **oracle:** Normalize encoded proxy usernames in go-ora DSN ([googleapis#2469](googleapis#2469)) ([b1333cd](googleapis@b1333cd)) * **postgres:** Update execute-sql tool to avoid multi-statements parameter ([googleapis#2707](googleapis#2707)) ([58bc772](googleapis@58bc772)) * **skills:** Improve flag validation and silence unit test output ([googleapis#2759](googleapis#2759)) ([f3da6aa](googleapis@f3da6aa)) * **test:** Address flaky healthcare integration test run ([googleapis#2742](googleapis#2742)) ([9590821](googleapis@9590821)) ### Reverts * **ci:** Implement conditional sharding logic in integration tests ([googleapis#2763](googleapis#2763)) ([1528d7c](googleapis@1528d7c)) --- 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> 5ef1c0d
🤖 I have created a release *beep* *boop* --- ## [0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0) (2026-03-20) ### Features * **cli:** Add migrate subcommand ([googleapis#2679](googleapis#2679)) ([12171f7](googleapis@12171f7)) * **cli:** Add serve subcommand ([googleapis#2550](googleapis#2550)) ([1e2c7c7](googleapis@1e2c7c7)) * **skill:** One skill per toolset ([googleapis#2733](googleapis#2733)) ([5b85c65](googleapis@5b85c65)) * **source/oracledb:** Add Oracle DB for MCP tools and configurations, updated tools and documentation ([googleapis#2625](googleapis#2625)) ([e350fc7](googleapis@e350fc7)) * **tools/looker:** Support git_branch tools for looker. ([googleapis#2718](googleapis#2718)) ([70ed8a0](googleapis@70ed8a0)) * **tools/dataplex-search-entries:** Add `scope` support to search_entries tool ([googleapis#2740](googleapis#2740)) ([10af468](googleapis@10af468)) ### Bug Fixes * **cloudloggingadmin:** Increase log injesting time and add auth test ([googleapis#2772](googleapis#2772)) ([50b4457](googleapis@50b4457)) * **oracle:** Normalize encoded proxy usernames in go-ora DSN ([googleapis#2469](googleapis#2469)) ([b1333cd](googleapis@b1333cd)) * **postgres:** Update execute-sql tool to avoid multi-statements parameter ([googleapis#2707](googleapis#2707)) ([58bc772](googleapis@58bc772)) * **skills:** Improve flag validation and silence unit test output ([googleapis#2759](googleapis#2759)) ([f3da6aa](googleapis@f3da6aa)) * **test:** Address flaky healthcare integration test run ([googleapis#2742](googleapis#2742)) ([9590821](googleapis@9590821)) ### Reverts * **ci:** Implement conditional sharding logic in integration tests ([googleapis#2763](googleapis#2763)) ([1528d7c](googleapis@1528d7c)) --- 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> 5ef1c0d
🤖 I have created a release *beep* *boop* --- ## [0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0) (2026-03-20) ### Features * **cli:** Add migrate subcommand ([googleapis#2679](googleapis#2679)) ([12171f7](googleapis@12171f7)) * **cli:** Add serve subcommand ([googleapis#2550](googleapis#2550)) ([1e2c7c7](googleapis@1e2c7c7)) * **skill:** One skill per toolset ([googleapis#2733](googleapis#2733)) ([5b85c65](googleapis@5b85c65)) * **source/oracledb:** Add Oracle DB for MCP tools and configurations, updated tools and documentation ([googleapis#2625](googleapis#2625)) ([e350fc7](googleapis@e350fc7)) * **tools/looker:** Support git_branch tools for looker. ([googleapis#2718](googleapis#2718)) ([70ed8a0](googleapis@70ed8a0)) * **tools/dataplex-search-entries:** Add `scope` support to search_entries tool ([googleapis#2740](googleapis#2740)) ([10af468](googleapis@10af468)) ### Bug Fixes * **cloudloggingadmin:** Increase log injesting time and add auth test ([googleapis#2772](googleapis#2772)) ([50b4457](googleapis@50b4457)) * **oracle:** Normalize encoded proxy usernames in go-ora DSN ([googleapis#2469](googleapis#2469)) ([b1333cd](googleapis@b1333cd)) * **postgres:** Update execute-sql tool to avoid multi-statements parameter ([googleapis#2707](googleapis#2707)) ([58bc772](googleapis@58bc772)) * **skills:** Improve flag validation and silence unit test output ([googleapis#2759](googleapis#2759)) ([f3da6aa](googleapis@f3da6aa)) * **test:** Address flaky healthcare integration test run ([googleapis#2742](googleapis#2742)) ([9590821](googleapis@9590821)) ### Reverts * **ci:** Implement conditional sharding logic in integration tests ([googleapis#2763](googleapis#2763)) ([1528d7c](googleapis@1528d7c)) --- 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> 5ef1c0d
🤖 I have created a release *beep* *boop* --- ## [0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0) (2026-03-20) ### Features * **cli:** Add migrate subcommand ([googleapis#2679](googleapis#2679)) ([12171f7](googleapis@12171f7)) * **cli:** Add serve subcommand ([googleapis#2550](googleapis#2550)) ([1e2c7c7](googleapis@1e2c7c7)) * **skill:** One skill per toolset ([googleapis#2733](googleapis#2733)) ([5b85c65](googleapis@5b85c65)) * **source/oracledb:** Add Oracle DB for MCP tools and configurations, updated tools and documentation ([googleapis#2625](googleapis#2625)) ([e350fc7](googleapis@e350fc7)) * **tools/looker:** Support git_branch tools for looker. ([googleapis#2718](googleapis#2718)) ([70ed8a0](googleapis@70ed8a0)) * **tools/dataplex-search-entries:** Add `scope` support to search_entries tool ([googleapis#2740](googleapis#2740)) ([10af468](googleapis@10af468)) ### Bug Fixes * **cloudloggingadmin:** Increase log injesting time and add auth test ([googleapis#2772](googleapis#2772)) ([50b4457](googleapis@50b4457)) * **oracle:** Normalize encoded proxy usernames in go-ora DSN ([googleapis#2469](googleapis#2469)) ([b1333cd](googleapis@b1333cd)) * **postgres:** Update execute-sql tool to avoid multi-statements parameter ([googleapis#2707](googleapis#2707)) ([58bc772](googleapis@58bc772)) * **skills:** Improve flag validation and silence unit test output ([googleapis#2759](googleapis#2759)) ([f3da6aa](googleapis@f3da6aa)) * **test:** Address flaky healthcare integration test run ([googleapis#2742](googleapis#2742)) ([9590821](googleapis@9590821)) ### Reverts * **ci:** Implement conditional sharding logic in integration tests ([googleapis#2763](googleapis#2763)) ([1528d7c](googleapis@1528d7c)) --- 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> 5ef1c0d
🤖 I have created a release *beep* *boop* --- ## [0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0) (2026-03-20) ### Features * **cli:** Add migrate subcommand ([googleapis#2679](googleapis#2679)) ([12171f7](googleapis@12171f7)) * **cli:** Add serve subcommand ([googleapis#2550](googleapis#2550)) ([1e2c7c7](googleapis@1e2c7c7)) * **skill:** One skill per toolset ([googleapis#2733](googleapis#2733)) ([5b85c65](googleapis@5b85c65)) * **source/oracledb:** Add Oracle DB for MCP tools and configurations, updated tools and documentation ([googleapis#2625](googleapis#2625)) ([e350fc7](googleapis@e350fc7)) * **tools/looker:** Support git_branch tools for looker. ([googleapis#2718](googleapis#2718)) ([70ed8a0](googleapis@70ed8a0)) * **tools/dataplex-search-entries:** Add `scope` support to search_entries tool ([googleapis#2740](googleapis#2740)) ([10af468](googleapis@10af468)) ### Bug Fixes * **cloudloggingadmin:** Increase log injesting time and add auth test ([googleapis#2772](googleapis#2772)) ([50b4457](googleapis@50b4457)) * **oracle:** Normalize encoded proxy usernames in go-ora DSN ([googleapis#2469](googleapis#2469)) ([b1333cd](googleapis@b1333cd)) * **postgres:** Update execute-sql tool to avoid multi-statements parameter ([googleapis#2707](googleapis#2707)) ([58bc772](googleapis@58bc772)) * **skills:** Improve flag validation and silence unit test output ([googleapis#2759](googleapis#2759)) ([f3da6aa](googleapis@f3da6aa)) * **test:** Address flaky healthcare integration test run ([googleapis#2742](googleapis#2742)) ([9590821](googleapis@9590821)) ### Reverts * **ci:** Implement conditional sharding logic in integration tests ([googleapis#2763](googleapis#2763)) ([1528d7c](googleapis@1528d7c)) --- 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> 5ef1c0d
The `serve` subcommand **starts a toolbox server** without any primitives. It WILL NOT run with config file. In the future, users could use `serve` with a backend storage. To stop or shutdown the server, user can just terminate the port. The terminate signal will shutdown the server. This new addition **WILL NOT** be a breaking change to existing users. Users can still run toolbox as is. **CLI command:** ``` toolbox serve ``` **Flags associated with the serve subcommand:** | flag | description | default value | | --- | --- | --- | | address | Address of the interface the server will listen on. | 127.0.0.1 | | port | Port the server will listen on. | 5000 | | stdio | Listens via MCP STDIO instead of acting as a remote HTTP server. | false | | ui | Launches the Toolbox UI web server. | false | | allowed-origins | Specifies a list of origins permitted to access this server. | `*` | | allowed-hosts | Specifies a list of hosts permitted to access this server. | `*` | **This PR does the following:** * Add a new `serve` subcommand. Including unit tests for the subcommand * Rename the `cmd/internal/persistent_flags.go` to `cmd/internal/flags.go`, and refactored some flag definitions into dedicated functions. This change allows us to scope flags to specific subcommands as needed, rather than forcing all subcommands to inherit them globally via `PersistentFlags`. --------- Co-authored-by: Averi Kitsch <akitsch@google.com>
🤖 I have created a release *beep* *boop* --- ## [0.30.0](googleapis/mcp-toolbox@v0.29.0...v0.30.0) (2026-03-20) ### Features * **cli:** Add migrate subcommand ([googleapis#2679](googleapis#2679)) ([12171f7](googleapis@12171f7)) * **cli:** Add serve subcommand ([googleapis#2550](googleapis#2550)) ([1e2c7c7](googleapis@1e2c7c7)) * **skill:** One skill per toolset ([googleapis#2733](googleapis#2733)) ([5b85c65](googleapis@5b85c65)) * **source/oracledb:** Add Oracle DB for MCP tools and configurations, updated tools and documentation ([googleapis#2625](googleapis#2625)) ([e350fc7](googleapis@e350fc7)) * **tools/looker:** Support git_branch tools for looker. ([googleapis#2718](googleapis#2718)) ([70ed8a0](googleapis@70ed8a0)) * **tools/dataplex-search-entries:** Add `scope` support to search_entries tool ([googleapis#2740](googleapis#2740)) ([10af468](googleapis@10af468)) ### Bug Fixes * **cloudloggingadmin:** Increase log injesting time and add auth test ([googleapis#2772](googleapis#2772)) ([50b4457](googleapis@50b4457)) * **oracle:** Normalize encoded proxy usernames in go-ora DSN ([googleapis#2469](googleapis#2469)) ([b1333cd](googleapis@b1333cd)) * **postgres:** Update execute-sql tool to avoid multi-statements parameter ([googleapis#2707](googleapis#2707)) ([58bc772](googleapis@58bc772)) * **skills:** Improve flag validation and silence unit test output ([googleapis#2759](googleapis#2759)) ([f3da6aa](googleapis@f3da6aa)) * **test:** Address flaky healthcare integration test run ([googleapis#2742](googleapis#2742)) ([9590821](googleapis@9590821)) ### Reverts * **ci:** Implement conditional sharding logic in integration tests ([googleapis#2763](googleapis#2763)) ([1528d7c](googleapis@1528d7c)) --- 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>
The
servesubcommand starts a toolbox server without any primitives. It WILL NOT run with config file. In the future, users could useservewith a backend storage.To stop or shutdown the server, user can just terminate the port. The terminate signal will shutdown the server.
This new addition WILL NOT be a breaking change to existing users. Users can still run toolbox as is.
CLI command:
Flags associated with the serve subcommand:
**This PR does the following:
servesubcommand. Including unit tests for the subcommandcmd/internal/persistent_flags.gotocmd/internal/flags.go, and refactored some flag definitions into dedicated functions. This change allows us to scope flags to specific subcommands as needed, rather than forcing all subcommands to inherit them globally viaPersistentFlags.