-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Instrument read_resource with what resource was read #9239
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 integrates Google Analytics 4 (GA4) tracking into the 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 adds analytics instrumentation to the read_resource
tool. The changes are well-implemented, but I've identified a couple of areas for improvement. There is a minor typo in an analytics event parameter which could affect data consistency. Additionally, there's an opportunity to improve performance within a loop by not awaiting a non-critical tracking call, allowing for concurrent execution.
src/mcp/tools/core/read_resources.ts
Outdated
|
||
const out: string[] = []; | ||
for (const uri of uris) { | ||
await trackGA4("mcp_read_resource", { resource_name: uri }); |
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.
Awaiting the trackGA4
call inside this loop makes the execution for each URI sequential, which can slow down the process if there are many URIs. Since trackGA4
is a non-critical analytics call and is designed to handle errors gracefully, you can safely call it without await
. This allows the tracking call to run in the background, in parallel with the resolveResource
call, improving overall performance.
await trackGA4("mcp_read_resource", { resource_name: uri }); | |
trackGA4("mcp_read_resource", { resource_name: uri }); |
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.
Agree, tho you may need to do void trackGA4(...)
src/mcp/tools/core/read_resources.ts
Outdated
|
||
const out: string[] = []; | ||
for (const uri of uris) { | ||
await trackGA4("mcp_read_resource", { resource_name: uri }); |
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.
Agree, tho you may need to do void trackGA4(...)
export async function resolveResource( | ||
uri: string, | ||
ctx: McpContext, | ||
track: boolean = true, |
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.
nit: I personally prefer options objects even if we're not sure we'll ever add more because they make the code more self-documenting, but nbd either way
src/mcp/resources/index.ts
Outdated
// check if an exact resource name matches first | ||
const resource = resources.find((r) => r.mcp.uri === uri); | ||
if (resource) { | ||
track || (await trackGA4("mcp_read_resource", { resource_name: uri })); |
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.
Shouldn't this be track &&
not track ||
? (same below)
Might prefer if (track) void trackGA4(...)
for readability.
Same below.
Description
Instrument read_resource with what resource was read.