GitHub repository management MCP server for cloning, creating, deleting repositories and managing branches, files, and repository settings
OctoOps has 10 tools with basic naming and descriptions, but significant gaps in schema completeness, parameter documentation, and error handling. All tools have descriptions (10-200+ chars), but most lack detailed parameter constraints and output schema documentation. No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite 4 destructive/irreversible operations. Error responses are generic strings ('Failed to...') with no recovery guidance. Parameters lack type constraints (enums, ranges, patterns). Output schemas are undocumented, LLMs cannot plan downstream calls. Naming is verb-first and clear (git_clone, delete_repo, create_branch), but parameter naming inconsistencies exist (repo_name vs repo_url). No pagination support despite list tools. Security: GITHUB_TOKEN injected server-side (good), but no permission gates or audit logging.
Archives or unarchives a GitHub repository under the authenticated user's account.
Retrieve and return the list of branches for a given GitHub repository.
Create a new branch in the specified GitHub repository.
Create a new GitHub repository using an authenticated Git client.
Delete a branch from the specified GitHub repository.
Delete a GitHub repository.
No output schemas documented. Tools return plain strings (e.g., 'Repository cloned successfully to /path') or lists without field definitions. LLMs cannot extract structured data for downstream tool calls or understand what fields to expect.
Destructive operations (delete_repo, delete_repo_file, delete_branch, transfer_repo) lack confirmation/dry-run support and tool annotations. No destructiveHint or idempotentHint declared. Agents cannot distinguish safe retries from irreversible actions.
Error responses are generic strings with no recovery guidance. E.g., 'Failed to delete repository: <exception>' tells the LLM nothing about whether to retry, ask the user, or abort. No error classification (retryable vs user-fixable vs fatal).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 46 | 2026-07-28+ | v2 |
Delete a specific file from a GitHub repository branch.
Clone a GitHub repository into the specified local directory.
Retrieve a list of repository names for the authenticated GitHub user. This function uses the GitHub personal access token from the environment variable `GITHUB_TOKEN` to authenticate via the GitHub API. It then fetches all repositories (public and private) associated with the authenticated user and returns a list of their names.
Transfers ownership of a GitHub repository to a new owner.
Parameters lack type constraints and detailed descriptions. E.g., 'branch' defaults to 'main' but no description explains what happens if the branch doesn't exist. 'repo_name' vs 'repo_url' naming inconsistency (git_clone uses repo_url; others use repo_name). No enums, ranges, or format patterns.
List tools (repo_list, branch_list) return unbounded results with no pagination support. repo_list returns all repos as a flat list; branch_list returns all branches as a comma-separated string. No limit, offset, or cursor parameters. Large result sets will exhaust context windows.