An MCP server for fetching and listing GitHub issues from repositories
Two tools with clear verb-noun naming (fetch_issue, list_issues) and documented parameters. Descriptions are present but generic (194-char baseline; these average ~180 chars). Parameter schemas are complete with types and defaults, but descriptions lack actionable constraints (e.g., no enum for 'state', 'sort', 'direction'). Output schemas are documented in docstrings but not formally declared in the tool registration. Error handling is minimal, generic exceptions without recovery guidance. No tool annotations (readOnlyHint, idempotentHint). Missing pagination guidance despite list_issues returning up to 100 items.
Fetch details of a single GitHub issue. Args: repo: Repository in "owner/repo_name" format, e.g. "sgl-project/sglang" issue_number: The issue number to fetch Returns: A dict with title, body, state, comments, html_url, created_at, updated_at, labels, and is_pull_request.
List and filter issues from a GitHub repository. Args: repo: Repository in "owner/repo_name" format state: Filter by issue state — "open", "closed", or "all" labels: Comma-separated label names to filter by, e.g. "bug,good first issue" sort: Sort field — "created", "updated", or "comments" direction: Sort direction — "asc" or "desc" include_prs: Whether to include pull requests in results (default False) Returns: A list of dicts, each containing number, title, body, state, comments, html_url, created_at, updated_at, labels, and is_pull_request.
Parameter descriptions lack formal constraints. 'state' accepts 'open', 'closed', 'all' but no enum declared; 'sort' and 'direction' similarly unconstrained. LLMs will hallucinate invalid values.
Error handling is generic ('Not found', 'Bad token', 'Something is wrong'). No recovery guidance. LLM cannot determine if error is retryable, user-fixable, or fatal.
No tool annotations (readOnlyHint, idempotentHint). Both tools are read-only and idempotent, but this is not declared in the tool definition.
list_issues returns up to 100 items (per_page=100) but no pagination guidance in description. Large result sets risk context window exhaustion. No next_cursor or total_count returned.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 58 | 2026-07-28+ | v2 |
Output schema documented only in docstrings, not formally in tool registration. LLM cannot parse expected fields from schema alone.