Skip to main content
Glama
saidsef

GitHub PR Issue Analyser

by saidsef

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
GITHUB_TOKENYesGitHub Personal Access Token with 'repo' scope

Capabilities

Features and capabilities supported by this server

CapabilityDetails
tools
{
  "listChanged": true
}
logging
{}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
extensions
{
  "io.modelcontextprotocol/ui": {}
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
add_inline_pr_commentC

Adds an inline review comment to a specific line in a file within a PR.

add_pr_commentsC

Adds a comment to a specific pull request.

create_issueC

Creates a new issue.

create_prC

Creates a new pull request.

create_releaseC

Creates a new release.

create_tagC

Creates a new tag.

get_latest_shaC

Fetches the SHA of the latest commit.

get_pr_contentC

Fetches the content/details of a specific pull request.

get_pr_diffC

Fetches the diff/patch of a specific pull request.

get_pr_linked_issuesA

Return the issues that will be auto-closed when a pull request is merged.

get_pr_status_checksA

Return the CI check runs and commit status for a pull request's HEAD commit.

get_user_activitiesA

Get user activities with optional filtering by org, repo, and date range using GraphQL API. since/until accept YYYY-MM-DD or full ISO 8601 (YYYY-MM-DDTHH:MM:SSZ).

list_open_issues_prsB

Lists open pull requests or issues.

merge_prC

Merges a specific pull request.

search_userA

Search for a GitHub user by username using GraphQL API.

update_assigneesC

Updates the assignees for a specific issue or pull request.

update_issueC

Updates an existing issue.

update_pr_branchB

Updates the pull request branch with the latest upstream changes.

update_pr_descriptionB

Updates the title and description of a specific pull request.

update_reviewsC

Submits a review for a specific pull request.

chooseA

Present the user with a set of options to choose from.

Call this tool when you need the user to make a decision between discrete alternatives. Use it proactively — don't ask the user to type their choice in chat when you can present clean, clickable options instead.

The user will see a card with one button per option. When they click one, their choice appears as a message in the conversation (as if the user typed it), like:

"Which deployment strategy?" — I selected: Blue-green

IMPORTANT: After calling this tool, you MUST stop and wait for the user's response. Do not continue or take any other actions until you see the "I selected:" message.

github_pr_issue_analyser_uiA

Execute Prefab Python code in a sandbox and render the result.

The code runs in a Pyodide WASM sandbox with full Python support. Import everything you use. Use the components tool to look up available components and their import paths.

Always use PrefabApp as the outermost context manager — this enables streaming so the UI renders progressively as code is written:

from prefab_ui.components import Column, Heading, Text, Row, Badge
from prefab_ui.app import PrefabApp

with PrefabApp() as app:
    with Column(gap=4):
        Heading("Dashboard")
        with Row(gap=2):
            Text("Revenue: $1.2M")
            Badge("On Track", variant="success")

For interactive UIs, pass initial state as a dict and use .rx on stateful components for reactive bindings:

from prefab_ui.components import Column, Slider, Text
from prefab_ui.app import PrefabApp

with PrefabApp(state={"threshold": 50}) as app:
    with Column(gap=4):
        slider = Slider(value=50, min=0, max=100, name="threshold")
        Text(f"Threshold: {slider.rx}%")

slider.rx produces {{ threshold }}, a template expression that resolves against client-side state. Use Rx("key") directly, or apply pipe filters: Rx("balance").currency() produces {{ balance | currency }}.

Available pipes: upper, lower, currency, length, json, round(n), default(val), truncate(n).

Charts live in prefab_ui.components.charts:

from prefab_ui.components.charts import BarChart, ChartSeries

BarChart(
    data=[{"month": "Jan", "rev": 100}, {"month": "Feb", "rev": 200}],
    series=[ChartSeries(data_key="rev", label="Revenue")],
    x_axis="month",
)

Values passed via data are available as global variables in the code. Python features like loops, f-strings, and comprehensions all work.

Layout patterns:

  • Card sub-components (CardHeader, CardContent, CardFooter) have built-in padding. Don't add extra padding to them. For a simple card without sub-components, use Card(css_class="p-6").

  • Use Grid(columns=N, gap=4) for equal-width cards or panels. Grid handles sizing automatically — no flex classes needed. For unequal widths, pass a list: Grid(columns=[2, 1], gap=4) gives a 2:1 ratio.

  • Row is for inline elements (badges, icons + text, buttons). Prefer Grid when children should have equal or proportional widths. Row does not wrap by default.

  • Column and Row accept gap (Tailwind scale: 1-12), align (cross-axis), and justify (main-axis) as native props — prefer these over raw css_class for spacing.

  • Use css_class="overflow-hidden" on containers if chart or content edges should clip to the container boundary.

Args: code: Python code that builds a Prefab component tree. data: Values injected as variables in the sandbox namespace. sandbox: A Sandbox instance. If not provided, a new one is created on each call.

search_prefab_componentsA

Search the Prefab component library.

Use this tool to look up exact argument names, accepted values, and usage examples before writing component code. The skill covers patterns and layout; this tool has the API details.

The query matches component names and descriptions. Space-separated terms match independently, so "Card Badge Metric" returns all three.

When a query matches a small number of components, full details (docstrings, args, examples) are shown automatically. For broad searches, a compact listing is returned instead. Use detail to override this behavior.

Args: query: Filter by component name or description. Space-separated terms are OR-matched. detail: Show full docstrings and args. Defaults to automatic (detailed for ≤5 matches, compact otherwise). limit: Max components to return in detail mode (default 8). No limit in compact mode.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription
Prefab Generative Renderer
pr-review/SKILL.mdReview a GitHub PR by posting inline code comments and submitting a formal review decision
pr-review/_manifestFile listing for pr-review
issue-management/SKILL.mdCreate, update, and list GitHub issues with proper labels, state management, and duplicate checking
issue-management/_manifestFile listing for issue-management
pr-management/SKILL.mdManage the full lifecycle of a GitHub PR — create, update description, assign reviewers, and merge
pr-management/_manifestFile listing for pr-management
release-management/SKILL.mdCreate annotated git tags and publish GitHub releases following semantic versioning
release-management/_manifestFile listing for release-management
pr-analysis/SKILL.mdAnalyse GitHub Pull Requests by fetching metadata and diffs to produce a comprehensive review summary
pr-analysis/_manifestFile listing for pr-analysis
user-activity/SKILL.mdLook up a GitHub user's profile and retrieve their contribution activity with optional date and repository filtering
user-activity/_manifestFile listing for user-activity
Prefab Renderer (choose)

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/saidsef/mcp-github-pr-issue-analyser'

If you have feedback or need assistance with the MCP directory API, please join our Discord server