Skip to main content
Glama

πŸš€ GitInsight-MCP

https://github.com/user-attachments/assets/22716a0c-2dc6-4d00-a761-1fee7341afca

.

A Model Context Protocol (MCP) Server for GitHub Profile Integration

TypeScript MCP License: MIT GitHub Built with Claude

A learning project built to explore the Model Context Protocol (MCP) and MCP Inspector tool. This server provides GitHub profile integration and was entirely built in collaboration with Claude AI.

Author: Wael Marwani
Portfolio: marwaniwael.engineer
Email: wael.marwani@esprit.tn
Location: Ariana, Tunisia

πŸ€– Built with Claude AI - Every commit co-authored with Claude


πŸ“‹ Table of Contents


Related MCP server: GitBridge

πŸ€– What is MCP?

The Model Context Protocol (MCP) is an open protocol that enables AI assistants to securely connect to external data sources and tools. Think of it as a standardized way for AI models like Claude to interact with your applications and services.

Key Concepts:

  • MCP Server: Provides tools and data (this project!)

  • MCP Client: AI assistant that uses the tools (e.g., Claude Desktop)

  • Tools: Functions that the AI can call to perform actions

  • Protocol: Standardized communication format using JSON-RPC

GitInsight-MCP implements an MCP server that exposes your GitHub profile data to AI assistants, allowing them to answer questions about your repositories, analyze your coding patterns, and generate portfolio insights. I Built This Project

I created GitInsight-MCP to:

πŸ” Explore the MCP Inspector - Wanted to see how MCP servers work and test them interactively
πŸ› οΈ Discover New MCP Tools - Learn about the Model Context Protocol ecosystem
πŸ€– Collaborate with Claude AI - Built entirely using Claude as a coding partner
πŸ“š Learn by Doing - Hands-on experience with TypeScript, Node.js, and GitHub API
πŸš€ Create Something Useful - A practical tool that actually works with my GitHub profile

This is a learning project showcasing:

  • AI-Assisted Development - Every line of code written with Claude

  • Modern Backend Stack - TypeScript, Node.js, MCP SDK

  • Real API Integration - GitHub Octokit, caching, error handling

  • Production Quality - Full documentation, proper architecture

Perfect for:

  • Developers exploring MCP and AI-assisted coding

  • Learning how to build tools that AI assistants can use

  • Understanding the Model Context Protocol specification

  • DevOps Engineers wanting to showcase AI integration skills

  • Full Stack Developers building MCP servers

  • Anyone creating an intelligent portfolio assistant


✨ Features

πŸ”§ Core Functionality

  • βœ… 8 Powerful MCP Tools - From basic queries to advanced portfolio generation

  • βœ… 3 MCP Resources - Readable developer profile, resume, and skills data

  • βœ… 3 MCP Prompts - Pre-configured for recruiters and technical assessment

  • βœ… Intelligent Caching - Reduces GitHub API calls and respects rate limits

  • βœ… Rate Limit Protection - Automatic handling of GitHub API constraints

  • βœ… Error Resilience - Comprehensive error handling with helpful messages

  • βœ… TypeScript Safety - Full type coverage for reliability

🎯 Recruiter-Focused Features

  • πŸ“Š Skills Matrix - Automated technical skills assessment with proficiency levels

  • πŸ“„ Portfolio Summary - Professional candidate evaluation ready for HR

  • πŸ“ Auto-Generated Resume - Markdown CV from GitHub data

  • 🎀 Recruiter Prompts - Pre-built evaluation templates for hiring managers

πŸ“Š Data Insights

  • πŸ“¦ Repository metadata (stars, forks, languages, topics)

  • πŸ“ Commit history and activity tracking

  • πŸ“ˆ Aggregate statistics and analytics

  • πŸ” Advanced filtering by technology, topic, or stars

  • πŸ“… Contribution patterns and streaks

  • πŸ’Ό Comprehensive skills categorization

🎨 Developer Experience

  • πŸš€ Easy setup with clear documentation

  • πŸ” Secure token-based authentication

  • 🎯 Clear error messages for debugging

  • πŸ“– Comprehensive inline code comments

  • πŸ§ͺ Production-ready architecture


πŸ—οΈ Architecture

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Claude Desktop β”‚  ← AI Assistant (MCP Client)
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚ MCP Protocol (JSON-RPC over stdio)
         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ GitInsight-MCP  β”‚  ← This Server
β”‚   MCP Server    β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”˜
         β”‚
    β”Œβ”€β”€β”€β”€β”΄β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
    β–Ό         β–Ό          β–Ό         β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”
β”‚ GitHub β”‚ β”‚Cache β”‚ β”‚ Tools  β”‚ β”‚Errorβ”‚
β”‚ Client β”‚ β”‚Layer β”‚ β”‚Handler β”‚ β”‚ Mgmtβ”‚
β””β”€β”€β”€β”€β”¬β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”˜
     β”‚
     β–Ό
β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  GitHub API     β”‚  ← Data Source
β”‚  (Octokit)      β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜

Flow:

  1. User asks Claude a question about your GitHub profile

  2. Claude calls GitInsight-MCP tools via MCP protocol

  3. Server checks cache or queries GitHub API

  4. Results are formatted and returned to Claude

  5. Claude presents insights to the user in natural language


πŸ“¦ Installation

Prerequisites

Step 1: Clone the Repository

```bash git clone https://github.com/marwaniiwael18/GitInsight-MCP.git cd GitInsight-MCP ```

Step 2: Install Dependencies

```bash npm install ```

Step 3: Build the Project

```bash npm run build ```


βš™οΈ Configuration

Step 1: Create Environment File

Copy the example environment file:

```bash cp .env.example .env ```

Step 2: Configure Environment Variables

Edit `.env` with your details:

```env

GitHub Personal Access Token

Generate at: https://github.com/settings/tokens

Required scopes: repo, read:user

GITHUB_TOKEN=ghp_your_actual_token_here

Your GitHub Username

GITHUB_USERNAME=marwaniiwael18

Cache Settings (optional)

CACHE_TTL_SECONDS=3600 CACHE_CHECK_PERIOD_SECONDS=600 ```

Creating a GitHub Token:

  1. Go to GitHub Settings β†’ Tokens

  2. Click "Generate new token (classic)"

  3. Select scopes: `repo`, `read:user`, `read:org`

  4. Copy the token and paste it in your `.env` file

Step 3: Configure Claude Desktop

Add this to your Claude Desktop config file:

macOS: `~/Library/Application Support/Claude/claude_desktop_config.json`
Windows: `%APPDATA%\Claude\claude_desktop_config.json`

```json { "mcpServers": { "gitinsight-mcp": { "command": "node", "args": [ "/absolute/path/to/GitInsight-MCP/dist/index.js" ], "env": { "GITHUB_TOKEN": "your_github_token_here", "GITHUB_USERNAME": "marwaniiwael18" } } } } ```

Important: Replace `/absolute/path/to/` with the actual path to your project!


πŸš€ Usage

Running the Server Standalone

```bash npm start ```

You should see: ```

GitInsight MCP Server - Starting...

GitHub User: marwaniiwael18 Cache TTL: 3600 seconds Tools Available: 6

GitHub API Rate Limit: 5000/5000 Server ready! Waiting for MCP client connections...

```

Using with Claude Desktop

  1. Restart Claude Desktop after configuration

  2. Start a new conversation

  3. Ask questions about your GitHub profile!

The server will automatically start when Claude needs it.


πŸ› οΈ Available Tools

1️⃣ `list_repositories`

Lists all your public repositories with metadata.

Parameters:

  • `use_cache` (boolean): Use cached data (default: true)

  • `sort_by` (string): Sort by 'stars', 'forks', 'updated', 'name'

  • `limit` (number): Maximum repositories to return

Returns: Array of repositories with name, description, stars, forks, language, topics, etc.


2️⃣ `get_repository_details`

Get detailed information about a specific repository.

Parameters:

  • `repository_name` (string, required): Repository name

  • `use_cache` (boolean): Use cached data

  • `include_readme` (boolean): Include README content

Returns: Full repository details, topics, README (if requested)


3️⃣ `get_recent_commits`

Fetch recent commits for a repo or across all repos.

Parameters:

  • `repository_name` (string, optional): Specific repo or all repos

  • `limit` (number): Max commits to return (default: 50)

  • `use_cache` (boolean): Use cached data

Returns: Array of commits with SHA, message, author, date, URL


4️⃣ `get_repository_stats`

Calculate aggregate statistics across all repositories.

Parameters:

  • `use_cache` (boolean): Use cached data

Returns:

  • Total repositories, stars, forks

  • Language breakdown with percentages

  • Most starred/forked repos

  • Recently updated repos

  • Total open issues


5️⃣ `search_projects_by_tech`

Search and filter repositories by technology.

Parameters:

  • `language` (string): Filter by language (e.g., "Python", "JavaScript")

  • `topic` (string): Filter by topic (e.g., "devops", "ai")

  • `min_stars` (number): Minimum stars required

  • `sort_by` (string): Sort field

  • `order` (string): 'asc' or 'desc'

Returns: Filtered and sorted repositories


6️⃣ `get_contribution_activity`

Analyze contribution activity and patterns.

Parameters:

  • `use_cache` (boolean): Use cached data

Returns:

  • Total commits

  • Repositories contributed to

  • Most active day

  • Contribution streak


7️⃣ `get_skills_matrix` 🎯 FOR RECRUITERS

Generate a comprehensive technical skills assessment matrix.

Parameters:

  • `use_cache` (boolean): Use cached data

Returns:

  • Developer profile summary

  • Categorized technical skills (Languages, DevOps, Cloud)

  • Proficiency levels (Expert/Advanced/Intermediate/Beginner)

  • Domain expertise breakdown (DevOps, Web Dev, AI/ML, etc.)

  • Top languages with percentages

  • Project counts per skill

Perfect for: HR screening, technical assessment, candidate evaluation


8️⃣ `generate_portfolio_summary` πŸ“„ FOR RECRUITERS

Create a recruiter-friendly professional portfolio summary.

Parameters:

  • `use_cache` (boolean): Use cached data

Returns:

  • Candidate profile (name, title, contact, location)

  • Professional summary paragraph

  • Key achievements list

  • Featured projects with highlights and technologies

  • Technical proficiency breakdown

  • GitHub metrics (repos, stars, contributions, streak)

  • Availability status

Perfect for: Initial screening, candidate presentation, hiring decisions


πŸ“š MCP Resources

Resources are readable data endpoints that AI assistants can access:

Resource: `portfolio://profile`

Developer profile with contact information and specializations (JSON)

Resource: `portfolio://resume`

Auto-generated professional resume from GitHub data (Markdown)

Resource: `portfolio://skills`

Complete skills matrix with proficiency assessment (JSON)

Usage Example: Ask Claude: "Read my portfolio profile" or "Show me my resume"


🎀 MCP Prompts

Pre-configured prompt templates for common scenarios:

Prompt: `recruiter_evaluation`

🎯 Comprehensive candidate evaluation for HR and recruiters
Combines portfolio summary, skills matrix, stats, and activity into a hiring recommendation

Prompt: `technical_assessment`

πŸ”§ Deep technical analysis for engineering managers
Analyzes code quality, tech stack depth, and suggests interview questions

Prompt: `portfolio_showcase`

πŸ’Ό Impressive portfolio presentation
Creates a compelling narrative highlighting achievements and value proposition

Usage Example: In Claude Desktop or MCP Inspector, select a prompt to execute the evaluation automatically


πŸ’¬ Example Queries

Try asking Claude these questions:

For Developers:

"What are my most starred repositories?"

"Show me statistics about my GitHub profile"

"What programming languages do I use most?"

For Project Discovery:

"Find all my DevOps projects"

"Show me my Python projects with the most stars"

"What are my recent AI/ML repositories?"

For Recruiters & HR: 🎯

"Generate a portfolio summary for this candidate"

"Show me the skills matrix with proficiency levels"

"Read the portfolio resume"

"Use the recruiter_evaluation prompt"

"What are this developer's key strengths?"

For Activity Tracking:

"What have I been working on recently?"

"Show my commit activity for the last month"

"What's my contribution streak?"

For Detailed Analysis:

"Give me details about my DEVOPS-Project repository"

"Analyze my AWS-App project and tell me about it"

"Generate a technical assessment for hiring managers"


πŸ‘¨β€πŸ’» Development

Scripts

```bash

Build TypeScript

npm run build

Development mode (watch for changes)

npm run dev

Run the server

npm start

Test with MCP Inspector

npm run inspector ```

MCP Inspector

Test your server with the official MCP Inspector:

```bash npm run inspector ```

This opens a web interface to test your tools interactively.


πŸ“ Project Structure

``` GitInsight-MCP/ β”œβ”€β”€ src/ β”‚ β”œβ”€β”€ index.ts # MCP server entry point β”‚ β”œβ”€β”€ config.ts # Environment configuration β”‚ β”œβ”€β”€ github-client.ts # GitHub API wrapper (Octokit) β”‚ β”œβ”€β”€ cache.ts # Caching service β”‚ β”œβ”€β”€ utils.ts # Helper functions β”‚ β”œβ”€β”€ types/ β”‚ β”‚ └── index.ts # TypeScript type definitions β”‚ └── tools/ β”‚ β”œβ”€β”€ index.ts # Tools barrel export β”‚ β”œβ”€β”€ list-repositories.ts β”‚ β”œβ”€β”€ get-repository-details.ts β”‚ β”œβ”€β”€ get-recent-commits.ts β”‚ β”œβ”€β”€ get-repository-stats.ts β”‚ β”œβ”€β”€ search-projects-by-tech.ts β”‚ └── get-contribution-activity.ts β”œβ”€β”€ dist/ # Compiled JavaScript β”œβ”€β”€ .env # Environment variables (create this) β”œβ”€β”€ .env.example # Environment template β”œβ”€β”€ package.json # Dependencies β”œβ”€β”€ tsconfig.json # TypeScript config β”œβ”€β”€ claude-desktop-config.json # Example Claude config └── README.md # This file ```


πŸ”§ Technical Stack

Technology

Purpose

TypeScript

Type-safe development

Node.js

Runtime environment

@modelcontextprotocol/sdk

MCP protocol implementation

@octokit/rest

GitHub API client

node-cache

In-memory caching

dotenv

Environment configuration


πŸ› Troubleshooting

Issue: "Missing required environment variables"

Solution: Create a `.env` file with `GITHUB_TOKEN` and `GITHUB_USERNAME`

Issue: "GitHub API rate limit exceeded"

Solution:

  • Wait for the rate limit to reset (shown in server logs)

  • Use caching (`use_cache: true`)

  • Authenticate with a valid token (increases limit to 5000/hour)

Issue: "Invalid GitHub token"

Solution:

Issue: Claude Desktop doesn't show the server

Solution:

  • Check the config file path is correct for your OS

  • Use absolute paths in `claude_desktop_config.json`

  • Restart Claude Desktop completely

  • Check Claude Desktop logs for errors

Issue: Server crashes on startup

Solution:

  • Run `npm run build` first

  • Check Node.js version is 18+

  • Verify all dependencies installed: `npm install`


🀝 Contributing

Contributions are welcome! Feel free to:

  1. Fork the repository

  2. Create a feature branch

  3. Make your changes

  4. Submit a pull request


πŸ“„ License

MIT License - see LICENSE file for details


🌟 Showcase

Featured Projects Highlighted by GitInsight-MCP:

  • AWS-App - Skill-sharing platform (JavaScript)

  • Application_Web_Distibue - Microservices architecture (Spring Boot + Angular)

  • DEVOPS-Project - CI/CD pipeline (Jenkins, Docker)

  • Car-Number-Plates-Detection-IA-Model - Computer Vision (OpenCV)

  • Parkini - Smart parking with face recognition

  • SentinelX-Diagnostic-Platform - Recent diagnostic platform


πŸ“ž Contact

Wael Marwani
πŸ“§ Email: wael.marwani@esprit.tn
🌐 Portfolio: marwaniwael.engineer
πŸ’Ό GitWhat I Learned

Building this project with Claude taught me:

  • MCP Protocol Implementation - How to build servers for AI assistants

  • MCP Inspector Usage - Testing and debugging MCP tools interactively

  • AI-Assisted Development - Collaborating with Claude to write production code

  • RESTful API Integration - GitHub API via Octokit

  • Caching Strategies - Performance optimization techniques

  • Error Handling - Building resilient systems

  • TypeScript Best Practices - Type safety and modern JavaScript

  • Git Collaboration - Using co-authored commits with AI

🀝 Development Process

This entire project was built using Claude AI:

βœ… All code written through Claude conversations
βœ… Every commit co-authored: Co-authored-by: claude <noreply@anthropic.com>
βœ… Architecture designed collaboratively
βœ… Documentation generated with AI assistance
βœ… Debugging and testing done together

Why this matters: Demonstrates how AI can be a powerful coding partner for learning and building real projects.


Built with ❀️ and πŸ€– by Wael Marwani & Claude
A collaboration between human curiosity and AI assistance

⭐ Star this repo if you're interested in MCP or AI-assisted development

Built with ❀️ by Wael Marwani
Showcasing DevOps expertise through AI integration

⭐ Star this repo if you find it useful!

Available Tools

8 tools
generate_portfolio_summaryB

πŸ“„ RECRUITER TOOL: Creates a recruiter-friendly portfolio summary with candidate profile, professional summary, key achievements, featured projects with highlights, technical proficiency breakdown, and GitHub metrics. Optimized for HR review and candidate evaluation.

ParametersJSON Schema
NameRequiredDescriptionDefault
use_cacheNoWhether to use cached data (default: true)

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It mentions the tool 'creates' a summary, implying a write/generation operation, but doesn't disclose behavioral traits such as data sources (e.g., GitHub, user input), processing time, error handling, or output format. The description adds minimal context beyond the basic action, leaving significant gaps in understanding how the tool behaves.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded with the core purpose. It uses an emoji and formatting for emphasis, which is slightly decorative but not wasteful. Each sentence adds value: the first defines the tool, the second lists components, and the third specifies optimization. However, it could be more streamlined by integrating the optimization note into the first sentence.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations, no output schema, and a simple input schema, the description provides basic purpose and context but lacks completeness. It doesn't explain what the output looks like (e.g., format, structure), data sources, or limitations. For a tool that generates a complex summary, more details on behavior and results would be helpful to compensate for the missing structured data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter with 100% description coverage, so the baseline is 3. The description doesn't mention parameters directly, but it implies the tool generates a comprehensive summary without needing user-provided data, which adds semantic context about the tool's operation beyond the schema's technical details for 'use_cache'.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose: 'Creates a recruiter-friendly portfolio summary' with specific components listed (candidate profile, professional summary, etc.). It distinguishes itself from sibling tools by focusing on summary generation rather than data retrieval or analysis. However, it doesn't explicitly contrast with specific siblings like 'get_skills_matrix' which might overlap in technical assessment.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage context ('Optimized for HR review and candidate evaluation') but doesn't provide explicit guidance on when to use this tool versus alternatives. It doesn't mention prerequisites, when not to use it, or direct comparisons with sibling tools like 'get_skills_matrix' for technical proficiency or 'list_repositories' for project details.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_contribution_activityB

Analyzes contribution activity and returns metrics including: total commits, repositories contributed to, most active day, and contribution streak. Useful for understanding development patterns and activity trends.

ParametersJSON Schema
NameRequiredDescriptionDefault
use_cacheNoWhether to use cached data (default: true)

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. While it mentions what metrics are returned, it doesn't describe important behavioral aspects such as data sources (e.g., GitHub API), time ranges covered, authentication requirements, rate limits, or error handling. The description adds some context about the analysis but leaves significant gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized with two sentences: the first states the purpose and lists metrics, and the second provides usage context. It's front-loaded with key information and avoids unnecessary repetition. However, the second sentence could be more specific to enhance clarity without adding bulk.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (analyzing contribution activity with multiple metrics), lack of annotations, and no output schema, the description is incomplete. It doesn't specify data sources, time frames, or what the returned metrics look like (e.g., formats, units). For a tool with no structured output and behavioral gaps, more detail is needed to be fully helpful.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter with 100% description coverage, providing clear documentation for 'use_cache.' The description doesn't add any parameter-specific information beyond what's in the schema. According to the rules, with high schema coverage (>80%), the baseline is 3 even with no param info in the description, which applies here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('analyzes') and resource ('contribution activity'), and lists concrete metrics returned (total commits, repositories contributed to, most active day, contribution streak). However, it doesn't explicitly differentiate from sibling tools like 'get_recent_commits' or 'get_repository_stats', which might also provide overlapping activity metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides implied usage context by stating it's 'useful for understanding development patterns and activity trends,' which suggests when this tool might be appropriate. However, it lacks explicit guidance on when to use this tool versus alternatives like 'get_recent_commits' or 'generate_portfolio_summary,' and doesn't mention any prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_recent_commitsA

Fetches recent commits either for a specific repository or across all repositories. Returns commit SHA, message, author, date, and URL. Useful for tracking recent development activity.

ParametersJSON Schema
NameRequiredDescriptionDefault
repository_nameNoOptional: Name of specific repository. If omitted, fetches commits across all repos.
limitNoMaximum number of commits to return (default: 50)
use_cacheNoWhether to use cached data (default: true)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes the return data (SHA, message, author, date, URL) and implies a read-only operation, but lacks details on permissions, rate limits, or error handling, leaving gaps for a tool with no annotation coverage.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured in two sentences: the first states the purpose and scope, and the second adds utility context. Every sentence earns its place with no wasted words, making it front-loaded and appropriately sized.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's moderate complexity (3 parameters, no annotations, no output schema), the description is adequate but incomplete. It covers the purpose and output format, but lacks details on behavioral traits like error conditions or performance, which are needed for full contextual understanding without annotations or output schema.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the schema already documents all parameters thoroughly. The description adds no additional parameter semantics beyond what the schema provides, such as explaining interactions between parameters or edge cases, meeting the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('fetches recent commits') and resource ('for a specific repository or across all repositories'), distinguishing it from siblings like 'get_contribution_activity' or 'list_repositories' by focusing on commit-level data rather than broader metrics or repository lists.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for usage ('useful for tracking recent development activity'), but does not explicitly state when not to use it or name specific alternatives among the sibling tools, such as 'get_contribution_activity' for broader activity metrics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_repository_detailsA

Gets detailed information about a specific repository including full metadata, topics, README content, open issues count, creation date, and homepage URL. Useful for deep-diving into a particular project.

ParametersJSON Schema
NameRequiredDescriptionDefault
repository_nameYesName of the repository (e.g., "GitInsight-MCP")
use_cacheNoWhether to use cached data (default: true)
include_readmeNoInclude README content in the response (default: false)

TDQS

A4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It mentions what information is returned (metadata, topics, README, etc.), which adds context beyond the input schema. However, it doesn't disclose behavioral traits like rate limits, authentication needs, error handling, or whether it's a read-only operation (though 'Gets' implies safe read).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences, front-loaded with the core purpose and specific details, followed by a usage hint. Every sentence adds value without redundancy, making it efficient and easy to parse.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description does a good job explaining what the tool returns and its purpose. It covers the tool's scope well, but could improve by adding more behavioral context (e.g., read-only nature, potential errors) to compensate for the lack of structured data.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents all parameters. The description adds value by implying the scope of information retrieved (e.g., 'including full metadata, topics, README content'), which helps contextualize the parameters' effects, but doesn't provide additional syntax or format details beyond the schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'Gets' and resource 'detailed information about a specific repository', with specific examples of what's included (metadata, topics, README, etc.). It distinguishes from siblings like 'list_repositories' (which lists multiple) and 'get_repository_stats' (which might focus on statistics rather than comprehensive details).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for 'deep-diving into a particular project', suggesting it's for detailed analysis rather than overviews. However, it doesn't explicitly state when to use this vs. alternatives like 'get_repository_stats' or 'list_repositories', nor does it mention prerequisites or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_repository_statsA

Calculates aggregate statistics across all repositories including: total repositories count, total stars, total forks, language breakdown with percentages, most starred/forked repositories, recently updated repos, and total open issues. Perfect for portfolio summaries and analytics.

ParametersJSON Schema
NameRequiredDescriptionDefault
use_cacheNoWhether to use cached data (default: true)

TDQS

A4.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It describes what the tool calculates (e.g., statistics like total stars, language breakdown) but lacks details on performance aspects (e.g., computation time, data freshness), error handling, or output format. The mention of 'use_cache' in the schema hints at caching behavior, but the description does not elaborate on this or other operational traits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the core function and listing key statistics in a clear, bullet-like format. Every sentence adds value by specifying the tool's output and use case without redundancy or unnecessary details, making it efficient and easy to understand.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (aggregating statistics across all repositories) and the absence of both annotations and an output schema, the description is somewhat incomplete. It outlines what statistics are calculated but does not specify the return structure, data granularity, or potential limitations (e.g., handling of large datasets). This leaves gaps for an AI agent to understand the full behavioral context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 1 parameter with 100% description coverage, so the schema already documents it well. The description does not add any parameter-specific information beyond what the schema provides, but since there is only one parameter and schema coverage is high, the baseline is strong. No additional semantic context is needed, but the description could have explained the impact of caching on the statistics.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with a specific verb ('calculates') and resource ('aggregate statistics across all repositories'), and it distinguishes itself from siblings by focusing on comprehensive analytics rather than listing, searching, or detailing individual repositories. It explicitly lists the types of statistics included, such as total count, stars, forks, language breakdown, and recent updates.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('Perfect for portfolio summaries and analytics'), which helps differentiate it from siblings like list_repositories or get_repository_details. However, it does not explicitly state when not to use it or name specific alternatives for overlapping functions, such as generate_portfolio_summary, which might serve a similar purpose.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_skills_matrixA

🎯 RECRUITER TOOL: Generates a comprehensive skills matrix analyzing all repositories. Returns categorized technical skills (Programming Languages, DevOps, Cloud), proficiency levels, domain expertise (Web Dev, AI/ML, DevOps), and project counts. Perfect for HR screening and technical assessment.

ParametersJSON Schema
NameRequiredDescriptionDefault
use_cacheNoWhether to use cached data (default: true)

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what the tool returns (categorized skills, proficiency levels, domain expertise, project counts), which is helpful, but does not cover aspects like performance characteristics, error handling, or data freshness implications of the 'use_cache' parameter. It adds value but lacks comprehensive behavioral details.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is appropriately sized and front-loaded, starting with the main purpose and key outputs. It uses an emoji and formatting ('🎯 RECRUITER TOOL:') for emphasis, but the sentence structure is slightly verbose with multiple listed details; every sentence earns its place by clarifying scope and use case.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (analyzing all repositories for skills) and lack of annotations and output schema, the description does a good job of explaining what it returns and its purpose. However, it could be more complete by detailing output format or limitations, such as how proficiency levels are calculated or if there are any constraints on repository analysis.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage, with the 'use_cache' parameter well-documented in the schema. The description does not add any parameter-specific information beyond what the schema provides, so it meets the baseline of 3 for high schema coverage without compensating with extra insights.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's purpose with specific verbs ('Generates a comprehensive skills matrix analyzing all repositories') and resources ('all repositories'). It distinguishes from siblings by focusing on skills analysis rather than summaries, activity, commits, details, stats, listings, or project searches.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('Perfect for HR screening and technical assessment'), which implies usage in recruitment scenarios. However, it does not explicitly state when not to use it or name alternatives among the sibling tools, such as when simpler repository stats might suffice.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_repositoriesB

Lists all public repositories for GitHub user: octocat. Returns repository metadata including name, description, stars, forks, language, topics, and last update date. Supports sorting by stars, forks, updated date, or name. Optionally limit the number of results.

ParametersJSON Schema
NameRequiredDescriptionDefault
use_cacheNoWhether to use cached data (default: true)
sort_byNoSort repositories by this field
limitNoMaximum number of repositories to return

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It discloses return metadata and sorting/limiting behavior, but lacks critical details such as pagination, rate limits, authentication needs, error handling, or whether the operation is read-only (implied but not stated). For a tool with no annotations, this leaves significant behavioral gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is front-loaded with the core purpose, followed by return details and optional features. Every sentence adds value without redundancy, making it efficient and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no annotations and no output schema, the description provides basic purpose and return metadata but lacks completeness for a tool with 3 parameters and behavioral complexity. It should cover more about usage context, error cases, or output format to be fully adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents parameters. The description adds minimal value by mentioning sorting options and limiting results, which are already covered in the schema. Baseline 3 is appropriate as the schema does the heavy lifting.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Lists all public repositories'), identifies the resource ('for GitHub user: octocat'), and distinguishes from siblings by focusing on listing repositories rather than details, stats, or other repository-related operations. It explicitly mentions the scope ('public repositories') and target user.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives like 'get_repository_details' or 'search_projects_by_tech'. The description mentions sorting and limiting options but does not explain use cases or prerequisites for selecting this tool over siblings.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_projects_by_techA

Searches and filters repositories by technology stack, programming language, topics, or minimum stars. Supports advanced filtering and sorting. Use this to find projects by category (e.g., "all Python projects", "DevOps projects", "AI/ML repositories").

ParametersJSON Schema
NameRequiredDescriptionDefault
languageNoFilter by programming language (e.g., "JavaScript", "Python", "Java")
topicNoFilter by repository topic/tag (e.g., "devops", "machine-learning", "web")
min_starsNoMinimum number of stars required
sort_byNoSort results by this field
orderNoSort order: ascending or descending (default: desc)desc
use_cacheNoWhether to use cached data (default: true)

TDQS

A3.7/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'advanced filtering and sorting' but doesn't disclose critical traits like whether this is a read-only operation, potential rate limits, authentication requirements, or what the output format looks like. For a search tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is efficiently structured in two sentences: the first states the core functionality, and the second provides usage guidance with examples. Every sentence earns its place with no wasted words, and it's appropriately front-loaded with the main purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's complexity (6 parameters, no output schema, no annotations), the description is adequate but incomplete. It covers the purpose and basic usage well, but lacks behavioral transparency and output information. For a search tool with multiple parameters and no structured output documentation, it should provide more context about results format and limitations.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The schema description coverage is 100%, so the schema already documents all 6 parameters thoroughly. The description adds minimal value beyond the schema by mentioning 'technology stack' and 'programming language' (covered by 'language' parameter) and 'topics' (covered by 'topic' parameter), but doesn't provide additional semantic context. This meets the baseline for high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific verb ('Searches and filters') and resource ('repositories') with precise criteria ('by technology stack, programming language, topics, or minimum stars'), and distinguishes itself from siblings like 'list_repositories' by emphasizing advanced filtering capabilities. The example categories further clarify its specialized purpose.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when to use this tool ('to find projects by category') with specific examples, but it doesn't explicitly state when not to use it or name alternatives among sibling tools. It implies usage for filtered searches versus basic listing, but lacks explicit exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

TDQS

A3.8/5.0
Disambiguation4/5

Most tools have distinct purposes, but there is some overlap between get_repository_stats and get_contribution_activity, as both provide aggregated metrics that could be confused for general analytics. The recruiter-focused tools (generate_portfolio_summary and get_skills_matrix) are clearly differentiated from data-fetching tools, but the boundary between statistical and activity analysis tools is slightly blurred.

Naming Consistency5/5

All tool names follow a consistent verb_noun pattern (e.g., generate_portfolio_summary, get_contribution_activity, list_repositories), using snake_case throughout. The naming is predictable and readable, with no deviations in style or convention across the set.

Tool Count5/5

With 8 tools, the count is well-scoped for a GitHub analytics server, covering key areas like repository listing, details, stats, activity, skills analysis, and project search. Each tool serves a specific function without redundancy, making the set manageable and purposeful.

Completeness4/5

The toolset provides comprehensive coverage for GitHub portfolio and analytics, including data retrieval (repositories, commits, details), statistical analysis, skills assessment, and project filtering. A minor gap is the lack of tools for modifying or interacting with GitHub (e.g., creating issues or pull requests), but this aligns with the server's focus on insight rather than action.

Maintenance

ActivityInactive
ResponsivenessNo issues

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/marwaniiwael18/GitInsight-MCP'

If you have feedback or need assistance with the MCP directory API, please join our Discord server