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 "Install 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 MCPsummarize 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."
}| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 effectively describes key behaviors: it automatically detects the authenticated user, fetches repositories based on user roles, filters commits by date and author, groups by repository, and returns a formatted summary. It also specifies the return structure. However, it lacks details on error handling, rate limits, or authentication requirements beyond token use.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured with a clear opening sentence and a numbered list detailing steps, followed by return format and an example. It is appropriately sized and front-loaded with the core purpose. However, some sentences could be more concise (e.g., the numbered list is detailed but slightly verbose), and the example adds clarity but extends length.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (multiple internal steps) and the presence of an output schema (implied by 'Has output schema: true'), the description is complete. It thoroughly explains the process, return format, and provides an example, compensating for the lack of annotations. No additional information is needed for effective use by an AI agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are 0 parameters, and schema description coverage is 100%, so no parameter documentation is needed. The description adds value by explaining the tool's internal logic (e.g., steps like detecting user and filtering commits), which goes beyond the empty schema. This justifies a score above the baseline of 3 for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states the tool's purpose: 'Generate a summary of today's commits authored by the authenticated GitHub user.' It specifies the verb ('generate'), resource ('summary of today's commits'), and scope ('authored by the authenticated GitHub user'), clearly distinguishing it from siblings like 'get_repo_commits_today' and 'list_repositories' by focusing on summarization and user-specific filtering.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context by detailing the steps involved (e.g., detecting the authenticated user, fetching repositories, filtering commits), which suggests it's for daily personal summaries. However, it does not explicitly state when to use this tool versus alternatives like 'get_repo_commits_today' or 'list_repositories', nor does it provide exclusions or prerequisites beyond authentication.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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"
}| Name | Required | Description | Default |
|---|---|---|---|
| repo_name | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full burden and does well by specifying authentication context ('authored by the authenticated user'), date scope ('today's commits'), and detailed return format. It doesn't mention rate limits or error conditions, but provides substantial behavioral context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Perfectly structured with purpose statement, parameter documentation, return specification, and example. Every sentence earns its place, and information is front-loaded with the core functionality stated first.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's moderate complexity, no annotations, but comprehensive output schema in the description, this is complete. The description covers purpose, parameters, authentication context, date scope, and detailed return format with example, leaving no gaps for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage for the single parameter, the description fully compensates by explaining repo_name's semantics, acceptable formats (short name vs owner/repo), and resolution logic when short name is provided. This adds significant value beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the specific action ('Return today's commits'), target resource ('for a single repository'), and scope ('authored by the authenticated user'). It distinguishes from siblings by focusing on commits rather than summaries or repository listings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage context (today's commits, authenticated user's authorship) but doesn't explicitly state when to use this tool versus alternatives like get_daily_summary or list_repositories. No exclusions or prerequisites are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
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"
}
]
}| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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 does specify that it returns repositories 'accessible by the authenticated GitHub user' and details what access levels are included (owner, collaborator, organization member), which adds useful context. However, it doesn't mention authentication requirements, rate limits, pagination behavior, or error conditions, leaving significant behavioral aspects undocumented.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured and appropriately sized. It starts with the core purpose, adds clarifying details about access levels, then provides a clear return format with an example. Every sentence adds value without redundancy. The example is separated for readability but remains concise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (0 parameters, no annotations, but with an output schema), the description is reasonably complete. It explains what the tool does, who it affects, and what it returns. The output schema handles return value documentation, so the description doesn't need to duplicate that. However, it could benefit from more behavioral context like authentication or rate limits.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool has 0 parameters, and schema description coverage is 100% (though empty). The description appropriately doesn't discuss parameters since none exist. It focuses instead on the return value structure, which is helpful given the presence of an output schema. A baseline of 4 is appropriate for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's purpose: 'Return all repositories accessible by the authenticated GitHub user.' It specifies the verb ('return') and resource ('repositories'), and clarifies scope ('accessible by the authenticated GitHub user'). However, it doesn't explicitly differentiate from sibling tools like 'get_daily_summary' or 'get_repo_commits_today', which have different purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description provides no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools or explain scenarios where this tool is appropriate versus others. The only contextual information is about what repositories are included, which relates to purpose rather than usage guidelines.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
Tool Schema Changelog
Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.
3 tool updates
v0.1.0- First observed
get_daily_summary - First observed
get_repo_commits_today - First observed
list_repositories
TDQS
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.
Maintenance
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
Manage repositories, users, releases, and automate GitHub workflows
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Access the GitHub API, enabling file operations, repository management, search functionality, and…
Screens public GitHub repos and PRs to generate risk maps, findings, and merge-readiness signals.
Related MCP Servers
- FlicenseNot 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.-
- 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
- FlicenseAqualityDmaintenanceExtracts today's Git commit history and code changes from a local repository, filtering by the current user and excluding merge commits, for integration with MCP clients like Claude Desktop.1-
- AlicenseAqualityCmaintenanceConnects Claude to GitHub activity to generate standup summaries of commits, PRs, reviews, and issues for individuals or teams.339MIT
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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/muhammadzaeemaltaf/github-summary-mcp'
If you have feedback or need assistance with the MCP directory API, please join our Discord server