Skip to content

Conversation

joehan
Copy link
Contributor

@joehan joehan commented Oct 2, 2025

Description

Big ol round of tool name and description clean ups.

Scenarios Tested

Screenshot 2025-10-01 at 10 00 33 PM

Copy link
Contributor

Summary of Changes

Hello @joehan, 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 substantial refactoring of the toolset within the Firebase MCP Server. The primary goal is to enhance the usability and clarity of the tools by standardizing their naming conventions, consolidating redundant functionalities, and updating their descriptions to be more action-oriented. These changes are reflected across the tool definitions, the main documentation, and internal file structures, aiming to provide a more intuitive experience for developers leveraging AI-assisted development environments.

Highlights

  • Tool Renaming and Consolidation: Many existing tools have been renamed for improved clarity and consistency, such as get_rules becoming get_security_rules and validate_rules becoming validate_security_rules. Several related functionalities have also been consolidated into single, more versatile tools, like auth_update_user replacing multiple authentication actions and dataconnect_execute replacing various GraphQL execution tools.
  • Description Standardization: The descriptions for almost all tools have been updated to follow a consistent format, typically starting with 'Use this to...', making their purpose and usage more explicit and easier to understand for users.
  • README and Internal Code Updates: The src/mcp/README.md file has been significantly refactored to reflect all the new tool names and descriptions. Corresponding internal code changes include file renames (e.g., database directory to realtime_database) and updates to tool registration in src/mcp/tools/core/index.ts to align with the new structure.
  • Tool Removals: Tools like firebase_get_admin_sdk_config, firebase_consult_assistant, firestore_get_rules, firestore_validate_rules, storage_get_rules, storage_validate_rules, database_get_rules, and database_validate_rules have been removed, with some functionalities likely absorbed by the new firebase_get_security_rules and firebase_validate_security_rules tools.
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.

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

  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
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 is a large refactoring of tool names and descriptions, likely for consistency and clarity. The changes are mostly stylistic to improve usability for an AI agent. I've found several typos and a few inconsistencies in tool naming and feature grouping that should be addressed to maintain code quality and documentation accuracy.

| firestore_get_documents | firestore | Use this to retrieve one or more Firestore documents from a database in the current project by full document paths. Use this if you know the exact path of a document. |
| firestore_list_collections | firestore | Use this to retrieve a list of collections from a Firestore database in the current project. |
| firestore_query_collection | firestore | Use this to retrieve one or more Firestore documents from a collection is a database in the current project by a collection with a full document path. Use this if you know the exact path of a collection and the filtering clause you would like for the document. |
| auth_auth_get_users | auth | Use this to retrieve a Firebase app user's account information by specifying an email address, phone number, or UID. |
Copy link
Contributor

Choose a reason for hiding this comment

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

high

The tool name auth_auth_get_users is confusing due to the repeated auth_ prefix. This seems to be caused by the tool being named auth_get_users in its definition file, and then being prefixed with auth_ again. Consider renaming the tool to get_users in src/mcp/tools/auth/get_users.ts to result in the final name auth_get_users.

Copy link
Contributor Author

Choose a reason for hiding this comment

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

Done.


export const get_users = tool(
{
name: "auth_get_users",
Copy link
Contributor

Choose a reason for hiding this comment

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

high

The tool name auth_get_users is likely incorrect. The auth feature prefix is added automatically, which will result in the final tool name auth_auth_get_users. This is confusing and inconsistent with other tools in this feature group. Please rename this to get_users.

Suggested change
name: "auth_get_users",
name: "get_users",

| firebase_get_environment | core | Use this to retrieve the current Firebase **environment** configuration for the Firebase CLI and Firebase MCP server, including current authenticated user, project directory, active Firebase Project, and more. |
| firebase_update_environment | core | Use this to update environment config for the Firebase CLI and Firebase MCP server, such as project directory, active project, active user account, accept terms of service, and more. Use `firebase_get_environment` to see the currently configured environment. |
| firebase_init | core | Use this to initializes selected Firebase features in the workspace (Firestore, Data Connect, Realtime Database, Firebase AI Logic). All features are optional; provide only the products you wish to set up. You can initialize new features into an existing project directory, but re-initializing an existing feature may overwrite configuration. To deploy the initialized features, run the `firebase deploy` command after `firebase_init` tool. |
| firebase_get_security_rules | core | Use this to retreive the security rules for a specified Firebase service. If there are multiple instances of that service in the product, the rules for the defualt instance are returned. |
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

There are a couple of typos in this line: retreive should be retrieve, and defualt should be default.

Suggested change
| firebase_get_security_rules | core | Use this to retreive the security rules for a specified Firebase service. If there are multiple instances of that service in the product, the rules for the defualt instance are returned. |
| firebase_get_security_rules | core | Use this to retrieve the security rules for a specified Firebase service. If there are multiple instances of that service in the product, the rules for the default instance are returned. |

| storage_get_object_download_url | storage | Use this to retrieve the download URL for an object in Firebase Storage. |
| messaging_send_message | messaging | Use this to send a message to a Firebase Cloud Messaging registration token or topic. ONLY ONE of `registration_token` or `topic` may be supplied in a specific call. |
| remoteconfig_get_template | remoteconfig | Use this to retrieve a remote config template for the project |
| remoteconfig_update_template | remoteconfig | Use this to publishe a new remote config template or roll back to a specific version for the project |
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

There's a typo in this line: publishe should be publishes.

Suggested change
| remoteconfig_update_template | remoteconfig | Use this to publishe a new remote config template or roll back to a specific version for the project |
| remoteconfig_update_template | remoteconfig | Use this to publishes a new remote config template or roll back to a specific version for the project |

Only counts events matching the given filters. |
| crashlytics_update_issue | crashlytics | Use this to update the state of Crashlytics issue. |
| apphosting_fetch_logs | apphosting | Use this to fetch the most recent logs for a specified App Hosting backend. If `buildLogs` is specified, the logs from the build process for the latest build are returned. The most recent logs are listed first. |
| apphosting_list_backends | apphosting | Use this to retrieve a list of App Hosting backends in the current project. An empty list means that there are no backends. The `uri` is the public URL of the backend. A working backend will have a `managed_resources` array that will contain a `run_service` entry. That `run_service.service` is the resource name of the Cloud Run service serving the App Hosting backend. The last segment of that name is the service ID. `domains` is the list of domains that are associated with the backend. They either have type `CUSTOM` or `DEFAULT`. Every backend should have a `DEFAULT` domain. The actual domain that a user would use to conenct to the backend is the last parameter of the domain resource name. If a custom domain is correctly set up, it will have statuses ending in `ACTIVE`. |
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

There's a typo in this line: conenct should be connect.

Suggested change
| apphosting_list_backends | apphosting | Use this to retrieve a list of App Hosting backends in the current project. An empty list means that there are no backends. The `uri` is the public URL of the backend. A working backend will have a `managed_resources` array that will contain a `run_service` entry. That `run_service.service` is the resource name of the Cloud Run service serving the App Hosting backend. The last segment of that name is the service ID. `domains` is the list of domains that are associated with the backend. They either have type `CUSTOM` or `DEFAULT`. Every backend should have a `DEFAULT` domain. The actual domain that a user would use to conenct to the backend is the last parameter of the domain resource name. If a custom domain is correctly set up, it will have statuses ending in `ACTIVE`. |
| apphosting_list_backends | apphosting | Use this to retrieve a list of App Hosting backends in the current project. An empty list means that there are no backends. The `uri` is the public URL of the backend. A working backend will have a `managed_resources` array that will contain a `run_service` entry. That `run_service.service` is the resource name of the Cloud Run service serving the App Hosting backend. The last segment of that name is the service ID. `domains` is the list of domains that are associated with the backend. They either have type `CUSTOM` or `DEFAULT`. Every backend should have a `DEFAULT` domain. The actual domain that a user would use to connect to the backend is the last parameter of the domain resource name. If a custom domain is correctly set up, it will have statuses ending in `ACTIVE`. |

| crashlytics_update_issue | crashlytics | Use this to update the state of Crashlytics issue. |
| apphosting_fetch_logs | apphosting | Use this to fetch the most recent logs for a specified App Hosting backend. If `buildLogs` is specified, the logs from the build process for the latest build are returned. The most recent logs are listed first. |
| apphosting_list_backends | apphosting | Use this to retrieve a list of App Hosting backends in the current project. An empty list means that there are no backends. The `uri` is the public URL of the backend. A working backend will have a `managed_resources` array that will contain a `run_service` entry. That `run_service.service` is the resource name of the Cloud Run service serving the App Hosting backend. The last segment of that name is the service ID. `domains` is the list of domains that are associated with the backend. They either have type `CUSTOM` or `DEFAULT`. Every backend should have a `DEFAULT` domain. The actual domain that a user would use to conenct to the backend is the last parameter of the domain resource name. If a custom domain is correctly set up, it will have statuses ending in `ACTIVE`. |
| realtime_database_get_data | realtime_database | Use this to retreive data from the specified location in a Firebase Realtime Database. |
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

There's a typo in this line: retreive should be retrieve.

Suggested change
| realtime_database_get_data | realtime_database | Use this to retreive data from the specified location in a Firebase Realtime Database. |
| realtime_database_get_data | realtime_database | Use this to retrieve data from the specified location in a Firebase Realtime Database. |

Comment on lines 11 to 12
description: "Use this to retreive the security rules for a specified Firebase service. " +
"If there are multiple instances of that service in the product, the rules for the defualt instance are returned.",
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

There are a couple of typos in the description: retreive should be retrieve, and defualt should be default.

Suggested change
description: "Use this to retreive the security rules for a specified Firebase service. " +
"If there are multiple instances of that service in the product, the rules for the defualt instance are returned.",
description: "Use this to retrieve the security rules for a specified Firebase service. " +
"If there are multiple instances of that service in the product, the rules for the default instance are returned.",

{
name: "get_data",
description: "Returns RTDB data from the specified location",
description: "Use this to retreive data from the specified location in a Firebase Realtime Database.",
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

There's a typo in the description: retreive should be retrieve.

Suggested change
description: "Use this to retreive data from the specified location in a Firebase Realtime Database.",
description: "Use this to retrieve data from the specified location in a Firebase Realtime Database.",

name: "update_template",
description:
"Publishes a new remote config template or rolls back to a specific version for the project",
"Use this to publishe a new remote config template or roll back to a specific version for the project",
Copy link
Contributor

Choose a reason for hiding this comment

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

medium

There's a typo in the description: publishe should be publishes.

Suggested change
"Use this to publishe a new remote config template or roll back to a specific version for the project",
"Use this to publishes a new remote config template or roll back to a specific version for the project",

Copy link
Contributor

@rachelsaunders rachelsaunders left a comment

Choose a reason for hiding this comment

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

We'll have more updates coming, but getting some of these in now is good (especially the changes for Security Rules and RTDB).

@github-project-automation github-project-automation bot moved this to Changes Requested [PR] in [Cloud] Extensions + Functions Oct 2, 2025
joehan and others added 7 commits October 2, 2025 08:56
Co-authored-by: rachelsaunders <52258509+rachelsaunders@users.noreply.github.com>
Co-authored-by: rachelsaunders <52258509+rachelsaunders@users.noreply.github.com>
Co-authored-by: rachelsaunders <52258509+rachelsaunders@users.noreply.github.com>
@joehan joehan requested a review from rachelsaunders October 2, 2025 19:11
Copy link
Contributor

@samedson samedson left a comment

Choose a reason for hiding this comment

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

LGTM! Thanks for updating the prompts too

@joehan joehan merged commit 84274b0 into master Oct 2, 2025
4 checks passed
@joehan joehan deleted the jh-tool-names branch October 2, 2025 19:42
@github-project-automation github-project-automation bot moved this from Changes Requested [PR] to Done in [Cloud] Extensions + Functions Oct 2, 2025
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.

4 participants