Quorum Git Agent
This server exposes MCP tools for analyzing GitHub repositories and managing maintenance reports/actions.
Analyze a public GitHub repository and persist an engineering health report.
List recent repository health reports with an optional limit (default 10).
Retrieve a stored repository analysis by its analysis ID.
Create and save a follow-up action item for a repository with a title and priority (default medium).
Provides tools for analyzing GitHub repositories, including health scoring, issue triage, delivery risk assessment, and action item creation.
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., "@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 — GitHub Metadata Analyzer
Turn GitHub repository metadata into a repeatable maintenance report.

Implemented
Fetch repository metadata, open issues, pull requests and workflow runs.
Persist reports and prioritize suggested maintenance actions.
Responsive dashboard, REST endpoints and MCP tools.
Related MCP server: GitHub Health Monitor MCP
Stack and architecture
Python, FastAPI, HTTPX, SQLite, GitHub REST API and MCP.
Technical mechanisms and security
A fixed api.github.com client is separate from the scoring rules and replaced by fixtures in tests.
Repository references are validated and fetched lists are bounded. Scores are deterministic metadata heuristics; the tool does not inspect source-code correctness.
Local setup
Python 3.12.14 (see .python-version). Activate the virtual environment before the remaining commands.
python -m venv .venv
# Windows: .venv\Scripts\activate
# Linux/macOS: source .venv/bin/activate
python -m pip install -c requirements-lock.txt -e ".[dev]"
uvicorn app.main:app --host 127.0.0.1 --port 8010Configuration
Use .env.example for supported configuration and keep secrets outside Git. See configuration details for loading settings and optional services.
Database and upgrades
The SQLite schema initializes on startup. Database/capture paths are configurable; keep persistent data outside temporary build directories.
Verification
python -m pytest -q
python tests/check_contract.py
python tests/check_upgrade.py
python -m pip check
python -m ruff check .Existing pytest, Ruff, OpenAPI and previous-version upgrade checks; no requests to arbitrary repositories are required for tests.
CI installs locked dependencies and runs the configured checks; documentation checks also validate local links/images. Python dependency auditing uses pip-audit --disable-pip --no-deps --strict -r requirements-lock.txt. A passing scanner only reports known advisories at the time of the run.
Limits and next steps
A report is not a security/code audit or evidence of production quality. API permissions, rate limits and truncated lists affect observations.
Some optional API failures use empty fallback results. Expose missing-data provenance before interpreting absence as health; no exploit or incorrect score was proven here.
Local tool without public multi-tenant authentication. Keep GitHub tokens outside version control.
Further documentation
Audit findings and follow-up · Technical reference · Change history
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.
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
Scored across 4 tools
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
Related MCP Connectors
Evaluates any GitHub repository for license risk, maintenance velocity, stars/forks, and security.
Evaluates any GitHub repository for license risk, maintenance velocity, stars/forks, and supply-c.
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.
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
- AlicenseCqualityCmaintenanceMonitors 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
- AlicenseNot gradedqualityDmaintenanceAI-powered GitHub repository analytics through MCP. Analyze repositories, track contributions, and get insights directly in your AI assistant.1MIT
- AlicenseNot gradedqualityDmaintenanceEnables GitHub repository analysis including health score, comparison, commit heatmap, and trending MCP servers, with interactive widgets.99 npmMIT