🏗️ GitHub Portfolio MCP Server
A Model Context Protocol (MCP) server that connects Large Language Models (like Claude) to the GitHub API.
This project demonstrates an understanding of AI infrastructure by building a secure, standardized bridge between an LLM's context window and an external data source. By using the MCP standard, the LLM can dynamically request live data without requiring custom, one-off API integrations.
🧠 Architecture Overview
This integration utilizes the standard MCP JSON-RPC architecture over stdio:
- The LLM / Client (e.g., Claude Code): Acts as the brain and the mediator. It reads the tool schemas and decides when to fetch external data.
- The MCP Server (This Repo): A lightweight Python application using the
mcpSDK. It securely exposes specific tools and handles the JSON-RPC communication. - The External API (GitHub): The data source. The server executes standard HTTP requests to fetch live data.
🛠️ Available Tools
fetch_public_repos: Takes a GitHubusernameas a string and returns a clean, extracted list of their public repositories (including name, URL, and description) optimized for an LLM's context window.
🚀 Quick Start
Prerequisites
- Python 3.x installed
- Claude Code (or another MCP-compatible client)
Installation
- Clone this repository:
git clone <your-repo-url> cd <your-repo-folder>``` - Install the required dependencies:
pip install -r requirements.txt
Running with Claude Code
You can easily register this server with Claude Code so the LLM can use it dynamically. Run the following command in your terminal from the project directory:
claude mcp add github-portfolio python3 server.py
Once added, you can ask Claude Code a prompt like:
"Use the github-portfolio tools to fetch the public repositories for user1."
Claude will automatically format the JSON-RPC request, wake up the local Python server, execute the API call, and format the response.
Testing Locally
If you want to test the server without Claude Code, a custom Python client is included. Run:
python3 client.py
This will launch a background process, connect via standard input/output, and fetch a hardcoded test request.