Quorum Git Agent
Provides tools for analyzing GitHub repositories, including health scoring, issue triage, delivery risk assessment, and action item creation.
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., "@Quorum Git Agentanalyze repository fastapi/fastapi"
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.
Quorum Git Agent
Repository intelligence for engineering teams, available through a visual dashboard, REST API and Model Context Protocol tools.
Quorum inspects a public GitHub repository, calculates a transparent health score, triages open issues, highlights delivery risks and stores every report in SQLite. It works without an LLM key; an MCP-compatible host can use the tools immediately.
What it demonstrates
Python 3.11 and FastAPI service design
GitHub REST API integration with rate-limit handling
SQL persistence with migrations created on startup
MCP tools built with the official Python SDK
deterministic repository scoring and issue triage
responsive dashboard with no frontend build step
pytest, Ruff, Docker and GitHub Actions
Related MCP server: GitHub Health Monitor MCP
Architecture
flowchart LR
UI[Dashboard] --> API[FastAPI REST API]
HOST[MCP host] --> MCP[MCP server]
API --> ENGINE[Analysis engine]
MCP --> ENGINE
ENGINE --> GH[GitHub REST API]
ENGINE --> DB[(SQLite)]Quick start
git clone https://github.com/rom4ik1346/quorum-git-agent.git
cd quorum-git-agent
python -m venv .venv
.\.venv\Scripts\python.exe -m pip install -e ".[dev]"
.\start.ps1Open:
dashboard:
http://127.0.0.1:8010Swagger UI:
http://127.0.0.1:8010/docshealth check:
http://127.0.0.1:8010/api/health
The dashboard starts with a seeded fictional repository report, so the interface is useful before the first external API request.
GitHub token
Public repositories can be analyzed without a token. To increase the API rate
limit, copy .env.example to .env and add a fine-grained token:
GITHUB_TOKEN=github_pat_your_tokenThe token is read only on the server and is never returned to the browser.
MCP server
Run the stdio server:
.\.venv\Scripts\python.exe -m app.mcp_serverExample client configuration:
{
"mcpServers": {
"quorum": {
"command": "C:\\path\\to\\quorum-git-agent\\.venv\\Scripts\\python.exe",
"args": ["-m", "app.mcp_server"],
"cwd": "C:\\path\\to\\quorum-git-agent"
}
}
}Available tools:
analyze_repositorylist_recent_analysesget_repository_briefcreate_action_item
REST examples
Invoke-RestMethod `
-Method Post `
-Uri http://127.0.0.1:8010/api/analyses `
-ContentType "application/json" `
-Body '{"repository":"fastapi/fastapi"}'Invoke-RestMethod http://127.0.0.1:8010/api/analysesTests
.\.venv\Scripts\python.exe -m ruff check .
.\.venv\Scripts\python.exe -m pytest --cov=appDocker
docker compose up --buildThe SQLite database is stored in the quorum-data volume.
Project structure
app/
analyzer.py transparent scoring and issue triage
database.py SQLite repository
github_client.py async GitHub REST client
main.py FastAPI application
mcp_server.py MCP tool surface
static/ dashboard
tests/ unit and API testsLicense
MIT
Available Tools
4 toolsanalyze_repositoryC
Analyze a public GitHub repository and persist its engineering health report.
| Name | Required | Description | Default |
|---|---|---|---|
| repository | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must convey behavioral traits. It states 'persist' indicating a write operation but gives no details on what is persisted, potential side effects, or required permissions. Inadequate for a mutation tool.
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?
Single sentence is concise, but may be too brief. It efficiently states the action but could include more detail without becoming verbose.
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 low complexity (1 required param, no output schema), the description fails to explain what the 'engineering health report' entails, whether results are returned, or how persistence affects the system. Incomplete for informed use.
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 sole parameter 'repository' lacks any description in the schema (0% coverage) and the tool description does not explain its format (e.g., full URL vs owner/repo). No added meaning beyond the 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 verb 'Analyze' and the resource 'public GitHub repository' with an outcome 'engineering health report'. It is specific but could be more distinct from siblings, though the verb differentiates.
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?
No guidance on when to use this tool versus alternatives like get_repository_brief or list_recent_analyses. No mention of prerequisites (e.g., repository must be public) or when not to use.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
create_action_itemC
Save a follow-up engineering action in the local Quorum database.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| priority | No | medium | |
| repository | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so the description carries full burden. It only implies mutation ('save') but does not disclose effects, idempotency, error behavior, or any other behavioral traits.
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 a single sentence, which is concise, but it is too brief and lacks structure. It front-loads the core action but omits important details.
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?
For a tool with 3 parameters, no output schema, and no annotations, the description is incomplete. It does not explain return value, error cases, or constraints like uniqueness of action items.
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?
Schema description coverage is 0% and the description adds no meaning to parameters. It does not explain title, priority defaults, or repository purpose beyond the schema field names.
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 saves a follow-up engineering action in the local Quorum database. It uses specific verbs and resources, and distinguishes from sibling read-only tools like analyze_repository or get_repository_brief.
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?
No guidance on when to use this tool versus alternatives. It does not mention prerequisites, context for when saving an action is appropriate, or when to prefer other tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_repository_briefB
Return a stored repository analysis by its identifier.
| Name | Required | Description | Default |
|---|---|---|---|
| analysis_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the burden. It implies a read-only retrieval but does not specify error handling (e.g., missing ID), side effects, or response format. It is minimally transparent about behavior.
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?
Single sentence of 8 words, front-loaded with purpose. No redundant information. Every word earns its place.
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?
For a one-parameter retrieval tool with no output schema, the description states the core action. However, it does not explain the return format (what is a 'brief'?) or error cases. It is adequate but not comprehensive.
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?
Schema description coverage is 0%. The description adds the phrase 'by its identifier', which is redundant with the parameter name 'analysis_id'. No additional semantics like format, source, or constraints are provided, so it barely adds value beyond the 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 verb 'Return' and resource 'stored repository analysis' along with the retrieval method 'by its identifier'. It is specific and distinguishes from sibling tools like analyze_repository (likely performs analysis) and list_recent_analyses (lists multiple).
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?
No guidance on when to use this tool versus alternatives (e.g., list_recent_analyses), and no prerequisites or context provided. The description only states what it does, not when to invoke it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
list_recent_analysesB
List recently created repository health reports.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries full responsibility for disclosing behavioral traits. It only states that the tool lists recent reports, but does not specify ordering, pagination, or whether it is read-only. For a listing operation, basic behavioral context is missing.
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 a single, concise sentence that front-loads the verb and resource. Every word is necessary, with no redundancy.
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 has an output schema that likely documents return values, the description is minimally adequate. However, it lacks details like sorting order (e.g., most recent first) and whether the list is exhaustive or limited. For a simple list, it is functional but not thorough.
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?
Schema description coverage is 0% (no parameter descriptions), but the description adds no meaning about the 'limit' parameter. It fails to explain that 'limit' controls the number of results, leaving the agent without crucial context for invocation.
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 action ('List') and the resource ('recently created repository health reports'). It effectively distinguishes from sibling tools like 'analyze_repository' (which likely creates reports) and 'get_repository_brief' (which retrieves a brief).
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 (e.g., 'analyze_repository' or 'get_repository_brief'). There is no mention of prerequisites, exclusions, or context that would help an agent decide.
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.
4 tool updates
v0.1.0- First observed
analyze_repository - First observed
create_action_item - First observed
get_repository_brief - First observed
list_recent_analyses
TDQS
Each tool has a clearly distinct purpose: analysis creation, action item creation, retrieval by ID, and listing. No overlapping functionality.
All tools follow a consistent verb_noun pattern in snake_case (e.g., analyze_repository, create_action_item), making it predictable for an agent.
With 4 tools, the set is well-scoped for a focused agent that analyzes repositories and creates follow-up actions. Each tool serves a necessary function.
The domain includes repository analysis and action items. Analysis has create, get, and list, but action items only have create—no retrieval, update, or delete, which is a notable gap.
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
Screens public GitHub repos and PRs to generate risk maps, findings, and merge-readiness signals.
GitHub repo maintainability verdicts—maintained, slowing, at-risk, abandoned—via MCP.
GitHub project health, package dependency risk, trending repos, license & package comparison.
Scan any public GitHub MCP-server repo for security issues. 37 MCP-specific L1 rules, 8 languages.
Related MCP Servers
- AlicenseNot gradedqualityCmaintenanceAnalyze GitHub repositories into structured JSON with tech stack detection, dependency analysis, health signals, and security checks. No AI, fully deterministic. Available as CLI and MCP server.9MIT
- AlicenseCqualityBmaintenanceMonitors and analyzes GitHub repository health by detecting stale branches, old pull requests, unresponsive issues, and security alerts. Integrates with MCP-compatible AI assistants and automation tools.1MIT
- FlicenseNot gradedqualityDmaintenanceAI-powered GitHub repository analytics through MCP. Analyze repositories, track contributions, and get insights directly in your AI assistant.1-
- AlicenseNot gradedqualityCmaintenanceEnables GitHub repository analysis including health score, comparison, commit heatmap, and trending MCP servers, with interactive widgets.118MIT
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/rom4ik1346/quorum-git-agent'
If you have feedback or need assistance with the MCP directory API, please join our Discord server