github-pr-reviewer
Click on "Install Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@github-pr-reviewerReview pull request #23 for bugs and security, then save to Notion."
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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

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_idInstall the project dependencies:
uv syncAdd 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 listUsage
Start Codex:
codexThen 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 toolscreate_notion_pageC
Create a Notion page with PR analysis.
| Name | Required | Description | Default |
|---|---|---|---|
| title | Yes | ||
| content | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| pr_number | Yes | ||
| repo_name | Yes | ||
| repo_owner | Yes |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
2 tool updates
v0.1.0- First observed
create_notion_page - First observed
fetch_pr
TDQS
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.
Both tools use a consistent verb_noun snake_case pattern (fetch_pr, create_notion_page), which is predictable and readable.
With only 2 tools, the server feels minimal, but the scope is narrowly defined. It is slightly under the typical range, but not excessive.
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
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
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Screens public GitHub repos and PRs to generate risk maps, findings, and merge-readiness signals.
Access the GitHub API, enabling file operations, repository management, search functionality, and…
Code intelligence for LLMs. Analyze, search, and retrieve code from any public git repository.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceA tool that integrates with GitHub and Notion to analyze and review pull requests, enabling automated code reviews and documentation in Notion.-
- AlicenseNot gradedqualityDmaintenanceEnables AI assistants to perform comprehensive GitHub pull request code reviews, including analysis of code patterns, complexity, and security issues, while managing review comments and ensuring compliance with team coding standards.2MIT
- FlicenseNot gradedqualityDmaintenanceEnables the analysis of GitHub Pull Requests to extract metadata, commits, and code changes for structured AI insights. It also supports the optional creation of Notion pages to store and organize the resulting analysis.-
- FlicenseAqualityDmaintenanceConnects Claude to GitHub, enabling listing repositories, browsing open pull requests, and inspecting PR diffs for code review.4-
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/BADARRASHEED/github_pr_reviewer'
If you have feedback or need assistance with the MCP directory API, please join our Discord server