repo-recommender
Provides tools for searching GitHub issues and repositories, retrieving repository context and issue activity, and recording recommendations to help curate relevant open-source contribution opportunities.
Click on "Deploy 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., "@repo-recommenderwhat should I look at this week?"
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 Repo Recommender (MCP)
A local MCP server that helps Claude recommend specific GitHub issues and repos worth contributing to, based on your stack and interests rather than a generic trending list. It runs on your machine and plugs into Claude Desktop.
Ask Claude "what should I look at this week?" and it searches GitHub with these tools, reads the results, and picks a shortlist, each with a one-line reason it fits you. Claude does the ranking itself in the conversation; the server supplies the data.
What it does
Tool | What it does |
| Finds open issues by label, language, and keyword, across all of GitHub or limited to your seed repos. Skips issues you've already been recommended. |
| Discovers active repos by GitHub topic and/or keyword, for niche domains where issue search is noisy. Runs one query per topic, drops archived repos, forks and stale repos, and ranks by a blend of recency and stars. Supports paging, and flags repos you've already seen or shortlisted. |
| Estimates whether a PR from an outside contributor will get a response, from recent PR outcomes: merge rate, median days to merge or close, how old the oldest open outside PR is, and when the last outside PR was merged. Results are saved as snapshots so you can compare over time. |
| Returns a repo's description, topics, stars, language, README excerpt, and last commit date. |
| Estimates whether a maintainer will respond: time to first maintainer comment, days since the last one, and the repo's open vs closed issue counts. |
| Reads an issue in full: the untruncated body and the comment thread, with each commenter's association to the repo (so you can tell maintainer replies from others). |
| Reads a file from a repo (optionally at a branch, tag or commit, and a line range), so an issue's claim can be checked against the real code. Lists the entries if the path is a directory. |
| Checks whether an issue already has pull requests against it, so you don't draft a fix for something already raced. Reports open, draft, merged and rejected PR counts, how fast the first PR appeared, and flags likely bot authors. |
| Logs an issue as recommended so it doesn't come back in later searches. |
| Updates your saved profile (stack, interests, goals) when your priorities change. |
| Saves a ranked shortlist of repos for a topic, each with a reason and a status (shortlisted, interested, dismissed, pursued). |
| Retrieves saved shortlists with each repo's latest health snapshot, so research can be refreshed instead of redone. |
Your profile, recommendation history, repos seen, health snapshots and shortlists are stored in a local DuckDB file (state.duckdb). The profile starts from the blurb in your config.yaml and is then updated through Claude via update_interests. It is also exposed to Claude as the profile://interests resource.
Related MCP server: ship-it-mcp
Setup
1. Clone and install
git clone https://github.com/infinitevoid1793/repo-recommender-mcp.git
cd repo-recommender-mcp
python3 -m venv .venv
source .venv/bin/activate
pip install -e .Python 3.11 or newer is required. To work on the project, install the dev extras instead and run the checks:
pip install -e ".[dev]"
pytest # 88 offline tests, no token needed
ruff check .2. Create a GitHub token (read-only, dedicated to this tool)
On GitHub: Settings → Developer settings → Personal access tokens → Fine-grained tokens
Generate a new token and name it something identifiable (e.g.
repo-recommender-mcp)Set an expiration (90 days is a reasonable default; renew when it lapses)
Under Repository access, choose Public repositories (read-only)
Under Permissions, grant read-only access to Issues and Metadata only
Generate and copy the token immediately; GitHub shows it once
3. Configure
cp config.example.yaml config.yaml
cp .env.example .envconfig.yaml: your seed repos (optional) and an initial profile blurb (stack, interests, goals)..env: your token, asGITHUB_TOKEN=....
Both files are gitignored and never committed.
4. Point Claude Desktop at it
Open Claude Desktop's config (Settings → Developer → Edit Config) and add an entry under mcpServers:
{
"mcpServers": {
"repo-recommender": {
"command": "/absolute/path/to/repo-recommender-mcp/.venv/bin/repo-recommender"
}
}
}The token isn't needed here; the server loads it from .env. To print the path:
echo "$(pwd)/.venv/bin/repo-recommender"5. Restart Claude Desktop
Quit and reopen the app fully, then check the tools icon in the chat input. You should see twelve tools: search_issues, search_repos, get_repo_context, get_issue_activity, get_repo_health, get_issue_detail, get_file_content, get_pr_feasibility, record_recommendation, update_interests, save_shortlist, get_shortlists.
Using it
In a new chat, ask something like "what should I look at this week?" For a niche domain, Claude can run a research pass: check get_shortlists for the topic, search_repos to find active repos, get_repo_health on the candidates, then save_shortlist with the best ~10. Later, ask it to refresh a saved list. It can also call search_issues scoped to shortlisted repos to find concrete issues, then get_issue_detail to read the issue in full, get_pr_feasibility to check nobody has already opened a PR for it, and get_file_content to read the code it points at before recommending it. It uses get_repo_context and get_issue_activity on promising candidates and scores fit against your saved profile. Ask it to call record_recommendation on what it surfaces so those issues don't return, and tell it your priorities have changed to have it call update_interests.
Notes
GitHub's search endpoint is rate-limited (about 30 requests per minute, even with a token), so this isn't built for high-frequency polling.
search_repospauses between its per-topic queries for this reason.Delete
state.duckdbto start fresh (this also erases saved shortlists and health history); it is recreated and reseeded fromconfig.yamlon the next run.Changes to
config.yaml,.env, or the code take effect after restarting Claude Desktop.Version history is in
CHANGELOG.md.Code lives in
src/repo_recommender/, with the tools grouped intotools/discovery.py,tools/inspection.pyandtools/state.py. Tests are intests/and run without a token or network access.CI (
.github/workflows/ci.yml) lints and tests on Python 3.11–3.13, then builds the wheel and sdist and attaches them to the run as artifacts.
License
MIT. See LICENSE.
This server cannot be deployed
Maintenance
Related MCP Connectors
Finds real, maintained open-source repos that fit your project. MCP grounding for coding agents.
Discover GitHub projects welcoming AI agent contributions. Public search and listing reads.
Connect AI assistants to GitHub - manage repos, issues, PRs, and workflows through natural language.
Search GitHub, npm, PyPI, StackOverflow, ArXiv from one MCP — built for coding agents.
Related MCP Servers
- FlicenseAqualityDmaintenanceConnects Claude to GitHub, enabling listing repositories, browsing open pull requests, and inspecting PR diffs for code review.4-
- FlicenseNot gradedqualityDmaintenanceEnables to interact with GitHub repositories directly from Claude, supporting actions like viewing repos, checking status, committing and pushing changes, and managing pull requests.-
- AlicenseAqualityDmaintenanceEnables Claude to access and manage GitHub repositories dynamically at runtime, including private repos, with tools for browsing files, searching code, and viewing commits, pull requests, and issues.111ISC
- AlicenseNot gradedqualityDmaintenanceEnables Claude to analyze GitHub repositories with tools for health scoring, contributor analysis, issue tracking, code search, and more.MIT