Other formats agents might prefer:
markdownjsonllms.txt

Agent? You probably want markdown or json, or Pod over MCP.

Reported issues for saidsef-mcp-github-pr-issue-analyser

Pod holds 19 of 90 problems reported by people outside the maintainer team. Issues filed by the project's own owners, members and collaborators are excluded entirely — a maintainer's release checklist is not a warning to a prospective user.

Back to saidsef-mcp-github-pr-issue-analyser.

Most discussed

refactor(auth): configure the DynamoDB store from one DYNAMODB_TABLE_ARN

Problem Statement

The DynamoDB token store takes three settings where Redis takes one. The table name and the region are both segments of a table ARN, and the endpoint repeats a variable the AWS SDK already reads. Two of the three earn nothing and still have to be documented, wired into the deployment and kept in step.

The table is also created on the first request rather than at startup, with nothing guarding the create. Three replicas started together against an empty table:

| Replica |

Read the thread · 2026-08-30 · closed · 1 comment

feat(tools): read and correct the comments the server posts

Problem Statement

add_pr_comments and add_inline_pr_comment post a comment and return its id, and that is where they stop. Nothing lists what is already on a pull request, fixes a typo in a comment just posted, or answers a reply on a review thread. A wrong inline comment stays wrong, and posting a second one to correct the first is the only move available.

Reading is the bigger half of it. With no listing, the server cannot tell whether it has already commented on a line, so running a

Read the thread · 2026-08-29 · closed · 1 comment

feat(tools): change a pull request's state, base and draft status

Problem Statement

update_pr_description is the only way to edit a pull request, and it edits exactly two things: the title and the body, both required. Closing a pull request that will not be merged, marking a draft ready for review, or retargeting one opened against the wrong base branch all mean leaving the tool for the GitHub UI. Changing only the title means restating the body word for word, and getting that wrong overwrites it.

Proposed Solution

PATCH /pulls/{number} already ac

Read the thread · 2026-08-29 · closed · 1 comment

feat(tools): update, delete and list releases and tags

Problem Statement

The server can create a tag and create a release, and that is the whole of what it does with either. Correcting the notes on a release that has already gone out, removing one published too early, listing what has been released, or deleting a tag pushed by mistake all mean leaving the tool for the GitHub UI. Both create calls also fail outright when the tag or release already exists, so a retry after a half-finished release cannot recover.

Proposed Solution

Add read, up

Read the thread · 2026-08-29 · closed · 1 comment

feat(tools): search issues and pull requests by text and qualifiers

Problem Statement

Nothing in the server finds an issue or a pull request you cannot already name. list_open_issues_prs is the only tool that reaches GitHub's search API, and it writes the query itself: open items only, one type at a time, scoped to a user, org or repo. There is no way to pass a keyword, ask for something closed, or narrow by label, author or date. Someone hunting for "the issue about rate limits" has to leave the MCP and run gh search issues instead.

Proposed Solutio

Read the thread · 2026-08-29 · closed · 1 comment

refactor(server): register_tools takes an argument nobody passes

register_tools(self, methods: Any = None) falls back to self.gi when methods is None, and nothing in src/ or tests/ ever passes anything else. The parameter and its fallback exist for a caller that does not exist.

The skills provider is registered at the end of the same method, which has nothing to do with walking an object for tools. Anyone reading the method to find out how tools are discovered gets the skills directory as well.

Read the thread · 2026-08-28 · closed · 1 comment

perf(activity): get_repo_stars_since checks every repo one at a time

The loop in get_repo_stars_since waits for _count_new_stars to finish on one repo before it starts the next, and each of those walks that repo's stargazer pages the same way, a page at a time.

With the default max_repos of 20 that is at least 21 round trips to GitHub laid end to end, and a lot more once repos have thousands of stars behind them. The tool description already tells callers to keep max_repos low, which is the cost showing through to whoever is using it.

Nothing here depen

Read the thread · 2026-08-28 · closed · 1 comment

fix: Simplify type annotations for pagination parameters in GitHub integration

🚨 Problem Statement

The current implementation of the GitHub integration module uses overly complex type annotations for pagination parameters, specifically the per_page parameter in the list_open_issues_prs method. This complexity introduces unnecessary dependencies and reduces code clarity without providing substantial runtime validation benefits.

📋 Overview

The GitHub integration module currently employs a custom type alias PerPage that utilises conint constraints to validate t

Read the thread · 2026-01-19 · closed · 1 comment

Most recent

docs(readme): link the hosted read the docs site

Problem Statement

The documentation section of the README lists the pages as repo paths, and those only resolve for someone reading the file on GitHub. The same README is the package description on PyPI, where every one of those links is dead. Nothing on the page says the documentation is published as a browsable site at all.

Proposed Solution

Name the site above the table, so a reader who cannot follow the repo paths has one link that works everywhere the README is rendered.


[Read the thread](https://github.com/saidsef/mcp-github-pr-issue-analyser/issues/373) · 2026-08-30 · closed · 0 comments

### fix(docs): the architecture diagram does not render on read the docs

## Problem Statement

The architecture page on the published site shows a broken image where the diagram should be. The SVG is published and reachable on its own, but the page asks for it one directory too deep, so anyone reading the docs rather than the repository gets no visual overview of how the server fits together.

| URL | Result |
|-----|--------|
| `/en/latest/architecture.svg` | 200, the file as published |
| `/en/latest/architecture/architecture.svg` | 404, what the page asks for |

#

[Read the thread](https://github.com/saidsef/mcp-github-pr-issue-analyser/issues/371) · 2026-08-30 · closed · 0 comments

### build(docs): publish the docs directory as a read the docs site

## Problem Statement

The reference material sits in `docs/` and can only be read on GitHub, a file at a time. There is no search, no navigation from one page to the next, and no hosted version to point anyone at. Someone after the OAuth2 setup or the metric names has to open the repository and guess which file holds it.

## Proposed Solution

Build the directory with MkDocs and let Read the Docs host and version it. A config at the root picks the build image and Python version, points at an `mk

[Read the thread](https://github.com/saidsef/mcp-github-pr-issue-analyser/issues/369) · 2026-08-30 · closed · 0 comments

### build(docker): install from uv.lock instead of resolving at build time

## Problem Statement

The container image resolves its dependencies fresh every time it is built. The builder runs `uv pip install .`, which does not read `uv.lock`, and `.dockerignore` keeps the lock out of the build context in any case. CI installs with `uv sync --locked`. So the image ships whatever satisfies the version ranges on the day it was built, and CI tests something else.

An image built today installs authlib 1.8.0, where the lock pins 1.7.2. Authlib 1.8.0 logs `AuthlibDeprecationWa

[Read the thread](https://github.com/saidsef/mcp-github-pr-issue-analyser/issues/367) · 2026-08-30 · closed · 0 comments

### docs(configuration): add the IAM policy for the DynamoDB token store

## Problem Statement

The configuration docs give the DynamoDB token store's permissions as a sentence of prose, so anyone standing the store up has to work the policy document out themselves. The list is also wrong in one place. It presents `dynamodb:UpdateTimeToLive` as something only needed when the server creates the table, but a table created by hand without TTL enabled needs it too, and the deployment stops at startup on an AccessDenied.

The same pages carry filler that makes them longer 

[Read the thread](https://github.com/saidsef/mcp-github-pr-issue-analyser/issues/365) · 2026-08-30 · closed · 0 comments

### feat(tools): read a single issue back by number

## Problem Statement

Every read the server offers for an issue is a listing. `list_open_issues_prs` and `search_issues_prs` return the same trimmed search shape, with no body and no assignees, and both go through GitHub's search index, which lags for a minute or so after a write. Pull requests have `get_pr_content` for a single item. Issues have no equivalent, so confirming what an issue says, or who it is assigned to, means leaving the server for `gh issue view`.

## Proposed Solution

Add `ge

[Read the thread](https://github.com/saidsef/mcp-github-pr-issue-analyser/issues/358) · 2026-08-30 · closed · 0 comments

### feat(auth): store OAuth token state in DynamoDB as well as Redis

## Problem Statement

The server keeps OAuth client registrations and token state in process unless `REDIS_HOST_PORT` is set. Anything running more than one replica, or that needs the state to survive a restart, has to have a Redis instance next to it. On AWS that means running and paying for ElastiCache to hold a few small keys, when DynamoDB is already there, needs no instance to size, and is billed per request.

## Proposed Solution

Let `build_token_store()` choose between backends rather th

[Read the thread](https://github.com/saidsef/mcp-github-pr-issue-analyser/issues/357) · 2026-08-30 · closed · 0 comments

### feat(tools): list the repositories an owner has

## Problem Statement

Every tool here is handed a `repo_owner` and a `repo_name`, and nothing can tell you what those names are. Anyone driving the server has to already know which repository they want, or go to the GitHub UI to find out. That applies to a person's repositories and an organisation's alike.

Three tools do read repository lists, but only as a byproduct of doing something else, and each is fixed:

| Where | What it reads |
|---|---|
| `search_user` | The 10 most recently updated p

[Read the thread](https://github.com/saidsef/mcp-github-pr-issue-analyser/issues/354) · 2026-08-30 · closed · 0 comments

### feat(tools): put issues and pull requests on a project board

## Problem Statement

Projects is where an issue goes once it exists, and the server stops at creating it. An issue filed through the tool has to be dragged onto a board by hand and its Status set there. Nothing can read which board an issue is on or what its fields say, so an agent asked to triage a backlog can see every open issue and nothing about where any of them sit.

## Proposed Solution

Projects (v2) has no REST surface, only GraphQL. The transport is already here - `_execute_graphql` o

[Read the thread](https://github.com/saidsef/mcp-github-pr-issue-analyser/issues/351) · 2026-08-29 · closed · 0 comments

### feat(tools): manage milestones, and put an issue in one

## Problem Statement

Milestones are how a repository groups issues into a release, and the server cannot see them or set them. `create_issue` sends a title, a body and labels, `update_issue` sends those plus a state, and neither carries a milestone. There is no tool to open a milestone, rename one, give it a due date or close it either, so anyone using this to file issues has to go to the GitHub UI afterwards to sort them.

## Proposed Solution

Milestones are plain REST under `/repos/{owner}/{

[Read the thread](https://github.com/saidsef/mcp-github-pr-issue-analyser/issues/350) · 2026-08-29 · closed · 0 comments

### fix(server): the /metrics route handler is not a coroutine

`metrics_route` in `issues_pr_analyser.py` is declared with `def`, and `custom_route` wants a handler returning an awaitable. pyright says so:

Type "(_request: Request[State]) -> Response" is not assignable to type "(Request[State]) -> Awaitable[Response]" Function return type "Response" is incompatible with type "Awaitable[Response]"


The endpoint answers 200 today, so nothing is visibly broken. It is the only type error in `src/`, which matters because it is the one thing standing b

[Read the thread](https://github.com/saidsef/mcp-github-pr-issue-analyser/issues/340) · 2026-08-28 · closed · 0 comments

The remaining reports are on [the project's issue tracker](https://github.com/saidsef/mcp-github-pr-issue-analyser/issues).