
Awesome Core
io.github.twojlogin由 GitHub 账号 twojlogin 发布v2.0.1更新于 Oct 24, 2026
Read-only MCP server over a local, offline catalog of tools from GitHub awesome lists.
发布方自己的服务:core.blue
概览
只读 MCP 服务器,基于本地离线的 SQLite 目录,收录从 GitHub awesome 列表汇总的工具,支持搜索、排名与分面查询。
- 可以做什么
- 按关键词搜索本地工具目录,可按语言、平台和领域筛选
- 找出被低估的工具和隐藏好物,并解释某个工具的排名与得分构成
- 列出提及某工具的所有 awesome 列表,并标出其中的副本
- 报告目录中的分面信息,例如可用的语言、平台和领域
- 结果均为纯文本,包含星标数、独立列表数和评分,全部读取自预建数据库
- 适用场景
- 适合让助手在无网络环境下从精选的 GitHub 列表推荐开发工具,也适合希望排名依据多个独立策展者共识、而非单一热门列表的场景。
- 运行要求
- 以本地 stdio 进程运行,通常通过 uvx 从 awesome-core 的 PyPI 包启动。需要预先构建好的目录数据库,包本身不含数据;需将 AWESOME_DATA_DIR 指向由项目 start 命令生成的数据库所在目录。源码安装需 Python 3.8 及以上。无需 API 密钥或账号。
安装
在 SourceWeft 中
- 打开 控制台中的 Awesome Core,将其添加到工作区。
- 为需要使用其工具的对话启用该服务。
Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。
其他 MCP 客户端
参照 仓库 中的启动说明。
README
🔥 Awesome Core
[PyPI] [Python versions] [License: MIT] [MCP Registry]
Czym to jest, w jednym zdaniu
Ściąga wszystkie awesome listy z GitHuba do jednego katalogu na Twoim dysku i pozwala szybko znaleźć narzędzie — po nazwie, języku, systemie albo temacie — całkowicie bez internetu.
Na przykład chcesz „coś do OSINT-a działające pod Windows". Wpisujesz:
i dostajesz narzędzia z kilku różnych awesome list naraz, posortowane tak, że na górze są te, które niezależni kuratorzy wskazali w wielu listach (a nie tylko te z jednej głośnej listy).
Filtry łączy AND, więc kumulują się szybko.
--os windows --lang PowerShellzostawia z „osint" jedno narzędzie — i to nie to, czego szukałeś, tylko skrypt PowerShell, który akurat też nazywa się „Sherlock". Program wie, że filtr jest za wąski, i mówi wprost, który odpuścić:Zasada: dodawaj filtr tylko wtedy, gdy wyników jest więcej niż kilka.
Jeśli nie masz czasu — trzy komendy
./awesome start mówi w każdym kroku, co robi i ile to potrwa. Nic działa się
samo w tle — zawsze widzisz postęp.
Co musisz mieć zanim zaczniesz
Jedna rzecz: Python 3.8 lub nowszy. To wszystko.
Nie potrzebujesz jq, curl, GitHub CLI ani samodzielnego python -m venv:
- pobieranie list działa przez zwykły HTTPS (
core/api.py) — bezghjest wolniej, bo GitHub limituje wyszukiwanie do 10 zapytań na minutę, ale działa; - Flask do web UI instaluje się sam przy pierwszym
./awesome web; - program sam mówi, gdy brakuje czegoś (
./awesome doctor).
Jeśli masz gh i się zalogujesz (gh auth login), wszystko idzie 30× szybciej
i enrich w ogóle się odblokuje. Ale to przyspieszenie, nie warunek.
Instalacja na Linuksie:
Opcjonalnie, dla 30× szybszego pobierania i metadanych narzędzi:
Windows działa bez basha. W katalogu jest awesome.cmd, więc w PowerShellu
albo po podwójnym kliknięciu piszesz po prostu:
download.sh został, ale to już tylko nakładka wywołująca Pythona — w nim nie
ma już ani jq, ani curl, ani pętli w shellu.
W PowerShellu odpowiedniki reszty komend:
Flask do web UI instaluje się sam, przy pierwszym ./awesome web:
Jeśli z jakiegoś powodu to się nie uda (brak sieci, proxy), program wypisze instrukcję ręczną — ale nie musisz jej pamiętać na co dzień.
Nie musisz znać SQL, programować, nic konfigurować w środku i nie musisz
nic aktualizować automatycznie. Jak coś nie działa — ./awesome status powie
Ci, co dokładnie odpalić.
Pierwsze uruchomienie, krok po kroku
./awesome start
Program sprawdza, czy masz wszystko, potem:
Jeśli baza już jest zbudowana, start nie pobiera nic od nowa. Wypisuje
liczbę narzędzi i od razu włącza interfejs. Przebudowa wymaga świadomej decyzji:
Dzięki temu przypadkowe ./awesome start nie kasuje Ci 2 minuty pracy.
Uwaga, uczciwie: start nie odpytuje GitHuba o repozytoria samych
narzędzi. Ranking od razu działa (na zgodzie kuratorów), ale gwiazdka przy
narzędziu to na razie szacunek z listy, nie prawdziwa liczba. Jedna komenda
to naprawia:
Albo jednym poleceniem od zera:
Robisz to raz. Przerwać można w każdej chwili (Ctrl+C) — postęp jest zapisywany
i odpalanie komendy drugi raz jedzie dalej. Bez zalogowania do GitHuba enrich
odmawia z wyjaśnieniem zamiast udawać, że zrobił swoją robotę.
Jeśli masz mało czasu, krok 1 możesz pominąć i nadrobić później:
Codzienne użycie
Twoja własna lista
Jak coś znajdziesz i działa — włóż to od razu na swoją listę, a na końcu wklej gotowy Markdown:
W web UI jest to samo: przycisk ☆ Do mojej listy na stronie narzędzia,
lista i Markdown pod linkiem Moja lista w menu. W TUI klawisz k.
Osobno istnieje watch — lista repozytoriów list, które chcesz śledzić
(nowe narzędzia w ulubionej liście), a nie lista narzędzi:
Obie listy są lokalne i żadna nie odpytuje się sama w tle.
TUI — klawisze
Cztery interfejsy, ten sam katalog
Codzienna pielęgnacja (nic nie leci samo)
./awesome status po odświeżeniu podpowiada dokładną komendę, np.
./awesome enrich. To samo w przeglądarce: strona /refresh
z czterema przyciskami. Żadnych cronów, daemonów ani procesów w tle.
Ważne przy liczbach: status nie mówi „X narzędzi bez gwiazdek", tylko ile repozytoriów zostało do odpytania. Różnica jest ogromna, bo kilka narzędzi często wskazuje na to samo repo, a linki poza GitHubem (artykuły, filmy, dokumentacja) nie mają i nigdy nie będą miały gwiazdek — nie licz ich jako brakującej pracy.
Co jest w środku
Aktualne liczby zawsze sprawdzisz: ./awesome status.
Uczciwa uwaga: nie ma tu żadnego AI. Żadne modele językowe nie wybierają,
nie oceniają ani nie rankują narzędzi. To zwykły Python, który parsuje README
z list GitHuba i liczy rzeczy na surowo. Jeśli liczby w README różnią się od
bazy — ktoś zapomniał odświeżyć blok STAN. Zrób ./awesome status i popraw.
Podłącz agenta AI (MCP) — lokalnie, bez kluczy API
Katalog można dać do dyspozycji lokalnemu agentowi (Claude, Cursor, cokolwiek mówi „Model Context Protocol”) jako źródło narzędzi. Agent dostaje ranking oparty o zgodę niezależnych kuratorów, a nie o to, co jest najczęściej wypisane w jednym README.
Serwer daje 5 narzędzi: search_tools (szukanie z filtrami),
find_undiscovered_tools (niedoceniane i ukryte perełki), explain_tool
(uzasadnienie rankingu: z jakich list, ile punktów, co ważyło),
lists_with_tool (wszystkie listy + oznaczone kopie) i catalog_facets
(co jest w bazie: języki, platformy, domeny).
Wpisz to do konfiguracji klienta, np. claude_desktop_config.json:
Albo bez klonowania — prosto z PyPI (paczka awesome-core, obecna też
w oficjalnym rejestrze MCP jako io.github.twojlogin/awesome-core):
uvx pobierze i uruchomi serwer z PyPI. AWESOME_DATA_DIR musi wskazywać
katalog z bazą zbudowaną przez ./awesome start — sama paczka nie zawiera
danych (baza ma ~194 MB i rośnie z każdym pobraniem).
Co warto wiedzieć:
- Nic nie wychodzi do sieci. Zero kluczy API, zero kont, tylko odczyt lokalnej bazy SQLite. Serwer nie ma narzędzi z efektem ubocznym.
- Start jest natychmiastowy — baza jest już zbudowana, serwer tylko czyta.
- Wyniki to zwykły tekst z liczbami (gwiazdki, liczba niezależnych list, score), więc agent może je cytować i porównywać.
- Protokół jest czystym JSON-RPC 2.0 po stdin/stdout; logi idą na stderr, żeby nie psuły kanału.
Skąd to wszystko pochodzi — i czy mi szkodzi
Pytanie, które powinien zadać każdy: co jeśli ktoś wrzuci złośliwą listę?
Skąd listy: download.sh pyta publiczne API GitHuba o repozytoria
oznaczone topic:awesome-list (plus topic:awesome i topic:curated-list
w trybie --wide), posortowane po gwiazdkach. Nic więcej — żadnych
„polecanych" repozytoriów, żadnych losowych adresów.
Nic z obcego repozytorium nigdy nie jest wykonywane:
- README jest danymi. Parser wyciąga z niego linki regexem i tyle.
Nie ma miejsca, w którym treść README trafiłaby do
eval,exec,shell=Trueczy któregokolwiek wywołania systemowego. awesome installrobi dokładniegit clone --depth 1. Git nie uruchamia kodu z zdalnego repozytorium (żadnych hooków).- Przeglądarka escapuje HTML, a renderer Markdown w
core/md.pyteż —<script>w opisie wychodzi jako tekst, nie jako tag.
Jedyny realny wektor: opisy trafiające do kontekstu modelu. Serwer MCP zamienia opisy narzędzi w tekst, który czyta agent. Opis napisał ktoś nieznany, w repozytorium niesprawdzonym. Dlatego:
- Opisy przechodzą przez
core/untrusted.py, które wycina instrukcje wyglądające na polecenia, znaczniki ról (system:,assistant:), tagi HTML,curl … | shirm -rf— zostawiając przy tym znacznik[odfiltrowano: …], żeby dało się zauważyć. initializew MCP mówi agentowi wprost: to treść trzecia, nie rozkazy.- Sprawdź sam, kiedy chcesz:
Stan na dziś: 0 wykrytych ataków w 186 861 narzędziach (3 trafienia to
fałszywe alarmy — rimraf ma w opisie „like rm -rf", a safety-net to
narzędzie, które rm -rf blokuje). Ciekawa ironia: katalog zawiera trzy
narzędzia do obrony przed dokładnie tym problemem (nvidia/skillspector,
vaporif/parry-guard, safety-net).
Czego nie obiecuję: skaner łapie znane wzorce, nie jest dowodem niezawodności. Dlatego traktuj opisy jako dane, a nie polecenia.
Zasada: rdzeń bez AI
Właściciel projektu dopuścił MCP, ale nie chce sztucznej inteligencji wszędzie — szczególnie nie w narzędziu, które miało być lokalne. Zapisuję to, bo obietnica bez pilnowania wyparuje się przy pierwszym refaktorze:
Z tego wynika reszta decyzji:
- Cała zależność zewnętrzna to
flask(web UI). Rdzeń to czysty stdlib. - Zero modeli, embeddingów, sieci neuronowych czy LLM w rankingu. Sortowanie
to jawna arytmetyka (
core/scoring.py), którą da się wypisać i podważyć. - Ranking nie zależy od usługi firmy trzeciej. Nikt nie może Ci podsunąć wyników ani zobaczyć, czego szukałeś.
- MCP jest adapterem na brzegu, nie logiki w środku. Możesz go wywalić i nic nie przestanie działać.
- Test
test_no_ai_in_corepilnuje tego mechanicznie: rdzeń nie zaimportuje biblioteki AI ani sieciowej modułu bez zgody, a jedynym plikiem znającym protokół MCP jestcore/mcp.py.
Czy katalog można zatruć — i co z tym robimy
Katalog powstaje z cudzych repozytoriów. To znaczy, że ktoś może celowo wstawić fałszywą listę, która zbiera wejścia, a jej „narzędzia" prowadzą do podszywanych domen albo do szkodliwego kodu. Czy to się zdarzyło?
Stan na dziś (6 października 2026, 1 032 listy, 186 861 narzędzi): 7 list warte obejrzenia, 1 podejrzany link. Zero potwierdzonych ataków.
Co sygnał ma złapać:
Przykładowe trafienie z naszej bazy: laoma2053/awesome-zhuiju-free — 25 narzędzi,
0 gwiazdek, brak opisu, żaden link nie potwierdzony przez inną listę.
Czego nie robimy i dlaczego warto to wiedzieć:
- To nie jest skaner złośliwego oprogramowania. Nie rozpoznajemy droppera w repozytorium ani złośliwego kodu w kodzie narzędzia. Nie obiecujemy, że przepuścimy wszystko.
- Sygnały nie są wyrokiem. Flag oznacza „obejrzyć ręcznie", nie „złośliwe". Trzy z siedmiu trafień okazały się uczciwymi, choć dziwnymi listami.
- Ranking już się przed tym broni: narzędzie potrzebuje zgody co najmniej dwóch niezależnych list, a kopie list nie liczą się do tej zgody. Jedna nowa fałszywa lista nie wypchnie niczego na szczyt.
awesome installto tylkogit clone. Nie uruchamia skryptów, nie pyta o hasło do Twojego GitHuba, nie wykonuje kodu zdalnego repozytorium. Ale potem to Ty decydujesz, co z tym kodem zrobisz — i tego program nie kontroluje.- Opisy z obcych list trafiają do kontekstu modelu przez MCP, więc są
przepuszczane przez
core/untrusted.py(patrz sekcja o bezpieczeństwie).
Najprostsza zasada: narzędzie z jednej nowej listy, o którym nigdy nie słyszałeś, to znak sprawdzenia — nie polecenia instalacji.
Czego nie wiem — słowniczek
Program niczego nie rekomenduje. Nie ma w nim „polecam", „najlepszy wybór" ani LLM, który podpowiada narzędzia. Jest za to: policzone liczby (zgoda niezależnych kuratorów, gwiazdki, jakość listy, z jakich list narzędzie pochodzi) i filtry o jawnych kryteriach. Wybór zostaje po Twojej stronie — dlatego wszystko, co program mówi, da się sprawdzić liczbą. | backfill | dociąganie brakujących metadanych list | | enrich | sprawdzanie repozytoriów narzędzi (batch po 50 na zapytanie do API) | | build | przebudowa bazy z lokalnych plików README (~2 min) | | fasetka | klikalny filtr boczny, np. „język: Python” |
Licencja
MIT — LICENSE w katalogu. Kod jest mój, ale nazwy, linki i krótkie opisy
narzędzi pochodzą z cudzych awesome list i należą do ich autorów. W bazie
są tylko adresy i nazwy repozytoriów (fakty, nie czyjeś treści), a same
README nie są dołączane do repo — pobierasz je na swój dysk przez
./download.sh.
Znane ograniczenia (uczciwie)
Ranking czyta to, co napisał autor — nie kod. Nazwa, opis, gwiazdki, tematy, README: wszystko to można napisać dowolnie i wszystko wchodzi do score. Program nigdy nie zagląda do kodu repozytorium, więc nie odróżnia narzędzia od kolekcji skryptów o tej samej nazwie ani oryginału od kopii.
Mierzalny skutek: awesome selfcheck sprawdza 15 znanych narzędzi
(nazwa → właściwe repozytorium) i zwykle trafia 13/15 na pozycji #1.
Dwie porażki to zawsze ten sam mechanizm — repozytorium fanowskie, które
powtarza nazwę narzędzia w opisie, wyprzedza oryginał.
To jest granica tego podejścia, nie do poprawienia strojeniem wag: do jej przekroczenia trzeba by patrzeć na zawartość repozytorium (importy, pliki wejściowe, tagi wydań), a to osobny projekt. Świadomie tego nie udaję.
Mniej poważne, ale też powiedziane:
- 91% narzędzi występuje w jednej liście, więc dla nich „zgoda kuratorów" wynosi zero — teza działa na głowie katalogu, nie na ogonie
- 75 571 wpisów to linki poza GitHubem (artykuły, filmy, dokumentacja): nigdy nie dostaną gwiazdek i nie są narzędziami
- Wyszukiwarka GitHuba oddaje maks. 1000 wyników na jedno zapytanie.
Dlatego pobieranie używa kilku zapytań naraz (
--wide) i skaluje wyniki. - Prawdziwy język narzędzia znamy tylko dla repozytoriów sprawdzonych przez
./awesome enrich. Reszta zgadywana jest z adresu i opisu — stąd?tam, gdzie nie wiadomo. Ranking celowo nie ufa temu zgadywaniu. - Linki poza GitHubem sprawdzamy tylko na żądanie:
./awesome validate --non-github --limit 500. - Nie sprawdzamy, czy narzędzie jest bezpieczne. Sygnały przy repozytoriach (archiwalne, dawno nieaktualizowane) to wskazówki do sprawdzenia, nie etykieta. Przeczytaj kod i release'y, zanim cokolwiek zainstalujesz.
Dla tych, którzy chcą wejść głębiej
Struktura projektu
Jak liczymy ranking
score (0–100) to świadoma korekta nad „sortuj po gwiazdkach listy”:
Dodatkowo underrated (dobra jakość, mało gwiazdek) i hidden_gem (mało list,
wysoki score). ./awesome why <nazwa> pokazuje rozkład punktów.
Wymagania i licencja
- Python 3.8+ (SQLite z FTS5; bez FTS5 działa fallback na LIKE)
- Flask ≥ 3.0 — tylko dla web UI
gh,jq,curl— tylko do pobierania i enrichmentucursesz biblioteki standardowej — tylko dla TUI
MIT — używaj, zmieniaj, dziel się. Autor: Arkadiusz Słowik — @twojlogin
来源:README.md,提交 1256467
工具
0版本历史
2- v2.0.1最新Oct 19, 2026
- v2.0.0Oct 12, 2026
评分
已满足适用检查项的 50%
该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。
- 近 30 天内可连通25 分
请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。
- 已声明认证方式10 分
请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。
- 已列出工具15 分
请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。
- 描述必需15 分
- 图标10 分
- 文档15 分
- 许可证10 分
其他 Core 集成
core.blue
blue.core官方发布者
core.blue 的远程 MCP 端点,提供每位客户独立的私有智能体记忆“house”:可读手册、试用沙盒、查价格与建议,并申请 house。

Brevio Core
由 GitHub 账号 Brevio-Ventures 发布
面向编码代理的本地代码规则扫描器:扫描改动或文件、解释规则、应用安全修复并把修复沉淀为守卫,全程不调用模型。

brain-core
由 GitHub 账号 xy-claude 发布
本地 MCP 服务器,为 Claude Code 智能体提供跨会话的长期记忆,以 markdown 文件加本地 SQLite 与向量索引保存。

Scovant Core
由 GitHub 账号 Scovant 发布
对网站进行被动式AI代理就绪扫描:robots、llms.txt、JSON-LD、MCP发现、安全性。AI 翻译

ProofCore
由 GitHub 账号 ProofCore-Protocol 发布
面向AI代理的TON区块链零认证加密公证与证据层。AI 翻译