Skip to main content
Glama

RepoControl MCP (Lite Edition)

License: MIT Protocol: MCP Python: >=3.10

RepoControl MCP is a secure, least-privilege Model Context Protocol server that enables AI agents (Claude Desktop, Cursor, LangGraph, CrewAI) to manage GitHub issues, inspect discussions, create pull requests, and audit CI check-runs with strict safety guards.


🎯 The Problem

Developers are increasingly delegating code refactoring and bug-fixing to autonomous agents:

  1. Destructive Force Pushes: Giving an LLM a blanket repo token risks accidental force pushes to main, corrupting commit histories or deleting production branches.

  2. Abandoned Failing PRs: AI agents often push commits, open a PR, and immediately conclude the promptβ€”leaving failing GitHub Actions builds and broken test suites unaddressed.

  3. Missing Audit Trails: No cryptographic evidence ledger tracking which commits and diffs were proposed by which agent model.

RepoControl acts as an intelligent control plane between your autonomous agents and the GitHub API, enforcing safety guardrails and verifying builds before work is marked complete.


Related MCP server: ReviewGuard MCP

✨ Features (Lite Edition)

  • πŸ›‘οΈ Branch Safety Guards: Built-in protection preventing destructive operations against main, master, prod, release.

  • πŸ“ Issue & PR Lifecycle: Safely create issues, fetch discussions, and open pull requests.

  • 🚦 CI Status Auditing: Inspect GitHub Actions check-runs and overall build conclusions directly via MCP tools.

  • ⚑ Zero-Config Protocol: Standard JSON-RPC 2.0 stdio server compatible with Claude Desktop and Cursor.


πŸš€ Quickstart

1. Installation

git clone https://github.com/johannschiffer/repocontrol-mcp.git
cd repocontrol-mcp
pip install -e .

2. Configure in Claude Desktop or Cursor

Add to your claude_desktop_config.json or Cursor MCP settings:

{
  "mcpServers": {
    "repocontrol": {
      "command": "repocontrol",
      "args": ["run"],
      "env": {
        "GITHUB_TOKEN": "ghp_your_github_token_here"
      }
    }
  }
}

3. CLI Inspection

# Check CI status of any commit or branch
repocontrol ci-check owner/repo feature-branch

πŸ› οΈ MCP Tools Reference

Tool

Parameters

Description

create_issue

repo, title, body, labels

Opens an issue in the target repository

get_issue_comments

repo, issue_number, limit

Retrieves discussion comments on an issue/PR

create_pull_request

repo, title, head, base, body

Opens a PR with branch collision guards

list_pull_requests

repo, state, limit

Lists open or closed pull requests

check_ci_status

repo, ref

Audits GitHub Actions check-runs and conclusion

is_branch_protected

branch

Validates if a branch is covered by safety guards


πŸš€ Upgrade to RepoControl Pro

Need enterprise-grade autonomous CI recovery and security governance?

The RepoControl Pro Edition adds:

  • πŸ” CI/CD Log Analyzer & Auto-Fix: Automatically extracts compiler errors, test failures, and stack traces from failing GitHub Actions runs so the LLM can self-correct without human triage.

  • πŸ”’ Least-Privilege Token Scoper & Command Filter: Restricts agent capabilities strictly to authorized operations and blocks destructive API endpoints.

  • πŸ“œ Cryptographic Evidence Audit Ledger: SQLite WAL ledger recording SHA-256 hashes of every commit, diff, and test report, with automated Markdown attestation for PRs.

  • 🐳 Production Docker & Compose: Containerized sidecar setup for cloud agent runners.

  • πŸ§ͺ 100% Passing Pytest Suite ready for enterprise CI/CD.

πŸ‘‰ Get RepoControl Pro on Gumroad ($14.99 USD)


πŸ“„ License

MIT Β© 2026 Johann Schiffer

Available Tools

6 tools
check_ci_statusB

Inspect GitHub Actions check-runs and overall CI status for a branch or commit SHA.

ParametersJSON Schema
NameRequiredDescriptionDefault
refYesBranch name, tag, or commit SHA.
repoYesTarget repository in 'owner/repo' format.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. It implies a read operation but never states that it is non-mutating, what auth/scope is required, whether it covers private repos, or whether results are paginated or truncated for large check sets.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler; the resource and its scope appear immediately, and every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 params, no nested objects, no output schema) and the description covers its purpose adequately. However, with no annotations and no output schema, it should say more about read-only nature, permissions, and what is returned when checks are absent or failing.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with only two parameters, both fully documented as 'Branch name, tag, or commit SHA' and 'owner/repo'. The description merely echoes this, adding no syntax or format detail beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Inspect') and resource ('GitHub Actions check-runs and overall CI status') scoped to a branch or commit SHA. It is clear enough to distinguish from the issue/PR siblings, though it does not explicitly rule out sibling tools that may also surface CI information (e.g., list_pull_requests).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to call this tool versus alternatives, nor any preconditions (e.g., that the ref must exist or that the caller needs repo access). Usage is only implied by the description of what is inspected.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_issueC

Create a new issue in a GitHub repository.

ParametersJSON Schema
NameRequiredDescriptionDefault
bodyYesMarkdown body content of issue.
repoYesTarget repository in 'owner/repo' format.
titleYesIssue title.
labelsNoOptional list of label strings.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state that this is a mutating write operation, what permissions/token scopes are required, that it triggers notifications/webhooks, or what the response contains (e.g., the created issue number/URL).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no wasted words. It is efficient, though it is arguably too terse to be maximally useful given the absence of annotations.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description should say more: what is returned after creation, required permissions, and side effects. As written, the agent lacks the behavioral context needed to invoke it confidently.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, with every parameter documented in the schema including the optional 'labels' array and the 'owner/repo' format for 'repo'. The description adds no parameter meaning beyond that, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Create') and resource ('issue in a GitHub repository'), so the agent knows exactly what the tool does. However, it offers no differentiation from siblings like create_pull_request, which is the nearest alternative action in the same domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives (e.g., create_pull_request for PRs, or comment tools for discussing existing issues), nor any prerequisites such as required auth or repository permissions. The agent must infer all routing decisions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

create_pull_requestB

Open a Pull Request with built-in branch safety validation.

ParametersJSON Schema
NameRequiredDescriptionDefault
baseNoTarget base branch (default: 'main').
bodyNoPR description in markdown.
headYesFeature branch name containing changes.
repoYesTarget repository in 'owner/repo' format.
titleYesPull Request title.

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden, and it does disclose one genuine behavioral trait beyond the schema: "built-in branch safety validation." However it never explains what that validation does, what happens when it fails, whether auth or special permissions are required, or what the call returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler; the validation hint is relevant rather than redundant. It is appropriately sized for its content, though it is so terse that it borders on under-specification rather than ideal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a mutation tool with no annotations and no output schema, the description is too thin: it omits what is created, what happens on validation failure, whether the resulting PR URL/number is returned, and any permission requirements. An agent has enough to attempt the call but not to predict its behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for all 5 parameters, including the base default of 'main', so the schema already documents them fully. The description adds no syntax, format, or constraint detail beyond what the schema provides, which is the expected baseline.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb+resource ("Open a Pull Request"), making the action unambiguous and clearly distinct from read-oriented siblings like list_pull_requests or check_ci_status. It does not explicitly differentiate itself from create_issue or the other mutations, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use or when-not-to-use guidance, no prerequisites, and no named alternatives among the siblings. Usage must be fully inferred from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_issue_commentsC

Retrieve recent discussion comments on an issue or pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesTarget repository in 'owner/repo' format.
limitNoMaximum number of comments to return (default 30).
issue_numberYesIssue number.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full disclosure burden. The word 'recent' hints at a bounded, possibly recency-ordered result, but there is no mention of pagination, ordering, rate limits, or whether PR review comments are included alongside issue comments.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the resource and target scope come first. It is appropriately sized, though it is so terse that it omits useful routing and behavior cues.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple read tool with full schema coverage and no output schema, the description is minimally adequate. It leaves open whether PR review comments are returned, how results are ordered, and how to page beyond the limit, which an agent would need to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, with repo, issue_number, and limit each documented in the schema including the default of 30. The description adds no format or constraint detail beyond what the schema already states, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb (retrieve) and resource (discussion comments) and correctly broadens scope to issues or pull requests. It is clear what the tool returns, though it does not explicitly distinguish itself from siblings like list_pull_requests.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this versus alternatives, no prerequisites (e.g. authentication or repo access), and no exclusions. Usage must be entirely inferred from the name and resource.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

is_branch_protectedB

Check if a branch name is considered protected by safety rules.

ParametersJSON Schema
NameRequiredDescriptionDefault
branchYesBranch name to check.

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full behavioral-disclosure burden. It says the tool checks protection but does not state that it is read-only, what 'safety rules' means, whether authentication is required, or what the return value looks like.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple predicate tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple and has no output schema, so the description should ideally clarify the return behavior (e.g., boolean) or what constitutes 'protected.' It stops short of that, leaving minor gaps for an agent to infer.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter has 100% schema description coverage ('Branch name to check'), so the schema already fully documents it. The description adds no extra meaning beyond what the schema provides, which is the baseline expectation for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description uses a specific verb, 'Check,' and a precise resource, 'branch name considered protected by safety rules.' It is clear what the tool does, though it does not explicitly distinguish itself from any sibling (none of the listed siblings are protection checks).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied by the description: use it when you need to determine whether a branch is protected. However, it gives no explicit when-to-use guidance, no prerequisites, and no mention of alternatives or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_pull_requestsC

List pull requests in repository filtered by state.

ParametersJSON Schema
NameRequiredDescriptionDefault
repoYesTarget repository in 'owner/repo' format.
limitNoMax results to return (default: 30).
stateNo'open', 'closed', or 'all' (default: 'open').

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. 'List' implies a non-mutating read, but the description says nothing about pagination, default limits, sorting, or permissions needed to view private repositories. For a tool with zero annotation coverage, this is a notable gap.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single efficient sentence with no wasted words, and the resource and filter are front-loaded. It is not padded, though it is arguably too sparse to be maximally useful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter list tool with a fully documented schema and no output schema, the description is minimally adequate. However, given no annotations and no disclosure of pagination or return behavior, it could say more about ordering and result shape.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema fully documents repo, limit, and state, including the owner/repo format and defaults. The description only restates the state filter and adds no syntax or format detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('List') and resource ('pull requests'), and mentions the repository and state filter. It is distinguishable from create_pull_request by the verb, but it does not explicitly differentiate itself from other read-oriented siblings like get_issue_comments.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given on when to use this tool versus alternatives, nor any preconditions or exclusions. The agent must infer usage entirely from the name and verb.

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.

  1. 6 tool updatesv1.0.0
    • First observedcheck_ci_status
    • First observedcreate_issue
    • First observedcreate_pull_request
    • First observedget_issue_comments
    • First observedis_branch_protected
    • First observedlist_pull_requests

TDQS

B3.4/5.0

Scored across 6 tools

Disambiguation5/5

Each tool has a clearly distinct target action: creating issues, reading comments, creating/listing pull requests, checking CI, and checking branch protection. The only slight overlap is get_issue_comments covering issue or PR comments, but the intent remains clear.

Naming Consistency5/5

All tool names use consistent snake_case with a predictable verb_noun or is_property pattern. The naming is readable and uniform across the set.

Tool Count5/5

Six tools is well-scoped for a focused repository-control server. Each tool appears to earn its place without obvious redundancy.

Completeness3/5

The set covers issue creation/comments, PR creation/listing, CI status, and branch protection checks, but lacks obvious lifecycle operations such as updating/closing issues, merging PRs, or reviewing PRs. These gaps may force agents to work around missing operations.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers