
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 清單彙整的工具,支援搜尋、排名與 facet 查詢。
- 可以做什麼
- 依關鍵字搜尋本機工具目錄,可依語言、平台與領域篩選
- 找出被低估的工具與隱藏好物,並說明某個工具的排名與分數組成
- 列出提及某工具的所有 awesome 清單,並標示其中的副本
- 回報目錄的 facet 資訊,例如可用的語言、平台與領域
- 結果皆為純文字,包含星號數、獨立清單數與評分,全部讀取自預先建好的資料庫
- 適用情境
- 適合讓助理在沒有網路的情況下,從精選的 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 翻譯