mcpField
V
VIVATLAS

VIVATLAS

本地服务
github.com搜索与检索6今天更新

关于 VIVATLAS

VIVATLAS 是可自托管的目录,用于整理来自公开代码仓库和收藏链接的技能、Agent 与 MCP 服务。它结合全文和语义搜索、个人及共享卡片,并通过 MCP 提供目录访问。

主要功能

  1. 01收录公开仓库和链接
  2. 02按关键词和含义搜索
  3. 03生成项目描述和卡片
  4. 04管理私人及共享收藏
  5. 05通过浏览器和 Android 应用收集链接
  6. 06通过 REST 和 MCP 提供目录访问

适用场景

  1. 01描述用途以查找已收藏的工具
  2. 02浏览共享的 Agent 项目目录
  3. 03浏览网页或使用 Android 保存项目链接
  4. 04向 AI 助手查询目录条目

MCP 相关

VIVATLAS 是 MCP 服务,允许 MCP 客户端查询用户的目录。它也提供 REST API。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"bobpanil-vivatlas": {
"command": "docker",
"args": [
"run",
"-i",
"--rm",
"-e",
"SECRET_KEY",
"-e",
"GOOGLE_API_KEY",
"ghcr.io/bobpanil/vivatlas:1.0.13"
],
"env": {
"SECRET_KEY": "<SECRET_KEY>",
"GOOGLE_API_KEY": "<GOOGLE_API_KEY>"
}
}
}
}
启动命令docker run -i --rm -e SECRET_KEY -e GOOGLE_API_KEY ghcr.io/bobpanil/vivatlas:1.0.13
需要配置的环境变量
SECRET_KEY密钥Signs sessions and encrypts stored tokens. Set once and keep it; left empty, the container generates one and keeps it in /data.
GOOGLE_API_KEY密钥Gemini key for the descriptions, search embeddings and picture choice. Optional; Ollama works too (OLLAMA_URL). Also settable in the admin panel.

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
ocighcr.io/bobpanil/vivatlas:1.0.13

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

VIVATLAS — 您 Git 仓库中技能、Agent 和工具的目录

VIVATLAS

您收集各种工具:Claude 技能、Agent、MCP 服务、半夜点了星标的网页抓取工具、某人在 Reddit 上分享的设计套件。它们散落在 GitHub 星标、自托管的 Gitea、浏览器书签和笔记应用中——三个月后,您只记得“有个东西能做这个”,却怎么也找不到。

VIVATLAS 就是您的收藏架。把您的仓库和收藏的链接交给它,它会将每项内容整理成一张卡片:名称、写给人而不是编译器看的描述、图片和标签。然后将它们放在一个地方,让您可以按含义而不仅仅是名称搜索。向它询问“能审查网站无障碍性的工具”,它就会给您三个候选项,并说明推荐理由。

它运行在您自己的设备上——NAS、备用主机或笔记本电脑都可以;它支持多人使用,而且只会读取内容。只读取公开仓库,绝不会向 Git 写入任何内容。

浏览目录,搜索 "白板图表",打开一张卡片

试用在线演示

安装前先试用。 demo1.bobpanil.com 是一个公开的 VIVATLAS 演示站点。在登录页面点击 试用,即可创建自己的私人账户,然后浏览目录、进行搜索并添加链接或笔记。账户及您添加的所有内容都会在 24 小时后删除。演示站点不使用 AI,因此您添加的卡片内容比较简单,搜索按词语匹配,而非按含义匹配。它始终运行最新版本。

它能为您做什么

每张卡片都有自己的样子

目录:由卡片组成的网格,每张卡片都有图片、名称和一行描述

没人愿意浏览一整面灰色方块。VIVATLAS 会找到每个项目自己的图片——README 顶部的横幅、仓库中的标志,或 GitHub 为它生成的卡片图——并剔除那些看起来像图片的内容:构建状态徽章、赞助商标志、“请我喝咖啡”按钮和所有者头像。如果一个项目有多个合适的图片候选项,负责撰写描述的 AI 会将它们并排查看,然后挑出真正展示该项目的那张。

如果项目完全没有图片,VIVATLAS 就会自行绘制封面——将名称以专属字体排版在彩色图案背景上,颜色和图案由名称生成,因此每张封面都独一无二,同时整体风格统一。不用模型、不花成本,绝不会是灰色。

六张设计封面:每张卡片的名称都以大字呈现在彩色图案背景上

近距离查看卡片

打开卡片,您就能以三种形式了解同一个项目:一句话简介、写给普通读者的段落,以及帮助您判断是否要使用它的技术说明。还可以查看带置信度的标签、用途、来源和上次更改时间,并使用重新扫描、归档或复制链接按钮。描述由您配置的 AI 根据仓库自己的 README 撰写。

卡片页面:横幅、三个层次的描述、标签、用途、文件夹和卡片的身份信息

像询问同事一样搜索

全文索引和向量索引协同工作:前者查找词语,后者理解含义。用俄语输入,也能找到英语工具。描述任务,而不必说出工具名称,推荐器就会返回三个选项,并分别用一句话说明推荐理由;如果没有合适的结果,它也会坦诚地说“这里没有合适的内容”——这在软件领域本不该如此罕见。

随处收藏
  • 浏览器扩展(Chrome、Edge、Brave、Firefox):一键将当前页面或粘贴的链接添加到你的目录,可设为公开或私有。→ extension/README.md

    README 配图 Add to Chrome Add to Firefox

  • Android 应用:在任意应用中选择“分享”→ VIVATLAS。弹出的简洁面板会显示你要保存的内容,并让你在保存前选择设为私有还是公开。扫描已登录浏览器中的二维码即可登录,无需在手机键盘上输入长密码。→ android/README.md

  • 网页表单:链接、网站、截图或短视频 → 带星级的候选项 → 选择 → 添加到你的目录中。

**安装 Android 应用:**从 F-Droid 获取 Get it on F-Droid,它会为应用保持更新。也可以从最新版本下载 vivatlas-android-<version>.apk,或者将此仓库添加到 Obtainium,由它自动更新。应用在整个生命周期内都使用同一个密钥签名,因此每个版本都能覆盖安装在前一个版本之上。

Android 应用:分享面板询问设为私有还是公开,以及展开排序选项的筛选面板

你的、他们的、所有人的

每个人都有自己的登录账号、私有卡片和个人文件夹。共享目录对所有人开放,由管理该空间的人负责整理。卡片可以在两者之间移动——由所有者决定。你还可以保存收藏、查看变更动态,并了解哪些卡片的上游内容已过时。

向 AI 助手提问

VIVATLAS 是一个 MCP 服务。将它连接到 ChatGPT、Claude 或任何支持 MCP 的工具,就能从你的目录中获得“我有哪些工具可以做 X?”的答案。此外还提供简单的 REST API。→ docs/MCP.md

其他功能,简要介绍

支持三种语言(英语、俄语、希伯来语,并妥善处理从右向左的排版)。提供浅色、深色、OLED 和跟随系统主题。支持带备用代码的两步登录。可通过链接或电子邮件发送邀请,也可按需开放注册。支持 Gitea 和 GitHub 作为来源,每天重新扫描。管理面板可管理用户、文件夹、电子邮件和 AI 密钥——所有设置都可在不重启的情况下更改。还有 upstream / update,可将卡片与其来源进行比较,并且只在你尚未修改的文件中导入新版本。

五分钟内试用

最快的方式是使用容器:

docker run -d --name vivatlas -p 8710:8710 -v vivatlas_data:/data ghcr.io/bobpanil/vivatlas:latest

打开 http://localhost:8710,第一个访问 /setup 的人将成为所有者。然后前往 Admin → Sources:添加 GitHub 账号或 Gitea 地址,点击 Scan now,就能看到卡片陆续出现。

也可以直接从源码运行:

python -m venv .venv
.venv/bin/python -m pip install -e ".[dev]"        # Windows: .venv\Scripts\python.exe
cp .env.example .env                               # set SECRET_KEY; everything else is optional

.venv/bin/python -m vivatlas.cli init-db           # create or update the database
.venv/bin/python -m vivatlas.cli scan              # fetch repositories
.venv/bin/python -m vivatlas.cli serve --host 0.0.0.0 --port 8710

--host 0.0.0.0 可让同一 Wi-Fi 网络中的手机访问。更新代码后,请再次运行 init-db——serve 不会自行迁移数据库(容器会在每次启动时执行迁移)。

如果要在家中正式部署,请参阅 docs/DEPLOY-TRUENAS.md 中关于 TrueNAS SCALE 的操作指南——其中也介绍了 VIVATLAS 部署在代理或隧道之后时需要注意的两项设置。

你可能真正想要的设置

所有可选设置都放在 .env(或容器的环境变量)中;.env.example 对它们都有注释。大家常问的是这些:

设置用途
GOOGLE_API_KEY、OLLAMA_URL用于编写描述和挑选图片的 AI。二选一即可,也可以同时设置。也可在管理面板中设置。
TRUSTED_PROXIES如果 Cloudflare、Traefik 或 nginx 在 VIVATLAS 前面终止 TLS,就需要设置此项。否则,发出的 Cookie 不会带有 Secure。
IMAGE_MODEL为没有提供图片的卡片 绘制 图片——可使用 Google 图像模型(需要计费)或 pollinations:flux(免费、无需密钥、效果一般)。留空则使用设计好的封面,这是默认设置,而且效果比你想象的更好。

它遵循的规则

VIVATLAS 是查看器,不是所有者。 它读取公开的 Git 仓库,帮助你查找和查看其中的工具。它不拥有、也不主张对其收录或链接的任何仓库、代码、名称或商标享有权利。这些均归其作者所有,并受各自许可证约束。

它不会向 Git 写入任何内容,也不会扫描私有仓库。 这是规则,不是设置:任何地方都没有相关开关。

许可证: 服务端——src/ 下的所有内容——采用 Business Source License 1.1:可免费使用、部署和修改,包括用于商业用途;但不得将 VIVATLAS 本身作为产品或托管服务出售或转售。该许可证将于 2030-07-21 转为 Apache-2.0。Android 应用(android/)也可以使用 Apache-2.0,因此可通过 F-Droid 构建和分发。浏览器扩展(extension/)同样采用 Apache-2.0。

测试

.venv/bin/python -m pytest
.venv/bin/python -m ruff check src tests
内部实现 — 了解各部分所在位置,方便你修改内容
src/vivatlas/
  config.py            settings from .env
  runtime_settings.py  overrides from the database on top of .env (edited from the admin panel)
  db.py                connection to SQLite
  models.py            tables
  migrate.py           init-db: add missing columns/indexes, rebuild search
  security.py          passwords, secret encryption, secret key
  twofactor.py         two-step sign-in (TOTP + backup codes)
  auth.py, auth_web.py sign-in, registration, invitations, password reset
  qrlogin.py           sign a phone in by a one-time QR shown on a signed-in browser
  admin_web.py         admin panel (people, access, email, integrations)
  settings_web.py      personal settings, avatars, sources, folders
  web.py               catalogue, cards, adding
  api.py               app assembly, REST, background loops, static
  filters.py           visibility: own + shared
  categories.py        folder permissions (shared/personal)
  i18n.py, translations*.py   translations (en/ru/he), RTL
  mailer.py            emails (password reset, invitations)
  avatars.py           uploaded photo → square WebP
  previews.py          the picture on a card: find it, fetch it, fit it — or draw a cover
  ai/                  the models: google.py (text, vision, images), ollama.py, pollinations.py
  usericons.py         default avatar set (static/usericons)
  scanner.py, indexer.py  scanning + the private-repo rule, index
  mcp_server.py        MCP server for AI assistants
  cli.py               terminal commands (init-db, scan, serve, previews, embed, upstream…)
  providers/
    base.py            common interface to a Git host (the "socket")
    gitea.py           Gitea
    github.py          GitHub (an account's public repositories)
  ext_api.py           JSON API for the browser extension and the Android app (/api/ext)
  templates/, static/  pages and styles (hand-written CSS, no build step)

extension/             browser extension for Firefox and Chromium (Manifest V3)
android/               Kotlin WebView shell: share target, QR sign-in

如需添加其他 Git 托管平台:在新的 provider 中实现 providers/base.py 接口,并在 providers/__init__.py 中接入即可。其余代码无需更改。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。