Skip to main content
Glama
BADARRASHEED

github-pr-reviewer

by BADARRASHEED

GitHub PR Reviewer MCP Server

A lightweight Model Context Protocol (MCP) server that connects Codex with GitHub and Notion. It allows Codex to fetch pull request changes, review code, and save approved reviews to Notion.

Architecture Diagram

GitHub PR Reviewer MCP Server Architecture

Related MCP server: GitHub Code Review Assistant

Features

  • Fetch pull request details and changed files from GitHub

  • Analyse code using Codex

  • Identify bugs, security risks, performance issues, and maintainability concerns

  • Provide severity levels and recommended fixes

  • Save approved reviews to Notion

  • Integrate with Codex through FastMCP

Tech Stack

  • Python

  • FastMCP

  • Codex CLI

  • GitHub API

  • Notion API

  • uv

  • python-dotenv

Setup

Create a .env file in the project root:

GITHUB_TOKEN=your_github_token
NOTION_API_KEY=your_notion_api_key
NOTION_PAGE_ID=your_notion_page_id

Install the project dependencies:

uv sync

Add the MCP server to Codex:

codex mcp add github-pr-reviewer -- uv --directory "C:\path\to\pr_reviewer" run python "src\pr_reviewer\pr_analyzer.py"

Verify the MCP server:

codex mcp list

Usage

Start Codex:

codex

Then provide a GitHub pull request URL:

Use the github-pr-reviewer MCP server to review this pull request:

https://github.com/OWNER/REPOSITORY/pull/PR_NUMBER

Fetch the pull request changes and review the code for bugs, security issues,
performance problems, and maintainability concerns. Do not save the review
to Notion until I approve it.

After reviewing the result:

I approve this review. Save the complete review to Notion using the
github-pr-reviewer MCP server.

Security

Never commit API tokens or the .env file.

Add the following entries to .gitignore:

.env
.venv/
__pycache__/

Author

Badar Rasheed Butt

AI Engineer

Available Tools

2 tools
create_notion_pageC

Create a Notion page with PR analysis.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleYes
contentYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry the full burden of behavioral disclosure, but it only states the basic action. It does not mention side effects, authentication, failure modes, or what 'PR analysis' entails. It is not misleading but under-informative.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence with no wasted words. However, it is so brief that it sacrifices informative content; but for conciseness as a standalone criterion, it scores well.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a create operation with no annotations and minimal parameter information, the description is incomplete. It does not explain what the Notion page contains, how PR analysis is generated, or what success/failure looks like. The output schema exists but does not compensate for the lack of operational context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not explain or expand on the title and content parameters. The agent is left to guess the expected format or semantics for these fields.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (create), the target resource (Notion page), and the context (PR analysis). This distinguishes it from sibling fetch_pr, which retrieves PR data.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus the sibling fetch_pr, nor any exclusions or prerequisites. The usage context is entirely absent.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

fetch_prC

Fetch changes from a GitHub pull request.

ParametersJSON Schema
NameRequiredDescriptionDefault
pr_numberYes
repo_nameYes
repo_ownerYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the full burden of behavioral disclosure. It only says 'fetch changes,' but does not specify what kind of changes (files, diffs, commits), whether the operation is read-only, or any relevant side effects or requirements.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single concise sentence, front-loaded with the core action. However, it is slightly under-specified, leaving room for additional context without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description is minimal and vague about the scope of 'changes.' Although an output schema exists, the description still needs to clarify what data is returned and any operational context, which it fails to do.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, and the description does not mention any of the three parameters (repo_owner, repo_name, pr_number). While the parameter names are self-explanatory, the description adds no meaning beyond the schema, failing to compensate for the lack of documentation.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action and resource: 'Fetch changes from a GitHub pull request.' It is specific and easily distinguished from the sibling tool create_notion_page, which targets Notion.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is provided on when to use this tool versus alternatives. The description does not mention any conditions, prerequisites, or exclusions, leaving the agent to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 2 tool updatesv0.1.0
    • First observedcreate_notion_page
    • First observedfetch_pr

TDQS

B3.3/5.0
Disambiguation5/5

fetch_pr and create_notion_page have completely distinct purposes: one retrieves PR data, the other creates a Notion page. There is no overlap, making selection unambiguous.

Naming Consistency5/5

Both tools use a consistent verb_noun snake_case pattern (fetch_pr, create_notion_page), which is predictable and readable.

Tool Count3/5

With only 2 tools, the server feels minimal, but the scope is narrowly defined. It is slightly under the typical range, but not excessive.

Completeness4/5

The workflow of fetching a PR and creating a Notion page is directly supported, but there are missing auxiliary operations like listing PRs or updating pages. Minor gaps exist.

Maintenance

ActivityMaintained
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

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/BADARRASHEED/github_pr_reviewer'

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