Development · MODEL CONTEXT PROTOCOL

nicobailon code summarizer

A command-line tool and MCP server that summarizes code files using Gemini Flash 2.0

WHAT IT CONNECTS

What nicobailon code summarizer gives an AI Agent

  • Recursively processes code files in a directory
  • Respects `.gitignore` rules
  • Skips irrelevant directories like `node_modules`, `dist`, etc.
  • Summarizes code files using Gemini Flash 2.0
  • Outputs summaries to a text file
  • Configurable detail level and summary length
  • MCP server for integration with Claude Desktop and other LLM tools
  • Modular design for easy integration into other applications
  • Secure API key management
  • Authentication for MCP server endpoints
  • Retry mechanism with exponential backoff for LLM calls
  • Rate limiting to prevent abuse
  • Node.js 18+
  • Clone the repository
  • Install dependencies:
  • Create a `.env` file with your Google API key:
  • Build the project:
  • Start the code-summarizer MCP server
  • Open Claude Desktop and click on the Claude menu, then "Settings..."
  • Navigate to the "Developer" section
  • Create a file at `~/.claude/claude_desktop_config.json` (macOS/Linux) or `%USERPROFILE%\.claude\claude_desktop_config.json` (Windows) with this content:
  • Restart Claude Desktop
  • After restarting, you can ask Claude to access your codebase, e.g., "Summarize the files in my project"
  • "Can you summarize all the JavaScript files in my project?"
  • "Please give me a high-level overview of my codebase."
  • "Explain what the file 'src/config/config.ts' does."
  • "Find all functions related to authentication in my code."
  • Start the code-summarizer MCP server
  • Create a `.cursor/mcp.json` file in your project directory:
  • Restart Cursor or reload your project
  • Ask Cursor about your code, e.g., "Can you summarize my codebase?"
  • "Summarize the structure of this codebase for me."
  • "What are the key components in this project?"
  • "Give me a detailed explanation of the MCP server implementation."
  • "Help me understand how the retry mechanism works."
  • Start the code-summarizer MCP server
  • In Cline, you can add the MCP server with a command:
  • Then authenticate with your API key:
  • You can then ask Cline to use the code-summarizer, e.g., "Please summarize my code files"
  • "What does each file in my project do?"
  • "Create a summary of all TypeScript files."
  • "Explain the authentication flow in this codebase."
  • "What are the main functions in the 'summarizer' directory?"
  • **Get file summaries**: Request concise explanations of what specific files do
  • **Explore directories**: Browse through your codebase structure
  • **Batch processing**: Summarize multiple files at once
  • **Targeted queries**: Find specific patterns or functionality in your code
  • **Customize summaries**: Control detail level and summary length
  • **Update settings**: Change configuration options through the MCP interface
  • `code://file/*` - Access individual code files
  • `code://directory/*` - List code files in a directory
  • `summary://file/*` - Get summary for a specific file
  • `summary://batch/*` - Get summaries for multiple files
  • `summarize_file` - Summarize a single file with options
  • `summarize_directory` - Summarize a directory with options
  • `set_config` - Update configuration options
  • `code_summary` - Prompt template for summarizing code
  • `directory_summary` - Prompt template for summarizing entire directories
  • **Connection Refused**
  • Make sure the MCP server is running (`npm start -- server`)
  • Verify the port is correct in your configuration
  • Check for firewall issues blocking the connection
  • **Authentication Errors**
  • Verify you've added the correct API key in the headers (`x-api-key`)
  • Check that your API key is valid and properly formatted
  • Make sure environment variables are set correctly
  • **Transport Errors**
  • Ensure the correct transport type is specified (SSE)
  • Check that the URL includes the correct endpoint (`/sse`)
  • Verify network connectivity between the client and server
  • **Permission Issues**
  • Ensure the MCP server has read access to your codebase
  • Check file permissions if summarizing fails for specific files
  • **Claude Desktop Not Finding the MCP Server**
  • Verify the path in `claude_desktop_config.json` is correct
  • Make sure the command and args point to the right location
  • Check Claude Desktop logs for any configuration errors
  • **Rate Limiting**
  • If you see "Too many requests" errors, wait and try again later
  • Consider adjusting the rate limiting settings in the server code
  • `--detail`, `-d`: Set the level of detail for summaries. Options are 'low', 'medium', or 'high'. Default is 'medium'.
  • `--max-length`, `-l`: Maximum length of each summary in characters. Default is 500.
  • API keys are stored securely and prioritize environment variables over configuration files
  • Keys are validated for proper format before use
  • API keys are never exposed in logs or error messages
  • Configuration file doesn't store API keys when they're provided via environment variables
  • All MCP server endpoints (except health check) require authentication via API key
  • Authentication uses the `x-api-key` header for secure transmission
  • Failed authentication attempts are logged for security monitoring
  • Built-in rate limiting prevents abuse of the service
  • Default: 60 requests per minute per IP address
  • Configurable through server settings
  • Structured error system with categorization
  • Sensitive information is never exposed in error messages
  • Proper error codes are returned for different failure scenarios
  • Automatic retry with exponential backoff for transient failures
  • Configurable retry settings including max retries, delays, and backoff factor
  • Jitter added to retry timing to prevent thundering herd problems
  • Request ID tracking for tracing issues across the system
  • TypeScript (.ts, .tsx)
  • JavaScript (.js, .jsx)
  • Python (.py)
  • Java (.java)
  • C++ (.cpp)
  • C (.c)
  • Go (.go)
  • Ruby (.rb)
  • PHP (.php)
  • C# (.cs)
  • Swift (.swift)
  • Rust (.rs)
  • Kotlin (.kt)
  • Scala (.scala)
  • Vue (.vue)
  • HTML (.html)
  • CSS (.css, .scss, .less)
  • The tool scans the specified directory recursively, respecting `.gitignore` rules.
  • It filters files based on supported extensions.
  • For each supported file, it reads the content and determines the programming language.
  • It sends the code to Gemini Flash 2.0 with a prompt to summarize, including detail level and length constraints.
  • The summaries are collected and written to the specified output file.
  • `index.ts`: Main CLI implementation
  • `src/`: Source code directory
  • `summarizer/`: Core summarization functionality
  • `mcp/`: MCP server implementation
  • `config/`: Configuration management
  • `bin/`: CLI entrypoint
  • `config.json`: Default configuration file
  • `tsconfig.json`: TypeScript configuration
  • `package.json`: Project dependencies and scripts
  • `.env.example`: Template for setting up environment variables
  • `.gitignore`: Files and directories to ignore in Git
  • `__tests__`: Unit and integration tests
  • `__mocks__/mock-codebase`: Mock codebase for testing
  • Support for more file types
  • Support for alternative LLM providers
  • Integration with an Electron app for a GUI interface
  • Enhanced MCP server capabilities
  • Advanced token usage tracking
  • OpenTelemetry-based observability
  • Enhanced audit logging capabilities
  • Secret scanning integration

SECURITY

An MCP listing is not a security review

An MCP server may receive model context, credentials, local files, or permission to call external systems. Review its code, requested environment variables, network behavior, package provenance, and maintenance status before connecting it to an agent.