Skip to content

Conversation

@Royal-lobster
Copy link
Member

Summary

  • Updates README to follow standardized MCP README structure with badges, organized sections
  • Adds auto-generation workflow for MCP tool documentation
  • Adds generate-tools.mjs script that syncs tool definitions to README
  • Adds zod-to-json-schema dependency for future schema support

Test plan

  • Verify linting passes
  • Verify build succeeds
  • Verify generate-tools script correctly generates tool documentation
  • Verify sync-tools workflow runs on merge to main

🤖 Generated with Claude Code

- Update README to follow the standardized MCP README structure
- Add badges (npm version, license)
- Reorganize sections: Overview, Features, Installation, Configuration, Usage Examples
- Add AUTO-GENERATED markers for MCP Tools section
- Add generate-tools.mjs script for automatic tool documentation
- Add sync-tools.yml workflow to auto-sync tool docs on push to main
- Add zod-to-json-schema dependency

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@Royal-lobster Royal-lobster merged commit c719216 into main Jan 27, 2026
1 check passed
@Royal-lobster Royal-lobster deleted the feat/standardize-readme branch January 27, 2026 20:58
@gemini-code-assist
Copy link

Summary of Changes

Hello @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 focuses on enhancing the project's documentation and developer experience by standardizing the README structure and automating the generation of tool documentation. These changes aim to provide a more consistent and easily maintainable overview of the MCP Discord server's capabilities, making it simpler for both new and existing users to understand and utilize the available tools.

Highlights

  • README Standardization: The project's README.md has been significantly restructured to follow a standardized format, including badges, organized sections, and clearer explanations for installation and configuration.
  • Automated Tool Documentation: A new workflow and script (generate-tools.mjs) have been introduced to automatically generate and sync MCP tool documentation directly into the README.md, ensuring it stays up-to-date with the tool definitions.
  • New Dependency: The zod-to-json-schema library has been added as a development dependency, likely to facilitate future schema-related functionalities or improvements in tool definition handling.
Ignored Files
  • Ignored by pattern: .github/workflows/** (1)
    • .github/workflows/sync-tools.yml
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

@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

The pull request successfully standardizes the README structure and introduces an auto-generation workflow for MCP tool documentation. The generate-tools.mjs script effectively syncs tool definitions to the README, improving documentation consistency and maintainability. The addition of zod-to-json-schema dependency is also noted for future schema support.

return `| \`${key}\` | ${type} | ${requiredStr} | ${description} |\n`;
}

function renderSchema(inputSchema) {

Choose a reason for hiding this comment

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

medium

The string 'No parameters' is hardcoded. Consider extracting this into a constant for better maintainability and easier updates if the phrasing needs to change in the future.

const NO_PARAMETERS_TEXT = '_No parameters_';
  if (!inputSchema?.properties) {
    return NO_PARAMETERS_TEXT;

const properties = inputSchema.properties;
const required = new Set(inputSchema.required ?? []);

if (Object.keys(properties).length === 0) {

Choose a reason for hiding this comment

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

medium

Similar to the previous comment, the string 'No parameters' is hardcoded. It would be beneficial to use a shared constant for this value.

  if (Object.keys(properties).length === 0) {
    return NO_PARAMETERS_TEXT;

Comment on lines +59 to +60
let table = hasDefaults
? '| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n'

Choose a reason for hiding this comment

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

medium

The table headers are hardcoded. Extracting these into constants or an array of strings would improve maintainability and make it easier to modify the table structure or content in one place.

  const DEFAULT_HEADERS = '| Parameter | Type | Required | Description |\n|-----------|------|----------|-------------|\n';
  const HEADERS_WITH_DEFAULT = '| Parameter | Type | Required | Default | Description |\n|-----------|------|----------|---------|-------------|\n';

  let table = hasDefaults ? HEADERS_WITH_DEFAULT : DEFAULT_HEADERS;

Comment on lines +76 to +78
md += `### \`${tool.name}\`\n`;
md += `${tool.description}\n\n`;
md += `${renderSchema(schema)}\n\n`;

Choose a reason for hiding this comment

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

medium

Using md += ... inside a loop for string concatenation can be less efficient for a large number of iterations compared to collecting parts in an array and then joining them. While unlikely to be a performance bottleneck for README generation, it's a good practice for maintainability and potential future scalability.

function renderMarkdown(tools) {
  const mdParts = [];

  for (const tool of tools) {
    const schema = tool.inputSchema;

    mdParts.push(`### \`${tool.name}\`\n`);
    mdParts.push(`${tool.description}\n\n`);
    mdParts.push(`${renderSchema(schema)}\n\n`);
  }

  return mdParts.join('').trim();
}

Comment on lines +85 to +86
if (!(readme.includes(START) && readme.includes(END))) {
throw new Error('README missing AUTO-GENERATED TOOLS markers');

Choose a reason for hiding this comment

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

medium

The error message 'README missing AUTO-GENERATED TOOLS markers' is a hardcoded string. Consider defining this as a constant for better maintainability and consistency.

const MISSING_MARKERS_ERROR = 'README missing AUTO-GENERATED TOOLS markers';

function updateReadme({ readme, tools }) {
  if (!(readme.includes(START) && readme.includes(END))) {
    throw new Error(MISSING_MARKERS_ERROR);
  }

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.

1 participant