Gives Claude seven tools to prospect across GitHub's 200M+ repositories without cloning anything locally. You can search repos with multi-query relevance ranking, look up PyPI and npm packages, browse any repo's file tree with glob filters, read files at specific commits, jump to definitions for classes and functions, and run full-text or regex searches across all public code. Built for the full discovery loop: find small libraries that deserve attention, vet dependencies before adopting them, see how APIs are actually used in production, and drill into unfamiliar codebases to understand their structure. No git archaeology like blame or PR history, just read-only access to the corpus. Runs via uvx with no installation beyond adding it to your MCP config.
Find libraries, discover gems, search code patterns, and read real production code — across 200M+ repos, PyPI, and npm.
fossick /ˈfɒsɪk/ verb (Australian/NZ) — to prospect or rummage for gems, especially the small-scale kind of mining where you sift creek beds and old tailings looking for what bigger operators missed.
That's exactly what this tool does — but for code.
Fossick gives your AI agent seven read-only tools to prospect across all of GitHub, PyPI, and npm, covering the full discovery loop end-to-end:
Useful any time you'd benefit from your agent reaching into the world's largest code corpus:
git clone.It does not do code archaeology — git blame, PR history, version diffs. Reach for git and gh for that.
Once Fossick is connected, here's the kind of thing you can ask your agent.
astral-sh/uv — what's in crates/?"__init__.py from pydantic/pydantic."Stream class defined in anthropics/anthropic-sdk-python?"modelcontextprotocol/python-sdk and when did it ship?"structlog and asyncio?"tokio::select! being used with timeout cancellation."uv."requests library still maintained?"httpx vs aiohttp — last release dates, recent activity."msgspec? Show me real usage in production codebases."polars PyPI package and check its last release."Prerequisite: uv — install with
curl -LsSf https://astral.sh/uv/install.sh | sh. Thenuvxwill download and run Fossick on demand. No clone needed.
Three install scopes. Pick the one that matches how you want Fossick to be available — globally, shared with your team, or just for you in one project. The scope flag controls where the config gets written (Claude Code MCP scopes).
Available in every project on your machine. Stored in ~/.claude.json, private to your user account.
claude mcp add fossick --scope user uvx fossick-mcp
Stored in .mcp.json at the project root, checked into version control. Anyone who clones the repo gets the same MCP server. Use this when the whole team should have Fossick.
claude mcp add fossick --scope project uvx fossick-mcp
Local scope is the default. Only enabled in the current project, only for you. Stored in ~/.claude.json under this project's path — not committed, not shared with collaborators.
claude mcp add fossick uvx fossick-mcp
If you'd rather skip the CLI, write the config yourself. The JSON shape is the same regardless of scope — only the file changes:
~/.claude.json for user / local scope.mcp.json (project root) for project scope{
"mcpServers": {
"fossick": {
"command": "uvx",
"args": ["fossick-mcp"]
}
}
}
Or add manually to ~/.cursor/mcp.json or .cursor/mcp.json:
{
"mcpServers": {
"fossick": {
"command": "uvx",
"args": ["fossick-mcp"]
}
}
}
Edit ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):
{
"mcpServers": {
"fossick": {
"command": "uvx",
"args": ["fossick-mcp"]
}
}
}
Restart Claude Desktop after saving.
Edit ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"fossick": {
"command": "uvx",
"args": ["fossick-mcp"]
}
}
}
Edit cline_mcp_settings.json via the Cline extension's MCP settings panel:
{
"mcpServers": {
"fossick": {
"type": "stdio",
"command": "uvx",
"args": ["fossick-mcp"]
}
}
}
codex mcp add fossick -- uvx fossick-mcp
Or edit ~/.codex/config.toml:
[mcp_servers.fossick]
command = "uvx"
args = ["fossick-mcp"]
git clone https://github.com/Lipdog/fossick-mcp.git
cd fossick-mcp
uv sync
Then point your MCP config at the local clone:
{
"mcpServers": {
"fossick": {
"command": "uv",
"args": ["run", "--directory", "/path/to/fossick-mcp", "fossick-mcp"]
}
}
}
Seven read-only tools, organized by their role in the discovery workflow.
| Tool | What it does |
|---|---|
search_repos | Discover repositories by topic, stars, language, recency, or trending. Pass multiple query phrasings in one call for better recall. |
search_packages | Direct lookup on PyPI or npm by package name. Returns version, description, links, and GitHub repo URL. |
| Tool | What it does |
|---|---|
repo_tree | Browse a repo's file layout with depth and glob filtering. |
get_file | Read any file at any branch, tag, or commit. |
find_symbol | Goto-definition via real AST queries — find where a class, function, or type is actually declared, not just substring-matched. |
list_tags | View tags and recent releases. The fastest "is this still maintained?" check. |
| Tool | What it does |
|---|---|
search_code | Full-text search across every public file on GitHub. Supports repo:, language:, path:, boolean operators, and regex. Find real-world usage patterns, config examples, or anything else in the world's largest code corpus. |
All tools are read-only, idempotent, and safe to auto-approve. Every response ends with hint-chained next steps so the agent knows what to do next.
search_repos accepts a list of phrasings in one call and applies composite relevance ranking that prioritizes literal match over raw popularity — surfaces the 500-star gem that beats the 50,000-star incumbent.gh users. Already have the GitHub CLI authenticated? Nothing to configure.Yes — without one you'll hit GitHub's 60-requests-per-hour unauthenticated limit almost immediately. The easiest path is to install the GitHub CLI and run gh auth login once. Fossick picks up your token automatically. No need to pass anything in the MCP config.
uvx instead of pip install?uvx runs Fossick in a transient, isolated environment without polluting your global Python. It downloads on first use, caches for subsequent runs, and updates effortlessly. You also don't need to manage a virtualenv or worry about Python version conflicts. If you'd rather use pip, pip install fossick-mcp works — just point your MCP client at the installed fossick-mcp binary.
Yes. Every search, file fetch, and tag list counts against your token's rate limits. Fossick splits requests across two buckets — Search API (30/min) and Core API (5,000/hr) — and pauses automatically when either is exhausted. For most discovery sessions you'll never hit the limits.
If your client supports the standard MCP stdio transport, yes. The standard uvx fossick-mcp config works in Claude Code, Claude Desktop, Cursor, Windsurf, VS Code, Cline, Codex, and most others. See the Installation section for client-specific snippets.
Only those your GitHub token can access. The token's permissions are the only constraint — Fossick doesn't have its own ACL layer. If your token can read a private repo, Fossick can search it; if not, it can't.
git blame / PR history / version diffs?Deliberate scope decision. Code archaeology (who changed what, why, when) is a different shape of problem and is well-served by git and the gh CLI. Fossick stays focused on the discovery workflow — finding and evaluating, not investigating.
Live from GitHub on every request. Fossick caches results briefly to avoid hammering the API on repeated identical calls, with longer TTLs for content pinned to a specific commit SHA. Anything past the TTL is a fresh fetch.
Fossick resolves a GitHub token automatically:
GH_TOKEN, GITHUB_TOKEN, or GITHUB_PERSONAL_ACCESS_TOKEN env varsgh auth token from the GitHub CLI — no config needed if you're already logged inTo pass a token explicitly:
{
"mcpServers": {
"fossick": {
"command": "uvx",
"args": ["fossick-mcp"],
"env": { "GITHUB_TOKEN": "ghp_your_token_here" }
}
}
}
A token only needs public repo read access (no scopes selected is fine).
Fossick tracks both GitHub API buckets and pauses automatically when either is exhausted.
| Bucket | Limit | Tools |
|---|---|---|
| Search API | 30 req/min | search_repos, search_code, find_symbol |
| Core API | 5,000 req/hr | get_file, repo_tree, list_tags |
| External | No GitHub limit | search_packages (hits PyPI/npm directly) |
Retries use exponential backoff on rate-limited and transient errors. Results are cached briefly to avoid redundant API calls, with longer TTLs for content pinned to a specific commit SHA.
git clone https://github.com/Lipdog/fossick-mcp.git
cd fossick-mcp
uv sync
Launch the MCP server on stdio (for manual testing or local MCP-client config):
uv run fossick-mcp
Unit and registration tests — no network, runs in seconds:
uv run pytest
Live integration tests — hits real GitHub against pinned modelcontextprotocol/python-sdk@v1.14.0:
uv run pytest -m live
uv build
Produces dist/fossick_mcp-<version>.tar.gz and the corresponding wheel.
See CLAUDE.md for the full architecture tour, key patterns, and the recipe for adding new tools.
MIT — fossick away.
io.github.ericm1018/skillfm-llm-cost-optimizer-openai-anthropic-usage
io.github.mikerawsonnz/llm-orchestration-agent
io.github.mikerawsonnz/authenticated-llm-agent
labforgedev/copilot-memory-mcp
csoai-org/agent-prompt-injection-firewall-mcp
io.github.mikerawsonnz/authenticated-multi-llm-agent