关于 Fossick
Fossick 是供 AI Agent 使用的只读代码发现 MCP 服务,可搜索 GitHub、PyPI 和 npm,并深入查看远程仓库。它覆盖从发现依赖到查阅定义和真实代码用法的流程,无需克隆仓库。
主要功能
- 01搜索 GitHub 仓库与软件包
- 02浏览远程仓库目录和文件
- 03按 AST 查找代码符号定义
- 04搜索 GitHub 公共代码用法
- 05查看标签与近期发布
适用场景
- 01为项目寻找合适的依赖库
- 02评估软件包的维护状况
- 03查找 API 的实际代码用法
- 04无需克隆仓库查看文件
MCP 相关
Fossick 通过 MCP 提供七个只读工具,用于搜索仓库与软件包、浏览远程仓库和检索代码。它可通过 stdio 传输连接兼容的 MCP 客户端。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
目录
什么是 Fossick
fossick /ˈfɒsɪk/ 动词(澳大利亚/新西兰)——淘宝或翻找宝石,尤其指小规模采矿:筛查溪床和旧矿渣堆,寻找大型采矿者遗漏的宝石。
这正是这个工具的用途——只不过对象是代码。
Fossick 为你的 AI Agent 提供七种只读工具,可在整个 GitHub、PyPI 和 npm 上探查,涵盖从头到尾的完整发现流程:
- 搜索与发现。 使用多查询相关性排序,从 2 亿多个仓库中筛选,找到那些被大型工具埋没的小而精的库,并在 PyPI 和 npm 上查找软件包。
- 无需克隆即可深入查看任何仓库。 浏览远程仓库的目录树,并使用深度和 glob 过滤条件;读取任意分支/标签/提交中的任意文件;还能跳转到任意类、函数或类型的定义——全部通过远程 GitHub 完成,无需在本地检出。
- 搜索整个 GitHub 上的代码模式。 在所有公开文件中进行全文、正则表达式及支持限定条件的搜索——查找某个 API 在生产环境中的_实际_用法,而不只是文档中的用法。
只要你希望 Agent 能访问全球最大的代码库,这个工具就很实用:
- 选对库。 为任何任务找到小巧、专注且积极维护的选项,而不只是最受欢迎的选项。
- 发现隐藏的宝藏。 找出星标数为 500、但按_相关性_排名高于星标数为 50,000 的成熟项目的库。
- 深入查看找到的仓库。 浏览其目录结构、读取 README、找到核心 API 的定义位置——无需
git clone。 - 查找真实代码中的用法模式。 搜索生产环境中如何调用某个 API,然后结合上下文读取匹配的文件。
- 获取灵感。 查看其他人如何组织类似项目、采用了哪些模式,以及做出了哪些权衡。
- 紧跟最新动态。 发现热门项目、刚发布的项目或生态中的新项目——不受模型训练截止时间的限制。
它不用于代码考古——例如 git blame、PR 历史或版本差异。需要这些功能时,请使用 git 和 gh。
示例
连接 Fossick 后,你可以向 Agent 提出这类请求。
发现库和软件包
- “给我找一个小巧、维护活跃的 Rust TUI 库——要比 ratatui 更新。”
- “如今大家在用什么来替代 LangChain?”
- “给我看看过去 90 天发布的热门 Python Web 框架。”
- “有什么轻量级替代方案可以在运行时进行 Pydantic 式验证?”
深入查看特定仓库
- “浏览
astral-sh/uv的结构——crates/里有什么?” - “读取
pydantic/pydantic中的主__init__.py。” - “
anthropics/anthropic-sdk-python中的Stream类定义在哪里?” - “
modelcontextprotocol/python-sdk的最新版本是什么时候发布的?”
查找实际项目中的代码模式
- “生产环境中的 FastAPI 应用实际上如何使用
structlog和asyncio设置结构化日志?” - “给我看看使用
tokio::select!实现超时取消的真实示例。” - “找一些使用
uv构建多阶段 Python 镜像的 Dockerfile。” - “大家如何在 Go 中调用 OpenAI API 的流式端点?”
采用依赖项之前先评估
- “
requests库还在维护吗?” - “比较
httpx和aiohttp的更新情况——最近发布日期和近期活动。” - “到底有哪些人在用
msgspec?给我看看它在生产代码库中的真实用法。” - “找出
polarsPyPI 软件包背后的 GitHub 仓库,并查看其最近一次发布。”
安装
前置条件: uv——使用
curl -LsSf https://astral.sh/uv/install.sh | sh安装。 然后uvx会按需下载并运行 Fossick。无需克隆。
Claude Code
共有三种安装范围。根据你希望 Fossick 的可用范围选择——全局、与团队共享,或仅在某个项目中供你使用。范围标志决定配置写入的位置(Claude Code MCP 范围)。
全局(推荐个人使用)
在你机器上的每个项目中均可使用。存储在 ~/.claude.json 中,仅供你的用户账户使用。
claude mcp add fossick --scope user uvx fossick-mcp
团队共享(提交到 git)
存储在项目根目录的 .mcp.json 中,并纳入版本控制。任何克隆此代码库的人都会获得相同的 MCP 服务。需要整个团队都能使用 Fossick 时,请采用此方式。
claude mcp add fossick --scope project uvx fossick-mcp
仅用于此项目(默认)
默认使用本地范围。仅在当前项目中启用,且仅供你使用。存储在 ~/.claude.json 中该项目路径下——不会提交,也不会与协作者共享。
claude mcp add fossick uvx fossick-mcp
手动安装
如果你想跳过 CLI,可以自行编写配置。无论范围如何,JSON 结构都相同——只有文件不同:
- 用户/本地范围使用
~/.claude.json - 项目范围使用
.mcp.json(项目根目录)
{
"mcpServers": {
"fossick": {
"command": "uvx",
"args": ["fossick-mcp"]
}
}
}
其他客户端
Cursor
也可以手动添加到 ~/.cursor/mcp.json 或 .cursor/mcp.json:
{
"mcpServers": {
"fossick": {
"command": "uvx",
"args": ["fossick-mcp"]
}
}
}
Claude Desktop
编辑 ~/Library/Application Support/Claude/claude_desktop_config.json(macOS)或 %APPDATA%\Claude\claude_desktop_config.json(Windows):
{
"mcpServers": {
"fossick": {
"command": "uvx",
"args": ["fossick-mcp"]
}
}
}
保存后重启 Claude Desktop。
Windsurf
编辑 ~/.codeium/windsurf/mcp_config.json:
{
"mcpServers": {
"fossick": {
"command": "uvx",
"args": ["fossick-mcp"]
}
}
}
Cline
通过 Cline 扩展的 MCP 设置面板编辑 cline_mcp_settings.json:
{
"mcpServers": {
"fossick": {
"type": "stdio",
"command": "uvx",
"args": ["fossick-mcp"]
}
}
}
Codex
codex mcp add fossick -- uvx fossick-mcp
也可以编辑 ~/.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
然后将 MCP 配置指向本地克隆:
{
"mcpServers": {
"fossick": {
"command": "uv",
"args": ["run", "--directory", "/path/to/fossick-mcp", "fossick-mcp"]
}
}
}
工具
七个只读工具,按其在发现工作流中的作用分类。
查找候选项
| 工具 | 功能 |
|---|---|
search_repos | 按主题、星标数、语言、近期程度或趋势发现代码库。一次调用中传入多种查询表述,可提高召回率。 |
search_packages | 按包名直接查询 PyPI 或 npm。返回版本、描述、链接和 GitHub 代码库 URL。 |
评估候选项
| 工具 | 功能 |
|---|---|
repo_tree | 按深度和 glob 过滤条件浏览代码库的文件布局。 |
get_file | 读取任意分支、标签或提交中的文件。 |
find_symbol | 通过真实 AST 查询跳转到定义——查找类、函数或类型实际声明的位置,而不只是按子字符串匹配。 |
list_tags | 查看标签和近期发布版本。这是最快的“项目是否仍在维护?”检查方式。 |
搜索 GitHub 中的代码
| 工具 | 功能 |
|---|---|
search_code | 对 GitHub 上所有公开文件进行全文搜索。支持 repo:、language:、path:、布尔运算符和正则表达式。查找真实使用模式、配置示例,或全球最大代码语料中的其他内容。 |
所有工具均为只读、幂等,并且可安全地自动批准。每个响应末尾都会提供提示链式后续步骤,让 Agent 知道接下来该做什么。
为什么选择 Fossick
- 专为发现工作流打造。 工具遵循自然的使用路径:查找候选项目 → 深入了解 → 阅读 API → 查看其他人的用法。基于提示词链的后续步骤建议,可引导你的 Agent 顺利完成整个流程。
- 无需克隆即可深入查看任何公开仓库。 浏览远程仓库树,使用深度和 glob 过滤条件;读取任意分支、标签或提交中的文件;并通过真正基于 AST 的符号搜索,跳转到任何类、函数或类型的定义——所有操作都在远程 GitHub 上完成。
- 多查询搜索,排名智能。
search_repos可在一次调用中接受多个不同表述,并采用综合相关性排名,优先考虑字面匹配,而非单纯的人气——帮你找到胜过 50,000 星老牌项目的 500 星宝藏项目。 - 从设计上节省令牌。 只有 7 个专注的工具(而非 30 多个)、输出格式为 Markdown(而非 JSON 转储)、采用 TTL 缓存、通过提示词链减少 Agent 推理轮次,并将 N 个请求合并为 1 个多查询搜索。每个工具的描述和响应都经过精简,为真正的工作留出上下文预算。
- 充分考虑速率限制。 分别跟踪 GitHub 的 Search 和 Core API 配额,配额耗尽时等待,并采用指数退避进行重试。
gh用户无需配置。 已完成 GitHub CLI 身份验证?无需进行任何配置。- 与其他工具配合良好。 只读、幂等,可安全地自动批准。如果还需要操作自己的仓库(issues、PR、Actions),可将 Fossick 与 github-mcp-server 配合使用。
常见问题
我需要 GitHub token 吗?
需要——否则你几乎会立即触及未经身份验证的 GitHub 每小时 60 次请求限制。最简单的方法是安装 GitHub CLI,然后运行一次 gh auth login。Fossick 会自动获取你的 token。无需在 MCP 配置中传入任何内容。
为什么用 uvx,而不是 pip install?
uvx 会在临时隔离的环境中运行 Fossick,不会污染全局 Python 环境。它会在首次使用时下载,之后的运行会使用缓存,并且更新也很轻松。你也无需管理虚拟环境或担心 Python 版本冲突。如果你更愿意使用 pip,也可以运行 pip install fossick-mcp——只需让 MCP 客户端指向已安装的 fossick-mcp 二进制文件即可。
Fossick 会使用我的 GitHub API 配额吗?
会。每次搜索、文件获取和标签列表请求都会计入 token 的速率限制。Fossick 会在两个配额池之间分配请求——搜索 API(30 次/分钟)和核心 API(5,000 次/小时)——并在任一配额耗尽时自动暂停。对于大多数发现任务,你都不会触及限制。
它能与 X 客户端配合使用吗?
如果你的客户端支持标准 MCP stdio 传输,就可以。标准的 uvx fossick-mcp 配置适用于 Claude Code、Claude Desktop、Cursor、Windsurf、VS Code、Cline、Codex 和大多数其他客户端。请参阅安装部分,查看特定客户端的配置片段。
Fossick 会搜索私有仓库吗?
只会搜索你的 GitHub token 有权访问的仓库。唯一的限制是 token 的权限——Fossick 没有自己的 ACL 层。如果你的 token 可以读取某个私有仓库,Fossick 就能搜索它;否则就不能。
为什么它不提供 git blame / PR 历史记录 / 版本差异?
这是有意为之的范围选择。代码考古(谁在何时因何原因更改了什么)是另一类问题,而 git 和 gh CLI 已能很好地处理。Fossick 专注于发现工作流——查找和评估,而非调查。
数据有多新?
每次请求都会从 GitHub 实时获取数据。为避免对相同请求重复调用 API,Fossick 会短暂缓存结果;对于固定到特定提交 SHA 的内容,缓存 TTL 会更长。超过 TTL 后会重新获取数据。
配置
身份验证
Fossick 会自动解析 GitHub token:
GH_TOKEN、GITHUB_TOKEN或GITHUB_PERSONAL_ACCESS_TOKEN环境变量- 通过 GitHub CLI 获取
gh auth token——如果你已经登录,则无需配置
如需显式传入 token:
{
"mcpServers": {
"fossick": {
"command": "uvx",
"args": ["fossick-mcp"],
"env": { "GITHUB_TOKEN": "ghp_your_token_here" }
}
}
}
token 只需具备公共仓库读取权限(不选择任何权限范围也可以)。
速率限制
Fossick 会跟踪两个 GitHub API 配额池,并在任一配额耗尽时自动暂停。
| 配额池 | 限制 | 工具 |
|---|---|---|
| 搜索 API | 30 次请求/分钟 | search_repos、search_code、find_symbol |
| 核心 API | 5,000 次请求/小时 | get_file、repo_tree、list_tags |
| 外部 | 不受 GitHub 限制 | search_packages(直接调用 PyPI/npm) |
遇到速率限制错误和暂时性错误时,重试会采用指数退避。为避免冗余 API 调用,结果会短暂缓存;对于固定到特定提交 SHA 的内容,缓存 TTL 会更长。
开发
前置条件
- Python 3.11+
- uv
设置
git clone https://github.com/Lipdog/fossick-mcp.git
cd fossick-mcp
uv sync
运行
通过 stdio 启动 MCP 服务(用于手动测试或本地 MCP 客户端配置):
uv run fossick-mcp
测试
单元测试和注册测试——无需网络,几秒钟即可运行:
uv run pytest
实时集成测试——针对固定版本 modelcontextprotocol/[email protected] 调用真实的 GitHub:
uv run pytest -m live
构建
uv build
生成 dist/fossick_mcp-<version>.tar.gz 和对应的 wheel。
架构
有关完整的架构介绍、关键模式以及添加新工具的方法,请参阅 CLAUDE.md。
Star 历史
许可证
MIT — 尽情探索吧。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。