GitHub PR Issue Analyser
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| GITHUB_TOKEN | Yes | GitHub Personal Access Token with 'repo' scope |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| 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
| Name | Description |
|---|---|
| add_inline_pr_commentA | 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. |
| add_to_projectA | Puts an issue or pull request on a project board. One already there comes back with the item it already has, so a retry does not make a second card. |
| create_issueC | Creates a new issue. |
| create_milestoneB | Opens a milestone. Titles are unique per repository, so reusing one fails. |
| create_prC | Creates a new pull request. |
| create_releaseC | Creates a new release. A tag that already carries one is updated instead of rejected, so a retry after a half-finished release recovers. See #347. |
| create_tagA | Creates a new tag. With a message it is an annotated tag, which stores the message; without one it is a lightweight ref. |
| delete_releaseA | Deletes a release. The tag it was published from survives unless delete_tag asks for it, since the commit history usually should not move. |
| delete_tagA | Deletes a tag. A tag a release points at is refused unless force is set, because removing it leaves the release without the code it names. |
| get_issueA | Fetches a single issue by number, with its body, labels, assignees and milestone. Reads straight from the issue rather than the search index, so it sees a write immediately. See #358. |
| get_latest_shaB | Fetches the SHA of the latest commit. |
| get_pr_contentC | Fetches the content/details of a specific pull request. |
| get_pr_diffB | Fetches the diff/patch of a specific pull request, capped at max_bytes. bytes_total is the whole patch either way, so a truncated reply says what was left behind. See #314. |
| 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. Pages through up to MAX_STATUS_CHECKS_SUITE_PAGES of check suites (50 per page). For any suite whose first 100 runs are not the full set, drains up to MAX_STATUS_CHECKS_RUN_PAGES_PER_SUITE additional pages via the supplemental query. If either cap is hit before the connection is exhausted, the result is flagged truncated=True and overall is downgraded from 'passing' to 'unknown' so the caller does not act on a partial view. |
| get_project_fieldsA | Lists a project's fields and the options each single-select one accepts, which is what set_project_field expects to be named. |
| get_releaseB | Fetches one release, by tag or the latest published one. |
| get_repo_stars_sinceA | Return the repos owned by username that received the most new stars since a given date. since accepts YYYY-MM-DD or ISO 8601; defaults to 30 days ago. Answers prompts like 'which repos gained the most stars in the last 30 days'. One REST call is made per repo checked — set max_repos conservatively. truncated is True when the account has more public repos than the listing could read, so the answer may miss some. |
| 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). Note: repo_stars returns current cumulative star counts, not stars gained within the requested period — GitHub does not expose per-period star deltas. |
| list_milestonesB | Lists a repository's milestones with the count of issues in each. |
| list_open_issues_prsC | Lists open pull requests or issues. |
| list_pr_commentsB | Lists the comments on a pull request. Inline comments carry the file and line they sit on, so a second review can tell what it already said. |
| list_project_itemsA | Lists what is on a project board with each card's field values, so a backlog can be read by Status rather than one issue at a time. |
| list_releasesB | Lists a repository's releases, newest first. |
| list_repo_labelsB | Lists the labels defined in a repository. |
| list_reposA | Lists repositories for a user, an organisation, or the caller. The owner's account type picks the endpoint, since /orgs 404s on a person and /users hides an organisation's private repositories. See #354. |
| list_tagsA | Lists a repository's tags and the commit each points at. |
| merge_prC | Merges a specific pull request. |
| remove_from_projectA | Takes an issue or pull request off a project board. The issue itself is untouched and stays open, but the field values its card held go with it. |
| reply_to_review_commentA | Replies on an existing review thread rather than starting a new one. |
| search_issues_prsA | Searches issues and pull requests by text and qualifiers. Unlike list_open_issues_prs the query is the caller's, so closed and merged items are reachable and any qualifier GitHub search accepts works. |
| search_userB | Search for a GitHub user by username using GraphQL API. |
| set_issue_milestoneA | Files an issue under a milestone, or takes it off one. Setting is its own tool because update_issue drops every argument left as null, which is what clearing a milestone has to send. |
| set_pr_draftA | Moves a pull request between draft and ready for review. REST accepts draft only when the pull request is created, so this goes through GraphQL. |
| set_project_fieldA | Sets a single-select field on an issue's card, naming the field and the option rather than their node ids. An issue not yet on the board is added first, since a field value has nowhere to live otherwise. |
| update_assigneesB | Updates the assignees for a specific issue or pull request. |
| update_issueA | Updates an existing issue. Only the fields supplied are sent, the rest keep their current values. |
| update_milestoneA | Changes a milestone in place. Only the fields supplied are sent, so closing one leaves its title and due date alone. |
| update_prA | Updates an existing pull request. Only the fields supplied are sent, the rest keep their current values, so a title can change without restating the body. |
| update_pr_branchC | Updates the pull request branch with the latest upstream changes. |
| update_pr_commentA | Rewrites a comment already posted. Conversation and review comments have separate id spaces, so the kind has to match where the id came from. |
| update_pr_descriptionA | Updates the title and description of a specific pull request. |
| update_releaseA | Changes a published release in place. Only the fields supplied are sent, so correcting a title does not wipe the notes. make_latest is settable on create_release alone, to keep this signature inside the parameter budget. |
| 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: 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 Always use PrefabApp as the outermost context manager — this enables streaming so the UI renders progressively as code is written: For interactive UIs, pass initial state as a dict and use
Available pipes: upper, lower, currency, length, json, round(n), default(val), truncate(n). Charts live in Values passed via Layout patterns:
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
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 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
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| Prefab Generative Renderer | |
| project-boards/SKILL.md | Put issues and pull requests on a GitHub project board, set their fields, read what is on a board, and take items off it |
| project-boards/_manifest | File listing for project-boards |
| user-activity/SKILL.md | Find a user's or organisation's repositories, and look up a profile, contribution history, and which repos gained stars recently |
| user-activity/_manifest | File listing for user-activity |
| pr-analysis/SKILL.md | Analyse a GitHub pull request by fetching its metadata, diff, linked issues and CI status |
| pr-analysis/_manifest | File listing for pr-analysis |
| issue-management/SKILL.md | Create, update, list and search GitHub issues and PRs, list a repository's labels, run milestones, and check for duplicates |
| issue-management/_manifest | File listing for issue-management |
| interactive-ui/SKILL.md | Ask the user to pick an option, or render GitHub data as an interactive UI panel |
| interactive-ui/_manifest | File listing for interactive-ui |
| pr-management/SKILL.md | Manage the lifecycle of a GitHub PR - create, update the description, assign, refresh the branch and merge |
| pr-management/_manifest | File listing for pr-management |
| pr-review/SKILL.md | Review a GitHub pull request by posting inline code comments and submitting a review decision |
| pr-review/_manifest | File listing for pr-review |
| error-handling/SKILL.md | Read the error codes these tools raise and decide whether to retry, fix the call, or stop |
| error-handling/_manifest | File listing for error-handling |
| release-management/SKILL.md | Tag a commit, publish a GitHub release, and read, correct or withdraw the tags and releases already there |
| release-management/_manifest | File listing for release-management |
| Prefab Renderer (choose) |
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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