Skip to main content
Glama
samarora837

GitHub PR Analysis MCP Server

by samarora837

GitHub PR Analysis MCP Server

This project implements a Model Context Protocol (MCP) server that analyzes GitHub Pull Requests and optionally creates a structured Notion page with the analysis results. It is designed to be used locally with Claude CLI using the stdio MCP transport.

πŸš€ Features: Analyze GitHub Pull Requests using GitHub API Extract PR metadata, commits, files, and code changes Generate structured AI-based PR analysis Optionally create a Notion page with the analysis Runs locally via MCP stdio Integrates seamlessly with Claude CLI

🧠 Architecture Overview: Claude CLI β”‚ β”‚ (MCP stdio) β–Ό MCP Server (Python) β”œβ”€β”€ GitHub API (PR data) β”œβ”€β”€ AI Analysis Logic └── Notion API (Page creation)

πŸ“ Project Structure: MCP-STDIO/ β”œβ”€β”€ pr_analyzer.py # MCP server entry point β”œβ”€β”€ github_integration.py # GitHub PR fetching logic β”œβ”€β”€ requirements.txt # Python dependencies └── .venv/ # Virtual environment

πŸ”‘ Required Environment Variables:

The application relies on the following environment variables:

Variable Description GITHUB_TOKEN GitHub Personal Access Token NOTION_API_KEY Notion integration secret NOTION_PAGE_ID Parent Notion page ID

πŸ” How to Create GITHUB_TOKEN: Go to πŸ‘‰ https://github.com/settings/tokens

Click Generate new token (classic) Select scopes: βœ… repo βœ… read:user Generate token and copy it

🧾 How to Create NOTION_API_KEY: Go to πŸ‘‰ https://www.notion.so/my-integrations

Click New integration Name it (e.g. PR Analyzer) Select your workspace Copy the Internal Integration Secret

πŸ“„ How to Create NOTION_PAGE_ID: Create a page in Notion (this will be the parent page) Share the page with your integration: Click Share Invite your integration Copy the page URL:

https://www.notion.so/AI-PR_ANALYSIS-2*************************

Extract the page ID (last 32 characters): 2***********************

πŸ“¦ Dependencies (requirements.txt): Package Purpose requests Communicates with GitHub & Notion REST APIs python-dotenv Loads environment variables from .env fastmcp MCP server framework

πŸ›  Setup Instructions: 1️⃣ Create Virtual Environment cd MCP-STDIO python -m venv .venv source .venv/bin/activate

2️⃣ Install Dependencies pip install -r requirements.txt

3️⃣ Verify Server Runs Manually .venv/bin/python pr_analyzer.py

βœ… This should start the MCP server without errors.

πŸ€– Using the MCP Server with Claude CLI 1️⃣ Ensure Claude CLI is Installed claude --version

Expected output:

2.x.x (Claude Code)

2️⃣ Configure MCP Server (~/.claude.json) { "mcpServers": { "github_pr_analysis": { "type": "stdio", "command": "full path of your .venv/bin/python ", "args": ["pr_analyzer.py"], "cwd": "full path of your pr_analyzer.py" } } }

⚠️ Make sure: command points to the virtualenv python cwd is the folder containing pr_analyzer.py

3️⃣ Restart Claude CLI claude 4️⃣ Verify MCP Server is Connected Inside Claude CLI: /mcp You should see: github_pr_analysis Β· βœ” connected πŸ§ͺ Example Usage in Claude Analyze this PR: https://github.com/org/repo/pull/123

Claude will: Fetch PR details Perform analysis

Ask: β€œWould you like me to create a Notion page for this analysis?”

Reply with: yes β†’ creates Notion page no β†’ skips creation

🐞 Debugging Tips Add logs in MCP server: print("Debug message", file=sys.stderr)

Check Claude MCP logs: claude --debug

Verify paths: pwd ls pr_analyzer.py

βœ… Summary MCP server runs locally via stdio Claude CLI acts as the client GitHub PRs are analyzed automatically Notion pages are created on user confirmation Secure via environment variables

children=[{ "object": "block", "type": "paragraph", "paragraph": { "rich_text": [{ "type": "text", "text": {"content": content} }] } }]

-
security - not tested
F
license - not found
-
quality - not tested

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/samarora837/MCP-STDIO'

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