-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Big round of tool name and description updates #9234
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
Summary of ChangesHello @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
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
|
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
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.
src/mcp/README.md
Outdated
| 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. | |
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.
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
.
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.
Done.
src/mcp/tools/auth/get_users.ts
Outdated
|
||
export const get_users = tool( | ||
{ | ||
name: "auth_get_users", |
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.
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
.
name: "auth_get_users", | |
name: "get_users", |
src/mcp/README.md
Outdated
| 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. | |
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.
There are a couple of typos in this line: retreive
should be retrieve
, and defualt
should be default
.
| 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. | |
src/mcp/README.md
Outdated
| 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 | |
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.
There's a typo in this line: publishe
should be publishes
.
| 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 | |
src/mcp/README.md
Outdated
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`. | |
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.
There's a typo in this line: conenct
should be connect
.
| 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`. | |
src/mcp/README.md
Outdated
| 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. | |
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.
There's a typo in this line: retreive
should be retrieve
.
| 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. | |
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.", |
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.
There are a couple of typos in the description: retreive
should be retrieve
, and defualt
should be default
.
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.", |
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.
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", |
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.
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.
We'll have more updates coming, but getting some of these in now is good (especially the changes for Security Rules and RTDB).
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>
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.
LGTM! Thanks for updating the prompts too
Description
Big ol round of tool name and description clean ups.
Scenarios Tested