GitHub Summary MCP
Enables discovery of repositories and fetching of daily commit summaries authored by the authenticated user across owned, collaborated, and organization repositories.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@GitHub Summary MCP summarize my work today across all repositories"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
github-summary-mcp
An MCP server that generates a daily GitHub work summary by analysing commits across all repositories the authenticated user owns or contributes to.
Designed for use with Claude Code, Qwen Code, and the MCP Inspector.
Features
Discovers all repos: owned, collaborated on, and organisation member
Fetches today's commits (since 00:00 UTC) authored by the authenticated user
Inspects commit messages and changed files
Groups and deduplicates commits per repository
Exposes three MCP tools:
get_daily_summary,list_repositories,get_repo_commits_today
Related MCP server: git-standup-mcp
Prerequisites
Python 3.11+
uv package manager
A GitHub Personal Access Token with
reposcope
Setup
1. Clone the repository
git clone <repo-url>
cd github-summary-mcp2. Install dependencies
uv sync3. Export your GitHub token
export GITHUB_TOKEN=ghp_your_token_hereRunning the server
stdio transport (for Claude Code / Qwen Code)
uv run server.pyHTTP transport (for MCP Inspector)
Edit server.py and change the mcp.run() call:
mcp.run(transport="http", host="127.0.0.1", port=8000)Then run:
uv run server.pyConnecting via MCP Inspector
Install the inspector:
npx @modelcontextprotocol/inspectorPoint it at your running server or use it in stdio mode:
npx @modelcontextprotocol/inspector uv run server.pyConnecting to Claude Code
Add the server to your Claude Code MCP configuration (~/.claude/claude_desktop_config.json or .mcp.json in your project):
{
"mcpServers": {
"github-summary": {
"command": "uv",
"args": ["run", "/absolute/path/to/github-summary-mcp/server.py"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}Connecting to Qwen Code
Add to your Qwen Code MCP settings:
{
"mcpServers": {
"github-summary": {
"command": "uv",
"args": ["run", "/absolute/path/to/github-summary-mcp/server.py"],
"env": {
"GITHUB_TOKEN": "ghp_your_token_here"
}
}
}
}MCP Tools
get_daily_summary
Generate a complete daily work summary across all repositories.
No parameters required.
Returns:
{
"summary": "> Evorgs\n\n* Simplified layout structure in VendorMainLayout\n* Enhanced DashboardPage with better spacing\n\n> BMS\n\n* Work in payment feature\n* Add auto redirection to PayFast checkout page"
}list_repositories
List all repositories accessible to the authenticated user.
No parameters required.
Returns:
{
"repositories": [
{
"full_name": "octocat/Hello-World",
"name": "Hello-World",
"owner": "octocat",
"private": false,
"default_branch": "main"
}
]
}get_repo_commits_today
Get today's commits for a specific repository.
Parameters:
Name | Type | Description |
| string | Short name ( |
Returns:
{
"repo": "octocat/Hello-World",
"commits": [
{
"sha": "abc123ef",
"message": "Fix login redirect bug",
"files": ["auth/login.py", "tests/test_auth.py"],
"insertions": 12,
"deletions": 3,
"committed_at": "2024-01-15T09:30:00+00:00"
}
],
"summary": "> Hello-World\n\n* Fix login redirect bug"
}Project Structure
github-summary-mcp/
│
├─ pyproject.toml # uv/hatch project config
├─ README.md
│
├─ server.py # FastMCP server + tool definitions
├─ github_client.py # GitHub REST API client (httpx)
├─ summarizer.py # Commit grouping & formatting
├─ utils.py # Date helpers, normalizers
│
└─ services/
└─ commit_service.py # Orchestration: fetches commits across all reposEnvironment Variables
Variable | Required | Description |
| Yes | GitHub Personal Access Token with |
Future Extensions
The codebase is structured for easy extension:
LLM summarisation – replace
summarizer.pylogic with an Anthropic/OpenAI callSlack standup posting – add a
post_standupMCP tool inserver.pyWeekly reports – add a
sinceparameter toCommitService.get_today_commits_all_reposFile-level diff summaries – the
CommitRecord.filesfield already carries filenames; fetch full diffs fromGET /repos/{owner}/{repo}/commits/{sha}
License
MIT
Available Tools
3 toolsget_daily_summaryA
Generate a summary of today's commits authored by the authenticated GitHub user.
The tool:
Detects the authenticated GitHub user from the token.
Fetches every repository where the user is an owner, collaborator, or organisation member.
Retrieves all commits pushed since the start of today (UTC).
Filters to commits authored by the authenticated user.
Groups commits by repository.
Returns a formatted, human-readable summary.
Returns:
A dict with a single key "summary" containing the formatted text.
Example return value::
{
"summary": "> Evorgs\n\n* Simplified layout structure ...\n\n> BMS\n\n* Work in payment feature."
}Inputs: no named parameters. Returns: object
get_repo_commits_todayA
Return today's commits for a single repository authored by the authenticated user.
Args:
repo_name: The repository to inspect. Accepts either the short name
(e.g. "Hello-World") or the full owner/repo format
(e.g. "octocat/Hello-World"). When a short name is provided
the authenticated user's login is used as the owner.
Returns: A dict with keys:
* ``"repo"`` – the resolved ``owner/repo`` string
* ``"commits"`` – list of commit objects
* ``"summary"`` – formatted bullet-list summary for this repositoryExample return value::
{
"repo": "octocat/Hello-World",
"commits": [
{
"sha": "abc123",
"message": "Fix login bug",
"files": ["auth/login.py"],
"insertions": 5,
"deletions": 2,
"committed_at": "2024-01-15T09:30:00+00:00"
}
],
"summary": "> Hello-World\n\n* Fix login bug"
}Inputs: repo_name (required). Returns: object
list_repositoriesA
Return all repositories accessible by the authenticated GitHub user.
Includes repositories where the user is an owner, collaborator, or organisation member.
Returns:
A dict with key "repositories" containing a list of objects, each
with full_name, name, owner, private, and
default_branch fields.
Example return value::
{
"repositories": [
{
"full_name": "octocat/Hello-World",
"name": "Hello-World",
"owner": "octocat",
"private": false,
"default_branch": "main"
}
]
}Inputs: no named parameters. Returns: object
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections.
Loading tool schema changelog…
TDQS
Scored across 3 tools
Each tool has a clearly distinct purpose: get_daily_summary aggregates commits across all repositories for today, get_repo_commits_today focuses on a single repository's commits for today, and list_repositories provides a repository listing. There is no overlap or ambiguity in functionality.
All tool names follow a consistent verb_noun pattern: get_daily_summary, get_repo_commits_today, and list_repositories. The naming is predictable and readable throughout the set.
With only 3 tools, the server feels thin for a GitHub-related domain, which typically involves more operations like creating issues, managing pull requests, or accessing other repository details. While the tools are well-defined, the scope is limited.
The toolset is severely incomplete for a GitHub server, covering only commit summaries and repository listing. Missing are core operations like issue management, pull request handling, branch operations, or user actions, which are essential for typical GitHub workflows.
Related MCP Connectors
Manage repositories, users, releases, and automate GitHub workflows
Writes your daily standup from GitLab or GitHub merge request state: what's ready, blocked or waiting on your review, and why a pipeline is red, read from the failing job log. OAuth sign-in, no API keys; can post the note to Slack, Discord or Google Chat on a schedule.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Operate GitHub from your AI assistant: repos, PRs, issues, Actions. Previews and read-only mode.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides comprehensive access to GitHub repositories, issues, pull requests, commits, user profiles, and statistics through 10 tools with natural language query support and advanced search capabilities.MIT
- AlicenseBqualityDmaintenanceGenerates standup reports from git history by analyzing recent commits across configured repositories. Enables users to query their development activity, such as what they worked on yesterday or over multiple days, through natural language interactions with Claude.2MIT
- AlicenseAqualityDmaintenanceConnects Claude to GitHub activity to generate standup summaries of commits, PRs, reviews, and issues for individuals or teams.344 npmMIT
- FlicenseNot gradedqualityDmaintenanceEnables querying today's GitHub commits, performing local git operations (status, diff, add, commit, push), and creating GitHub issues through natural language.-