Conversation
- Updated README to match standardized MCP format with badges - Added MCP client configuration examples (minimal and advanced) - Added environment variables configuration table - Added natural language usage examples - Included AUTO-GENERATED markers for tool documentation - Added generate-mcp-tools action for auto-syncing tool docs - Added sync-tools.yml workflow for automated documentation updates - Added zod-to-json-schema dependency for schema conversion Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
Summary of ChangesHello @Royal-lobster, 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 project's documentation and maintainability by standardizing the Highlights
Ignored Files
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
|
Keep standardized README format with emojis per mcp-opinion template. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
There was a problem hiding this comment.
Code Review
This pull request significantly improves the project's documentation by standardizing the README.md file, making it more comprehensive and user-friendly. The addition of a script to automatically generate and sync tool documentation from the source code is an excellent feature for maintainability, ensuring the documentation stays up-to-date with the tool definitions. I've identified a few potential issues in the generation script that could lead to incorrect or broken documentation, along with a minor clarity issue in the new README content. Overall, this is a great enhancement to the project.
I am having trouble creating individual review comments. Click here to see my feedback.
.github/actions/generate-mcp-tools/generate-tools.mjs (93)
The description from the schema is inserted directly into the markdown table. If a description contains a pipe character (|), it will break the table's formatting. The description should be sanitized to escape pipe characters to prevent this.
const description = (prop.description ?? "").replace(/\|/g, "\\|");
.github/actions/generate-mcp-tools/generate-tools.mjs (128-131)
When using String.prototype.replace() with a string as the second argument, special character sequences like $&, $', $$, and $n are interpreted. If toolsMd contains a $ character, it could lead to unexpected output in the README. To prevent this, it's safer to use a replacer function, which treats the returned string literally.
return readme.replace(
new RegExp(`${START}[\s\S]*?${END}`, "m"),
() => `${START}\n\n${toolsMd}\n\n${END}`,
);
.github/actions/generate-mcp-tools/generate-tools.mjs (30)
Using path.join() to construct the path for a dynamic import() might not be fully cross-platform compatible, as import() expects a URL-like path. On Windows, path.join() will use backslashes, which can sometimes cause issues. It's safer to construct a file:// URL using path.toFileUrl() to ensure compatibility.
const mod = await import(path.toFileUrl(path.join(TOOLS_DIR, file)));
README.md (129)
The description for the swapType parameter seems to contain a sentence that is more relevant to the refundTo parameter: The refundTo address will always receive excess tokens back even after the swap is complete.. This could be confusing for users. Consider moving this information to the refundTo parameter's description for better clarity.
| `swapType` | string | | "EXACT_INPUT" | (Optional, defaults to EXACT_INPUT) Whether to use the amount as the output or the input for the basis of the swap: EXACT_INPUT - request output amount for exact input, EXACT_OUTPUT - request output amount for exact output. |
Summary
generate-mcp-toolsaction for auto-syncing tool documentation from source codesync-tools.ymlworkflow for automated documentation updates on push to mainzod-to-json-schemadev dependency for schema conversionTest plan
npx tsx .github/actions/generate-mcp-tools/generate-tools.mjs)pnpm run lint)pnpm run build)🤖 Generated with Claude Code