- Notifications
You must be signed in to change notification settings - Fork 126
Major cleanup and refactor #14
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Summary of Changes
Hello @jamubc, 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 introduces a significant refactor and cleanup of the gemini-mcp-tool, aiming to improve its maintainability and prepare it for faster future updates. It enhances the core functionality by adding a new brainstorming tool, implementing robust caching for large Gemini responses, and addressing potential timeout issues with progress notifications. The documentation has also been thoroughly updated for clarity and usability, alongside a notable change in the project's licensing to restrict commercial use.
Highlights
- Core Refactoring: The internal architecture of the
gemini-mcp-toolhas been substantially refactored for better separation of concerns, improving maintainability and extensibility. This includes a new unified tool registry and execution pipeline. - New Brainstorm Tool: A
brainstormtool has been added, designed to aid Gemini-supported development by generating ideas using various methodologies and context engineering. - Enhanced Response Pipeline & Caching: The
ask-geminiresponse pipeline is improved with new caching capabilities to handle and chunk large Gemini responses, preventing timeouts and enabling continuation for multi-part outputs. - Improved Timeout Handling: Progress notifications are now streamed from tool start to completion, effectively debugging and potentially solving MCP tool timeout issues, especially during long-running operations.
- Comprehensive Documentation Overhaul: The project's documentation has undergone a major update, including a reorganized
README.md, enhanced VitePress configuration with Mermaid.js support, and new interactive components for troubleshooting and client setup. - License Change: The project's license has been updated to restrict commercial usage, clarifying that it is now for non-commercial use only, while personal usage remains unaffected.
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 in your pull request via creating an issue comment (i.e. comment on the pull request page) using either /gemini <command> or @gemini-code-assist <command>. Below is a summary of the supported commands.
| 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 issue 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 or fill out our survey to provide feedback.
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
-
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. ↩
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Code Review
An impressive and substantial update! This pull request introduces a major refactoring that significantly improves the project's structure, maintainability, and documentation. The new unified tool registry is an excellent abstraction that will make adding new tools much easier. The implementation of progress notifications to prevent timeouts is a crucial feature enhancement that directly addresses a core issue.
My review focuses on a few areas for improvement:
- Code Cleanup: Removing leftover development artifacts like
console.logstatements and dead code. - Robustness: Hardening some parts of the implementation, such as the ad banner configuration and the state management for progress updates.
- Project Structure: Ensuring files are located in the correct directories for better organization.
Overall, this is a fantastic contribution that moves the project forward significantly. The changes are well-thought-out and executed. I'm looking forward to seeing this merged after addressing the minor points below.
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
| Small things to eventually clean up but testing has been conducted and passes. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This is a comprehensive refactor of the gemini-mcp-tool project that modernizes the codebase architecture, adds new features like the brainstorm tool, implements caching capabilities, and restructures the documentation. The PR transitions from a monolithic approach to a modular system with unified tool registration while adding timeout prevention and enhanced change mode processing.
Key changes include:
- Implemented unified tool registry system with automatic registration
- Added brainstorm tool for AI-assisted ideation with multiple methodologies
- Enhanced caching system for large responses with chunking capabilities
- Added timeout prevention with progress notifications
- Restructured documentation with VitePress enhancements
Reviewed Changes
Copilot reviewed 46 out of 68 changed files in this pull request and generated 5 comments.
Show a summary per file
| File | Description |
|---|---|
| src/index.ts | Complete refactor to use unified tool registry, simplified from 1200+ lines to ~260 lines |
| src/tools/registry.ts | New unified tool registration system with automatic schema validation |
| src/tools/brainstorm.tool.ts | New brainstorm tool with methodology-driven ideation capabilities |
| src/utils/ | New utility modules for logging, command execution, and Gemini CLI integration |
| src/constants.ts | Centralized constants for error messages, models, and CLI flags |
| docs/ | Enhanced documentation with interactive components and troubleshooting modals |
Comments suppressed due to low confidence (3)
src/utils/logger.ts:10
- The log() method uses console.warn instead of console.log, which is inconsistent with the method name and may confuse debugging
console.warn(this.formatMessage(message), ...args); src/utils/logger.ts:22
- The debug() method uses console.warn instead of console.debug or console.log, which is inconsistent with debugging conventions
console.warn(this.formatMessage(message), ...args); src/tools/simple-tools.ts:25
- [nitpick] The tool name 'Help' uses inconsistent capitalization compared to other tool names which use lowercase (e.g., 'ping')
export const helpTool: UnifiedTool = { Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Description
Major refactoring of gemini-mcp-tool to support faster updates in the future.
Added
brainstormtool to aid in Gemini supported development.Added cache capabilities to support large Gemini responses.
Debugged and potentially solved MCP tool timeout issues with progress notifications.
Improved the documentation for daily usage.
The license change has restricted commercial usage, which does not affect personal usage.
Type of Change
Testing
This pull request introduces several updates across documentation, licensing, and the codebase, focusing on improving usability, compliance, and user experience. The most significant changes include updating and reformatting the documentation for clarity, consistency and usability and restricting commercial use.
Codebase Enhancements:
ask-geminiresponse pipelinecontributionrelated system for conciseness , will be re-engaged in the future.Documentation Updates:
README.mdfile by removing redundant sections, adding a new "Prerequisites" section, and updating default model references. [1] [2] [3] [4]docs/.vitepress/config.js) by adding Mermaid.js support, updating navigation, and removing unnecessary sidebar sections. [1] [2] [3] [4]docs/.vitepress/theme/Layout.vue) to include custom navigation titles, version badges, sidebar ads, and footer support sections.Licensing Changes:
LICENSEfile to clarify that the software is now for non-commercial use only. Additional instructions for obtaining commercial licenses will be public soon.