GitHub - coolvegan/go-hackernews: hackernews mcp & http server · GitHub
/" data-turbo-transient="true" />
Skip to content
Type / to search
Sign in<br>Sign upAppearance settings
You signed in with another tab or window. Reload to refresh your session.<br>You signed out in another tab or window. Reload to refresh your session.<br>You switched accounts on another tab or window. Reload to refresh your session.
Dismiss alert
{{ message }}
coolvegan
go-hackernews
Public
Notifications<br>You must be signed in to change notification settings
Fork
Star
main
BranchesTags
Go to file
CodeOpen more actions menu
Folders and files<br>NameNameLast commit message<br>Last commit date<br>Latest commit
History<br>2 Commits<br>2 Commits
images
images
internal
internal
README.md
README.md
go.mod
go.mod
go.sum
go.sum
index.html
index.html
main.go
main.go
View all files
Repository files navigation
go-news
Ein Go-Service, der Artikel von Hacker News fetcht, im Speicher vorhält und über eine HTTP-API sowie einen MCP-Server bereitstellt.
Funktionsweise
Beim Start wird die aktuellste Artikel-ID (Watermark) von Hacker News ermittelt.
Anschließend werden ältere Artikel (default 2000) nachgeladen.
Ein Ticker pollt sekündlich nach neuen Artikeln und fügt diese hinzu.
Alle HALVEMEMORYDURATION Minuten (default 30) wird die In-Memory-Datenstruktur halbiert, um den Speicherverbrauch zu begrenzen (mindestens MINARTICLE Artikel bleiben erhalten).
Die Artikel werden über Worker (WORKERCOUNT, default 10) parallel gefetcht.
Konfiguration (Umgebungsvariablen)
Variable<br>Default<br>Beschreibung
SERVER<br>localhost:7777<br>Adresse des HTTP-Debug-Servers
WORKERCOUNT<br>10<br>Anzahl paralleler Fetch-Worker
HALFTIME<br>1800 (Sekunden → 30 Min)<br>Intervall (Minuten) zum Halbieren des Speichers
PRELOADITEMS<br>2000<br>Anzahl der initial zu ladenden älteren Artikel
HTTP-Endpunkte
Route<br>Methode<br>Beschreibung
GET<br>Debug-View (index.html)
/api/items<br>GET<br>Alle Artikel als JSON
/api/watermark<br>GET<br>Aktuelle Watermark-ID als JSON (für Polling)
MCP-Server
Neben der HTTP-API startet der Service einen MCP-Server, über den die geladenen Hacker-News-Artikel ebenfalls abgefragt werden können. Der MCP-Server läuft über HTTP auf Port 13333.
Start
go run main.go
Optional mit eigenen Werten:
SERVER=localhost:8080 WORKERCOUNT=20 go run main.go
systemd-Service
Binary bauen und z.B. nach /usr/local/bin legen:
go build -o go-news main.go<br>sudo install -m 0755 go-news /usr/local/bin/go-news
Unit-Datei /etc/systemd/system/go-news.service:
[Unit]<br>Description=go-news Hacker News Fetcher & MCP-Server<br>After=network-online.target<br>Wants=network-online.target
[Service]<br>Type=simple<br>User=marco<br>Group=marco<br>WorkingDirectory=/home/marco/go/src/gittea.kittel.dev/marco/go-news<br>ExecStart=/usr/local/bin/go-news<br>Restart=on-failure<br>RestartSec=5
# Umgebungsvariablen (optional, Defaults siehe oben)<br>Environment=SERVER=localhost:7777<br>Environment=WORKERCOUNT=10<br>Environment=HALFTIME=1800<br>Environment=PRELOADITEMS=2000
# Ressourcen / Sicherheit<br>NoNewPrivileges=true<br>ProtectSystem=strict<br>ProtectHome=true<br>PrivateTmp=true<br>ReadWritePaths=/var/log
# Logging nach journald<br>StandardOutput=journal<br>StandardError=journal<br>SyslogIdentifier=go-news
[Install]<br>WantedBy=multi-user.target
Service aktivieren und starten:
sudo systemctl daemon-reload<br>sudo systemctl enable --now go-news
Status und Logs:
systemctl status go-news<br>journalctl -u go-news -f
About<br>hackernews mcp & http server<br>Resources<br>Readme<br>Activity<br>Stars<br>0 stars<br>Watchers<br>0 watching<br>Forks<br>0 forks<br>Report repository
Releases
Packages
Contributors
Languages
You can’t perform that action at this time.