An MCP server that provides expert-level technical analysis of GitHub repositories, commits, pull requests, and user profiles using Gemini 2.0 Flash AI.
Server provides 9 tools with basic descriptions and parameter schemas. However, significant quality gaps reduce confidence: (1) Most tool descriptions are brief but adequate (avg ~80 chars); (2) Parameter descriptions are present but minimal (avg ~40 chars); (3) Output schemas are NOT documented, critical for LLM planning; (4) No error handling guidance visible, tools return raw error strings rather than actionable recovery paths; (5) Several tools delegate to external LLMs (ask_gemini_github, analyze_repository, review_pull_request) without documenting output format or cost implications; (6) No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite all tools being read-only; (7) Parameter constraints missing (e.g., limit values unbounded, no enum for branch defaults). Average per-tool score: 52/100.
Perform a deep AI analysis of a repository's health and activity.
Get a professional AI-powered summary of a GitHub user's expertise and tech stack.
Ask Gemini 2.0 Flash a general question about GitHub or software engineering.
Fetch recent commits for a repository (e.g., 'owner/repo').
List all available branches for a GitHub repository.
List GitHub repositories for a user or the authenticated user.
Output schemas not documented. Tools return unstructured objects (dicts, lists, error strings); LLMs cannot reliably extract fields for downstream chaining. E.g., analyze_repository, ask_gemini_github, review_pull_request lack any schema declaration.
Error handling does not guide recovery. Raw error strings ('GitHub Error: ...', 'Error fetching commits: ...') are returned directly; no actionable next steps provided. E.g., 'User not found. Try search_users() with a partial name.'
Parameter constraints missing. 'limit' parameter in get_commits has no min/max; 'branch' defaults to 'main' hardcoded with no way to discover available branches without a separate call. 'query' in search_github_code lacks length/format guidance.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | D | 53 | <=2025-11-25 | v2 |
| 2026-03-09 | D | 52 | - | v1 |
Read the content of a specific file from a GitHub repository.
Expert AI code review of a GitHub pull request's diff.
Search for code snippets across all public GitHub repositories.
External LLM delegation not transparent. Tools ask_gemini_github, analyze_repository, review_pull_request delegate to Gemini 2.0 Flash without documenting: (1) output format (is it structured JSON or free text?), (2) token cost implications, (3) latency, (4) failure modes specific to Gemini API.
No tool annotations. All 9 tools are read-only (risk marked as READ_ONLY), but MCP tool annotations (readOnlyHint, destructiveHint, idempotentHint) are absent. This prevents clients from rendering safety warnings or routing to restricted modes.
Parameter descriptions too terse. E.g., 'GitHub username (optional; defaults to authenticated user)' for list_repositories.username does not explain WHEN to use it or WHY it's optional. Based on baseline 72 chars for A+ tools, these average ~40 chars and lack actionable context.
No pagination support in list tools. list_repositories, search_github_code return open-ended lists with no limit/offset. Large result sets bloat context; no 'next_cursor' or 'total_count' returned for proper pagination.
Inconsistent parameter naming. 'full_repo_name' is explicit, but username parameter is bare 'username' (not 'github_username'). When tools mix naming styles, LLMs struggle to map outputs of one tool to inputs of another.