Skip to main content
Glama
Maheshkumarjena

GithubStats_MCP

README.md
# GitHub MCP

A TypeScript-based Model Context Protocol (MCP) server for inspecting public GitHub data through tools that can be consumed by MCP-compatible clients such as Cursor or Claude Desktop.

## What this project does

The server currently exposes two tools:

- `hello`: returns a friendly greeting and serves as a simple protocol sanity check.
- `github_user_stats`: fetches a GitHub username’s public profile metadata, repository activity totals, recent public events, and pull request insights in one response.

The implementation uses the GitHub REST API to gather public profile information and formats the output into human-readable summaries.

## Features

- Lightweight MCP server over stdio transport
- Public GitHub profile and repository stats gathering
- Pull request insights including:
  - total PR count
  - merged PR count
  - co-authored PR count
  - most targeted repository
- Optional authentication via a GitHub token to reduce unauthenticated rate-limit issues
- Test coverage for formatting and helper logic

## Getting started

### 1. Install dependencies

```bash
git clone https://github.com/<your-username>/github_mcp.git
cd github_mcp
npm install
```

### 2. Configure environment variables

Create a `.env` file in the project root if you want to use a GitHub token:

```env
GITHUB_TOKEN=your_github_personal_access_token
```

This is optional, but recommended for smoother API usage.

### 3. Run the server

```bash
npm run dev
```

The server runs over stdio, so stdout is reserved for MCP protocol traffic and logs are written to stderr.

## Example tool calls

### Hello

```json
{
  "name": "Mahesh"
}
```

### GitHub stats

```json
{
  "username": "Maheshkumarjena"
}
```

## Scripts

- `npm run dev` starts the MCP server in development mode
- `npm run build` compiles the TypeScript project
- `npm test` runs the Vitest test suite

## Project structure

- `src/index.ts` bootstraps the MCP server
- `src/tools.ts` registers the available MCP tools
- `src/github.ts` wraps GitHub API requests and data aggregation
- `src/schemas.ts` defines tool input validation with Zod
- `src/types.ts` contains shared TypeScript interfaces
- `src/utils.ts` formats and transforms data for output
- `tests/` contains unit tests for helper behavior

## Development notes

The current implementation is intentionally small and focused on a solid foundation for GitHub data access. It is a good starting point for adding more GitHub endpoints and exposing additional MCP tools.

## Contributing

1. Fork the repository
2. Create a feature branch
3. Extend the GitHub client in `src/github.ts` or add new tools in `src/tools.ts`
4. Run `npm test` and `npm run build` before opening a pull request

TDQS

A3.6/5.0

Scored across 2 tools

Disambiguation5/5

The two tools are entirely distinct: 'hello' provides a greeting, while 'github_user_stats' fetches GitHub data. There is no overlap or ambiguity between them.

Naming Consistency2/5

The tool names lack a consistent pattern. 'hello' is a simple interjection, while 'github_user_stats' is a compound noun; neither follows a verb_noun convention, making the naming style inconsistent.

Tool Count3/5

With only two tools, one of which is a generic greeting, the set feels thin for a GitHub stats server. However, it is not an extreme mismatch given the narrow domain.

Completeness4/5

The 'github_user_stats' tool covers the primary domain of fetching user profile, activity, and PR insights, but the inclusion of 'hello' adds no domain value, and there is no ability to query specific metrics or historical data, leaving minor gaps.

Maintenance

ActivityStale
ResponsivenessNo issues