Search your GitHub starred repositories with semantic search.
English | 简体中文
- 🔍 Semantic Search - Natural language queries powered by local embeddings
- ⚡ Fast Keyword Search - Full-text search fallback for instant results
- 🔃 Flexible Sorting - Sort results by stars, forks, starred date, or updated date
- 🤖 MCP Server - Integrate with Claude Desktop, Cursor, and other AI tools
- 🔐 Zero Config - GitHub Device Flow authentication, no tokens needed
- 💾 Local Storage - All data stored locally with LanceDB (no compilation required)
- 🌍 Multilingual - Supports English, Chinese, and other languages
npm install -g starepoOr use with npx (no installation required):
npx starepo <command>Install the starepo skill into Claude Code, Cursor, and other AI agents with one command:
npx skills add yangyang0507/starepoOnce installed, your AI agent can search your GitHub stars directly. Just ask naturally:
"Find my starred repos about semantic search" "Show me TypeScript repos I starred this month"
Starepo can run as an MCP server to integrate with AI assistants.
Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"starepo": {
"command": "starepo",
"args": ["serve"]
}
}
}Or if installed locally:
{
"mcpServers": {
"starepo": {
"command": "npx",
"args": ["starepo", "serve"]
}
}
}search_stars(query?, language?, topic?, since?, until?, days?, limit?)- Search repositories with combined filterslist_stars(query?, language?, topic?, since?, until?, days?, limit?)- List with combined filtersget_star_info(full_name)- Get repository detailssync_stars(force?)- Trigger smart or full sync from GitHub
starepo://stars- All starred repositories overviewstarepo://stars/{owner}/{repo}- Specific repository details (direct URI access; not enumerated inresources/list)
starepo authFollow the prompts to authorize via GitHub Device Flow.
# Smart sync (incremental if last_sync exists, full otherwise)
starepo sync
# Force full sync
starepo sync --force
# Skip embedding generation (faster)
starepo sync --no-embeddings# Semantic search (natural language)
starepo search "react state management library"
starepo search "ai design tool"
# Search with structured filters
starepo search "react" --lang TypeScript --topic hooks
starepo search --query "state" --since 2026-03-01 --until 2026-03-08
starepo search --lang TypeScript --days 7
# Limit results
starepo search "python web framework" --limit 5
# Sort results
starepo search "rust cli" --sort stars
starepo search "react" --sort forks --order asc
# JSON output
starepo search "rust cli" --jsonAuthenticate with GitHub (runs automatically on first use).
starepo auth
starepo auth --force # Re-authenticateSync your GitHub starred repositories.
starepo sync # Smart sync (incremental if synced before, full otherwise)
starepo sync --force # Force full sync
starepo sync --no-embeddings # Skip embeddingsNote: First sync generates embeddings for semantic search (~0.5s per repo). For 1000+ stars, this takes ~10 minutes.
Generate or regenerate embeddings for semantic search.
starepo embed # Generate missing embeddings only
starepo embed --force # Regenerate all embeddingsUse cases:
- Resume interrupted embedding generation
- Upgrade to a newer embedding model
- Fix corrupted embeddings
Search your starred repositories.
starepo search "query"
starepo search --query "query"
starepo search "query" --limit 10
starepo search "query" --lang TypeScript --topic react
starepo search "query" --since 2026-03-01 --until 2026-03-08
starepo search --lang TypeScript --days 7
starepo search "query" --sort stars # Sort by star count (desc)
starepo search "query" --sort forks --order asc # Sort by forks ascending
starepo search "query" --jsonSearch modes:
- If embeddings exist: Hybrid search (vector + keyword)
- Otherwise: Keyword search (full-text fallback)
Sort options (--sort): relevance (default), stars, forks, starred, updated
Order options (--order): desc (default), asc
List your starred repositories with filters.
starepo list
starepo list --query "react"
starepo list --lang TypeScript
starepo list --topic ai
starepo list --since 2026-03-01 --until 2026-03-08
starepo list --days 7
starepo list --limit 20
starepo list --sort stars # Sort by star count (desc)
starepo list --sort starred --order asc # Oldest starred first
starepo list --sort updated # Recently updated first
starepo list --jsonSort options (--sort): starred (default), stars, forks, updated
Order options (--order): desc (default), asc
Show detailed information about a repository.
starepo info facebook/reactStart the MCP server (stdio mode).
starepo serveAll data is stored in XDG-compliant directories:
- Config:
~/.config/starepo/auth.json- GitHub tokenmeta.json- Sync metadata
- Data:
~/.local/share/starepo/lancedb/- LanceDB database with embeddings
| Component | Technology | Why |
|---|---|---|
| Language | TypeScript (Node.js) | MCP SDK native support |
| GitHub API | @octokit/rest |
Official SDK with pagination |
| Auth | @octokit/auth-oauth-device |
CLI-friendly Device Flow |
| Storage | @lancedb/lancedb |
Zero-compilation vector DB |
| Embeddings | @xenova/transformers |
Local, offline-capable |
| CLI | commander |
Lightweight, type-safe |
| MCP | @modelcontextprotocol/sdk |
Official SDK |
L1: Keyword Search (FTS)
- LanceDB INVERTED index on name/description/topics
- Fallback to filter-based search if index unavailable
- Instant results, zero dependencies
L2: Vector Search
- Local embeddings via
Xenova/bge-m3(1024-dim) - Cosine similarity ranking
- Supports natural language and multilingual queries
L3: Hybrid Search
- Combines vector + keyword results
- Deduplicates and re-ranks by relevance
- Best of both worlds
# Clone the repository
git clone https://github.com/yourusername/starepo.git
cd starepo
# Install dependencies
npm install
# Build
npm run build
# Dev mode (with tsx)
npm run dev -- search "query"
# Type check
npx tsc --noEmit
# Test locally
npm link
starepo --helpRun starepo sync to ensure:
- Data is synced from GitHub
- Embeddings are generated (first sync only)
Embedding generation takes ~0.5s per repo. For 1000+ stars:
- Use
--no-embeddingsfor faster initial sync - Generate embeddings later by running
starepo syncagain
Ensure npm global bin directory is in your PATH:
npm config get prefix
# Add <prefix>/bin to your PATHMIT
Built with:
- LanceDB - Modern vector database
- Transformers.js - Local ML inference
- Octokit - GitHub API client
- MCP SDK - Model Context Protocol